Set labels on containers managed by docker-cmd

Docker labels are metadata associated with running containers. This
change sets labels which will allow the correct lifecycle decisions
to be made by the docker-cmd hook about which containers are managed
by heat and when specific containers should be deleted.

Associating these labels now will also allow the os-refresh-config
50-heat-config-docker-cmd to be rewritten to not require a directory
to store state, and instead get all of the current state information
from 'docker ps' and 'docker inspect' calls.

Change-Id: I967df26c8b0661413dc504c45d1764d23f895530
This commit is contained in:
Steve Baker 2017-02-03 00:30:17 +00:00
parent 2a230b2c6e
commit d30fa94af4
2 changed files with 64 additions and 0 deletions

View File

@ -59,6 +59,21 @@ def execute(cmd):
return cmd_stdout, cmd_stderr, subproc.returncode
def label_arguments(cmd, container, cid, iv):
cmd.extend([
'--label',
'deploy_stack_id=%s' % iv.get('deploy_stack_id'),
'--label',
'deploy_resource_name=%s' % iv.get('deploy_resource_name'),
'--label',
'config_id=%s' % cid,
'--label',
'container_name=%s' % container,
'--label',
'managed_by=docker-cmd'
])
def main(argv=sys.argv):
global log
log = logging.getLogger('heat-config')
@ -106,6 +121,7 @@ def main(argv=sys.argv):
'--name',
container
]
label_arguments(cmd, container, c.get('id'), input_values)
if config[container].get('detach', True):
cmd.append('--detach=true')
elif action == 'exec':

View File

@ -26,6 +26,14 @@ class HookDockerCmdTest(common.RunScriptTest):
data = {
"name": "abcdef001",
"group": "docker-cmd",
"id": "abc123",
"inputs": [{
"name": "deploy_stack_id",
"value": "the_stack",
}, {
"name": "deploy_resource_name",
"value": "the_deployment",
}],
"config": {
"db": {
"name": "x",
@ -128,6 +136,16 @@ class HookDockerCmdTest(common.RunScriptTest):
'run',
'--name',
'db',
'--label',
'deploy_stack_id=the_stack',
'--label',
'deploy_resource_name=the_deployment',
'--label',
'config_id=abc123',
'--label',
'container_name=db',
'--label',
'managed_by=docker-cmd',
'--detach=true',
'--privileged=false',
'xxx'
@ -137,6 +155,16 @@ class HookDockerCmdTest(common.RunScriptTest):
'run',
'--name',
'web',
'--label',
'deploy_stack_id=the_stack',
'--label',
'deploy_resource_name=the_deployment',
'--label',
'config_id=abc123',
'--label',
'container_name=web',
'--label',
'managed_by=docker-cmd',
'--detach=true',
'--env=KOLLA_CONFIG_STRATEGY=COPY_ALWAYS',
'--env=FOO=BAR',
@ -210,6 +238,16 @@ class HookDockerCmdTest(common.RunScriptTest):
'run',
'--name',
'db',
'--label',
'deploy_stack_id=the_stack',
'--label',
'deploy_resource_name=the_deployment',
'--label',
'config_id=abc123',
'--label',
'container_name=db',
'--label',
'managed_by=docker-cmd',
'--detach=true',
'--privileged=false',
'xxx'
@ -219,6 +257,16 @@ class HookDockerCmdTest(common.RunScriptTest):
'run',
'--name',
'web',
'--label',
'deploy_stack_id=the_stack',
'--label',
'deploy_resource_name=the_deployment',
'--label',
'config_id=abc123',
'--label',
'container_name=web',
'--label',
'managed_by=docker-cmd',
'--detach=true',
'--env=KOLLA_CONFIG_STRATEGY=COPY_ALWAYS',
'--env=FOO=BAR',