Versions Compared

Key

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

Sequence Diagram

Image RemovedImage 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

IMS 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

Startup </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


Application and its sidecar were just created/started by the DMS.
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

Message numbers are discontinous
In order to match same message numbers
In xAPP startup
End note

     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
Autonumber 10

       

           Sidecar

->

AppMgr

:

POST

../configurations

{configMap.configuration}

       

           Note

left

:

rAppMgr

simply

returns

success,

nothing

for

it

to

do

    

        Else
Autonumber 13

       

           Sidecar

->

App

:

Restart

       

           App

->

DMS

:

Internal

Error,

restart

       

           Sidecar

->

DMS

:

Internal

Error,

restart

    

        End

if

 

     End

if


End



@enduml