Commit cd086645 authored by George Papathanail's avatar George Papathanail
Browse files

feat(eam): wire Operation/AppInstance/CallbackRegistration repos

parent 392cbcde
Loading
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -43,6 +43,9 @@ from open_exposure_gateway.domain.models import (
    AppRegistrationStatus,
    PackageType,
)
from open_exposure_gateway.ports.database.callbacks import CallbackRegistrationRepository
from open_exposure_gateway.ports.database.instances import AppInstanceRepository
from open_exposure_gateway.ports.database.operations import OperationRepository
from open_exposure_gateway.ports.database.registration import AppRegistrationRepository
from open_exposure_gateway.ports.databus_port import DataBusPort
from open_exposure_gateway.ports.srm_port import SRMClientPort
@@ -62,10 +65,16 @@ class EdgeApplicationManagementService:
        srm_client: SRMClientPort,
        publisher: DataBusPort | None = None,
        app_registration_repo: AppRegistrationRepository | None = None,
        operation_repo: OperationRepository | None = None,
        app_instance_repo: AppInstanceRepository | None = None,
        callback_registration_repo: CallbackRegistrationRepository | None = None,
    ) -> None:
        self.srm_client = srm_client
        self._publisher = publisher
        self._app_registration_repo = app_registration_repo
        self._operation_repo = operation_repo
        self._app_instance_repo = app_instance_repo
        self._callback_registration_repo = callback_registration_repo

    async def get_edge_cloud_zones(
        self,
+37 −1
Original line number Diff line number Diff line
@@ -6,9 +6,18 @@ from fastapi import Depends, Request
from sqlalchemy import text
from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession

from open_exposure_gateway.adapters.database.repos.app_instances import (
    SqlAppInstanceRepository,
)
from open_exposure_gateway.adapters.database.repos.app_registrations import (
    SqlAppRegistrationRepository,
)
from open_exposure_gateway.adapters.database.repos.callback_registrations import (
    SqlCallbackRegistrationRepository,
)
from open_exposure_gateway.adapters.database.repos.operations import (
    SqlOperationRepository,
)
from open_exposure_gateway.api.camara.common import XCorrelatorHeader
from open_exposure_gateway.application.services.edge_application_management_service import (
    EdgeApplicationManagementService,
@@ -17,6 +26,9 @@ from open_exposure_gateway.application.services.quality_on_demand_service import
    QualityOnDemandService,
)
from open_exposure_gateway.core.state import AppState
from open_exposure_gateway.ports.database.callbacks import CallbackRegistrationRepository
from open_exposure_gateway.ports.database.instances import AppInstanceRepository
from open_exposure_gateway.ports.database.operations import OperationRepository
from open_exposure_gateway.ports.database.registration import AppRegistrationRepository
from open_exposure_gateway.ports.databus_port import DataBusPort
from open_exposure_gateway.ports.srm_port import SRMClientPort
@@ -87,12 +99,36 @@ def get_app_registration_repo(session: SessionDep) -> AppRegistrationRepository:
    return SqlAppRegistrationRepository(session)


def get_operation_repo(session: SessionDep) -> OperationRepository:
    return SqlOperationRepository(session)


def get_app_instance_repo(session: SessionDep) -> AppInstanceRepository:
    return SqlAppInstanceRepository(session)


def get_callback_registration_repo(session: SessionDep) -> CallbackRegistrationRepository:
    return SqlCallbackRegistrationRepository(session)


def get_edge_app_service(
    srm: SRMClientPort = Depends(get_client),
    publisher: DataBusPort = Depends(get_publisher),
    app_registration_repo: AppRegistrationRepository = Depends(get_app_registration_repo),
    operation_repo: OperationRepository = Depends(get_operation_repo),
    app_instance_repo: AppInstanceRepository = Depends(get_app_instance_repo),
    callback_registration_repo: CallbackRegistrationRepository = Depends(
        get_callback_registration_repo
    ),
) -> EdgeApplicationManagementService:
    return EdgeApplicationManagementService(srm, publisher, app_registration_repo)
    return EdgeApplicationManagementService(
        srm,
        publisher,
        app_registration_repo,
        operation_repo,
        app_instance_repo,
        callback_registration_repo,
    )


def get_qod_service(
+24 −0
Original line number Diff line number Diff line
@@ -22,8 +22,11 @@ from open_exposure_gateway.dependencies import (
)
from open_exposure_gateway.main import app
from tests.unit.fakes import (
    FakeAppInstanceRepository,
    FakeAppRegistrationRepository,
    FakeCallbackRegistrationRepository,
    FakeDataBus,
    FakeOperationRepository,
    FakeSRMClient,
    wire_operation_consumer,
    wire_srm_worker,
@@ -74,16 +77,37 @@ def app_registration_repo() -> FakeAppRegistrationRepository:
    return FakeAppRegistrationRepository()


@pytest.fixture()
def operation_repo() -> FakeOperationRepository:
    return FakeOperationRepository()


@pytest.fixture()
def app_instance_repo() -> FakeAppInstanceRepository:
    return FakeAppInstanceRepository()


@pytest.fixture()
def callback_registration_repo() -> FakeCallbackRegistrationRepository:
    return FakeCallbackRegistrationRepository()


@pytest.fixture()
def eam_service(
    fake_srm: FakeSRMClient,
    fake_bus: FakeDataBus,
    app_registration_repo: FakeAppRegistrationRepository,
    operation_repo: FakeOperationRepository,
    app_instance_repo: FakeAppInstanceRepository,
    callback_registration_repo: FakeCallbackRegistrationRepository,
) -> EdgeApplicationManagementService:
    return EdgeApplicationManagementService(
        srm_client=fake_srm,
        publisher=fake_bus,
        app_registration_repo=app_registration_repo,
        operation_repo=operation_repo,
        app_instance_repo=app_instance_repo,
        callback_registration_repo=callback_registration_repo,
    )


+27 −1
Original line number Diff line number Diff line
@@ -42,7 +42,12 @@ from open_exposure_gateway.domain.models import (
    AppRegistrationStatus,
    PackageType,
)
from tests.unit.fakes import FakeAppRegistrationRepository
from tests.unit.fakes import (
    FakeAppInstanceRepository,
    FakeAppRegistrationRepository,
    FakeCallbackRegistrationRepository,
    FakeOperationRepository,
)

APP_ID = UUID("bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb")
ZONE_ID = UUID("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")
@@ -147,16 +152,37 @@ def app_registration_repo() -> FakeAppRegistrationRepository:
    return FakeAppRegistrationRepository()


@pytest.fixture()
def operation_repo() -> FakeOperationRepository:
    return FakeOperationRepository()


@pytest.fixture()
def app_instance_repo() -> FakeAppInstanceRepository:
    return FakeAppInstanceRepository()


@pytest.fixture()
def callback_registration_repo() -> FakeCallbackRegistrationRepository:
    return FakeCallbackRegistrationRepository()


@pytest.fixture()
def service(
    srm_client: AsyncMock,
    publisher: AsyncMock,
    app_registration_repo: FakeAppRegistrationRepository,
    operation_repo: FakeOperationRepository,
    app_instance_repo: FakeAppInstanceRepository,
    callback_registration_repo: FakeCallbackRegistrationRepository,
) -> EdgeApplicationManagementService:
    return EdgeApplicationManagementService(
        srm_client=srm_client,
        publisher=publisher,
        app_registration_repo=app_registration_repo,
        operation_repo=operation_repo,
        app_instance_repo=app_instance_repo,
        callback_registration_repo=callback_registration_repo,
    )