mirror of
https://github.com/containers/ansible-podman-collections.git
synced 2026-02-04 07:11:49 +00:00
Add restart-sec and other options to systemd generation. (#615)
Add restart_sec, start_timeout_sec and stop_timeout_sec Signed-off-by: Sagi Shnaidman <sshnaidm@redhat.com>
This commit is contained in:
parent
b91ddd3db7
commit
ff12ccddaf
7 changed files with 145 additions and 22 deletions
|
|
@ -50,6 +50,12 @@ def run_generate_systemd_command(module, module_params, name, version):
|
|||
command.extend([
|
||||
'--restart-policy',
|
||||
sysconf['restart_policy']])
|
||||
if sysconf.get('restart_sec') is not None:
|
||||
command.extend(['--restart-sec=%s' % sysconf['restart_sec']])
|
||||
if sysconf.get('stop_timeout') is not None:
|
||||
command.extend(['--stop-timeout=%s' % sysconf['stop_timeout']])
|
||||
if sysconf.get('start_timeout') is not None:
|
||||
command.extend(['--start-timeout=%s' % sysconf['start_timeout']])
|
||||
if sysconf.get('time'):
|
||||
command.extend(['--time', str(sysconf['time'])])
|
||||
if sysconf.get('no_header'):
|
||||
|
|
|
|||
|
|
@ -759,11 +759,19 @@ class PodmanPodManager:
|
|||
self.results.update({'diff': self.pod.diff})
|
||||
if self.module.params['debug'] or self.module_params['debug']:
|
||||
self.results.update({'podman_version': self.pod.version})
|
||||
sysd = generate_systemd(self.module,
|
||||
self.module_params,
|
||||
self.name,
|
||||
self.pod.version)
|
||||
self.results['changed'] = changed or sysd['changed']
|
||||
self.results.update(
|
||||
{'podman_systemd': generate_systemd(self.module,
|
||||
self.module_params,
|
||||
self.name,
|
||||
self.pod.version)})
|
||||
{'podman_systemd': sysd['systemd']})
|
||||
if sysd['diff']:
|
||||
if 'diff' not in self.results:
|
||||
self.results.update({'diff': sysd['diff']})
|
||||
else:
|
||||
self.results['diff']['before'] += sysd['diff']['before']
|
||||
self.results['diff']['after'] += sysd['diff']['after']
|
||||
|
||||
def execute(self):
|
||||
"""Execute the desired action according to map of actions & states."""
|
||||
|
|
|
|||
|
|
@ -323,6 +323,18 @@ options:
|
|||
- 'on-watchdog'
|
||||
- 'on-abort'
|
||||
- 'always'
|
||||
restart_sec:
|
||||
description: Set the systemd service restartsec value.
|
||||
type: int
|
||||
required: false
|
||||
start_timeout:
|
||||
description: Override the default start timeout for the container with the given value.
|
||||
type: int
|
||||
required: false
|
||||
stop_timeout:
|
||||
description: Override the default stop timeout for the container with the given value.
|
||||
type: int
|
||||
required: false
|
||||
time:
|
||||
description:
|
||||
- Override the default stop timeout for the container with the given value.
|
||||
|
|
|
|||
|
|
@ -123,6 +123,18 @@ options:
|
|||
- 'on-watchdog'
|
||||
- 'on-abort'
|
||||
- 'always'
|
||||
restart_sec:
|
||||
description: Set the systemd service restartsec value.
|
||||
type: int
|
||||
required: false
|
||||
start_timeout:
|
||||
description: Override the default start timeout for the container with the given value.
|
||||
type: int
|
||||
required: false
|
||||
stop_timeout:
|
||||
description: Override the default stop timeout for the container with the given value.
|
||||
type: int
|
||||
required: false
|
||||
time:
|
||||
description:
|
||||
- Override the default stop timeout for the container with the given value.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,20 @@
|
|||
- name: Test podman_container
|
||||
block:
|
||||
|
||||
- name: Discover podman version
|
||||
shell: podman version | grep "^Version:" | awk {'print $2'}
|
||||
register: podman_v
|
||||
|
||||
- name: Set podman version to 3
|
||||
set_fact:
|
||||
podman_version: 3
|
||||
when: podman_v.stdout is version('4.0.0', 'lt')
|
||||
|
||||
- name: Set podman version to 4
|
||||
set_fact:
|
||||
podman_version: 4
|
||||
when: podman_v.stdout is version('4.0.0', '>=')
|
||||
|
||||
- name: Delete all container leftovers from tests
|
||||
containers.podman.podman_container:
|
||||
executable: "{{ test_executable | default('podman') }}"
|
||||
|
|
@ -580,7 +595,7 @@
|
|||
- idem4.podman_systemd.keys() | list | length > 0
|
||||
- idem4.podman_systemd.values() | list | length > 0
|
||||
|
||||
- name: Run container with systemd generation parameters
|
||||
- name: Run container with systemd generation parameters v4
|
||||
containers.podman.podman_container:
|
||||
executable: "{{ test_executable | default('podman') }}"
|
||||
name: container1
|
||||
|
|
@ -590,30 +605,84 @@
|
|||
generate_systemd:
|
||||
path: /tmp/
|
||||
restart_policy: always
|
||||
time: 120
|
||||
no_header: true
|
||||
names: true
|
||||
pod_prefix: whocares
|
||||
separator: zzzz
|
||||
container_prefix: contain
|
||||
register: system1
|
||||
restart_sec: 10
|
||||
start_timeout: 20
|
||||
stop_timeout: 15
|
||||
register: system14
|
||||
when: podman_version == 4
|
||||
|
||||
- name: Run container with systemd generation parameters v3
|
||||
containers.podman.podman_container:
|
||||
executable: "{{ test_executable | default('podman') }}"
|
||||
name: container1
|
||||
image: alpine
|
||||
state: started
|
||||
command: sleep 20m
|
||||
generate_systemd:
|
||||
path: /tmp/
|
||||
time: 120
|
||||
restart_policy: always
|
||||
no_header: true
|
||||
names: true
|
||||
pod_prefix: whocares
|
||||
separator: zzzz
|
||||
container_prefix: contain
|
||||
register: system13
|
||||
when: podman_version == 3
|
||||
|
||||
- name: Check service file presents
|
||||
stat:
|
||||
path: /tmp/containzzzzcontainer1.service
|
||||
register: service_file
|
||||
|
||||
- name: Check that container has correct systemd output
|
||||
- name: Check that container has correct systemd output v4
|
||||
assert:
|
||||
that:
|
||||
- system1.podman_systemd.keys() | list | first == 'containzzzzcontainer1'
|
||||
- system1.podman_systemd.values() | list | length > 0
|
||||
- system14.podman_systemd.keys() | list | first == 'containzzzzcontainer1'
|
||||
- system14.podman_systemd.values() | list | length > 0
|
||||
- service_file.stat.exists | bool
|
||||
- "'-t 120 container1' in system1.podman_systemd.values() | list | first"
|
||||
- "'Restart=always' in system1.podman_systemd.values() | list | first"
|
||||
- "'autogenerated by Podman' not in system1.podman_systemd.values() | list | first"
|
||||
- "'Restart=always' in system14.podman_systemd.values() | list | first"
|
||||
- "'autogenerated by Podman' not in system14.podman_systemd.values() | list | first"
|
||||
- "'RestartSec=10' in system14.podman_systemd.values() | list | first"
|
||||
- "'TimeoutStartSec=20' in system14.podman_systemd.values() | list | first"
|
||||
when: podman_version == 4
|
||||
|
||||
- name: Delete container with systemd generation parameters
|
||||
- name: Check that container has correct systemd output v3
|
||||
assert:
|
||||
that:
|
||||
- system13.podman_systemd.keys() | list | first == 'containzzzzcontainer1'
|
||||
- system13.podman_systemd.values() | list | length > 0
|
||||
- service_file.stat.exists | bool
|
||||
- "'Restart=always' in system13.podman_systemd.values() | list | first"
|
||||
- "'autogenerated by Podman' not in system13.podman_systemd.values() | list | first"
|
||||
- "'-t 120 ' in system13.podman_systemd.values() | list | first"
|
||||
when: podman_version == 3
|
||||
|
||||
- name: Delete container with systemd generation parameters v3
|
||||
containers.podman.podman_container:
|
||||
executable: "{{ test_executable | default('podman') }}"
|
||||
name: container1
|
||||
image: alpine
|
||||
state: absent
|
||||
command: sleep 20m
|
||||
generate_systemd:
|
||||
path: /tmp/
|
||||
time: 120
|
||||
restart_policy: always
|
||||
no_header: true
|
||||
names: true
|
||||
pod_prefix: whocares
|
||||
separator: zzzz
|
||||
container_prefix: contain
|
||||
register: system1
|
||||
when: podman_version == 3
|
||||
|
||||
- name: Delete container with systemd generation parameters v4
|
||||
containers.podman.podman_container:
|
||||
executable: "{{ test_executable | default('podman') }}"
|
||||
name: container1
|
||||
|
|
@ -623,13 +692,16 @@
|
|||
generate_systemd:
|
||||
path: /tmp/
|
||||
restart_policy: always
|
||||
time: 120
|
||||
no_header: true
|
||||
names: true
|
||||
pod_prefix: whocares
|
||||
separator: zzzz
|
||||
container_prefix: contain
|
||||
restart_sec: 10
|
||||
start_timeout: 20
|
||||
stop_timeout: 15
|
||||
register: system1
|
||||
when: podman_version == 4
|
||||
|
||||
- name: Check service file doesn't present
|
||||
stat:
|
||||
|
|
|
|||
|
|
@ -13,12 +13,14 @@
|
|||
generate_systemd:
|
||||
path: /tmp/
|
||||
restart_policy: always
|
||||
time: 120
|
||||
no_header: true
|
||||
names: true
|
||||
pod_prefix: whocares
|
||||
separator: zzzz
|
||||
container_prefix: contain
|
||||
restart_sec: 10
|
||||
start_timeout: 20
|
||||
stop_timeout: 15
|
||||
register: system0
|
||||
|
||||
- name: Check if the result is changed
|
||||
|
|
@ -35,12 +37,14 @@
|
|||
generate_systemd:
|
||||
path: /tmp/
|
||||
restart_policy: always
|
||||
time: 120
|
||||
no_header: true
|
||||
names: true
|
||||
pod_prefix: whocares
|
||||
separator: zzzz
|
||||
container_prefix: contain
|
||||
restart_sec: 10
|
||||
start_timeout: 20
|
||||
stop_timeout: 15
|
||||
register: system1
|
||||
|
||||
- name: Check if the result is not changed
|
||||
|
|
@ -62,12 +66,14 @@
|
|||
generate_systemd:
|
||||
path: /tmp/
|
||||
restart_policy: always
|
||||
time: 120
|
||||
no_header: true
|
||||
names: true
|
||||
pod_prefix: whocares
|
||||
separator: zzzz
|
||||
container_prefix: contain
|
||||
restart_sec: 10
|
||||
start_timeout: 20
|
||||
stop_timeout: 15
|
||||
register: system2
|
||||
|
||||
- name: Check if the result is changed
|
||||
|
|
@ -84,12 +90,14 @@
|
|||
generate_systemd:
|
||||
path: /tmp/
|
||||
restart_policy: always
|
||||
time: 120
|
||||
no_header: true
|
||||
names: true
|
||||
pod_prefix: whocares
|
||||
separator: zzzz
|
||||
container_prefix: contain
|
||||
restart_sec: 10
|
||||
start_timeout: 20
|
||||
stop_timeout: 15
|
||||
register: system3
|
||||
|
||||
- name: Check if the result is not changed
|
||||
|
|
@ -109,12 +117,14 @@
|
|||
generate_systemd:
|
||||
path: /tmp/
|
||||
restart_policy: always
|
||||
time: 120
|
||||
no_header: true
|
||||
names: true
|
||||
pod_prefix: whocares
|
||||
separator: zzzz
|
||||
container_prefix: contain
|
||||
restart_sec: 10
|
||||
start_timeout: 20
|
||||
stop_timeout: 15
|
||||
register: system4
|
||||
|
||||
- name: Check if the result is changed
|
||||
|
|
|
|||
|
|
@ -778,11 +778,13 @@
|
|||
generate_systemd:
|
||||
path: /tmp/dir1
|
||||
restart_policy: always
|
||||
time: 120
|
||||
no_header: true
|
||||
names: true
|
||||
pod_prefix: poditto
|
||||
container_prefix: ainer
|
||||
restart_sec: 10
|
||||
start_timeout: 20
|
||||
stop_timeout: 15
|
||||
register: system1
|
||||
|
||||
- name: Check systemd file exists
|
||||
|
|
@ -794,8 +796,9 @@
|
|||
assert:
|
||||
that:
|
||||
- system1.podman_systemd.keys() | list | length == 3
|
||||
- "'-t 120 ' in system1.podman_systemd['poditto-pod2']"
|
||||
- "'-t 15 ' in system1.podman_systemd['poditto-pod2']"
|
||||
- "'Restart=always' in system1.podman_systemd['poditto-pod2']"
|
||||
- "'RestartSec=10' in system1.podman_systemd['poditto-pod2']"
|
||||
- "'autogenerated by Podman' not in system1.podman_systemd['poditto-pod2']"
|
||||
- podsys_stat.stat.exists | bool
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue