Loading src/open_exposure_gateway/application/services/edge_application_management_service.py +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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, Loading src/open_exposure_gateway/dependencies.py +37 −1 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 Loading Loading @@ -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( Loading tests/unit/conftest.py +24 −0 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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, ) Loading tests/unit/test_eam_service.py +27 −1 Original line number Diff line number Diff line Loading @@ -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") Loading Loading @@ -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, ) Loading Loading
src/open_exposure_gateway/application/services/edge_application_management_service.py +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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, Loading
src/open_exposure_gateway/dependencies.py +37 −1 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 Loading Loading @@ -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( Loading
tests/unit/conftest.py +24 −0 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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, ) Loading
tests/unit/test_eam_service.py +27 −1 Original line number Diff line number Diff line Loading @@ -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") Loading Loading @@ -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, ) Loading