readded the loggin method and its call
main / Explore-Gitea-Actions (push) Failing after 10s

This commit is contained in:
2026-08-04 14:24:22 +01:00
parent aba2279f43
commit 064ae818b8
2 changed files with 26 additions and 53 deletions
+13 -51
View File
@@ -1,12 +1,13 @@
from __future__ import annotations
from re import A
from tkinter.constants import E
import yaml
from abc import ABC, abstractmethod
from pydantic import BaseModel
from playbook.models import ActModel, PlaybookModel, StepModel, timed_run
from playbook.logging_models import PlaybookLog, Status, StepLogModel
from playbook.logging_models import PlaybookLog, Status, StepLogModel, log_file_name
from playbook.action_registry import ActionFn, ActionRegistry
@@ -21,49 +22,6 @@ class StepIF(ABC):
""" Return a mapping of action roles (pre, play, post) to function names. """
pass
# def log_file_name(self, start_date_ns: int) -> str:
# """ Format to ISO 8601. """
# seconds = start_date_ns // 1_000_000_000
# ms = (start_date_ns % 1_000_000_000) // 1_000_000
#
# dt = datetime.fromtimestamp(seconds, tz=timezone.utc).astimezone()
#
# return dt.strftime(f"{self.name}_%Y-%m-%d_%H-%M-%S.{ms:03d}.log")
#
# def _write_log(self, log: StepLogModel):
# try:
# with open(log.log_file_path, "w") as file:
# json.dump(asdict(log), file)
# except Exception as e:
# raise PlaybookError(f"failed to create log file {e}") from e
# return ""
#
# def _play_act(self) -> StepLogModel:
# playLog: StepLogModel = StepLogModel(
# step_name=self.name,
# status=Status.GOOD,
# duration_sec=0,
# msg="",
# error=[],
# substeps=[],
# )
#
# for a in self._acts:
# log: StepLogModel = self._play_steps(self._acts[a])
#
# if log.failed:
# playLog.error.append({
# "status": "failed",
# "output": f"failed in step: {log.step_name}"
# })
# playLog.status = Status.BAD
# break
#
# if playLog.status == Status.GOOD:
# playLog.msg = "success"
#
# return playLog
class PlaybookYAMLParser():
@staticmethod
@@ -173,16 +131,20 @@ class Playbook():
def from_yaml(cls, fp: str) -> Playbook:
return PlaybookYAMLParser.from_yaml(fp)
def _write_log(self, log: PlaybookLog):
try:
with open(log.log_file_path, "w") as file:
_ = file.write(log.model_dump_json())
except Exception as e:
raise Exception(f"failed to create log file {e}") from e
return ""
def view_playbook(self) -> str:
return self.model.model_dump_json()
def run_play(self) -> PlaybookLog:
log: PlaybookLog = self.model.run()
# if self.model.log_dir != "":
# log.log_file_path = os.path.join(
# self.model.log_dir, self.log_file_name(log.start_date_timestamp)
# )
# self._write_log(log)
log.log_file_path = self.model.log_dir + \
log_file_name(self.model.playbook_name, log.timing.start_date_timestamp)
self._write_log(log)
return log
+13 -2
View File
@@ -1,6 +1,7 @@
from enum import StrEnum
from dataclasses import field
from pydantic import BaseModel
from datetime import datetime, timezone
class Status(StrEnum):
@@ -53,7 +54,7 @@ class PlaybookLog(BaseLog):
@classmethod
def ok(cls, name: str, logs: list[ActLog], msg: str = "success") -> PlaybookLog:
return cls(name=name, status=Status.GOOD, summary=msg, act_logs=logs)
@classmethod
def fail(cls, name: str, logs: list[ActLog], err: list[str]) -> PlaybookLog:
return cls(name=name, status=Status.BAD, errors=err, act_logs=logs)
@@ -76,6 +77,16 @@ class StepLogModel(BaseLog):
return cls(name=name, status=Status.GOOD, msg=msg, pipe_ctx=pipe_ctx,
substeps_logs=substeps)
@ classmethod
@classmethod
def fail(cls, name: str, err: str) -> StepLogModel:
return cls(name=name, status=Status.BAD, error=err)
def log_file_name(name: str, start_date_ns: int) -> str:
""" Format to ISO 8601. """
seconds = start_date_ns // 1_000_000_000
ms = (start_date_ns % 1_000_000_000) // 1_000_000
dt = datetime.fromtimestamp(seconds, tz=timezone.utc).astimezone()
return dt.strftime(f"{name}_%Y-%m-%d_%H-%M-%S.{ms:03d}.log")