Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Promote celery task #180

Merged
merged 2 commits into from
May 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions backend/tasks/celery.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
update_artefacts_with_tracker_info,
)
from test_observer.kernel_swm_integration.swm_reader import get_artefacts_swm_info
from test_observer.promotion.promoter import promote_artefacts

DEVELOPMENT_BROKER_URL = "redis://test-observer-redis"
broker_url = environ.get("CELERY_BROKER_URL", DEVELOPMENT_BROKER_URL)
Expand All @@ -20,6 +21,7 @@
@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs): # noqa
sender.add_periodic_task(300, integrate_with_kernel_swm.s())
sender.add_periodic_task(600, run_promote_artefacts.s())


@app.task
Expand All @@ -29,5 +31,10 @@ def integrate_with_kernel_swm():
update_artefacts_with_tracker_info(db, swm_info)


@app.task
def run_promote_artefacts():
promote_artefacts(SessionLocal())


if __name__ == "__main__":
app.start()
2 changes: 0 additions & 2 deletions backend/test_observer/controllers/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,9 @@
from . import test_executions
from .application import version
from .artefacts import artefacts
from .promoter import promoter
from .reports import reports

router = APIRouter()
router.include_router(promoter.router)
router.include_router(version.router, prefix="/v1/version")
router.include_router(test_executions.router, prefix="/v1/test-executions")
router.include_router(artefacts.router, prefix="/v1/artefacts")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@

import logging

from fastapi import APIRouter, Depends
from fastapi.responses import JSONResponse
from sqlalchemy.orm import Session

from test_observer.data_access import queries
Expand All @@ -32,14 +30,11 @@
get_artefacts_by_family,
get_stage_by_name,
)
from test_observer.data_access.setup import get_db
from test_observer.external_apis.archive import ArchiveManager
from test_observer.external_apis.snapcraft import (
get_channel_map_from_snapcraft,
)

router = APIRouter()

logger = logging.getLogger("test-observer-backend")

CHANNEL_PROMOTION_MAP = {
Expand All @@ -57,8 +52,7 @@
}


@router.put("/v0/artefacts/promote")
def promote_artefacts(db: Session = Depends(get_db)):
def promote_artefacts(db: Session):
"""
Promote all the artefacts in all the families if it has been updated on the
external source
Expand All @@ -70,23 +64,21 @@ def promote_artefacts(db: Session = Depends(get_db)):
) = promoter_controller(db)
logger.info("INFO: Processed artefacts %s", processed_artefacts_status)
if False in processed_artefacts_status.values():
return JSONResponse(
status_code=500,
content={
logger.error(
{
artefact_key: processed_artefacts_error_messages[artefact_key]
for (
artefact_key,
artefact_status,
) in processed_artefacts_status.items()
if artefact_status is False
},
}
)
return JSONResponse(
status_code=200,
content={"detail": "All the artefacts have been processed successfully"},
return logger.info(
{"detail": "All the artefacts have been processed successfully"}
)
except Exception as exc:
return JSONResponse(status_code=500, content={"detail": str(exc)})
return logger.error({"detail": str(exc)})


def promoter_controller(session: Session) -> tuple[dict, dict]:
Expand Down
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,16 @@

from datetime import datetime, timedelta

from fastapi.testclient import TestClient
from requests_mock import Mocker
from sqlalchemy.orm import Session

from test_observer.data_access.models import ArtefactBuild
from test_observer.promotion.promoter import promote_artefacts
from tests.data_generator import DataGenerator


def test_run_to_move_artefact_snap(
db_session: Session,
test_client: TestClient,
requests_mock: Mocker,
generator: DataGenerator,
):
Expand Down Expand Up @@ -92,7 +91,7 @@ def test_run_to_move_artefact_snap(
)

# Act
test_client.put("/v0/artefacts/promote")
promote_artefacts(db_session)

db_session.refresh(artefact)

Expand All @@ -102,7 +101,6 @@ def test_run_to_move_artefact_snap(

def test_run_to_move_artefact_deb(
db_session: Session,
test_client: TestClient,
requests_mock: Mocker,
generator: DataGenerator,
):
Expand Down Expand Up @@ -161,7 +159,7 @@ def test_run_to_move_artefact_deb(
)

# Act
test_client.put("/v0/artefacts/promote")
promote_artefacts(db_session)

db_session.refresh(artefact1)

Expand Down
Loading