spec: O-RAN Specification Compliant O2 Interfaces
oran-o2 service to make starlingx be compliant to O-RAN spec. Story: 2010278 Task: 46231 Signed-off-by: Bin Yang <bin.yang@windriver.com> Change-Id: Ib45ff3d6d3f0799d4e2ee730527d02d1aff2a4c8
This commit is contained in:
parent
f618ca6764
commit
cc302bf966
@ -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