Merge "spec: O-RAN Specification Compliant O2 Interfaces"
This commit is contained in:
commit
cb6f40a55f
@ -0,0 +1,794 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License. http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
============================================
|
||||||
|
O-RAN Specification Compliant O2 Interfaces
|
||||||
|
============================================
|
||||||
|
|
||||||
|
Storyboard:
|
||||||
|
https://storyboard.openstack.org/#!/story/2010278
|
||||||
|
|
||||||
|
|
||||||
|
To facilitate the integration of components in context of O-RAN architecture,
|
||||||
|
O-RAN Alliance publishes a set of specifications to normalize the interfaces
|
||||||
|
between them, as far as O-Cloud concerned, the O2 interfaces are specified
|
||||||
|
between O-Cloud and O-RAN SMO. As part of effort to make StarlingX be compliant
|
||||||
|
to O-RAN specifications, oran O2 service is developed and integrated into
|
||||||
|
StarlingX (either standalone mode or distributed cloud mode) to expose O2
|
||||||
|
interfaces towards to SMO.
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
Users want to integrate StarlingX as O-Cloud to O-RAN SMO via O2 interfaces
|
||||||
|
published by O-RAN Specifications as below:
|
||||||
|
|
||||||
|
`WG6: O-RAN O2ims Interface Specification v3.00 <https://oranalliance.atlassian
|
||||||
|
.net/wiki/spaces/TSC/pages/2570617688/APPROVED+-+WG6+O-RAN+O2ims+Interface+
|
||||||
|
Specification+v3.00>`_
|
||||||
|
|
||||||
|
`WG6: O-RAN O2dms Interface Specification: Kubernetes Native API Profile for
|
||||||
|
Containerized NFs v2.00 <https://oranalliance.atlassian.net/wiki/spaces/TSC/
|
||||||
|
pages/2570715602/APRROVED+-+WG6+O-RAN+O2dms+Interface+Specification+Kubernetes+
|
||||||
|
Native+API+Profile+for+Containerized+NFs+v2.00>`_
|
||||||
|
|
||||||
|
Hence it is expected that following O2 services are deployed over StarlingX:
|
||||||
|
|
||||||
|
* O2ims_InfrastructureInventory
|
||||||
|
* O2ims_InfrastructureMonitoring
|
||||||
|
* O2dms in Kubernetes native API profile
|
||||||
|
|
||||||
|
Use Cases
|
||||||
|
---------
|
||||||
|
|
||||||
|
This feature addresses several use cases specified by:
|
||||||
|
`WG6: O-RAN Cloudification and Orchestration Use Cases and Requirements for
|
||||||
|
O-RAN Virtualized RAN v5.00 <https://oranalliance.atlassian.net/wiki/spaces/
|
||||||
|
TSC/pages/2569831376/APPROVED+-+WG6+O-RAN+Cloudification+and+Orchestration+
|
||||||
|
Use+Cases+and+Requirements+for+O-RAN+Virtualized+RAN+v5.00>`_
|
||||||
|
|
||||||
|
Specifically, the following Use cases and Requirements should be realized:
|
||||||
|
|
||||||
|
* O-Cloud Registration and Initialization Use Case
|
||||||
|
* O-Cloud Inventory Update Use Case
|
||||||
|
* Network Function Basic Use Cases
|
||||||
|
* Fault Use Cases
|
||||||
|
|
||||||
|
The use cases above should be applicable to StarlingX in either standalone
|
||||||
|
mode or distributed cloud mode.
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
An `oran-o2 service <https://docs.o-ran-sc.org/projects/o-ran-sc-pti-o2/
|
||||||
|
en/latest/index.html>` has been developed as part of INF project of o-ran
|
||||||
|
software community.
|
||||||
|
|
||||||
|
This oran-o2 service has been designed and implemented to host the o2ims
|
||||||
|
services including O2ims_InfrastructureInventory,
|
||||||
|
O2ims_InfrastructureMonitoring, and other O2 services in future to represent
|
||||||
|
StarlingX as an O-RAN Specifications compliant O-Cloud.
|
||||||
|
|
||||||
|
This oran-o2 service will be packaged as a new FluxCD based containerized
|
||||||
|
application. Users decide whether to deploy this oran-o2 service and when.
|
||||||
|
In case of StarlingX in distributed cloud mode, oran-o2 will be deployed
|
||||||
|
over system controller only.
|
||||||
|
|
||||||
|
Fundamentally, the oran-o2 services act as a mapping layer to map between
|
||||||
|
StarlingX resources and corresponding service objects of O-RAN specifications.
|
||||||
|
|
||||||
|
Specifically, the following O-RAN service objects are mapped to StarlingX
|
||||||
|
resources:
|
||||||
|
|
||||||
|
================= ================================ ===========================
|
||||||
|
O-RAN model StarlingX in standalone mode StarlingX in distributed
|
||||||
|
cloud mode
|
||||||
|
================= ================================ ===========================
|
||||||
|
O-Cloud a StarlingX instance a System Controller and all
|
||||||
|
subclouds it manages
|
||||||
|
ResourceType StarlingX sysinv API resource StarlingX sysinv API
|
||||||
|
kind resource kind, refer /o2ims
|
||||||
|
-infrastructureInventory/v1
|
||||||
|
/resourceTypes for examples
|
||||||
|
ResourcePool a StarlingX instance a instance of subcloud,
|
||||||
|
refer to /o2ims-
|
||||||
|
infrastructureInventory/v1
|
||||||
|
/resourcePools for examples
|
||||||
|
Resource Specific instance of StarlingX Specific instance of
|
||||||
|
sysinv API resource sysinv API resource,
|
||||||
|
refer to /o2ims-
|
||||||
|
infrastructureInventory/v1
|
||||||
|
/resourcePools/
|
||||||
|
{resourcePoolID}/resources
|
||||||
|
for examples
|
||||||
|
DeploymentManager a single Kubernetes cluster a single Kubernetes cluster
|
||||||
|
hosted by a StarlingX instance hosted by a subcloud,
|
||||||
|
refer to /o2ims-
|
||||||
|
infrastructureInventory/v1
|
||||||
|
/deploymentManagers
|
||||||
|
for examples
|
||||||
|
AlarmDefinition Fault Management Alarm Message Fault Management Alarm
|
||||||
|
definition Message definition
|
||||||
|
AlarmEventRecord an occurrence of Fault an occurrence of Fault
|
||||||
|
Management Alarm Message Management Alarm Message
|
||||||
|
AlarmSeverity Fault Management Alarm Severity Fault Management Alarm
|
||||||
|
Severity
|
||||||
|
================= ================================ ===========================
|
||||||
|
|
||||||
|
..
|
||||||
|
The resources of RegionOne of system controller can also be
|
||||||
|
represented as a ResourcePool as well as DeploymentManager
|
||||||
|
|
||||||
|
As implementation of o2ims services, the oran o2 service monitors sysinv
|
||||||
|
resources via sysinv api, builds a cache of resources compliant to O-RAN O2
|
||||||
|
model as inventory and persists them into internal database.
|
||||||
|
|
||||||
|
On the other hand, oran o2 service exposes this inventory to SMO through a set
|
||||||
|
of O2 APIs for querying resources as well as subscribing to get notification upon
|
||||||
|
the inventory changes and alarm changes.
|
||||||
|
|
||||||
|
As implementation of o2dms, the kubernetes clsuters hosted by StarlingX will
|
||||||
|
be exposed as O2dms in kubernetes native API profile, while the access
|
||||||
|
information of these clusters are exposed as deploymentmanager object as part
|
||||||
|
of o2ims inventory. So SMO could query the it to extract the access
|
||||||
|
crendentials, and interact directly with the specific kubernetes cluster with
|
||||||
|
kubernetes native APIs.
|
||||||
|
|
||||||
|
To make oran o2 service survive through the migration of oran-o2 pods among
|
||||||
|
different StarlingX hosts, the inventory database is persisted by leveraging
|
||||||
|
kubernetes PV volumes.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
It has been considered to couple the o2ims service with sysinv service to
|
||||||
|
optimize the efficiency of monitoring sysinv resource changes. However, given
|
||||||
|
that O-RAN specifications is still in early stage of its rapid evolution
|
||||||
|
progress, it is decided to decouple these two services and integrating them
|
||||||
|
by utilizing existing sysinv API for now.
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
As part of the o2ims inventory, a new group of tables will be introduced to
|
||||||
|
persist O-RAN modeling compliant objects representing StarlingX sysinv resources.
|
||||||
|
This inventory is internally managed as part of deployment of oran o2 service.
|
||||||
|
The diagram below shows the new table names and relationships.
|
||||||
|
|
||||||
|
..
|
||||||
|
+-----------+
|
||||||
|
+-----+ ocloud +---+
|
||||||
|
| +-----------+ |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
|N |N
|
||||||
|
+------------+------+ +----------+-----+ +------------------+
|
||||||
|
| | | resourcepool | | alarmSubscription|
|
||||||
|
|deploymentmanager | | | | |
|
||||||
|
+-------------------+ +-------+--------+ +------------------+
|
||||||
|
|
|
||||||
|
+--------------+ |
|
||||||
|
| subscription | |N
|
||||||
|
+--------------+ +-------+--------+ +-----------------+
|
||||||
|
| resource |1 |alarmEventRecord |
|
||||||
|
+---------------+ | +----+ |
|
||||||
|
| configuration | +------+---------+ +------+----------+
|
||||||
|
+---------------+ | |
|
||||||
|
| |
|
||||||
|
|1 |
|
||||||
|
+------+---------+ 1 |
|
||||||
|
| resourcetype +-----------+
|
||||||
|
+----------------+
|
||||||
|
|
||||||
|
The resourcetype table is populated with predefined resourcetypes as below:
|
||||||
|
- pserver
|
||||||
|
- pserver_cpu
|
||||||
|
- pserver_mem
|
||||||
|
- pserver_ethernet
|
||||||
|
- pserver_if
|
||||||
|
|
||||||
|
The resource table contains specific o2ims resources which represents the
|
||||||
|
corresponding sysinv resource accordingly to predefined resourcetypes. The
|
||||||
|
resource are organized in a hierachical way to represent the relationship
|
||||||
|
between each other, e.g. an instance of pserver_cpu refers to a instance of
|
||||||
|
pserver with its parentid. an instance of pserver refers to an instance of
|
||||||
|
resourcepool which represents the subcloud.
|
||||||
|
|
||||||
|
The resourcepool table contains representations of each subcloud.
|
||||||
|
|
||||||
|
The deploymentmanager table contains representations of kubernetes cluster
|
||||||
|
for each subcloud
|
||||||
|
|
||||||
|
The ocloud table contains a single representation of StarlingX instance in
|
||||||
|
either standalone mode or distributed cloud mode.
|
||||||
|
|
||||||
|
The subscription table contains information of subscribers which are interested
|
||||||
|
in receiving notification upon the changes of o2ims inventory.
|
||||||
|
|
||||||
|
The configuration table contains provisioning information, e.g., smo endpoint
|
||||||
|
for o-cloud registration
|
||||||
|
|
||||||
|
The alarmSubscription table contains information of subscribers which are
|
||||||
|
integrated in receiving alarm notification.
|
||||||
|
|
||||||
|
The alarmEventRecord table contains information of alarms generated by
|
||||||
|
StarlingX system.
|
||||||
|
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Following the spec of O-RAN Alliance as of this writing,
|
||||||
|
`WG6: O-RAN O2ims Interface Specification v3.00 <https://oranalliance.atlassian
|
||||||
|
.net/wiki/spaces/TSC/pages/2570617688/APPROVED+-+WG6+O-RAN+O2ims+Interface+
|
||||||
|
Specification+v3.00>`_, the following APIs will be added:
|
||||||
|
|
||||||
|
o2ims-infrastructureInventory/v1
|
||||||
|
________________________________
|
||||||
|
|
||||||
|
GET o2ims-infrastructureInventory/v1
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
{
|
||||||
|
"oCloudId": "42700a14-21d6-405c-a362-e691b20656b1",
|
||||||
|
"globalcloudId": cfac6bda-21d6-405c-a362-e691b20656b1,
|
||||||
|
"name": "StarlingX instance name",
|
||||||
|
"description": "An ocloud",
|
||||||
|
"serviceUri":
|
||||||
|
"http://128.224.115.35:30205/o2ims-infrastructureInventory/v1/"
|
||||||
|
}
|
||||||
|
|
||||||
|
/o2ims-infrastructureInventory/v1/resourceTypes
|
||||||
|
_______________________________________________
|
||||||
|
|
||||||
|
GET /o2ims-infrastructureInventory/v1/resourceTypes
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"resourceTypeId": "dcce9bcc-fb38-4e49-bf84-4f1519f3b031",
|
||||||
|
"name": "pserver",
|
||||||
|
"vendor": null,
|
||||||
|
"version": "",
|
||||||
|
"description": "",
|
||||||
|
"alarmDictionary": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceTypeId": "f5bdc0a0-eee7-426a-8d07-b56f950a94d2",
|
||||||
|
"name": "pserver_cpu",
|
||||||
|
"vendor": null,
|
||||||
|
"version": "",
|
||||||
|
"description": "",
|
||||||
|
"alarmDictionary": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceTypeId": "0d24f2ce-a0fa-460f-a65c-541b694110e5",
|
||||||
|
"name": "pserver_mem",
|
||||||
|
"vendor": null,
|
||||||
|
"version": "",
|
||||||
|
"description": "",
|
||||||
|
"alarmDictionary": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceTypeId": "7a150a2d-5107-4bfc-ada8-c6c4b037430c",
|
||||||
|
"name": "pserver_ethernet",
|
||||||
|
"vendor": null,
|
||||||
|
"version": "",
|
||||||
|
"description": "",
|
||||||
|
"alarmDictionary": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceTypeId": "63557eda-f8e1-4a52-82fa-f3e6f52fea9f",
|
||||||
|
"name": "pserver_if",
|
||||||
|
"vendor": null,
|
||||||
|
"version": "",
|
||||||
|
"description": "",
|
||||||
|
"alarmDictionary": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
/o2ims-infrastructureInventory/v1/resourceTypes/{resourceTypeID }
|
||||||
|
_________________________________________________________________
|
||||||
|
|
||||||
|
GET /o2ims-infrastructureInventory/v1/resourceTypes/
|
||||||
|
dcce9bcc-fb38-4e49-bf84-4f1519f3b031
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
{
|
||||||
|
"resourceTypeId": "dcce9bcc-fb38-4e49-bf84-4f1519f3b031",
|
||||||
|
"name": "pserver",
|
||||||
|
"vendor": "vendor1",
|
||||||
|
"version": "v1",
|
||||||
|
"description": "desc1",
|
||||||
|
"alarmDictionary": {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/o2ims-infrastructureInventory/v1/resourcePools
|
||||||
|
_______________________________________________
|
||||||
|
|
||||||
|
GET /o2ims-infrastructureInventory/v1/resourcePools
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"resourcePoolId": "42700a14-21d6-405c-a362-e691b20656b1",
|
||||||
|
"name": "subcloud1",
|
||||||
|
"globalLocationId": "42700a14-21d6-405c-a362-e691b20656b1",
|
||||||
|
"location": "location1",
|
||||||
|
"description": "A Resource Pool",
|
||||||
|
"oCloudId": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
/o2ims-infrastructureInventory/v1/resourcePools/{resourcePoolID}
|
||||||
|
________________________________________________________________
|
||||||
|
|
||||||
|
GET /o2ims-infrastructureInventory/v1/resourcePools/
|
||||||
|
42700a14-21d6-405c-a362-e691b20656b1
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
{
|
||||||
|
"resourcePoolId": "42700a14-21d6-405c-a362-e691b20656b1",
|
||||||
|
"name": "subcloud1",
|
||||||
|
"globalLocationId": "42700a14-21d6-405c-a362-e691b20656b1",
|
||||||
|
"location": "location1",
|
||||||
|
"description": "A Resource Pool",
|
||||||
|
"oCloudId": ""
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/o2ims-infrastructureInventory/v1/resourcePools/{resourcePoolID}/resources
|
||||||
|
__________________________________________________________________________
|
||||||
|
?{filters}
|
||||||
|
__________
|
||||||
|
|
||||||
|
GET o2ims-infrastructureInventory/v1/resourcePools/
|
||||||
|
42700a14-21d6-405c-a362-e691b20656b1/resources?resourceTypeName=pserver
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"resourceId": "67e71e16-6264-4ac0-b57f-815cf6b7dc70",
|
||||||
|
"resourceTypeId": "dcce9bcc-fb38-4e49-bf84-4f1519f3b031",
|
||||||
|
"resourcePoolId": "42700a14-21d6-405c-a362-e691b20656b1",
|
||||||
|
"name": "controller-0",
|
||||||
|
"parentId": null,
|
||||||
|
"description": "A physical server resource",
|
||||||
|
"globalAssetId": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceId": "54d74187-775e-46dd-b8b0-5875a14223d8",
|
||||||
|
"resourceTypeId": "dcce9bcc-fb38-4e49-bf84-4f1519f3b031",
|
||||||
|
"resourcePoolId": "42700a14-21d6-405c-a362-e691b20656b1",
|
||||||
|
"name": "controller-1",
|
||||||
|
"parentId": null,
|
||||||
|
"description": "A physical server resource",
|
||||||
|
"globalAssetId": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
o2ims-infrastructureInventory/v1/resourcePools/{resourcePoolID}/resources/
|
||||||
|
__________________________________________________________________________
|
||||||
|
{resourceID}
|
||||||
|
____________
|
||||||
|
|
||||||
|
GET o2ims-infrastructureInventory/v1/resourcePools/
|
||||||
|
42700a14-21d6-405c-a362-e691b20656b1/resources/
|
||||||
|
67e71e16-6264-4ac0-b57f-815cf6b7dc70
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
{
|
||||||
|
"resourceId": "67e71e16-6264-4ac0-b57f-815cf6b7dc70",
|
||||||
|
"resourceTypeId": "dcce9bcc-fb38-4e49-bf84-4f1519f3b031",
|
||||||
|
"resourcePoolId": "42700a14-21d6-405c-a362-e691b20656b1",
|
||||||
|
"name": "controller-0",
|
||||||
|
"parentId": null,
|
||||||
|
"description": "A physical server resource",
|
||||||
|
"globalAssetId": "",
|
||||||
|
"elements": "",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"resourceId": "d380122a-fa29-4813-a77a-8b36a1aa257d",
|
||||||
|
"resourceTypeId": "f5bdc0a0-eee7-426a-8d07-b56f950a94d2",
|
||||||
|
"resourcePoolId": "42700a14-21d6-405c-a362-e691b20656b1",
|
||||||
|
"name": "67e71e16-cpu-0",
|
||||||
|
"parentId": "67e71e16-6264-4ac0-b57f-815cf6b7dc70",
|
||||||
|
"description": "A CPU resource of the physical server",
|
||||||
|
"elements": "",
|
||||||
|
"children": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/o2ims-infrastructureInventory/v1/subscriptions
|
||||||
|
_______________________________________________
|
||||||
|
|
||||||
|
POST /o2ims-infrastructureInventory/v1/subscriptions
|
||||||
|
|
||||||
|
..
|
||||||
|
{
|
||||||
|
"callback": "https://1.2.3.4/smo_observer",
|
||||||
|
"consumerSubscriptionId": "observerid1",
|
||||||
|
"filter": "filter1=value1"
|
||||||
|
}
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
{
|
||||||
|
"subscriptionId": "7900907e-b60a-4cfd-b6a5-dae760a865f0"
|
||||||
|
}
|
||||||
|
|
||||||
|
GET /o2ims-infrastructureInventory/v1/subscriptions
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"subscriptionId": "7900907e-b60a-4cfd-b6a5-dae760a865f0",
|
||||||
|
"callback": "https://1.2.3.4/smo_observer",
|
||||||
|
"consumerSubscriptionId": "observerid1",
|
||||||
|
"filter": "filter1=value1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
/o2ims-infrastructureInventory/v1/subscriptions/{subscriptionID}
|
||||||
|
________________________________________________________________
|
||||||
|
|
||||||
|
GET /o2ims-infrastructureInventory/v1/subscriptions/
|
||||||
|
7900907e-b60a-4cfd-b6a5-dae760a865f0
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
{
|
||||||
|
"subscriptionId": "7900907e-b60a-4cfd-b6a5-dae760a865f0",
|
||||||
|
"callback": "https://1.2.3.4/smo_observer",
|
||||||
|
"consumerSubscriptionId": "observerid1",
|
||||||
|
"filter": "filter1=value1"
|
||||||
|
}
|
||||||
|
|
||||||
|
DELETE /o2ims-infrastructureInventory/v1/subscriptions/
|
||||||
|
7900907e-b60a-4cfd-b6a5-dae760a865f0
|
||||||
|
|
||||||
|
RESP: None
|
||||||
|
|
||||||
|
/o2ims-infrastructureInventory/v1/deploymentManagers
|
||||||
|
____________________________________________________
|
||||||
|
|
||||||
|
GET /o2ims-infrastructureInventory/v1/deploymentManagers
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"deploymentManagerId": "9fc43d52-b73a-366a-b08f-e89cbbf82532",
|
||||||
|
"name": "cfac6bda-486c-401b-8451-9cb226eb3884.kubernetes",
|
||||||
|
"description": "A DMS",
|
||||||
|
"serviceUri": "http://128.224.115.35:30205/o2dms/v1/9fc43d52-b73a-366a-b08f-e89cbbf82532",
|
||||||
|
"supportedLocations": "",
|
||||||
|
"capabilities": "",
|
||||||
|
"capacity": "",
|
||||||
|
"oCloudId": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
/o2ims-infrastructureInventory/v1/deploymentManagers/{deploymentManagerID}
|
||||||
|
__________________________________________________________________________
|
||||||
|
|
||||||
|
GET /o2ims-infrastructureInventory/v1/deploymentManagers/
|
||||||
|
9fc43d52-b73a-366a-b08f-e89cbbf82532
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
{
|
||||||
|
"deploymentManagerId": "9fc43d52-b73a-366a-b08f-e89cbbf82532",
|
||||||
|
"name": "cfac6bda-486c-401b-8451-9cb226eb3884.kubernetes",
|
||||||
|
"description": "A DMS",
|
||||||
|
"serviceUri": "https://128.224.115.34:6443",
|
||||||
|
"supportedLocations": "",
|
||||||
|
"capabilities": "",
|
||||||
|
"capacity": "",
|
||||||
|
"oCloudId": ""
|
||||||
|
}
|
||||||
|
|
||||||
|
/o2ims-infrastructureMonitoring/v1/alarms
|
||||||
|
_________________________________________
|
||||||
|
|
||||||
|
GET /o2ims-InfrastructureMonitoring/v1/alarms
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"alarmEventRecordId": "9fc43d52-b73a-366a-b08f-e89cbbf82532",
|
||||||
|
"resourceTypeID": "cfac6bda-486c-401b-8451-9cb226eb3884",
|
||||||
|
"resourceID": "feac6bda-486c-401b-8451-9cb226eb3123",
|
||||||
|
"alarmDefinitionID": "100.101",
|
||||||
|
"probableCauseID": "",
|
||||||
|
"alarmRaisedTime": "2022-09-01T08:01:12",
|
||||||
|
"alarmAcknowledgeTime": "",
|
||||||
|
"alarmAcknowledged": false,
|
||||||
|
"perceivedSeverity": 3,
|
||||||
|
"extensions": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
/o2ims-infrastructureMonitoring/v1/alarms/{alarmEventRecordID}
|
||||||
|
______________________________________________________________
|
||||||
|
|
||||||
|
GET /o2ims-InfrastructureMonitoring/v1/alarms/
|
||||||
|
9fc43d52-b73a-366a-b08f-e89cbbf82532
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
{
|
||||||
|
"alarmEventRecordId": "9fc43d52-b73a-366a-b08f-e89cbbf82532",
|
||||||
|
"resourceTypeID": "cfac6bda-486c-401b-8451-9cb226eb3884",
|
||||||
|
"resourceID": "feac6bda-486c-401b-8451-9cb226eb3123",
|
||||||
|
"alarmDefinitionID": "100.101",
|
||||||
|
"probableCauseID": "",
|
||||||
|
"alarmRaisedTime": "2022-09-01T08:01:12",
|
||||||
|
"alarmAcknowledgeTime": "",
|
||||||
|
"alarmAcknowledged": false,
|
||||||
|
"perceivedSeverity": 3,
|
||||||
|
"extensions": []
|
||||||
|
}
|
||||||
|
|
||||||
|
/o2ims-infrastructureMonitoring/v1/alarmSubscriptions
|
||||||
|
_____________________________________________________
|
||||||
|
|
||||||
|
POST /o2ims-infrastructureMonitoring/v1/alarmSubscriptions
|
||||||
|
|
||||||
|
..
|
||||||
|
{
|
||||||
|
"consumerSubscriptionId": "bfec6bda-486c-401b-8451-9cb226eb3999",
|
||||||
|
"filter": "severity<=2",
|
||||||
|
"callback": "https://1.2.3.4/alarm_observer1"
|
||||||
|
}
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
{
|
||||||
|
"alarmSubscriptionId": "aef43d52-b73a-366a-b08f-e89cbbf82111",
|
||||||
|
"consumerSubscriptionId": "bfec6bda-486c-401b-8451-9cb226eb3999",
|
||||||
|
"filter": "severity<=2",
|
||||||
|
"callback": "https://1.2.3.4/alarm_observer1"
|
||||||
|
}
|
||||||
|
|
||||||
|
GET /o2ims-infrastructureMonitoring/v1/alarmSubscriptions
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"alarmSubscriptionId": "aef43d52-b73a-366a-b08f-e89cbbf82111",
|
||||||
|
"consumerSubscriptionId": "bfec6bda-486c-401b-8451-9cb226eb3999",
|
||||||
|
"filter": "severity<=2",
|
||||||
|
"callback": "https://1.2.3.4/alarm_observer1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
/o2ims-infrastructureMonitoring/v1/alarmSubscriptions/{alarmSubscriptionId}
|
||||||
|
___________________________________________________________________________
|
||||||
|
|
||||||
|
GET /o2ims-infrastructureMonitoring/v1/alarmSubscriptions/
|
||||||
|
aef43d52-b73a-366a-b08f-e89cbbf82111
|
||||||
|
|
||||||
|
RESP:
|
||||||
|
|
||||||
|
..
|
||||||
|
{
|
||||||
|
"alarmSubscriptionId": "aef43d52-b73a-366a-b08f-e89cbbf82111",
|
||||||
|
"consumerSubscriptionId": "bfec6bda-486c-401b-8451-9cb226eb3999",
|
||||||
|
"filter": "severity<=2",
|
||||||
|
"callback": "https://1.2.3.4/alarm_observer1"
|
||||||
|
}
|
||||||
|
|
||||||
|
DELETE /o2ims-infrastructureMonitoring/v1/alarmSubscriptions/
|
||||||
|
aef43d52-b73a-366a-b08f-e89cbbf82111
|
||||||
|
|
||||||
|
RESP: None
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
oran-o2 services exposes API endpoints towards a single SMO which should be
|
||||||
|
specified during provisioning time, so it is critical to reach mutually trusts
|
||||||
|
with following approach:
|
||||||
|
|
||||||
|
* The SMO API endpoint which is provisioned to oran-o2 for O-Cloud registration
|
||||||
|
should be protected by https.
|
||||||
|
* The oran-o2 API endpoint will be protected by https, the certificate
|
||||||
|
management will be manually done for now, and will be integrated with
|
||||||
|
cert-manager in future.
|
||||||
|
* An initial token will be provided to SMO during O-Cloud registration.
|
||||||
|
* SMO should use that token to request oran-o2 service via API endpoint.
|
||||||
|
* The token should be renewed before it is expired and dispatch to SMO by
|
||||||
|
oran-o2 service
|
||||||
|
* The token received from SMO via its API requests will be validated against
|
||||||
|
authentication provider. The authentication provider is the kubernetes
|
||||||
|
APIserver which hosts the oran o2 service, and can be extended in future to
|
||||||
|
support other authentication providers, e.g., the openstack keystone service
|
||||||
|
of StarlingX.
|
||||||
|
* The token management will be manually done for now and will be automated
|
||||||
|
in future.
|
||||||
|
* There is no user sensitive data involved.
|
||||||
|
* There is no need for cryptography, but need hashing for checksum of
|
||||||
|
resource information.
|
||||||
|
* There is no need for sudor or any elevated privileges.
|
||||||
|
* The oran-o2 requires openstack admin permission to interact with sysinv APIs.
|
||||||
|
* The oran-o2 requires a kubernetes service account with binding of a
|
||||||
|
clusterRole to able to interact with kubernetes APIserver.
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
This oran-o2 service exposes new set of APIs for SMO, but it does not affect
|
||||||
|
existing python-client of other StarlingX services
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
The oran-o2 service should be no impact on system performance for following
|
||||||
|
reasons:
|
||||||
|
|
||||||
|
* As mentioned in problem description, oran-o2 will monitor the changes of
|
||||||
|
sysinv resources via sysinv API, hence there is a background task polling
|
||||||
|
the sysinv resources via sysinv API periodically. The configurable polling
|
||||||
|
interval is in seconds level and executed in a sequential way for
|
||||||
|
querying sysinv resources. It is expected this periodic task will not impact
|
||||||
|
system's performance.
|
||||||
|
* There are no database queries to system.
|
||||||
|
* There is no locking to access system resource exclusively.
|
||||||
|
* The oran-o2 service is deployed as kubernetes workload hence the consumed
|
||||||
|
resources are predicted by resource allocation at deployment phase.
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
This is a new and standalone system application, it will not impact developers
|
||||||
|
working on other features.
|
||||||
|
|
||||||
|
Upgrade impact
|
||||||
|
--------------
|
||||||
|
|
||||||
|
The oran-o2 has dependencies on few sysinv API as well as the kubernetes
|
||||||
|
version, it should be upgraded accordingly if these components upgrading breaks
|
||||||
|
the dependencies.
|
||||||
|
|
||||||
|
The oran-o2 does not affect the system's upgrade since it is designed as a
|
||||||
|
standalone system application deployed over system.
|
||||||
|
|
||||||
|
The oran-o2 is implemented in cloud native way, it supports migration between hosts
|
||||||
|
by nature.
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
Bin Yang
|
||||||
|
|
||||||
|
Other contributors:
|
||||||
|
Rong Zhang
|
||||||
|
David Liu
|
||||||
|
|
||||||
|
Repos Impacted
|
||||||
|
--------------
|
||||||
|
|
||||||
|
starlingx/app-oran-o2
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
* Create oran-o2 application package based on ORAN-SC release deliverable
|
||||||
|
* Create FluxCD App Package by integrating oran-o2 application to FluxCD
|
||||||
|
* Update the docs.starlingx.io for the instructions of oran-o2 application
|
||||||
|
deployment and configuration, and API reference of oran-o2 services.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
|
||||||
|
This specification depends upon the open source upstream:
|
||||||
|
|
||||||
|
O-RAN Software Community/INF project/ORAN-O2 services implementation in G
|
||||||
|
Release
|
||||||
|
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
Functional testing will be performed on StarlingX in AIO-SX, AIO-DX,
|
||||||
|
Standard and DC configurations, which includes:
|
||||||
|
|
||||||
|
* O2 application lifecycle management in StarlingX
|
||||||
|
* O2 Use cases verification which demonstrates the Compliance of ORAN Spec Interfaces
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
This work will primarily impact deployer and developers.
|
||||||
|
|
||||||
|
The API reference documentation will be provided for integrating with ORAN SMO.
|
||||||
|
|
||||||
|
The deployment guide document will be provided for deployer of StarlingX.
|
||||||
|
|
||||||
|
StarlingX release notes describing this feature will also be provided.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
* `WG6: O-RAN Cloudification and Orchestration Use Cases and Requirements for
|
||||||
|
O-RAN Virtualized RAN v5.00 <https://oranalliance.atlassian.net/wiki/spaces/
|
||||||
|
TSC/pages/2569831376/APPROVED+-+WG6+O-RAN+Cloudification+and+Orchestration+
|
||||||
|
Use+Cases+and+Requirements+for+O-RAN+Virtualized+RAN+v5.00>`_
|
||||||
|
|
||||||
|
* `WG6: O-RAN O2ims Interface Specification v3.00 <https://oranalliance.
|
||||||
|
atlassian.net/wiki/spaces/TSC/pages/2570617688/APPROVED+-+WG6+O-RAN+O2ims+
|
||||||
|
Interface+Specification+v3.00>`_
|
||||||
|
|
||||||
|
* `WG6: O-RAN O2dms Interface Specification: Kubernetes Native API Profile for
|
||||||
|
Containerized NFs v2.00 <https://oranalliance.atlassian.net/wiki/spaces/TSC/
|
||||||
|
pages/2570715602/APRROVED+-+WG6+O-RAN+O2dms+Interface+Specification+
|
||||||
|
Kubernetes+Native+API+Profile+for+Containerized+NFs+v2.00>`_
|
||||||
|
|
||||||
|
* `O-RAN SC INF project, ORAN-O2 services implementation in G release <https://
|
||||||
|
gerrit.o-ran-sc.org/r/gitweb?p=pti/o2.git;a=tree;h=refs/heads/g-release>`
|
||||||
|
|
||||||
|
Acronyms
|
||||||
|
--------
|
||||||
|
|
||||||
|
- 3GPP: Third Generation Partnership Project
|
||||||
|
- 5G: Fifth-Generation Mobile Communications
|
||||||
|
- CNF: Containerized Network Function
|
||||||
|
- DMS: O-Cloud Deployment Management Services
|
||||||
|
- SMO: Service Management and Orchestration
|
||||||
|
- FOCOM: Federated O-Cloud Orchestration & Management
|
||||||
|
- IM: Information Model
|
||||||
|
- IMS: O-Cloud Infrastructure Management Services
|
||||||
|
- LCM: Life Cycle Management
|
||||||
|
- NF: Network Function
|
||||||
|
- NFO: Network Function Orchestration
|
||||||
|
- NFVI: Network Function Virtualization Infrastructure
|
||||||
|
- O-CU: O-RAN Central Unit as defined by O-RAN ALLIANCE
|
||||||
|
- O-CU-CP: O-CU Control Plane
|
||||||
|
- O-CU-UP: O-CU User Plane
|
||||||
|
- O-DU: O-RAN Distributed Unit (uses Lower-level Split)
|
||||||
|
|
||||||
|
History
|
||||||
|
=======
|
||||||
|
|
||||||
|
None
|
Loading…
Reference in New Issue
Block a user