diff --git a/cloud/docker/docker_container.py b/cloud/docker/docker_container.py index 14bfac2b356..fe21d65fed5 100644 --- a/cloud/docker/docker_container.py +++ b/cloud/docker/docker_container.py @@ -25,6 +25,7 @@ short_description: manage docker containers description: - Manage the life cycle of docker containers. + - Supports check mode. Run with --check and --diff to view config difference and list of actions to be taken. version_added: "2.1.0" @@ -304,10 +305,12 @@ options: required: false restart_policy: description: - - Container restart policy. + - Container restart policy. Place quotes around I(no) option. choices: - - on-failure - always + - no + - on-failure + - unless-stopped default: on-failure required: false restart_retries: @@ -612,6 +615,7 @@ class TaskParameters(DockerBaseClass): self.recreate = None self.restart = None self.restart_retries = None + self.restart_policy = None self.shm_size = None self.security_opts = None self.state = None @@ -645,9 +649,6 @@ class TaskParameters(DockerBaseClass): self.links = self._parse_links() - if self.restart_policy is not None: - self.restart_policy = dict(Name=self.restart_policy, - MaximumRetryCount=self.restart_retries) if self.volumes: self.volumes = self._expand_host_paths() @@ -763,7 +764,6 @@ class TaskParameters(DockerBaseClass): binds='volume_binds', volumes_from='volumes_from', network_mode='network_mode', - restart_policy='restart_policy', cap_add='capabilities', extra_hosts='etc_hosts', read_only='read_only', @@ -783,6 +783,11 @@ class TaskParameters(DockerBaseClass): for key, value in host_config_params.iteritems(): if getattr(self, value, None) is not None: params[key] = getattr(self, value) + + if self.restart_policy: + params['restart_policy'] = dict(Name=self.restart_policy, + MaximumRetryCount=self.restart_retries) + return self.client.create_host_config(**params) def _parse_publish_ports(self): @@ -1342,11 +1347,11 @@ class ContainerManager(DockerBaseClass): elif state == 'absent': self.absent() - # remove for now, until we decide about general framework - try: - del self.results['actions'] - except: - pass + if not self.check_mode: + try: + del self.results['actions'] + except: + pass if self.client.module._diff: self.results['diff'] = self.diff @@ -1600,7 +1605,7 @@ def main(): read_only=dict(type='bool', default=False), recreate=dict(type='bool', default=False), restart=dict(type='bool', default=False), - restart_policy=dict(type='str', choices=['on-failure', 'always']), + restart_policy=dict(type='str', choices=['no', 'on-failure', 'always', 'unless-stopped']), restart_retries=dict(type='int', default=0), shm_size=dict(type='str'), security_opts=dict(type=list),