Loading src/open_exposure_gateway/domain/srm_events.py +20 −0 Original line number Diff line number Diff line Loading @@ -54,3 +54,23 @@ class SRMOperationCompleted(BaseModel): if self.status != "failed" and not self.instances: raise ValueError("instances is required when status != failed") return self class SRMOperationStatus(BaseModel): """`event.srm.operation.status` (srm/interface-contract.md §C.1). Covers both pre-execution states (`accepted`, `failed_before_start`) and, per §C.3's "backend-driven change" case, post-completion capability condition changes (e.g. a QoD session dropped by the network) reusing the original realization's `operation_id`. Backend-specific status (e.g. `qos_status`) lives in `metadata`, never in `state`. """ schema_version: str operation_id: str service_order_id: str | None = None service_instance_id: str | None = None capability: str | None = None state: Literal["accepted", "failed_before_start", "completed", "failed", "in_progress"] metadata: dict[str, Any] | None = None correlation_id: str emitted_at: str Loading
src/open_exposure_gateway/domain/srm_events.py +20 −0 Original line number Diff line number Diff line Loading @@ -54,3 +54,23 @@ class SRMOperationCompleted(BaseModel): if self.status != "failed" and not self.instances: raise ValueError("instances is required when status != failed") return self class SRMOperationStatus(BaseModel): """`event.srm.operation.status` (srm/interface-contract.md §C.1). Covers both pre-execution states (`accepted`, `failed_before_start`) and, per §C.3's "backend-driven change" case, post-completion capability condition changes (e.g. a QoD session dropped by the network) reusing the original realization's `operation_id`. Backend-specific status (e.g. `qos_status`) lives in `metadata`, never in `state`. """ schema_version: str operation_id: str service_order_id: str | None = None service_instance_id: str | None = None capability: str | None = None state: Literal["accepted", "failed_before_start", "completed", "failed", "in_progress"] metadata: dict[str, Any] | None = None correlation_id: str emitted_at: str