Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Sequence Diagram

Image Added

Expand
titleClick here to view PlantUML Source
@startuml
Autonumber
Skinparam sequenceArrowThickness 2
skinparam ParticipantPadding 5
skinparam BoxPadding 10

Box "SMO/Non-RT RIC Framework" #gold
   participant NFO as "NF Orchestration" <<INT OTF>>
   Boundary MC as "Model Catalog" <<SMO MVC State Manager>>
   Boundary VI as "Virtual Inventory" <<SMO MVC State Manager>>
   Boundary IC as "Instance Config" <<SMO MVC State Manager>>
   Participant AppMgr as "rAPPMgr" <<NRTRIC>>
end box

Box "SMO/Non-RT RIC\napplication execution environment " #goldenrod
   participant App as "Application" <<RICAPP>>
   participant Sidecar as "rAPP Sidecar" <<RICAPP>>
end box

Box "O-Cloud Platform"  #lightseagreen
   participant IMF as "Cloud Manager"
   participant DMS as "Deployment Manager"
End box

== Building Block Identity & Legend ==

note over NFO, DMS #royalblue
**<color: yellow>Building Block : Deploy rAPP </color>**
<color: yellow>Orchestration Use Cases and Requirements for O-RAN Virtualized RAN</color>
<color: yellow>O-RAN-WG6.Orchestration-v03.00; section</color><color: Red> 3.3.3</color>
end note

== Assumptions and Prerequisites ==

note over NFO, DMS #darkorange
xAPP Standard Software Package has been onboarded and a configuration for rAPP deployment is installed via Application LCM Use Case Step 4.
end note

== Begin Building Block ==
Group Use Case Data Collection
  NFO -> IC : GET ../configurations/<instanceConfigID>
  Note Right of NFO
     The instance config contains:
        instanceConfigID
        frameworkID
        applicationID
        deploymentID
        deploymentParameters
        applicationConfigSchema
  end note

  NFO -> VI : GET ../frameworks/<frameworkID>
  Note Right of NFO
     The Framework Inventory record contains:
        frameworkID
        appType
        deploymentID
        deploymentTenant
        hostingOcloudID
        hostingOcloudDMSID
        hostedOCloudLocation
  end note

  NFO -> VI : GET ../OClouds/<hostingOcloudID>
  Note Right of NFO
     The O-Cloud Inventory record contains:
        ocloudID
        IMFEndPoint
        DMSList
        ResourcePools with Location attributes
  end note

  NFO -> VI : GET ../OClouds/<hostingOcloudID>/ResourcePools?location=<hostedOCloudLocation>
  Note Right of NFO
     The O-Cloud Inventory record contains:
        ocloudID
        ResourcePoolID
        location
  end note

  NFO -> VI : GET ../OClouds/<hostingOcloudID>/DMS/<hostingOcloudDMSID>
  Note Right of NFO
     The O-Cloud DMS Inventory record contains:
        OcloudID
        OcloudDMSID
        DMSEndPoint
        ResourcePools with Location attributes
  end note
End

Group Install Images in O-Cloud
  NFO -> MC : GET ../applications/<applicationID>/deployments/<deploymentID>/images
  Loop for each image in images
     NFO -> MC : GET ../applications/<applicationID>/deployments/<deploymentID>/images/<imageID>

     NFO -> IMF : <<O2-M>> PUT https://<IMDEndPoint>/api/v1/images {resourcePoolID, imageURL}
     Note left of IMF
     The Resource pool where the image is expected to be deployed should be specified,
     this could be a list of locations. The O-Cloud being distributed may have its own
     strategy for image repository distribution.
     End note

     IMF -> IMF :
     Note left : Check if ImageInstanceExists

     Alt if ImageInstance Exists then
       IMF --> NFO : Return 200 OK
     Else
       IMF -> IMF :
       Note Left : Store Image
       IMF --> NFO : Return 202 Created
     End if
  end
End

Group Application deployment to O-Cloud
  NFO -> DMS : <<O2-D>> POST https://<DMSEndPoint>/api/v1/deployments {\n\tlocation, \n\tdeploymentDescriptor, \n\tinstanceConfig.deploymentParameters}
  Note left of DMS
     Normally the O-Cloud would iterate through all deployments in the descriptor
     In this example we remove the iteration for the two known workloads that will
     be in the descriptor
  End note

  DMS -> App ** : create
  DMS -> Sidecar ** : create

  DMS --> NFO : <<O2-D>> notify Workload created

  NFO -> VI : PUT ../deployments
  Note right of NFO
  The Deployment Inventory record contains:
     deploymentID,
     deploymentTenant,
     configInstanceID,
     hostingOcloudID,
     hostingOcloudDMSID,
     hostedOCloudLocation
  end note
End

Group Application Startup and Registration
  Sidecar <-> App : connect
  Sidecar -> AppMgr : PUT ../xAPPs/<myAPPID>
  Note right of AppMgr
  Registration returns record contain:
     xAPPID,
     xAPPRegistrationTime,
     xAPPRestarts,
     configurationID
  end note

  alt if xAPPRestarts > 0 and ConfigurationID is not null then
     Sidecar -> AppMgr : GET ../configs/<configurationdID>
     AppMgr -> IC : GET ../configurations/< configurationdID>
     Sidecar -> App : Config(configuration)
  Else of ConfigurationID is Null and xAPPRestarts > MaxStartAttempts then
     Sidecar -> DMS : Fatal Error, don't restart
  Else
     Sidecar -> App : Config(configMap.configuration)
     Alt If successful then
        Sidecar -> AppMgr : POST ../configSchemas {configMap.configurationSchema}
        Note left : AppMgr simply returns success, nothing for it to do
        Sidecar -> AppMgr : POST ../configurations {configMap.configuration}
        Note left : rAppMgr simply returns success, nothing for it to do
     Else
        Sidecar -> App : Restart
        App -> DMS : Internal Error, restart
        Sidecar -> DMS : Internal Error, restart
     End if
  End if
End

@enduml

...