diff --git a/plugins/modules/podman_container.py b/plugins/modules/podman_container.py index e808483..a76a5b6 100644 --- a/plugins/modules/podman_container.py +++ b/plugins/modules/podman_container.py @@ -392,6 +392,18 @@ options: - k8s-file - journald - json-file + log_level: + description: + - Logging level for Podman. Log messages above specified level + ("debug"|"info"|"warn"|"error"|"fatal"|"panic") (default "error") + type: str + choices: + - debug + - info + - warn + - error + - fatal + - panic log_opt: description: - Logging driver specific options. Used to set the path to the container @@ -1104,6 +1116,9 @@ class PodmanModuleParams: def addparam_log_opt(self, c): return c + ['--log-opt', self.params['log_opt']] + def addparam_log_level(self, c): + return c + ['--log-level', self.params['log_level']] + def addparam_memory(self, c): return c + ['--memory', self.params['memory']] @@ -1271,6 +1286,7 @@ class PodmanDefaults: "ipc": "", "kernelmemory": "0", "log_driver": "k8s-file", + "log_level": "error", "memory": "0", "memory_swap": "0", "memory_reservation": "0", @@ -1570,6 +1586,15 @@ class PodmanContainerDiff: after = self.params['log_driver'] return self._diff_update_and_compare('log_driver', before, after) + def diffparam_log_level(self): + excom = self.info['exitcommand'] + if '--log-level' in excom: + before = excom[excom.index('--log-level') + 1].lower() + else: + before = self.params['log_level'] + after = self.params['log_level'] + return self._diff_update_and_compare('log_level', before, after) + # Parameter has limited idempotency, unable to guess the default log_path def diffparam_log_opt(self): before = self.info['logpath'] @@ -1942,12 +1967,18 @@ class PodmanContainer: ).construct_command_from_params() full_cmd = " ".join([self.module_params['executable']] + [to_native(i) for i in b_command]) - self.module.log("PODMAN-CONTAINER-DEBUG: %s" % full_cmd) self.actions.append(full_cmd) - if not self.module.check_mode: + if self.module.check_mode: + self.module.log("PODMAN-CONTAINER-DEBUG (check_mode): %s" % full_cmd) + else: rc, out, err = self.module.run_command( [self.module_params['executable'], b'container'] + b_command, expand_user_and_vars=False) + self.module.log("PODMAN-CONTAINER-DEBUG: %s" % full_cmd) + if self.module_params['debug']: + self.module.log("PODMAN-CONTAINER-DEBUG STDOUT: %s" % out) + self.module.log("PODMAN-CONTAINER-DEBUG STDERR: %s" % err) + self.module.log("PODMAN-CONTAINER-DEBUG RC: %s" % rc) self.stdout = out self.stderr = err if rc != 0: @@ -2175,6 +2206,9 @@ def main(): label_file=dict(type='str'), log_driver=dict(type='str', choices=[ 'k8s-file', 'journald', 'json-file']), + log_level=dict( + type='str', + choices=["debug", "info", "warn", "error", "fatal", "panic"]), log_opt=dict(type='str', aliases=['log_options']), memory=dict(type='str'), memory_reservation=dict(type='str'), diff --git a/tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml b/tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml index 60e7834..7ddfa41 100644 --- a/tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml +++ b/tests/integration/targets/podman_container_idempotency/tasks/idem_all.yml @@ -67,3 +67,54 @@ - name: Check info with changed environment vars assert: that: test4 is changed + +- name: Run container with log level + containers.podman.podman_container: + image: "{{ idem_image }}" + name: idempotency + state: present + log_level: debug + command: 1h + register: test5 + +- name: Check info with changed environment vars + assert: + that: test5 is changed + +- name: Run container with log level again + containers.podman.podman_container: + image: "{{ idem_image }}" + name: idempotency + state: present + log_level: debug + command: 1h + register: test6 + +- name: Check info with changed environment vars + assert: + that: test6 is not changed + +- name: Run container with changed log level + containers.podman.podman_container: + image: "{{ idem_image }}" + name: idempotency + state: present + log_level: error + command: 1h + register: test7 + +- name: Check info with changed environment vars + assert: + that: test7 is changed + +- name: Run container with default log level + containers.podman.podman_container: + image: "{{ idem_image }}" + name: idempotency + state: present + command: 1h + register: test8 + +- name: Check info with changed environment vars + assert: + that: test8 is not changed