Versions Compared

Key

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

Sequence Diagram

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>>
end box

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

Box "O-RAN" #NavajoWhite
   Participant AppMgr as "xAPPMgr" <<RICPLT>>
End box

Box "Near-RT RIC\napplication execution environment " #PapayaWhip
   participant App as "Application" <<RICAPP>>
   participant Sidecar as "rAPP Sidecar" <<RICAPP>>
end box

== Building Block Identity & Legend ==
note over NFO, Sidecar #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, Sidecar #darkorange
xAPP Standard Software Package has been onboarded and a configuration for xAPP 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\t../OClouds/<hostingOcloudID>/\n\tResourcePools?location=<hostedOCloudLocation>
  Note Right of NFO
     The O-Cloud Inventory record contains:
        ocloudID
        ResourcePoolID
        location
  end note

  NFO -> VI : GET\t../OClouds/<hostingOcloudID>/\n\tDMS/<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\t../applications/<applicationID>/\n\tdeployments/<deploymentID>/\n\timages
  Loop for each image in images
     NFO -> MC : GET\t../applications/<applicationID>/\n]tdeployments/<deploymentID>/\n\timages/<imageID>

     NFO -> IMF : <<O2-M>> PUT https://<IMDEndPoint>/api/v1/images {resourcePoolID, imageURL}
     Note over 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 : Get Image from URL Store Image in repository
       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 over 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>
        Sidecar -> App : Config(configuration)
     Else if 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}
           AppMgr -> AppMgr :
           Note left: xAPPMgr needs to incorporate xAPP YANG leafs into RIC Config
           Sidecar -> AppMgr : POST ../configurations {configMap.configuration}
           AppMgr -> AppMgr :
           Note Left : Create MOI and populate ConfigDB
           Opt Stretch goal for CM Notify
           AppMgr -> NFO : <<O1>> MOI Create Notification
           End
        Else
           Sidecar -> App : Restart
           App -> DMS : Internal Error, restart
           Sidecar -> DMS : Internal Error, restart
        End if
     End if
End

@enduml