Migrating the classes to pydantic
main / Explore-Gitea-Actions (push) Failing after 14s

This commit is contained in:
2026-08-03 23:37:25 +01:00
parent a68d7b1d59
commit 8d73d5ded7
15 changed files with 814 additions and 479 deletions
+12 -13
View File
@@ -4,42 +4,41 @@ from yaml import dump
from playbook import models
from playbook.action_registry import ActionRegistry
from playbook.models import StepLog, ContextChecker
from playbook.models import ContextChecker
from playbook.logging_models import StepLogModel
import sys
import json
import docker
import subprocess
from typing import List, Dict, Any, Tuple
# from docker.models.containers import Container
dockeractions = ActionRegistry("docker_actions_reg")
dockeractions = ActionRegistry(name="docker_actions_reg")
@dockeractions.register(name="get_service_container_name", version="")
@ContextChecker.requires("service_name")
def get_service_container_name(ctx, name) -> StepLog:
def get_service_container_name(ctx, name) -> StepLogModel:
client = docker.from_env()
filters: Dict[str, Any]= {
filters: dict[str, object]= {
"label": [f"com.docker.compose.service={ctx["service_name"]}"]
}
containers = client.containers.list(filters=filters, all=True)
if not containers:
return StepLog.fail(name, [{
return StepLogModel.fail(name, [{
"status": "failed",
"output": f"no container found for service {ctx["service_name"]}"}
])
new_data = {"container": containers[0].id}
return StepLog.ok(name, f"found container {containers[0].id}", pipe_ctx=new_data)
return StepLogModel.ok(name, f"found container {containers[0].id}", pipe_ctx=new_data)
@dockeractions.register(name="dump_container_pg_db", version="")
@ContextChecker.requires("container", "dump_path", "db_user", "database")
def dump_container_pg_db(ctx, name) -> StepLog:
def dump_container_pg_db(ctx, name) -> StepLogModel:
client = docker.from_env()
container = client.containers.get(ctx["container"])
@@ -52,14 +51,14 @@ def dump_container_pg_db(ctx, name) -> StepLog:
if stderr:
if not isinstance(stderr, bytes):
return StepLog.fail(name, [{"status": "failed", "output": "stderr is not bytes"}])
return StepLogModel.fail(name, [{"status": "failed", "output": "stderr is not bytes"}])
if res.exit_code != 0:
error_msg = stderr.decode("utf-8") if stderr else "dump failed with no output"
return StepLog.fail(name, [{"status": "failed", "output": error_msg}])
return StepLogModel.fail(name, [{"status": "failed", "output": error_msg}])
if not isinstance(stdout, bytes):
return StepLog.fail(name, [{"status": "failed", "output": "stdout is not bytes"}])
return StepLogModel.fail(name, [{"status": "failed", "output": "stdout is not bytes"}])
with open(ctx["dump_path"], "wb") as f:
f.write(stdout)
return StepLog.ok(name, "database dump successful")
return StepLogModel.ok(name, "database dump successful")