Загрузка данных


@'
import io
import json
import tarfile

from app.clients import MinioClient
from constants import ALLURE_RESULTS_BUCKET_NAME

object_name = "run_24_20251226_102538/allure-results.tar.gz"
client = MinioClient()
response = client.minio_client.get_object(
    ALLURE_RESULTS_BUCKET_NAME,
    object_name,
)

try:
    archive_bytes = response.read()
finally:
    response.close()
    response.release_conn()

print(f"Archive size: {len(archive_bytes)} bytes")

with tarfile.open(fileobj=io.BytesIO(archive_bytes), mode="r:gz") as archive:
    members = archive.getmembers()

    print("\nArchive entries:")
    for member in members:
        print(f"- {member.name} ({member.size} bytes)")

    print("\nAllure JSON:")
    for member in members:
        if not member.isfile():
            continue
        if not (
            member.name.endswith("-result.json")
            or member.name.endswith("-container.json")
        ):
            continue

        fileobj = archive.extractfile(member)
        data = json.loads(fileobj.read().decode("utf-8"))

        print(json.dumps({
            "file": member.name,
            "keys": list(data.keys()),
            "uuid": data.get("uuid"),
            "name": data.get("name"),
            "fullName": data.get("fullName"),
            "status": data.get("status"),
            "stage": data.get("stage"),
            "start": data.get("start"),
            "stop": data.get("stop"),
            "children": data.get("children"),
            "labels_count": len(data.get("labels", [])),
            "steps_count": len(data.get("steps", [])),
        }, ensure_ascii=False, indent=2))
'@ | docker exec -i testops-flask-app python -