Loading README.md +275 −188 File changed.Preview size limit exceeded, changes collapsed. Show changes doc/bootstrap_phase.puml +50 −40 Original line number Diff line number Diff line @startuml Bootstrap_Phase actor "IETF NS Controller" as IETFNS participant "RestconfConsumerService" as RCS participant "RestconfClient" as RC participant "TerflowSDN\n(RESTCONF Server)" as TFSDN actor "IETF NS Controller\n(Spring Boot)" as IETFNS participant "SloSleTemplateBootstrapService" as BOOTSTRAP participant "CatalogClient" as CATALOG participant "OpenSlice TMF API" as TMF participant "ResourceSpecificationTemplateRegistry" as REGISTRY participant "RestconfClient" as RC participant "RESTCONF Provider\n(e.g. TerflowSDN)" as PROVIDER participant "TMFResourceSpecRepositoryImpl" as REPO participant "OpenSlice TMF Catalog API" as TMF IETFNS ->> BOOTSTRAP: ApplicationReady Event IETFNS ->> BOOTSTRAP: ApplicationReady Event\n(CommandLineRunner.run) activate BOOTSTRAP BOOTSTRAP ->> RCS: Retrieve templates from provider activate RCS == Step 1: Create Fixed Resource Specification Templates == RCS ->> RC: GET /api/ns/v0/slice-service-templates activate RC BOOTSTRAP ->> BOOTSTRAP: createSloSleSpecification()\n→ IETFSloSleTemplateSpec\n + SloSleTemplateAsJson (TEXT) BOOTSTRAP ->> BOOTSTRAP: createSliceServiceSpecification()\n→ IETFSliceServiceSpec\n + SliceServiceAsJson (TEXT) BOOTSTRAP ->> BOOTSTRAP: createNetworkSliceServicesSpecification()\n→ IETFNetworkSliceServicesSpec\n + SloSleTemplatesAsJsonArray (TEXT)\n + SliceServicesAsJsonArray (TEXT) RC ->> TFSDN: RESTCONF GET request activate TFSDN TFSDN -->> RC: Return SloSleTemplate[] deactivate TFSDN == Step 2: Retrieve Dynamic Templates from RESTCONF Provider (optional) == RC -->> RCS: SliceService[] with SloSleTemplate[] alt RESTCONF client available BOOTSTRAP ->> RC: getSloSleTemplates() activate RC RC ->> PROVIDER: GET /restconf/data/ietf-network-slice-service:\nnetwork-slice-services/slo-sle-templates\nAccept: application/yang-data+json activate PROVIDER PROVIDER -->> RC: JSON (RFC 9543 slo-sle-template list) deactivate PROVIDER RC -->> BOOTSTRAP: JSON string deactivate RC BOOTSTRAP ->> BOOTSTRAP: Rfc9543JsonConverter.parseSloSleTemplates(json)\n→ List<SloSleTemplate> BOOTSTRAP ->> BOOTSTRAP: mapper.toLogicalResourceSpec(template)\nfor each retrieved template else RESTCONF client not available BOOTSTRAP ->> BOOTSTRAP: Skip provider retrieval (warn) end RCS -->> BOOTSTRAP: List<SloSleTemplate> deactivate RCS BOOTSTRAP ->> BOOTSTRAP: For each SloSleTemplate:\n1. Create LogicalResourceSpecification\n2. Generate example jsonRequest\n3. Add jsonRequest characteristic == Step 3: Register All Specifications in TMF Catalog == BOOTSTRAP ->> CATALOG: Register LogicalResourceSpecification activate CATALOG CATALOG ->> TMF: POST to Resource Catalog API\nCategory: ns.ietf.controllers.osl.etsi.org/v1alpha loop for each LogicalResourceSpecification BOOTSTRAP ->> REPO: createOrUpdateResourceSpecByNameCategoryVersion(spec) activate REPO REPO ->> TMF: POST /resourceCatalogManagement/v4/resourceSpecification\nCategory: ns.ietf.controllers.osl.etsi.org/v1alpha activate TMF TMF -->> CATALOG: ResourceSpecification created TMF -->> REPO: LogicalResourceSpecification { uuid } deactivate TMF REPO -->> BOOTSTRAP: registered spec with UUID deactivate REPO BOOTSTRAP ->> REGISTRY: registerTemplate(spec.name, spec.uuid) activate REGISTRY REGISTRY -->> BOOTSTRAP: stored deactivate REGISTRY end CATALOG -->> BOOTSTRAP: Success deactivate CATALOG BOOTSTRAP ->> BOOTSTRAP: Create example SliceService\nfor testing BOOTSTRAP ->> RCS: Store SloSleTemplate in memory RCS -->> BOOTSTRAP: Stored BOOTSTRAP -->> IETFNS: Bootstrap complete BOOTSTRAP -->> IETFNS: Bootstrap complete\n(N template IDs registered) deactivate BOOTSTRAP note over IETFNS IETF NS Controller is now ready to receive Controller is now ready to receive CREATE / UPDATE / DELETE messages for network slice services on ActiveMQ queues: CREATE/ns.ietf.controllers.osl.etsi.org/v1alpha/0.1.0 Spec names mapped in ResourceSpecificationTemplateRegistry: IETFSloSleTemplateSpec → uuid-1 IETFSliceServiceSpec → uuid-2 IETFNetworkSliceServicesSpec → uuid-3 end note @enduml Loading
doc/bootstrap_phase.puml +50 −40 Original line number Diff line number Diff line @startuml Bootstrap_Phase actor "IETF NS Controller" as IETFNS participant "RestconfConsumerService" as RCS participant "RestconfClient" as RC participant "TerflowSDN\n(RESTCONF Server)" as TFSDN actor "IETF NS Controller\n(Spring Boot)" as IETFNS participant "SloSleTemplateBootstrapService" as BOOTSTRAP participant "CatalogClient" as CATALOG participant "OpenSlice TMF API" as TMF participant "ResourceSpecificationTemplateRegistry" as REGISTRY participant "RestconfClient" as RC participant "RESTCONF Provider\n(e.g. TerflowSDN)" as PROVIDER participant "TMFResourceSpecRepositoryImpl" as REPO participant "OpenSlice TMF Catalog API" as TMF IETFNS ->> BOOTSTRAP: ApplicationReady Event IETFNS ->> BOOTSTRAP: ApplicationReady Event\n(CommandLineRunner.run) activate BOOTSTRAP BOOTSTRAP ->> RCS: Retrieve templates from provider activate RCS == Step 1: Create Fixed Resource Specification Templates == RCS ->> RC: GET /api/ns/v0/slice-service-templates activate RC BOOTSTRAP ->> BOOTSTRAP: createSloSleSpecification()\n→ IETFSloSleTemplateSpec\n + SloSleTemplateAsJson (TEXT) BOOTSTRAP ->> BOOTSTRAP: createSliceServiceSpecification()\n→ IETFSliceServiceSpec\n + SliceServiceAsJson (TEXT) BOOTSTRAP ->> BOOTSTRAP: createNetworkSliceServicesSpecification()\n→ IETFNetworkSliceServicesSpec\n + SloSleTemplatesAsJsonArray (TEXT)\n + SliceServicesAsJsonArray (TEXT) RC ->> TFSDN: RESTCONF GET request activate TFSDN TFSDN -->> RC: Return SloSleTemplate[] deactivate TFSDN == Step 2: Retrieve Dynamic Templates from RESTCONF Provider (optional) == RC -->> RCS: SliceService[] with SloSleTemplate[] alt RESTCONF client available BOOTSTRAP ->> RC: getSloSleTemplates() activate RC RC ->> PROVIDER: GET /restconf/data/ietf-network-slice-service:\nnetwork-slice-services/slo-sle-templates\nAccept: application/yang-data+json activate PROVIDER PROVIDER -->> RC: JSON (RFC 9543 slo-sle-template list) deactivate PROVIDER RC -->> BOOTSTRAP: JSON string deactivate RC BOOTSTRAP ->> BOOTSTRAP: Rfc9543JsonConverter.parseSloSleTemplates(json)\n→ List<SloSleTemplate> BOOTSTRAP ->> BOOTSTRAP: mapper.toLogicalResourceSpec(template)\nfor each retrieved template else RESTCONF client not available BOOTSTRAP ->> BOOTSTRAP: Skip provider retrieval (warn) end RCS -->> BOOTSTRAP: List<SloSleTemplate> deactivate RCS BOOTSTRAP ->> BOOTSTRAP: For each SloSleTemplate:\n1. Create LogicalResourceSpecification\n2. Generate example jsonRequest\n3. Add jsonRequest characteristic == Step 3: Register All Specifications in TMF Catalog == BOOTSTRAP ->> CATALOG: Register LogicalResourceSpecification activate CATALOG CATALOG ->> TMF: POST to Resource Catalog API\nCategory: ns.ietf.controllers.osl.etsi.org/v1alpha loop for each LogicalResourceSpecification BOOTSTRAP ->> REPO: createOrUpdateResourceSpecByNameCategoryVersion(spec) activate REPO REPO ->> TMF: POST /resourceCatalogManagement/v4/resourceSpecification\nCategory: ns.ietf.controllers.osl.etsi.org/v1alpha activate TMF TMF -->> CATALOG: ResourceSpecification created TMF -->> REPO: LogicalResourceSpecification { uuid } deactivate TMF REPO -->> BOOTSTRAP: registered spec with UUID deactivate REPO BOOTSTRAP ->> REGISTRY: registerTemplate(spec.name, spec.uuid) activate REGISTRY REGISTRY -->> BOOTSTRAP: stored deactivate REGISTRY end CATALOG -->> BOOTSTRAP: Success deactivate CATALOG BOOTSTRAP ->> BOOTSTRAP: Create example SliceService\nfor testing BOOTSTRAP ->> RCS: Store SloSleTemplate in memory RCS -->> BOOTSTRAP: Stored BOOTSTRAP -->> IETFNS: Bootstrap complete BOOTSTRAP -->> IETFNS: Bootstrap complete\n(N template IDs registered) deactivate BOOTSTRAP note over IETFNS IETF NS Controller is now ready to receive Controller is now ready to receive CREATE / UPDATE / DELETE messages for network slice services on ActiveMQ queues: CREATE/ns.ietf.controllers.osl.etsi.org/v1alpha/0.1.0 Spec names mapped in ResourceSpecificationTemplateRegistry: IETFSloSleTemplateSpec → uuid-1 IETFSliceServiceSpec → uuid-2 IETFNetworkSliceServicesSpec → uuid-3 end note @enduml