Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions docker/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,17 @@ def __init__(self, base_url=None, version=None,
timeout=constants.DEFAULT_TIMEOUT_SECONDS, tls=False):
super(Client, self).__init__()

if tls and (not base_url or not base_url.startswith('https://')):
if tls and not base_url:
raise errors.TLSParameterError(
'If using TLS, the base_url argument must begin with '
'"https://".')
'If using TLS, the base_url argument must be provided.'
)

self.base_url = base_url
self.timeout = timeout

self._auth_configs = auth.load_config()

base_url = utils.parse_host(base_url, sys.platform)
base_url = utils.parse_host(base_url, sys.platform, tls=bool(tls))
if base_url.startswith('http+unix://'):
self._custom_adapter = unixconn.UnixAdapter(base_url, timeout)
self.mount('http+docker://', self._custom_adapter)
Expand Down
4 changes: 2 additions & 2 deletions docker/utils/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ def parse_repository_tag(repo_name):
# fd:// protocol unsupported (for obvious reasons)
# Added support for http and https
# Protocol translation: tcp -> http, unix -> http+unix
def parse_host(addr, platform=None):
def parse_host(addr, platform=None, tls=False):
proto = "http+unix"
host = DEFAULT_HTTP_HOST
port = None
Expand Down Expand Up @@ -381,7 +381,7 @@ def parse_host(addr, platform=None):
raise errors.DockerException(
"Invalid bind address protocol: {0}".format(addr)
)
proto = "http"
proto = "https" if tls else "http"

if proto != "http+unix" and ":" in addr:
host_parts = addr.split(':')
Expand Down
5 changes: 5 additions & 0 deletions tests/unit/utils_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,11 @@ def test_parse_host_empty_value(self):

assert parse_host(val, 'win32') == tcp_port

def test_parse_host_tls(self):
host_value = 'myhost.docker.net:3348'
expected_result = 'https://myhost.docker.net:3348'
self.assertEqual(parse_host(host_value, None, True), expected_result)


class ParseRepositoryTagTest(base.BaseTestCase):
sha = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
Expand Down