From cc2b8ce81e92e2b6f36d598e427978ce311bfc98 Mon Sep 17 00:00:00 2001 From: ckunki Date: Fri, 17 Nov 2023 11:44:09 +0100 Subject: [PATCH] Fixed last review finding. --- .../ds/sandbox/lib/ansible/ansible_access.py | 9 ++--- .../ds/sandbox/lib/ansible/ansible_runner.py | 38 +++++++++++-------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/exasol/ds/sandbox/lib/ansible/ansible_access.py b/exasol/ds/sandbox/lib/ansible/ansible_access.py index dfa4395f..3e07cd28 100644 --- a/exasol/ds/sandbox/lib/ansible/ansible_access.py +++ b/exasol/ds/sandbox/lib/ansible/ansible_access.py @@ -1,4 +1,5 @@ import ansible_runner +import json import logging from dataclasses import dataclass @@ -24,7 +25,7 @@ class AnsibleAccess: def run( private_data_dir: str, run_ctx: AnsibleRunContext, - event_logger: Callable[[AnsibleEvent], None], + event_logger: Callable[[str], None], event_handler: Callable[[AnsibleEvent], bool] = None, ): quiet = not get_status_logger(LogType.ANSIBLE).isEnabledFor(logging.INFO) @@ -36,10 +37,6 @@ def run( extravars=run_ctx.extra_vars, ) for e in r.events: - event_logger(e) + event_logger(json.dumps(e, indent=2)) if r.rc != 0: raise AnsibleException(r.rc) - -if __name__ == "__main__": - a = _event_handler({"event_data": { "duration": 1}}) - print(f'a = "{a}"') diff --git a/exasol/ds/sandbox/lib/ansible/ansible_runner.py b/exasol/ds/sandbox/lib/ansible/ansible_runner.py index 54409923..b3165d9f 100644 --- a/exasol/ds/sandbox/lib/ansible/ansible_runner.py +++ b/exasol/ds/sandbox/lib/ansible/ansible_runner.py @@ -1,4 +1,3 @@ -import json import logging from pathlib import Path @@ -20,19 +19,26 @@ class AnsibleRunner: def __init__(self, ansible_access: AnsibleAccess, work_dir: Path): self._ansible_access = ansible_access self._work_dir = work_dir - - @staticmethod - def event_logger(event: AnsibleEvent): - LOG.debug(json.dumps(event, indent=2)) - - @staticmethod - def event_handler(event: AnsibleEvent) -> bool: - try: - duration = event["event_data"]["duration"] - if duration is not None and duration > 0.5: - print(f"duration: {round(duration)} seconds") - except KeyError as ex: - pass + self._duration_logger = AnsibleRunner.duration_logger() + + @classmethod + def duration_logger(cls) -> logging.Logger: + def handler(): + handler = logging.StreamHandler() + handler.setFormatter(logging.Formatter('%(message)s')) + return handler + logger = logging.getLogger(f"{__name__}:{cls.__name__}") + logger.setLevel(logging.DEBUG) + logger.propagate = False + logger.addHandler(handler()) + return logger + + def event_handler(self, event: AnsibleEvent) -> bool: + if not "event_data" in event: + return True + duration = event["event_data"].get("duration", 0) + if duration > 0.5: + self._duration_logger.debug(f"duration: {round(duration)} seconds") return True def run(self, ansible_run_context: AnsibleRunContext, host_infos: Tuple[HostInfo]): @@ -43,6 +49,6 @@ def run(self, ansible_run_context: AnsibleRunContext, host_infos: Tuple[HostInfo self._ansible_access.run( str(self._work_dir), ansible_run_context, - self.event_logger, - self.event_handler, + event_logger=LOG.debug, + event_handler=self.event_handler, )