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


$id = 18
$container = "flask_app"
$remoteFile = "/tmp/allure-results-$id.tar.gz"
$localFile = ".\allure-results-$id.tar.gz"

$pythonScript = @"
from app import create_app, db
from app.models import TestResult
from app.clients import MinioClient
import constants as const

app = create_app()

with app.app_context():
    result = db.session.get(TestResult, $id)
    if result is None:
        raise RuntimeError("TestResult ID $id не найден")

    object_name = (
        f"{result.run_name}/"
        f"{const.ALLURE_RESULTS_ARCHIVE_NAME}"
    )

    MinioClient().minio_client.fget_object(
        const.ALLURE_RESULTS_BUCKET_NAME,
        object_name,
        "$remoteFile",
    )

    print(f"Скачан объект: {object_name}")
"@

try {
    $pythonScript | docker exec -i $container python -

    if ($LASTEXITCODE -ne 0) {
        throw "Не удалось скачать архив из MinIO"
    }

    docker cp "${container}:${remoteFile}" $localFile

    if ($LASTEXITCODE -ne 0) {
        throw "Не удалось скопировать архив из контейнера"
    }

    Get-Item $localFile |
        Select-Object FullName, Length, LastWriteTime

    tar -tzf $localFile
}
finally {
    docker exec $container rm -f $remoteFile 2>$null
}