Loading src/federation_manager/contracts/__init__.py 0 → 100644 +0 −0 Empty file added. src/federation_manager/contracts/srm.py 0 → 100644 +83 −0 Changes for src/federation_manager/contracts/srm.py: 83 added lines, 0 removed lines. Original line number Diff line number Diff line # Vendored from srm/interface-contract.md §B/§C — hand-synced; SRM's spec wins. from datetime import datetime from typing import Literal from uuid import UUID from pydantic import BaseModel, ConfigDict, Field Source = Literal["nbi_camara", "nbi_tmf", "operator_portal", "federation"] class CommandEnvelopeV1(BaseModel): schema_version: str = "1.0" operation_id: UUID correlation_id: str requested_at: datetime app_provider_id: str federation_partner_ref: str | None = None source: Source class DeployTargetV1(BaseModel): app_instance_id: UUID zone_id: UUID | None = None domain_id: UUID | None = None class DeployPayloadV1(BaseModel): instance_name: str | None = None placement_constraints: dict[str, object] | None = None class SrmServiceDeployV1(CommandEnvelopeV1): service_specification_id: UUID targets: list[DeployTargetV1] = Field(min_length=1) deploy: DeployPayloadV1 class TerminatePayloadV1(BaseModel): grace_period_seconds: int = 0 class SrmServiceTerminateV1(CommandEnvelopeV1): service_instance_id: UUID service_specification_id: UUID | None = None terminate: TerminatePayloadV1 = Field(default_factory=TerminatePayloadV1) class SrmOperationStatusV1(BaseModel): model_config = ConfigDict(extra="ignore") schema_version: str operation_id: UUID service_order_id: UUID | None = None service_instance_id: UUID | None = None capability: str | None = None state: Literal["accepted", "failed_before_start", "completed", "failed", "in_progress"] metadata: dict[str, object] | None = None correlation_id: str emitted_at: datetime class CompletedInstanceV1(BaseModel): model_config = ConfigDict(extra="ignore") service_instance_id: UUID zone_id: UUID status: Literal["completed", "failed"] external_ref: str | None = None error: dict[str, object] | None = None class SrmOperationCompletedV1(BaseModel): model_config = ConfigDict(extra="ignore") schema_version: str operation_id: UUID status: Literal["completed", "partially_completed", "failed"] service_order_id: UUID | None = None instances: list[CompletedInstanceV1] | None = None metadata: dict[str, object] | None = None error: dict[str, object] | None = None correlation_id: str completed_at: datetime Loading
src/federation_manager/contracts/srm.py 0 → 100644 +83 −0 Changes for src/federation_manager/contracts/srm.py: 83 added lines, 0 removed lines. Original line number Diff line number Diff line # Vendored from srm/interface-contract.md §B/§C — hand-synced; SRM's spec wins. from datetime import datetime from typing import Literal from uuid import UUID from pydantic import BaseModel, ConfigDict, Field Source = Literal["nbi_camara", "nbi_tmf", "operator_portal", "federation"] class CommandEnvelopeV1(BaseModel): schema_version: str = "1.0" operation_id: UUID correlation_id: str requested_at: datetime app_provider_id: str federation_partner_ref: str | None = None source: Source class DeployTargetV1(BaseModel): app_instance_id: UUID zone_id: UUID | None = None domain_id: UUID | None = None class DeployPayloadV1(BaseModel): instance_name: str | None = None placement_constraints: dict[str, object] | None = None class SrmServiceDeployV1(CommandEnvelopeV1): service_specification_id: UUID targets: list[DeployTargetV1] = Field(min_length=1) deploy: DeployPayloadV1 class TerminatePayloadV1(BaseModel): grace_period_seconds: int = 0 class SrmServiceTerminateV1(CommandEnvelopeV1): service_instance_id: UUID service_specification_id: UUID | None = None terminate: TerminatePayloadV1 = Field(default_factory=TerminatePayloadV1) class SrmOperationStatusV1(BaseModel): model_config = ConfigDict(extra="ignore") schema_version: str operation_id: UUID service_order_id: UUID | None = None service_instance_id: UUID | None = None capability: str | None = None state: Literal["accepted", "failed_before_start", "completed", "failed", "in_progress"] metadata: dict[str, object] | None = None correlation_id: str emitted_at: datetime class CompletedInstanceV1(BaseModel): model_config = ConfigDict(extra="ignore") service_instance_id: UUID zone_id: UUID status: Literal["completed", "failed"] external_ref: str | None = None error: dict[str, object] | None = None class SrmOperationCompletedV1(BaseModel): model_config = ConfigDict(extra="ignore") schema_version: str operation_id: UUID status: Literal["completed", "partially_completed", "failed"] service_order_id: UUID | None = None instances: list[CompletedInstanceV1] | None = None metadata: dict[str, object] | None = None error: dict[str, object] | None = None correlation_id: str completed_at: datetime