CPS-278 Spike Analyse E2E API PUT methods

CPS-278 - Getting issue details... STATUS

Analyse API PUT calls listed on this page for E2E slicing use case (priority 1 and 2)

  • Ensure use case is clear using model and data example
  • Find out required (new) update functionality in CPS (several API calls might need the same CPS functionality.
  • One API call might require more than one CPS-Core call, indicate in the report if this is the case
  • One API call might need to access more than one model (report!)
  • Distinguish between NCMP (ran network data) and CPS-Core access for slicing specific data.

A/C

  1. Wiki Page with a conclusion for each API call (see toines example for API call no.2 https://lf-onap.atlassian.net/wiki/display/DW/CPS+APIs)
  2. Add new update functionality if needed to https://lf-onap.atlassian.net/wiki/display/DW/CPS-235%3A+Overview+of+%28early%29+CPS+Update+Scenarios
    https://lf-onap.atlassian.net/wiki/display/DW/CPS-235%3A+Overview+of+%28early%29+CPS+Query+and+Update+Scenarios
  3. Review with the full team
  4. Review with network slicing team

Issues and Decisions


IssueNotesDecision
1

What to do if the value already exists when inserting it into a list?

reject it or replace it without warning?

It can be rejected.

2Would this be a new entry or is this updating an existing entry in a list for no. 4, 5, and 6?

Create a new entry, if it does not exists. Update, if it already exists.

3Confirm the exact list you a referring to in no 7?

He is referring to the list below. The expected behavior here is that update to the parent and the child list.

It needs to be updated for NRCellDU, NRCellCU & GNBCUUPFunction


+--rw rRMPolicyMemberList* [idx]

        |        |  +--rw idx       uint32

        |        |  +--rw mcc       Mcc

        |        |  +--rw mnc       Mnc

        |        |  +--rw sNSSAI?   SNssai


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

API endpoint

Description

API input/Request Payload

Yang sub-tree/element(s) accessed (for GET), or updated (for UPDATE)

Consuming Component

Target ComponentTransformation Required?

Comments

3./api/sdnc-config-db/v4/nearRTRICStore 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]
+--rw idNearRTRIC string
+--rw attributes
| +--rw dnPrefix? DistinguishedName
| +--rw userLabel? string
| +--ro locationName? string
| +--ro gNBId? int64
| +--rw pLMNInfoList* [mcc mnc]
| | +--rw mcc Mcc
| | +--rw mnc Mnc
| | +--rw sNSSAIList* [sNssai]
| | +--rw sNssai string
| | +--rw status? string
| | +--rw configData* [configParameter]
| | +--rw configParameter string
| | +--rw configValue? int64

SDN-RNCMP

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>


Replace data node with descendants.



4./api/sdnc-config-db/v4/gNBCUCPStore gNBCUCP, NRCellCU details

{
   "gNBCUName":"cucpserver1"
   "gNBId":98763,
   "gNBIdLength":5,
   "pLMNId":"310-410",
   "nFType":"CUCP",
   "nearRTRICId":11,
   "cellCUList":[
       {
    "cellLocalId":103594000,
    "pLMNInfoList":[
        {
            "pLMNId":"310-200",
            "sNSSAI":{
                "sNSSAI":"001-00110",
                "status":"ACTIVE",
                 "configData":{
                    "maxNumberOfConns"7000
            }
            }
        }
    ]
}
   ]
}

cps-ran-schema-model

+--rw GNBCUCPFunction* [idGNBCUCPFunction]
+--rw idGNBCUCPFunction string
+--rw attributes
| +--rw gNBId? int64
| +--rw gNBIdLength? int32
| +--rw gNBCUName? string
| +--rw pLMNId* [mcc mnc]
| +--rw mcc Mcc
| +--rw mnc Mnc
+--rw NRCellCU* [idNRCellCU]
+--rw idNRCellCU string
+--rw attributes
| +--rw cellLocalId? int32
| +--rw pLMNInfoList* [mcc mnc]
| | +--rw mcc Mcc
| | +--rw mnc Mnc
| | +--rw sNSSAIList* [sNssai]
| | +--rw sNssai string
| | +--rw status? string
| | +--rw configData* [configParameter]
| | +--rw configParameter string
| | +--rw configValue? int64

SDN-RNCMP

from CPS point of view this case is similar as previous case (#3), just a 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>


Create a new entry, if it does not exists. Update, if it already exists.

5./api/sdnc-config-db/v4/gNBCUUPStore gNBCUUP details

{
   "gNBCUUPId":1111
   "gNBId":98763,
   "gNBIdLength":2,
   "pLMNId":"310-410",
   "resourceType":"DRB",
   "nearRTRICId":11,
    "pLMNInfoList":[
        {
            "pLMNId":"310-410",
            "sNSSAI":{
                "sNSSAI":"001-003",
                "status":"ACTIVE",
                "configData":{
                    "maxNumberOfConns"3000
            }
            }
        }
    ]
}

cps-ran-schema-model

+--rw GNBCUUPFunction* [idGNBCUUPFunction]
| +--rw idGNBCUUPFunction string
| +--rw attributes
| +--ro gNBCUUPId? uint64
| +--rw gNBId? int64
| +--rw pLMNInfoList* [mcc mnc]
| +--rw mcc Mcc
| +--rw mnc Mnc
| +--rw sNSSAIList* [sNssai]
| +--rw sNssai string
| +--rw status? string
| +--rw configData* [configParameter]
| +--rw configParameter string
| +--rw configValue? int64

SDN-RNCMP

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>


Create a new entry, if it does not exists. Update, if it already exists.

6./api/sdnc-config-db/v4/gNBDUStore gNBDU, NRCellDU details

{
   "gNBDUId":4
   "gNBId":98763,
   "gNBIdLength":5,
   "pLMNId":"310-410",
   "gNBDUName":"gnduserver4",
   "nFType":"DU",
   "nearRTRICId":22,
   "cellDUList":[
       {
    "cellLocalId":112951561,
    "operationalState":"ENABLED",
    "administrativeState":"UNLOCKED",
    "cellState":"ACTIVE",
    "nRPCI":12,
    "nRTAC":310,
    "resourceType":"PRB",
    "pLMNInfoList":[
        {
            "pLMNId":"310-410",            
            "sNSSAI":{
                "sNSSAI":"001-010000",
                "status":"ACTIVE",
                "configData":{
               "dLThptPerSlice"9,
                "uLThptPerSlice"10
                }
            }
        }
    ]
},
{
    "cellLocalId":112951562,
    "operationalState":"ENABLED",
    "administrativeState":"UNLOCKED",
    "cellState":"ACTIVE",
    "nRPCI":12,
    "nRTAC":310,
    "resourceType":"PRB",
    "pLMNInfoList":[
        {
            "pLMNId":"310-410",            
            "sNSSAI":{
                "sNSSAI":"001-010000",
                "status":"ACTIVE",
                "configData":{
               "dLThptPerSlice"9,
                "uLThptPerSlice"10
                }
            }
        }
    ]
},
{
    "cellLocalId":112951568,
    "operationalState":"ENABLED",
    "administrativeState":"UNLOCKED",
    "cellState":"ACTIVE",
    "nRPCI":12,
    "nRTAC":310,
    "resourceType":"PRB",
    "pLMNInfoList":[
        {
            "pLMNId":"310-410",            
            "sNSSAI":{
                "sNSSAI":"001-010000",
                "status":"ACTIVE",
                "configData":{
               "dLThptPerSlice"9,
                "uLThptPerSlice"10
                }
            }
        }
    ]
}
   ]
}

cps-ran-schema-model

+--rw GNBDUFunction* [idGNBDUFunction]
| +--rw idGNBDUFunction string
| +--rw attributes
| | +--ro gNBId? int64
| | +--rw gNBIdLength? int32
| | +--rw gNBDUId? int64
| | +--rw gNBDUName? string
| +--rw NRCellDU* [idNRCellDU]
| +--rw idNRCellDU string
| +--rw attributes
| +--rw cellLocalId? int32
| +--rw pLMNInfoList* [mcc mnc]
| | +--rw mcc Mcc
| | +--rw mnc Mnc
| | +--rw sNSSAIList* [sNssai]
| | +--rw sNssai string
| | +--rw status? string
| | +--rw configData* [configParameter]
| | +--rw configParameter string
| | +--rw configValue? int64
| +--rw nRPCI? int32
| +--rw nRTAC? Tac

SDN-RNCMP

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>


Create a new entry, if it does not exists. Update, if it already exists.

Will require a new method in cps core to add something to a list.

7./api/sdnc-config-db/v4/rrmPolicyStore network elements' RRMPolicy details

{
    "rrmPolicyID":1,
    "resourceID":"113025289",
    "resourceType":"PRB",
    "sliceType":"eMBB",
    "quotaType":"STRICT",
    "rRMPolicyMaxRatio":0,
    "rRMPolicyMinRatio":10,
    "rRMPolicyDedicatedRatio":0,
    "rRMPolicyMemberList":[
        {
            "pLMNId":"310-400",
            "sNSSAI":"001-010000"
        }
    ]
}

cps-ran-schema-model

+--rw RRMPolicyRatio* [id]
| | +--rw id string
| | +--rw attributes
| | +--rw resourceType? string
| | +--rw rRMPolicyMemberList* [idx]
| | | +--rw idx uint32
| | | +--rw mcc Mcc
| | | +--rw mnc Mnc
| | | +--rw sNSSAI? SNssai
| | +--rw quotaType? QuotaType
| | +--rw rRMPolicyMaxRatio? uint8
| | +--rw rRMPolicyMinRatio? uint8
| | +--rw rRMPolicyDedicatedRatio? uint8

SDN-R

Currently, CPS has no option to replace an entire list without updating its parent which seems what is required here.

<Need to discuss>


Update the parent and the child list for rRMPolicyMemberList - will update multiple instances of RRMPolicyRatio



8./api/sdnc-config-db/v4/ranslice-detailsRAN 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
+--rw ran-slices* [rannfnssiid]
+--rw rannfnssiid string
+--rw sliceProfilesList* [sliceProfileId]
| +--rw sliceProfileId string
| +--rw sNSSAI? string
| +--rw maxNumberofUEs? int64
| +--rw latency? int64
| +--rw uLThptPerSlice? int64
| +--rw dLThptPerSlice? int64
| +--rw maxNumberofConns? int64
| +--rw uEMobilityLevel? string
| +--rw resourceSharingLevel? string
| +--rw coverageAreaList* string
| +--rw pLMNIdList* [mcc mnc]
| +--rw mcc Mcc
| +--rw mnc Mnc
+--rw subnetStatus? string
+--rw nsstid? string
+--rw slicetype? string
+--rw isshareable? string

SDN-Rcps core

little difference can be found between the request payload and the yang model.  Yang model is the final one.


For CPS this seems like populating the whole data tree for a given model in one go. i.e. replace all existing data

Modified the YANG model to support storing a list of Slices


Replace datanode and children.