From 6fad0855b5abdde54c1c6993893c74277dd03aa8 Mon Sep 17 00:00:00 2001 From: Simon Li Date: Fri, 11 Nov 2016 16:11:18 +0000 Subject: Use format_environment to convert env in ContainerSpec Signed-off-by: Simon Li --- docker/types/services.py | 6 +++++- docker/utils/__init__.py | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docker/types/services.py b/docker/types/services.py index 2ac47eb..0ede776 100644 --- a/docker/types/services.py +++ b/docker/types/services.py @@ -39,6 +39,7 @@ class ContainerSpec(dict): def __init__(self, image, command=None, args=None, env=None, workdir=None, user=None, labels=None, mounts=None, stop_grace_period=None): from ..utils import split_command # FIXME: circular import + from ..utils import format_environment # FIXME: circular import self['Image'] = image @@ -48,7 +49,10 @@ class ContainerSpec(dict): self['Args'] = args if env is not None: - self['Env'] = env + if isinstance(env, dict): + self['Env'] = format_environment(env) + else: + self['Env'] = env if workdir is not None: self['Dir'] = workdir if user is not None: diff --git a/docker/utils/__init__.py b/docker/utils/__init__.py index 5bd69b4..e834505 100644 --- a/docker/utils/__init__.py +++ b/docker/utils/__init__.py @@ -6,7 +6,7 @@ from .utils import ( create_host_config, create_container_config, parse_bytes, ping_registry, parse_env_file, version_lt, version_gte, decode_json_header, split_command, create_ipam_config, create_ipam_pool, parse_devices, normalize_links, - convert_service_networks, + convert_service_networks, format_environment, ) from ..types import LogConfig, Ulimit -- cgit v1.2.1 From cb967ef6825d62d10d2bebeda5ab89be8056a014 Mon Sep 17 00:00:00 2001 From: Simon Li Date: Fri, 11 Nov 2016 16:29:43 +0000 Subject: Add test for creating service with env Signed-off-by: Simon Li --- tests/integration/service_test.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/integration/service_test.py b/tests/integration/service_test.py index 636f507..0725663 100644 --- a/tests/integration/service_test.py +++ b/tests/integration/service_test.py @@ -231,3 +231,19 @@ class ServiceTest(BaseIntegrationTest): 'PublishedPort': 12357, 'TargetPort': 1990, 'Protocol': 'udp' } in ports assert len(ports) == 3 + + def test_create_service_with_env(self): + container_spec = docker.types.ContainerSpec( + 'busybox', ['true'], env={'DOCKER_PY_TEST': 1} + ) + task_tmpl = docker.types.TaskTemplate( + container_spec, + ) + name = self.get_service_name() + svc_id = self.client.create_service(task_tmpl, name=name) + svc_info = self.client.inspect_service(svc_id) + assert 'TaskTemplate' in svc_info['Spec'] + assert 'ContainerSpec' in svc_info['Spec']['TaskTemplate'] + con_spec = svc_info['Spec']['TaskTemplate']['ContainerSpec'] + assert 'Env' in con_spec + assert con_spec['Env'] == ['DOCKER_PY_TEST=1'] -- cgit v1.2.1