Commit 84fdcdef authored by Paris Stentoumis's avatar Paris Stentoumis
Browse files

SRM Refactor: deployment_unit_id in GET Service Specification

parent 4f570876
Loading
Loading
Loading
Loading
+4 −2
Changes for src/srm/api/rest/router.py: 4 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@ from srm.api.rest.schemas import (
    ErrorResponse,
    GetServiceSpecificationResponse,
    ServiceCapabilityRequirementResponseSchema,
    ServiceDeploymentUnitCreateSchema,
    ServiceDeploymentUnitResponseSchema,
    ServiceSpecificationCreateSchema,
)
from srm.domain.models.canonical_parameters.parameters import (
@@ -108,7 +108,8 @@ def _build_get_response(saved: ServiceSpecification) -> GetServiceSpecificationR
            metadata=saved.metadata,
        ),
        service_deployment_units=[
            ServiceDeploymentUnitCreateSchema(
            ServiceDeploymentUnitResponseSchema(
                id=unit.id,
                ref=unit.ref,
                name=unit.name,
                runtime_kind=unit.runtime_kind,
@@ -122,6 +123,7 @@ def _build_get_response(saved: ServiceSpecification) -> GetServiceSpecificationR
        service_capability_requirements=[
            ServiceCapabilityRequirementResponseSchema(
                ref=requirement.ref,
                deployment_unit_id=requirement.deployment_unit_id,
                capability_kind=requirement.capability_kind,
                domain_kind=requirement.domain_kind,
                is_required=requirement.is_required,
+13 −1
Changes for src/srm/api/rest/schemas.py: 13 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -29,6 +29,17 @@ class ServiceDeploymentUnitCreateSchema(DomainModel):
    metadata: dict[str, Any] = Field(default_factory=dict)


class ServiceDeploymentUnitResponseSchema(DomainModel):
    id: UUID
    ref: str
    name: str
    runtime_kind: RuntimeKind
    artifact_ref: str | None = None
    resource_requirements: ComputeRequirements
    parameters_schema: dict[str, Any] = Field(default_factory=dict)
    metadata: dict[str, Any] = Field(default_factory=dict)


class ServiceCapabilityRequirementCreateSchema(DomainModel):
    ref: str
    deployment_unit_ref: str | None = None
@@ -42,6 +53,7 @@ class ServiceCapabilityRequirementCreateSchema(DomainModel):

class ServiceCapabilityRequirementResponseSchema(DomainModel):
    ref: str
    deployment_unit_id: UUID | None = None
    capability_kind: CapabilityKind
    domain_kind: DomainKind | None = None
    is_required: bool = True
@@ -83,7 +95,7 @@ class CreateServiceSpecificationResponse(DomainModel):

class GetServiceSpecificationResponse(DomainModel):
    service_specification: ServiceSpecificationCreateSchema
    service_deployment_units: list[ServiceDeploymentUnitCreateSchema]
    service_deployment_units: list[ServiceDeploymentUnitResponseSchema]
    service_capability_requirements: list[ServiceCapabilityRequirementResponseSchema]


+5 −0
Changes for tests/api/rest/test_catalog.py: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -140,6 +140,11 @@ async def test_create_then_get_returns_full_specification(client_with_db: AsyncC
    assert get_body["service_specification"]["ref"] == "video-analytics"
    assert get_body["service_deployment_units"][0]["ref"] == "main"
    assert get_body["service_capability_requirements"][0]["ref"] == "compute-capability"
    assert UUID(get_body["service_deployment_units"][0]["id"])
    assert (
        get_body["service_capability_requirements"][0]["deployment_unit_id"]
        == get_body["service_deployment_units"][0]["id"]
    )


@pytest.mark.integration