Add log level config to podman_container module
Add option to configure log-level for podman.
Print stderr, stdout and rc in case of "debug" option.
Fail container module if there is stderr not empty (excluding logs)
Change-Id: Id3854e70608fae9721978263d503bbeaf20d64e8
(cherry picked from commit 61f28d58bd
)
This commit is contained in:
parent
a1c7cc73e0
commit
759820d34c
|
@ -416,6 +416,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
|
||||
|
@ -1115,6 +1127,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']]
|
||||
|
||||
|
@ -1282,6 +1297,7 @@ class PodmanDefaults:
|
|||
"ipc": "",
|
||||
"kernelmemory": "0",
|
||||
"log_driver": "k8s-file",
|
||||
"log_level": "error",
|
||||
"memory": "0",
|
||||
"memory_swap": "0",
|
||||
"memory_reservation": "0",
|
||||
|
@ -1561,6 +1577,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]
|
||||
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']
|
||||
|
@ -1807,6 +1832,13 @@ class PodmanContainer:
|
|||
action {str} -- action to perform - start, create, stop, run,
|
||||
delete
|
||||
"""
|
||||
|
||||
def clean_stderr(err):
|
||||
# Inspect STDERR for logs to avoid modules failures in case of
|
||||
# increased log level verbosity
|
||||
return "\n".join(
|
||||
[line for line in err.splitlines() if 'level=' not in line]).strip()
|
||||
|
||||
b_command = PodmanModuleParams(action,
|
||||
self.module.params,
|
||||
self.version,
|
||||
|
@ -1814,17 +1846,23 @@ 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:
|
||||
if rc != 0 or clean_stderr(err) != '':
|
||||
self.module.fail_json(
|
||||
msg="Can't %s container %s" % (action, self.name),
|
||||
msg="Failed %s container %s" % (action, self.name),
|
||||
stdout=out, stderr=err)
|
||||
|
||||
def run(self):
|
||||
|
|
Loading…
Reference in New Issue