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 __future__ import annotations
from re import A from re import A
from tkinter.constants import E
import yaml import yaml
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from pydantic import BaseModel from pydantic import BaseModel
from playbook.models import ActModel, PlaybookModel, StepModel, timed_run 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 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. """ """ Return a mapping of action roles (pre, play, post) to function names. """
pass 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(): class PlaybookYAMLParser():
@staticmethod @staticmethod
@@ -173,16 +131,20 @@ class Playbook():
def from_yaml(cls, fp: str) -> Playbook: def from_yaml(cls, fp: str) -> Playbook:
return PlaybookYAMLParser.from_yaml(fp) 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: def view_playbook(self) -> str:
return self.model.model_dump_json() return self.model.model_dump_json()
def run_play(self) -> PlaybookLog: def run_play(self) -> PlaybookLog:
log: PlaybookLog = self.model.run() log: PlaybookLog = self.model.run()
log.log_file_path = self.model.log_dir + \
# if self.model.log_dir != "": log_file_name(self.model.playbook_name, log.timing.start_date_timestamp)
# log.log_file_path = os.path.join( self._write_log(log)
# self.model.log_dir, self.log_file_name(log.start_date_timestamp)
# )
# self._write_log(log)
return log return log
+13 -2
View File
@@ -1,6 +1,7 @@
from enum import StrEnum from enum import StrEnum
from dataclasses import field from dataclasses import field
from pydantic import BaseModel from pydantic import BaseModel
from datetime import datetime, timezone
class Status(StrEnum): class Status(StrEnum):
@@ -53,7 +54,7 @@ class PlaybookLog(BaseLog):
@classmethod @classmethod
def ok(cls, name: str, logs: list[ActLog], msg: str = "success") -> PlaybookLog: def ok(cls, name: str, logs: list[ActLog], msg: str = "success") -> PlaybookLog:
return cls(name=name, status=Status.GOOD, summary=msg, act_logs=logs) return cls(name=name, status=Status.GOOD, summary=msg, act_logs=logs)
@classmethod @classmethod
def fail(cls, name: str, logs: list[ActLog], err: list[str]) -> PlaybookLog: def fail(cls, name: str, logs: list[ActLog], err: list[str]) -> PlaybookLog:
return cls(name=name, status=Status.BAD, errors=err, act_logs=logs) 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, return cls(name=name, status=Status.GOOD, msg=msg, pipe_ctx=pipe_ctx,
substeps_logs=substeps) substeps_logs=substeps)
@ classmethod @classmethod
def fail(cls, name: str, err: str) -> StepLogModel: def fail(cls, name: str, err: str) -> StepLogModel:
return cls(name=name, status=Status.BAD, error=err) 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")