Commit 1bf9d598 authored by George Papathanail's avatar George Papathanail
Browse files

feat: add SRM network-capability-activate command model

parent 05301195
Loading
Loading
Loading
Loading
+53 −3
Original line number Diff line number Diff line
# TODO: Define internal OEG↔SRM domain models for Quality on Demand.
# These will represent the platform-internal schema used for both the sync path
# (SRM HTTP client) and the async path (DataBus), translated from the CAMARA schema.
from __future__ import annotations

from enum import StrEnum
from typing import Any

from pydantic import BaseModel, Field


class Subject(StrEnum):
    TASK_ACTIVATE = "command.srm.network.capability.activate"


class NetworkCapabilityTargetDevice(BaseModel):
    phone_number: str | None = None
    ipv4: str | None = None
    ipv6: str | None = None
    network_access_id: str | None = None


class NetworkCapabilityTargetApplicationServer(BaseModel):
    ipv4: str | None = None
    ipv6: str | None = None


class NetworkCapabilityTarget(BaseModel):
    device: NetworkCapabilityTargetDevice
    application_server: NetworkCapabilityTargetApplicationServer


class NetworkCapabilityParameters(BaseModel):
    duration_seconds: int
    # Always {} — nothing sources this yet; reserved by srm.params/v1.
    extra: dict[str, Any] = Field(default_factory=dict)


class NetworkCapabilityPayload(BaseModel):
    capability_type: str = "qod_session"
    target: NetworkCapabilityTarget
    profile_ref: str
    parameters: NetworkCapabilityParameters


class SRMNetworkCapabilityActivateCommand(BaseModel):
    schema_version: str = "1.0"
    operation_id: str
    correlation_id: str
    requested_at: str
    app_provider_id: str
    source: str = "nbi_camara"
    service_specification_id: str
    resource_zone_id: str | None = None
    network_domain_id: str | None = None
    network_capability: NetworkCapabilityPayload