From 5a694739a4a650826b6913a84d21125f9796dff2 Mon Sep 17 00:00:00 2001 From: Bogdan Dobrelya Date: Mon, 20 Mar 2017 18:27:55 +0100 Subject: [PATCH] Add env_file for docker hook Add docker hook for environment files. Some containerized services need to accept environment files and cannot be configured otherwise, for example Etcd key-value storage. Partial-bug: #1668938 Change-Id: I228b5f9ee67215ae742760d449b9cd8a4b9543d0 Signed-off-by: Bogdan Dobrelya --- .../install.d/hook-docker-cmd.py | 7 +++++++ .../hook_docker_envfile-bc9eb287d854e1e1.yaml | 6 ++++++ tests/test_hook_docker_cmd.py | 19 ++++++++++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/hook_docker_envfile-bc9eb287d854e1e1.yaml diff --git a/heat-config-docker-cmd/install.d/hook-docker-cmd.py b/heat-config-docker-cmd/install.d/hook-docker-cmd.py index a14fe69..14426c7 100755 --- a/heat-config-docker-cmd/install.d/hook-docker-cmd.py +++ b/heat-config-docker-cmd/install.d/hook-docker-cmd.py @@ -40,6 +40,13 @@ def docker_run_args(cmd, container, config): cconfig = config[container] if cconfig.get('detach', True): cmd.append('--detach=true') + if 'env_file' in cconfig: + if isinstance(cconfig['env_file'], list): + for f in cconfig.get('env_file', []): + if f: + cmd.append('--env-file=%s' % f) + else: + cmd.append('--env-file=%s' % cconfig['env_file']) for v in cconfig.get('environment', []): if v: cmd.append('--env=%s' % v) diff --git a/releasenotes/notes/hook_docker_envfile-bc9eb287d854e1e1.yaml b/releasenotes/notes/hook_docker_envfile-bc9eb287d854e1e1.yaml new file mode 100644 index 0000000..ac515d4 --- /dev/null +++ b/releasenotes/notes/hook_docker_envfile-bc9eb287d854e1e1.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + Add docker hook for environment files. Some containerized services need to + accept environment files and cannot be configured otherwise, for example + Etcd key-value storage. diff --git a/tests/test_hook_docker_cmd.py b/tests/test_hook_docker_cmd.py index c8f80f5..5627c35 100644 --- a/tests/test_hook_docker_cmd.py +++ b/tests/test_hook_docker_cmd.py @@ -38,6 +38,8 @@ class HookDockerCmdTest(common.RunScriptTest): "name": "x", "image": "xxx", "privileged": False, + "environment": ["foo=bar"], + "env_file": "env.file", "start_order": 0 }, "web-ls": { @@ -60,8 +62,11 @@ class HookDockerCmdTest(common.RunScriptTest): "environment": [ "KOLLA_CONFIG_STRATEGY=COPY_ALWAYS", "FOO=BAR" + ], + "env_file": [ + "foo.env", + "bar.conf" ] - } } } @@ -166,6 +171,8 @@ class HookDockerCmdTest(common.RunScriptTest): '--label', 'managed_by=docker-cmd', '--detach=true', + '--env-file=env.file', + '--env=foo=bar', '--privileged=false', 'xxx' ], state[1]['args']) @@ -192,6 +199,8 @@ class HookDockerCmdTest(common.RunScriptTest): '--label', 'managed_by=docker-cmd', '--detach=true', + '--env-file=foo.env', + '--env-file=bar.conf', '--env=KOLLA_CONFIG_STRATEGY=COPY_ALWAYS', '--env=FOO=BAR', '--net=host', @@ -319,6 +328,8 @@ class HookDockerCmdTest(common.RunScriptTest): '--label', 'managed_by=docker-cmd', '--detach=true', + '--env-file=env.file', + '--env=foo=bar', '--privileged=false', 'xxx' ], state[1]['args']) @@ -345,6 +356,8 @@ class HookDockerCmdTest(common.RunScriptTest): '--label', 'managed_by=docker-cmd', '--detach=true', + '--env-file=foo.env', + '--env-file=bar.conf', '--env=KOLLA_CONFIG_STRATEGY=COPY_ALWAYS', '--env=FOO=BAR', '--net=host', @@ -450,6 +463,8 @@ class HookDockerCmdTest(common.RunScriptTest): '--label', 'managed_by=docker-cmd', '--detach=true', + '--env-file=env.file', + '--env=foo=bar', '--privileged=false', 'xxx' ], state[2]['args']) @@ -483,6 +498,8 @@ class HookDockerCmdTest(common.RunScriptTest): '--label', 'managed_by=docker-cmd', '--detach=true', + '--env-file=foo.env', + '--env-file=bar.conf', '--env=KOLLA_CONFIG_STRATEGY=COPY_ALWAYS', '--env=FOO=BAR', '--net=host',