docker_container: fix paused and add some tests (#47900)
* cleanup is already tested. * Add test for paused. * Add recreate and restart tests. * timeout is a common docker option * Implement paused and fix paused test. * Add changelog. * Improve paused test.
This commit is contained in:
parent
242bd512d0
commit
65768b996d
3 changed files with 177 additions and 16 deletions
2
changelogs/fragments/47900-docker_container-paused.yml
Normal file
2
changelogs/fragments/47900-docker_container-paused.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- "docker_container - fix ``paused`` option (which never worked)."
|
|
@ -1538,6 +1538,12 @@ class Container(DockerBaseClass):
|
|||
return True
|
||||
return False
|
||||
|
||||
@property
|
||||
def paused(self):
|
||||
if self.container and self.container.get('State'):
|
||||
return self.container['State'].get('Paused', False)
|
||||
return False
|
||||
|
||||
def _compare(self, a, b, compare):
|
||||
'''
|
||||
Compare values a and b as described in compare.
|
||||
|
@ -2122,6 +2128,20 @@ class ContainerManager(DockerBaseClass):
|
|||
self.container_stop(container.Id)
|
||||
container = self._get_container(container.Id)
|
||||
|
||||
if state == 'started' and container.paused != self.parameters.paused:
|
||||
if not self.check_mode:
|
||||
try:
|
||||
if self.parameters.paused:
|
||||
self.client.pause(container=container.Id)
|
||||
else:
|
||||
self.client.unpause(container=container.Id)
|
||||
except Exception as exc:
|
||||
self.fail("Error %s container %s: %s" % (
|
||||
"pausing" if self.parameters.paused else "unpausing", container.Id, str(exc)
|
||||
))
|
||||
self.results['changed'] = True
|
||||
self.results['actions'].append(dict(set_paused=self.parameters.paused))
|
||||
|
||||
self.facts = container.raw
|
||||
|
||||
def absent(self):
|
||||
|
|
|
@ -159,12 +159,6 @@
|
|||
- capabilities_3 is not changed
|
||||
- capabilities_4 is changed
|
||||
|
||||
####################################################################
|
||||
## cleanup #########################################################
|
||||
####################################################################
|
||||
|
||||
# TODO: - cleanup
|
||||
|
||||
####################################################################
|
||||
## command #########################################################
|
||||
####################################################################
|
||||
|
@ -477,7 +471,7 @@
|
|||
- debug_4 is changed
|
||||
|
||||
####################################################################
|
||||
## detach ##########################################################
|
||||
## detach, cleanup #################################################
|
||||
####################################################################
|
||||
|
||||
- name: detach without cleanup
|
||||
|
@ -2316,7 +2310,69 @@
|
|||
## paused ##########################################################
|
||||
####################################################################
|
||||
|
||||
# TODO: - paused
|
||||
- name: paused
|
||||
docker_container:
|
||||
image: alpine:3.8
|
||||
command: "/bin/sh -c 'sleep 1s ; yes'"
|
||||
name: "{{ cname }}"
|
||||
state: started
|
||||
paused: yes
|
||||
stop_timeout: 1
|
||||
register: paused_1
|
||||
|
||||
- pause:
|
||||
seconds: 2
|
||||
|
||||
- name: paused (logs)
|
||||
command: docker logs --tail=20 "{{ cname }}"
|
||||
register: paused_2
|
||||
|
||||
- name: paused (idempotent)
|
||||
docker_container:
|
||||
image: alpine:3.8
|
||||
command: "/bin/sh -c 'sleep 1s ; yes'"
|
||||
name: "{{ cname }}"
|
||||
state: started
|
||||
paused: yes
|
||||
stop_timeout: 1
|
||||
register: paused_3
|
||||
|
||||
- name: paused (continue)
|
||||
docker_container:
|
||||
image: alpine:3.8
|
||||
command: "/bin/sh -c 'sleep 1s ; yes'"
|
||||
name: "{{ cname }}"
|
||||
state: started
|
||||
paused: no
|
||||
stop_timeout: 1
|
||||
register: paused_4
|
||||
|
||||
- pause:
|
||||
seconds: 2
|
||||
|
||||
- name: paused (stop)
|
||||
docker_container:
|
||||
name: "{{ cname }}"
|
||||
state: stopped
|
||||
stop_timeout: 1
|
||||
|
||||
- name: paused (logs)
|
||||
command: docker logs --tail=20 "{{ cname }}"
|
||||
register: paused_5
|
||||
|
||||
- name: cleanup
|
||||
docker_container:
|
||||
name: "{{ cname }}"
|
||||
state: absent
|
||||
stop_timeout: 1
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- paused_1 is changed
|
||||
- paused_2.stdout_lines | length == 0
|
||||
- paused_3 is not changed
|
||||
- paused_4 is changed
|
||||
- paused_5.stdout_lines | length > 0
|
||||
|
||||
####################################################################
|
||||
## pid_mode ########################################################
|
||||
|
@ -2534,13 +2590,102 @@
|
|||
## recreate ########################################################
|
||||
####################################################################
|
||||
|
||||
# TODO: - recreate
|
||||
- name: recreate (created)
|
||||
docker_container:
|
||||
image: alpine:3.8
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
name: "{{ cname }}"
|
||||
state: present
|
||||
stop_timeout: 1
|
||||
register: recreate_1
|
||||
|
||||
- name: recreate (created, recreate)
|
||||
docker_container:
|
||||
image: alpine:3.8
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
name: "{{ cname }}"
|
||||
recreate: yes
|
||||
state: present
|
||||
stop_timeout: 1
|
||||
register: recreate_2
|
||||
|
||||
- name: recreate (started)
|
||||
docker_container:
|
||||
image: alpine:3.8
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
name: "{{ cname }}"
|
||||
state: started
|
||||
stop_timeout: 1
|
||||
register: recreate_3
|
||||
|
||||
- name: recreate (started, recreate)
|
||||
docker_container:
|
||||
image: alpine:3.8
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
name: "{{ cname }}"
|
||||
recreate: yes
|
||||
state: started
|
||||
stop_timeout: 1
|
||||
register: recreate_4
|
||||
|
||||
- name: cleanup
|
||||
docker_container:
|
||||
name: "{{ cname }}"
|
||||
state: absent
|
||||
stop_timeout: 1
|
||||
|
||||
- debug: var=recreate_1
|
||||
- debug: var=recreate_2
|
||||
- debug: var=recreate_3
|
||||
- debug: var=recreate_4
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- recreate_1 is changed
|
||||
- recreate_2 is changed
|
||||
- recreate_3 is changed
|
||||
- recreate_4 is changed
|
||||
- recreate_1.ansible_facts.docker_container.Id != recreate_2.ansible_facts.docker_container.Id
|
||||
- recreate_2.ansible_facts.docker_container.Id == recreate_3.ansible_facts.docker_container.Id
|
||||
- recreate_3.ansible_facts.docker_container.Id != recreate_4.ansible_facts.docker_container.Id
|
||||
|
||||
####################################################################
|
||||
## restart #########################################################
|
||||
####################################################################
|
||||
|
||||
# TODO: - restart
|
||||
- name: restart
|
||||
docker_container:
|
||||
image: alpine:3.8
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
name: "{{ cname }}"
|
||||
state: started
|
||||
stop_timeout: 1
|
||||
register: restart_1
|
||||
|
||||
- name: restart (restart)
|
||||
docker_container:
|
||||
image: alpine:3.8
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
name: "{{ cname }}"
|
||||
restart: yes
|
||||
state: started
|
||||
stop_timeout: 1
|
||||
register: restart_2
|
||||
|
||||
- name: cleanup
|
||||
docker_container:
|
||||
name: "{{ cname }}"
|
||||
state: absent
|
||||
stop_timeout: 1
|
||||
|
||||
- debug: var=restart_1
|
||||
- debug: var=restart_2
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- restart_1 is changed
|
||||
- restart_2 is changed
|
||||
- restart_1.ansible_facts.docker_container.Id == restart_2.ansible_facts.docker_container.Id
|
||||
|
||||
####################################################################
|
||||
## restart_policy ##################################################
|
||||
|
@ -2946,12 +3091,6 @@
|
|||
- sysctls_3 is not changed
|
||||
- sysctls_4 is changed
|
||||
|
||||
####################################################################
|
||||
## timeout #########################################################
|
||||
####################################################################
|
||||
|
||||
# TODO: - timeout
|
||||
|
||||
####################################################################
|
||||
## tmpfs ###########################################################
|
||||
####################################################################
|
||||
|
|
Loading…
Reference in a new issue