mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-23 13:20:23 -07:00
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 True
|
||||||
return False
|
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):
|
def _compare(self, a, b, compare):
|
||||||
'''
|
'''
|
||||||
Compare values a and b as described in compare.
|
Compare values a and b as described in compare.
|
||||||
|
@ -2122,6 +2128,20 @@ class ContainerManager(DockerBaseClass):
|
||||||
self.container_stop(container.Id)
|
self.container_stop(container.Id)
|
||||||
container = self._get_container(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
|
self.facts = container.raw
|
||||||
|
|
||||||
def absent(self):
|
def absent(self):
|
||||||
|
|
|
@ -159,12 +159,6 @@
|
||||||
- capabilities_3 is not changed
|
- capabilities_3 is not changed
|
||||||
- capabilities_4 is changed
|
- capabilities_4 is changed
|
||||||
|
|
||||||
####################################################################
|
|
||||||
## cleanup #########################################################
|
|
||||||
####################################################################
|
|
||||||
|
|
||||||
# TODO: - cleanup
|
|
||||||
|
|
||||||
####################################################################
|
####################################################################
|
||||||
## command #########################################################
|
## command #########################################################
|
||||||
####################################################################
|
####################################################################
|
||||||
|
@ -477,7 +471,7 @@
|
||||||
- debug_4 is changed
|
- debug_4 is changed
|
||||||
|
|
||||||
####################################################################
|
####################################################################
|
||||||
## detach ##########################################################
|
## detach, cleanup #################################################
|
||||||
####################################################################
|
####################################################################
|
||||||
|
|
||||||
- name: detach without cleanup
|
- name: detach without cleanup
|
||||||
|
@ -2316,7 +2310,69 @@
|
||||||
## paused ##########################################################
|
## 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 ########################################################
|
## pid_mode ########################################################
|
||||||
|
@ -2534,13 +2590,102 @@
|
||||||
## recreate ########################################################
|
## 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 #########################################################
|
## 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 ##################################################
|
## restart_policy ##################################################
|
||||||
|
@ -2946,12 +3091,6 @@
|
||||||
- sysctls_3 is not changed
|
- sysctls_3 is not changed
|
||||||
- sysctls_4 is changed
|
- sysctls_4 is changed
|
||||||
|
|
||||||
####################################################################
|
|
||||||
## timeout #########################################################
|
|
||||||
####################################################################
|
|
||||||
|
|
||||||
# TODO: - timeout
|
|
||||||
|
|
||||||
####################################################################
|
####################################################################
|
||||||
## tmpfs ###########################################################
|
## tmpfs ###########################################################
|
||||||
####################################################################
|
####################################################################
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue