From 959d135b6009fd5f5e74487c57ec3600505f9d45 Mon Sep 17 00:00:00 2001 From: Ash Wilson Date: Mon, 9 Mar 2015 10:20:04 -0400 Subject: [PATCH] Exposed ports, env vars, volumes from the image. This will account for settings that are provided by the hierarchy of Dockerfiles used to construct your image, rather than only accounting for settings provided to the module directly. --- lib/ansible/modules/cloud/docker/docker.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/ansible/modules/cloud/docker/docker.py b/lib/ansible/modules/cloud/docker/docker.py index 5a386025dd..1f00d21c31 100644 --- a/lib/ansible/modules/cloud/docker/docker.py +++ b/lib/ansible/modules/cloud/docker/docker.py @@ -808,9 +808,7 @@ class DockerManager(object): continue # EXPOSED PORTS - # Note that ports that are bound at container run are also exposed - # implicitly. - expected_exposed_ports = set() + expected_exposed_ports = set((image['ContainerConfig']['ExposedPorts'] or {}).keys()) for p in (self.exposed_ports or []): expected_exposed_ports.add("/".join(p)) @@ -824,7 +822,7 @@ class DockerManager(object): # VOLUMES # not including bind modes. - expected_volume_keys = set() + expected_volume_keys = set((image['ContainerConfig']['Volumes'] or {}).keys()) if self.volumes: for key, config in self.volumes.iteritems(): if not config and key not in self.binds: @@ -850,13 +848,13 @@ class DockerManager(object): # actual_env is likely to include environment variables injected by # the Dockerfile. - expected_env = set() + expected_env = set(image['ContainerConfig']['Env'] or []) if self.env: for name, value in self.env.iteritems(): expected_env.add("{}={}".format(name, value)) actual_env = set(container['Config']['Env'] or []) - if not actual_env.issuperset(expected_env): + if actual_env != expected_env: # Don't include the environment difference in the output. self.reload_reasons.append('environment') differing.append(container)