Commit 56dbf20a authored by Paris Stentoumis's avatar Paris Stentoumis
Browse files

fix: after rebase

parent 57b8bf6a
Loading
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -69,7 +69,6 @@ def build_network_capability_activate_use_case(
        service_instances=SqlServiceInstanceRepository(session),
        capability_instances=SqlCapabilityInstanceRepository(session),
        zones=SqlZoneRepository(session),
        domains=SqlDomainRepository(session),
        publisher=publisher,
    )

+2 −2
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ from srm.adapters.database.repos.catalog import (
    SqlServiceCapabilityRequirementRepository,
    SqlServiceSpecificationRepository,
)
from srm.adapters.database.repos.topology import SqlDomainRepository, SqlZoneRepository
from srm.adapters.database.repos.topology import SqlZoneRepository
from srm.app_state import AppState
from srm.application.services.capability_placement import CapabilityPlacementPlanner
from srm.application.services.device_targeted_control_path import (
@@ -94,7 +94,7 @@ def get_location_query_use_case(
        SqlServiceSpecificationRepository(session),
        SqlServiceCapabilityRequirementRepository(session),
        DeviceTargetedControlPathResolver(
            CapabilityPlacementPlanner(SqlZoneRepository(session), SqlDomainRepository(session)),
            CapabilityPlacementPlanner(SqlZoneRepository(session)),
            registry,
        ),
        registry,
+2 −2
Original line number Diff line number Diff line
@@ -306,11 +306,11 @@ async def list_zones(
    status_code=status.HTTP_204_NO_CONTENT,
    responses={
        status.HTTP_404_NOT_FOUND: {
            "model": ErrorResponse,
            "model": ProblemDetail,
            "description": "Service specification not found.",
        },
        status.HTTP_409_CONFLICT: {
            "model": ErrorResponse,
            "model": ProblemDetail,
            "description": "Service specification has live service instances.",
        },
    },
+6 −6
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ from uuid import UUID
from pydantic import ValidationError
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker

from srm.api.databus.schemas import SrmNetworkCapabilityActivateV1, ValidatedEnvelopeV1
from srm.api.databus.schemas import AnswerableCommandV1, SrmNetworkCapabilityActivateV1
from srm.application.use_cases.network_capability_activate import (
    NetworkCapabilityActivateCommand,
    NetworkCapabilityActivateResult,
@@ -39,7 +39,7 @@ class NetworkCapabilityActivateCommandCoordinator:
        self._use_case_factory = use_case_factory
        self._publisher = publisher

    async def handle(self, envelope: ValidatedEnvelopeV1) -> None:
    async def handle(self, envelope: AnswerableCommandV1) -> None:
        command = await self._parse_command(envelope)
        if command is None:
            return
@@ -65,7 +65,7 @@ class NetworkCapabilityActivateCommandCoordinator:

    async def _parse_command(
        self,
        envelope: ValidatedEnvelopeV1,
        envelope: AnswerableCommandV1,
    ) -> NetworkCapabilityActivateCommand | None:
        try:
            activate_message = SrmNetworkCapabilityActivateV1.model_validate(
@@ -163,7 +163,7 @@ class NetworkCapabilityActivateCommandCoordinator:

    async def _publish_failed_before_start_for_invalid_command(
        self,
        envelope: ValidatedEnvelopeV1,
        envelope: AnswerableCommandV1,
    ) -> None:
        now = datetime.now(UTC)
        status_event = SrmOperationStatusV1(
@@ -199,7 +199,7 @@ class NetworkCapabilityActivateCommandCoordinator:
            completed_event.model_dump(mode="json"),
        )

    def _capability_from_envelope(self, envelope: ValidatedEnvelopeV1) -> str | None:
    def _capability_from_envelope(self, envelope: AnswerableCommandV1) -> str | None:
        if envelope.model_extra is None:
            return None

@@ -212,7 +212,7 @@ class NetworkCapabilityActivateCommandCoordinator:
            return capability_type
        return None

    def _service_instance_id_from_envelope(self, envelope: ValidatedEnvelopeV1) -> UUID | None:
    def _service_instance_id_from_envelope(self, envelope: AnswerableCommandV1) -> UUID | None:
        if envelope.model_extra is None:
            return None

+0 −19
Original line number Diff line number Diff line
@@ -93,25 +93,6 @@ class CapabilityPlacementPlanner:
        ranked.sort(key=lambda item: item[:3])
        return [placement for *_, placement in ranked]

    async def _place_pinned_domain(
        self,
        request: CapabilityPlacementRequest,
    ) -> CapabilityPlacement | None:
        assert request.pin.zone_id is not None
        assert request.pin.domain_id is not None

        zone = await self._zones.get_by_id(request.pin.zone_id)
        if zone is None or zone.state != ZoneState.ACTIVE:
            return None

        domain = await self._domains.get_by_id(request.pin.domain_id)
        if domain is None:
            return None
        if domain.zone_id != zone.id or domain.kind != request.domain_kind:
            return None

        return self._select_from_domain(zone, domain, request)

    async def _place_pinned_zone(
        self,
        request: CapabilityPlacementRequest,
Loading