Kaydet (Commit) b05bfd7b authored tarafından Ulysses Souza's avatar Ulysses Souza

Fix base_url to keep TCP protocol

This fix lets the responsability of changing the
protocol to `parse_host` afterwards, letting
`base_url` with the original value.
Signed-off-by: 's avatarUlysses Souza <ulysses.souza@docker.com>
üst 33b8fd6e
...@@ -352,9 +352,7 @@ def kwargs_from_env(ssl_version=None, assert_hostname=None, environment=None): ...@@ -352,9 +352,7 @@ def kwargs_from_env(ssl_version=None, assert_hostname=None, environment=None):
params = {} params = {}
if host: if host:
params['base_url'] = ( params['base_url'] = host
host.replace('tcp://', 'https://') if enable_tls else host
)
if not enable_tls: if not enable_tls:
return params return params
......
...@@ -11,6 +11,7 @@ import unittest ...@@ -11,6 +11,7 @@ import unittest
from docker.api.client import APIClient from docker.api.client import APIClient
from docker.constants import IS_WINDOWS_PLATFORM
from docker.errors import DockerException from docker.errors import DockerException
from docker.utils import ( from docker.utils import (
convert_filters, convert_volume_binds, decode_json_header, kwargs_from_env, convert_filters, convert_volume_binds, decode_json_header, kwargs_from_env,
...@@ -83,15 +84,17 @@ class KwargsFromEnvTest(unittest.TestCase): ...@@ -83,15 +84,17 @@ class KwargsFromEnvTest(unittest.TestCase):
DOCKER_CERT_PATH=TEST_CERT_DIR, DOCKER_CERT_PATH=TEST_CERT_DIR,
DOCKER_TLS_VERIFY='1') DOCKER_TLS_VERIFY='1')
kwargs = kwargs_from_env(assert_hostname=False) kwargs = kwargs_from_env(assert_hostname=False)
assert 'https://192.168.59.103:2376' == kwargs['base_url'] assert 'tcp://192.168.59.103:2376' == kwargs['base_url']
assert 'ca.pem' in kwargs['tls'].ca_cert assert 'ca.pem' in kwargs['tls'].ca_cert
assert 'cert.pem' in kwargs['tls'].cert[0] assert 'cert.pem' in kwargs['tls'].cert[0]
assert 'key.pem' in kwargs['tls'].cert[1] assert 'key.pem' in kwargs['tls'].cert[1]
assert kwargs['tls'].assert_hostname is False assert kwargs['tls'].assert_hostname is False
assert kwargs['tls'].verify assert kwargs['tls'].verify
parsed_host = parse_host(kwargs['base_url'], IS_WINDOWS_PLATFORM, True)
try: try:
client = APIClient(**kwargs) client = APIClient(**kwargs)
assert kwargs['base_url'] == client.base_url assert parsed_host == client.base_url
assert kwargs['tls'].ca_cert == client.verify assert kwargs['tls'].ca_cert == client.verify
assert kwargs['tls'].cert == client.cert assert kwargs['tls'].cert == client.cert
except TypeError as e: except TypeError as e:
...@@ -102,15 +105,16 @@ class KwargsFromEnvTest(unittest.TestCase): ...@@ -102,15 +105,16 @@ class KwargsFromEnvTest(unittest.TestCase):
DOCKER_CERT_PATH=TEST_CERT_DIR, DOCKER_CERT_PATH=TEST_CERT_DIR,
DOCKER_TLS_VERIFY='') DOCKER_TLS_VERIFY='')
kwargs = kwargs_from_env(assert_hostname=True) kwargs = kwargs_from_env(assert_hostname=True)
assert 'https://192.168.59.103:2376' == kwargs['base_url'] assert 'tcp://192.168.59.103:2376' == kwargs['base_url']
assert 'ca.pem' in kwargs['tls'].ca_cert assert 'ca.pem' in kwargs['tls'].ca_cert
assert 'cert.pem' in kwargs['tls'].cert[0] assert 'cert.pem' in kwargs['tls'].cert[0]
assert 'key.pem' in kwargs['tls'].cert[1] assert 'key.pem' in kwargs['tls'].cert[1]
assert kwargs['tls'].assert_hostname is True assert kwargs['tls'].assert_hostname is True
assert kwargs['tls'].verify is False assert kwargs['tls'].verify is False
parsed_host = parse_host(kwargs['base_url'], IS_WINDOWS_PLATFORM, True)
try: try:
client = APIClient(**kwargs) client = APIClient(**kwargs)
assert kwargs['base_url'] == client.base_url assert parsed_host == client.base_url
assert kwargs['tls'].cert == client.cert assert kwargs['tls'].cert == client.cert
assert not kwargs['tls'].verify assert not kwargs['tls'].verify
except TypeError as e: except TypeError as e:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment