@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 IMS 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 : xAPP Startup </color>**
end note
== Assumptions and Prerequisites ==
note over NFO, DMS #darkorange
Application and its sidecar were just created/started by the DMS.
end note
== Begin Building Block ==
Note Right of NFO
Message numbers are discontinous
In order to match same message numbers
In rAPP 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>
Autonumber 5
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
@enduml