Only use supported protocols when starting engine CLI subprocess

Signed-off-by: Joffrey F <joffrey@docker.com>
This commit is contained in:
Joffrey F 2018-10-24 16:08:56 -07:00
parent 2f5d5fc93f
commit 4368b8ac05
2 changed files with 11 additions and 1 deletions

View File

@ -1452,7 +1452,9 @@ def call_docker(args, dockeropts):
if verify:
tls_options.append('--tlsverify')
if host:
tls_options.extend(['--host', host.lstrip('=')])
tls_options.extend(
['--host', re.sub(r'^https?://', 'tcp://', host.lstrip('='))]
)
args = [executable_path] + tls_options + args
log.debug(" ".join(map(pipes.quote, args)))

View File

@ -155,6 +155,14 @@ class TestCallDocker(object):
'docker', '--host', 'tcp://mydocker.net:2333', 'ps'
]
def test_with_http_host(self):
with mock.patch('subprocess.call') as fake_call:
call_docker(['ps'], {'--host': 'http://mydocker.net:2333'})
assert fake_call.call_args[0][0] == [
'docker', '--host', 'tcp://mydocker.net:2333', 'ps',
]
def test_with_host_option_shorthand_equal(self):
with mock.patch('subprocess.call') as fake_call:
call_docker(['ps'], {'--host': '=tcp://mydocker.net:2333'})