1
0
Fork 0
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:
Sergey 2023-08-06 21:15:36 +03:00 committed by GitHub
parent b91ddd3db7
commit ff12ccddaf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 145 additions and 22 deletions

View file

@ -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'):

View file

@ -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."""

View file

@ -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.

View file

@ -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.

View file

@ -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:

View file

@ -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

View file

@ -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