Commit 67e6395c authored by George Papathanail's avatar George Papathanail
Browse files

fix align EAM subscriptionRequest with the CAMARA spec

parent 6868d410
Loading
Loading
Loading
Loading
+10 −2
Changes for src/open_exposure_gateway/api/camara/edge_application_management/v0_1_0_alpha_1/schemas.py: 10 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -262,12 +262,20 @@ class SubscriptionConfig(BaseModel):
    initialEvent: Optional[bool] = None


SubscriptionEventType = Literal[
    "org.camaraproject.edge-application-management.v0.app-instance-status-change",
    "org.camaraproject.edge-application-management.v0.app-deployment-status-change",
    "org.camaraproject.edge-application-management.v0.subscription-ended",
]


class SubscriptionRequest(BaseModel):
    model_config = ConfigDict(extra="forbid")

    sink: str
    # The spec only requires sink; it must be an https URI (pattern ^https:\/\/.+$).
    sink: str = Field(max_length=2048, pattern=r"^https://.+$")
    sinkCredential: Optional[dict[str, Any]] = None
    types: list[str]
    types: Optional[list[SubscriptionEventType]] = Field(default=None, min_length=1, max_length=1)
    config: Optional[SubscriptionConfig] = None


+2 −2
Changes for src/open_exposure_gateway/application/services/edge_application_management_service.py: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -622,7 +622,7 @@ class EdgeApplicationManagementService:
                    tenant_id=tenant_id,
                    api_family="edge-application-management",
                    sink=subscription.sink,
                    event_types=subscription.types,
                    event_types=list(subscription.types or []),
                    sink_credential_ref=f"secret://oeg/{operation_id}/sink-credential"
                    if subscription.sinkCredential is not None
                    else None,
@@ -765,7 +765,7 @@ class EdgeApplicationManagementService:
                    tenant_id=tenant_id,
                    api_family="edge-application-management",
                    sink=subscription.sink,
                    event_types=subscription.types,
                    event_types=list(subscription.types or []),
                    sink_credential_ref=f"secret://oeg/{operation_id}/sink-credential"
                    if subscription.sinkCredential is not None
                    else None,