CPS APIs
1. Details of Config DB APIs supported in Guilin
Please refer to below ConfigDB API swagger document for a full list of API's supported: ConfigDB Swagger JSON
Following API's are currently used to support RAN Network Slicing and OOF SON use case:
S.No | Use case | API endpoint | HTTP Method | Description | API input/Request Payload | Result obtained for API call (in case of GET) | Yang sub-tree/element(s) accessed (for GET), or updated (for UPDATE) | Consuming Component | Priority | Comments |
---|---|---|---|---|---|---|---|---|---|---|
1. | E2E Network Slicing | /api/sdnc-config-db/v4/nearrtric-list/{trackingArea} | GET | Get complete details associated with a list of NearRT RIC's and corresponding managed elements | trackingArea - String <Changes at consumer end> - trackingArea should be an int | [ { "gNBCUCPList": [ { "cellCUList": [ { "cellLocalId": 0, "pLMNInfoList": [ { "pLMNId": "string", "sNSSAI": { "configData": { "dLThptPerSlice": 0, "maxNumberOfConns": 0, "uLThptPerSlice": 0 }, "globalSubscriberId": "string", "sNSSAI": "string", "status": "string", "subscriptionServiceType": "string" } } ], "resourceType": "string" } ], "gNBCUName": "string", "gNBId": 0, "gNBIdLength": 0, "nFType": "string", "nearRTRICId": 0, "pLMNId": "string" } ], "gNBCUUPList": [ { "gNBCUUPId": 0, "gNBId": 0, "gNBIdLength": 0, "nearRTRICId": 0, "pLMNInfoList": [ { "pLMNId": "string", "sNSSAI": { "configData": { "dLThptPerSlice": 0, "maxNumberOfConns": 0, "uLThptPerSlice": 0 }, "globalSubscriberId": "string", "sNSSAI": "string", "status": "string", "subscriptionServiceType": "string" } } ], "resourceType": "string" } ], "gNBDUList": [ { "cellDUList": [ { "administrativeState": "string", "cellLocalId": 0, "cellState": "string", "nRPCI": 0, "nRTAC": 0, "operationalState": "string", "pLMNInfoList": [ { "pLMNId": "string", "sNSSAI": { "configData": { "dLThptPerSlice": 0, "maxNumberOfConns": 0, "uLThptPerSlice": 0 }, "globalSubscriberId": "string", "sNSSAI": "string", "status": "string", "subscriptionServiceType": "string" } } ], "resourceType": "string" } ], "gNBDUId": 0, "gNBDUName": "string", "gNBId": 0, "gNBIdLength": 0, "nFType": "string", "nearRTRICId": 0, "pLMNId": "string" } ], "gNBId": 0, "nearRTRICId": 0, "pLMNInfoList": [ { "pLMNId": "string", "sNSSAI": { "configData": { "dLThptPerSlice": 0, "maxNumberOfConns": 0, "uLThptPerSlice": 0 }, "globalSubscriberId": "string", "sNSSAI": "string", "status": "string", "subscriptionServiceType": "string" } } ], "ranNFNSSIList": [ "string" ], "resourceType": "string", "trackingArea": [ "string" ] } ] | Complete Yang model. Refer CPS-196 cps-ran-schema-model | SDN-R | 1 | The result seems to be a a combination of many queries from differnt data sources Several elements not clear in model?!:
Tac is a type, used by nRTAC, which is normal (normal not key) leaf for NRCellDUGroup which is used by NRCellDU (Yang List) Proposed CPS query: <Ahila> Please note the below:
|
2. | E2E Network Slicing | /api/sdnc-config-db/v4/cell-list/{trackingArea} | GET | Get a list of cells that correspond to a specific tracking area | trackingArea - String <Changes at consumer end> - trackingArea should be an int |
| cps-cavsta-onap-internal +--rw taCellsList* [cellLocalId] | SDN-R | 1 | Proposed CPS query: Refer cps-cavsta-onap-internal In scope of H-release |
3. | E2E Network Slicing | /api/sdnc-config-db/v4/nearRTRIC | PUT | Store nearRTRIC details | { "nearRTRICId":22, "gNBId":98763, "trackingArea":[ "Kingston" ], "resourceType":"NearRTRIC", "ranNFNSSIList":[ "11", "22" ], "pLMNInfoList":[ { "pLMNId":"310-410", "sNSSAI":{ "sNSSAI":"001-010000", "status":"ACTIVE", "globalSubscriberId":"Customer-001", "subscriptionServiceType":"Premium", "configData": { "dLThptPerSlice":25, "uLThptPerSlice":30, "maxNumberOfConns":3000 } } } ] } | cps-ran-schema-model +--rw NearRTRIC* [idNearRTRIC] | SDN-R | 1 | There is no model that defines that has a TrackingArea String is this now the 'locationName'? suggested CPS-action: Update DataNode with children (in this case a list) all children will be replaced! All unchanged data has to be provided too! Note 1. SNSSAIList is a list contained within each element of PLMNInfo Yes. Refer Section-3 for field mapping Note 2. Please note this action replace all existing list element, it is NOT an add-to-element action <Need to discuss> | |
4. | E2E Network Slicing | /api/sdnc-config-db/v4/gNBCUCP | PUT | Store gNBCUCP, NRCellCU details | { | cps-ran-schema-model +--rw GNBCUCPFunction* [idGNBCUCPFunction] | SDN-R | 1 | from CPS point of view this case is similar as previous case (#3), just different target (parent)data node. suggested CPS-action: Update DataNode with children (in this case a list) all children will be replaced! All unchanged data has to be provided too! <Need to discuss> | |
5. | E2E Network Slicing | /api/sdnc-config-db/v4/gNBCUUP | PUT | Store gNBCUUP details | { | cps-ran-schema-model +--rw GNBCUUPFunction* [idGNBCUUPFunction] | SDN-R | 1 | from CPS point of view this case is similar as previous 2 cases (#3, #4), just different target (parent)data node. suggested CPS-action: Update DataNode with children (in this case a list) all children will be replaced! All unchanged data has to be provided too! <Need to discuss> | |
6. | E2E Network Slicing | /api/sdnc-config-db/v4/gNBDU | PUT | Store gNBDU, NRCellDU details | { | cps-ran-schema-model +--rw GNBDUFunction* [idGNBDUFunction] | SDN-R | 1 | from CPS point of view this case is similar as previous 2 cases (#3, #4, #5), just different target (parent)data node. suggested CPS-action: Update DataNode with children (in this case a list) all children will be replaced! All unchanged data has to be provided too! <Need to discuss> | |
7. | E2E Network Slicing | /api/sdnc-config-db/v4/rrmPolicy | PUT | Store network elements' RRMPolicy details | { | cps-ran-schema-model +--rw RRMPolicyRatio* [id] | SDN-R | 1 | Currently CPS has no option to replace an entire list without udpating its parent wihc seems what is required here. <Need to discuss> | |
8. | E2E Network Slicing | /api/sdnc-config-db/v4/ranslice-details | PUT | RAN Inventory. Store RAN slice details | { "ranNFNSSIId":"3f2f23fa-c567-4dd8-8f15-f95ae3e6fd82", "ranNSSIList":[ "ran4" ], "nsiList":[ "nsi1","nsi2" ], "nSSAIList":[ "001-010000" ], "sliceProfilesList":[ { "sliceProfileId": "878f32c0-3699-4dbd-95a3-1f01d6c763fd", "dLThptPerSlice": 25, "uLThptPerSlice": 30, "maxNumberofConns":3000, "sNSSAI":"001-010000", "pLMNIdList":"310-410" } ], "trackingAreaList": "Kingston" , "subnetStatus":"ACTIVE", "nsstId":"NSSTID1", "sliceType":"eMBB", "isShareable":"true" } | cps-ran-inventory +--rw ran-inventory | SDN-R | 2 | little difference can be found between the request payload and the yang model. Yang model is final one. For CPS this seems like populating the whole data-tree for given model in one go. i.e. replace all existing data Modifed the YANG model to support storing list of Slices | |
9. | E2E Network Slicing | /api/sdnc-config-db/v4/du-list/{sNSSAI} | GET | Fetch the DU functions for sNSSAI | sNSSAI - String | [ { "gNBDUId":1, "gNBId":98763, "gNBIdLength":5, "pLMNId":"310-004", "gNBDUName":"gnduserver1", "nFType":"DU", "nearRTRICId":11, "cellDUList":[ { "cellLocalId":1, "operationalState":"ENABLED", "administrativeState":"UNLOCKED", "cellState":"ACTIVE", "nRPCI":12, "nRTAC":310, "pLMNInfoList":[ { "pLMNId":"310-004", "sNSSAI":{ "sNSSAI":"001-003", "status":"ACTIVE", "configData":{ "dLThptPerSlice": 45, "uLThptPerSlice": 40 } } }, { "pLMNId":"310-410", "sNSSAI":{ "sNSSAI":"001-024", "status":"ACTIVE", "configData":{ "dLThptPerSlice": 65, "uLThptPerSlice": 30 } } } ] } ] } ] | cps-ran-schema-model +--rw GNBDUFunction* [idGNBDUFunction] | DCAE-slice-analysis-ms | 1 | Suggested CPS Actions: Yes. Result includes parent as well. Sample seems to return other/all(?) pLMNInfoList with different sNSSAIs It doesn't matter. The grandparent node (GNBDUs) of the sNNSAI should be returned properly. |
10. | E2E Network Slicing | /api/sdnc-config-db/v4/du-cell-list/{sNSSAI} | GET | Fetch DU Cells for sNSSAI | sNSSAI - String | { "1": [ { "cellLocalId": 111, "operationalState": "ENABLED", "administrativeState": "UNLOCKED", "cellState": "ACTIVE", "pLMNInfoList": [ { "pLMNId": "pLMNId1", "sNSSAI": { "sNSSAI": "001-003", "status": "ACTIVE", "globalSubscriberId": null, "subscriptionServiceType": null, "configData": {} } }, { "pLMNId": "pLMNId2", "sNSSAI": { "sNSSAI": "001-024", "status": "ACTIVE", "globalSubscriberId": null, "subscriptionServiceType": null, "configData": {} } } ], "nRPCI": 45, "nRTAC": 9087 } ] } Note: Key - nearRTRIC Id value - list of cells | cps-ran-schema-model | +--rw NRCellDU* [idNRCellDU] | DCAE-slice-analysis-ms | 1 | Yang model defines only the DUCellList which is the value in the response. Key is a nearRTRICId Suggested CPS Actions: Seems very simialr to #9 Sample seems to return other/all(?) pLMNInfoList with different sNSSAIs Similar to #9 |
11. | E2E Network Slicing | /api/sdnc-config-db/v4/profile-config/{sNSSAI} | GET | Fetch slice profile configuration for a sNSSAI | sNSSAI - String | DCAE-slice-analysis-ms, ML MS | 2 | This API will be replaced by AAI APIs Do we need to discs CPS for this one. IF so which model etc? This API can be ignored | ||
12. | E2E Network Slicing | /api/sdnc-config-db/v4/slice-config/{sNSSAI} | GET | Fetch NearRTRIC configuration for a sNSSAI | sNSSAI - String | { "1": { "dLThptPerSlice": 45, "uLThptPerSlice": 40 } } Note: key "1" is nearRTRICId - marked in green color Value - nssai config - marked in purple color | +--rw cps-ran-schema | DCAE-slice-analysis-ms | 1 | Yang model defines only the pLMNInfoConfiguration. Key is NEarRTRICid Suggested CPS-Query: get lis elements with children where leave has certain value,. |
13. | E2E Network Slicing | /api/sdnc-config-db/v4/subscriber-details/{sNSSAI} | GET | Fetch subscriber details | sNSSAI - String | DCAE-slice-analysis-ms | 2 | This API will be replaced by AAI APIs Do we need to discs CPS for this one. IF so which model etc? This API can be ignored | ||
14. | 5G SON | /api/sdnc-config-db/v3/insertData | PUT | Pre-load Cell Data | { | OOF-PCI MS | 3 | |||
15. | 5G SON | /api/sdnc-config-db/v3/modifyPci/{cellId} | PATCH | Modfify PCI value of a cell | { "pci-value":1 } | +--rw GNBDUFunction* [idGNBDUFunction] | +--rw NRCellDU* [idNRCellDU] | +--rw attributes | +--rw nRPCI? int32 | SDNR | 3 | ||
16. | 5G SON | /api/sdnc-config-db/v3/modifyNbrHO/{cellId}/{targetCellId} | PATCH | Modify HO (Handoff) flag for a target neighbor cell | { "ho":false } | +--rw GNBCUCPFunction* [idGNBCUCPFunction] +--rw idGNBCUCPFunction string +--rw NRCellCU* [idNRCellCU] +--rw NRCellRelation* [idNRCellRelation] | +--rw isHOAllowed? boolean | SDNR | 3 | ||
17. | 5G SON | /api/sdnc-config-db/v3/createNbr/{cellId} | PUT | Create a neigbor for a cell |
| +--rw GNBCUCPFunction* [idGNBCUCPFunction] +--rw idGNBCUCPFunction string +--rw NRCellCU* [idNRCellCU] +--rw NRCellRelation* [idNRCellRelation] | +--rw isHOAllowed? boolean | SDNR | 3 | ||
18. | 5G SON | /api/sdnc-config-db/v3/deleteNbr/{cellId}/{targetCellId} | DELETE | Delete a neighbor for a call | cellId - string trgetCellId - string | +--rw GNBCUCPFunction* [idGNBCUCPFunction] +--rw idGNBCUCPFunction string +--rw NRCellCU* [idNRCellCU] +--rw NRCellRelation* [idNRCellRelation] | SDNR | 3 | ||
19. | E2E Network Slicing | api/sdnc-config-db/v4/nearrtric/{ranNFNSSIId} | GET | Fetches the NearRTRICs for the RANNFNSSI | ranNFNSSIId - String | Returns the RAN-schema yang (Refer CPS - 196) | SDNR | 1 | ||
20. | E2E Network Slicing | /api/sdnc-config-db/v4/plmn/{sliceProfileId} | GET | Returns PLMN id for the sliceProfile | sliceProfileId - String | PLMNId as String | SDNR | 1 | ||
21. | E2E Network Slicing | /api/sdnc-config-db/v4/ta-list/{mcc}/{mnc}/{coverageArea} | GET | Returns List of tracking area (coverageAreaTAList) of the specified coverage area | coverageArea - String mcc - String mnc - String | [ 675, 834 ] | cps-cavsta-onap-internal +--rw coverage-area* [coverageArea] | OOF | 1 | In scope of H-release |
22. | 5G SON | /api/sdnc-config-db/v3/getCell/{cellId} | GET | Get information about a cell. cellId is referred to in YANG model as any of the following: idNRCellDU, idNRCellCU, cellLocalId | { "Cell": { "latitude": "string", "longitude": "string", "networkId": "string", "nodeId": "string", "notes": "string", "physicalCellId": 0, "pnfId": "string", "sectorNumber": "string" }, "neighbor": [ "string" ] } | +--rw cps-ran-schema | +--rw NRCellDU* [idNRCellDU] +--rw NRCellCU* [idNRCellCU] | OOF, Policy | 3 | ||
23. | 5G SON | /api/sdnc-config-db/v3/getCellList/{regionId}/{ts} | GET | Get list of cells for a specific region (identified by regionId) | [ "string" ] | +--rw cps-ran-schema +--rw Regions* [regionId] | +--rw regionId RegionId | +--rw cps-region-cell-mapping | +--rw NRCellCU* [idNRCellCU] | +--rw idNRCellCU string | 3 | |||
24. | 5G SON | /api/sdnc-config-db/v3/getNbrCellsNetwork/{regionId} | GET | Get a list of all neighbor relationships for a specific region (identified by regionId) | { "cellsNbrList": [ { "cellId": "string", "nbrList": [ { "ho": true, "pciValue": 0, "targetCellId": "string" } ] } ], "networkId": "string" } | +--rw cps-ran-schema +--rw Regions* [regionId] | +--rw regionId RegionId | +--rw cps-region-cell-mapping | +--rw NRCellCU* [idNRCellCU] | +--rw idNRCellCU string | +--rw attributes | | +--rw cellLocalId? int32 | +--rw NRCellRelation* [idNRCellRelation] | +--rw idNRCellRelation string | +--rw attributes | +--rw nRTCI? uint64 | 3 | |||
25. | 5G SON | /api/sdnc-config-db/v3/getNbrList/{cellId}/{ts} | GET | Get a list of neighbors for a cell | { "cellId": "string", "nbrList": [ { "ho": true, "pciValue": 0, "targetCellId": "string" } ] } | +--rw cps-ran-schema +--rw NRCellCU* [idNRCellCU] +--rw NRCellRelation* [idNRCellRelation] | 3 | |||
26. | 5G SON | /api/sdnc-config-db/v3/getPCI/{cellId}/{ts} | GET | GET PCI value of a cell | { | +--rw cps-ran-schema +--rw GNBDUFunction* [idGNBDUFunction] | +--rw NRCellDU* [idNRCellDU] | +--rw nRPCI? int32 | 3 | |||
27. | 5G SON | /api/sdnc-config-db/v3/getPnfId/{maanagedElementId}/{ts} | GET | Get PnfId of a managed element in O-RAN. PnfId represents the node name for Netconf Mount for various O-RAN managed elements as below: For NonRTRIC: - idNearRTRIC | { "attribute-name": "string", "value": "string" } | +--rw cps-ran-schema +--rw NearRTRIC* [idNearRTRIC] +--rw GNBDUFunction* [idGNBDUFunction] +--rw GNBCUUPFunction* [idGNBCUUPFunction] | +--ro gNBCUUPId? uint64 +--rw GNBCUCPFunction* [idGNBCUCPFunction] | +--rw gNBCUName? string | 3 |
Link to SON CPS: CPS 5G-SON APIs
2. Sample CPS APIs (to mapper service and XPath queries)
#1 Get complete details associated with a list of NearRT RIC's
/api/sdnc-config-db/v4/nearrtric-list/{trackingArea}
Combination of data from different queries of different data from different model using both CPS-Core and NF-Proxy.
TBC
#2 Get a list of cells that correspond to a specific tracking area
/api/sdnc-config-db/v4/cell-list/{trackingArea}
target model/data: cps-cavsta-onap-internal
component to be used : CPS-Core
'trackingArea' maps to 'nRTAC' and is an integer.
nRTAC is the key field for coverageAreaTAList
coverageAreaTAList is contained in a 'coverage-area' list. the key for that list key is 'CoverageArea' (string e.g. "Washington")
So although the key-value for the coverageAreaTAList is known the key for the parent list is NOT known. so this requires a more advanced query:
It could be done with either query #4 described in CPS-235: Overview of (early) CPS Query#Queries assuming it wil have an option to also retrieve all descendants
#21 List tracking area (coverageAreaTAList) for the specified coverage area
I think this is a simple 'get with children' xpath e.g. : /ran-coverage-area[@mcc=310 and @mnc=410]/coverage-area[@coverageArea='Washington']
Note: Compound key fields need to be in alphabetical order. The key is matched as a string literal so incorrect order or spacing issues will result in the key not being found in the database
3. Field Mapping Between ConfigDB Schema and Yang Model
S.No | Yang Model | Mapping Sheet |
---|---|---|
1. | cps-ran-schema-model | |
2. | cps-cavsta-onap-internal | |
`3. | cps-ran-inventory |