diff options
author | Ruslan Kashapov <ruslan.kashapov@pantheon.tech> | 2021-02-18 12:31:24 +0200 |
---|---|---|
committer | Ruslan Kashapov <ruslan.kashapov@pantheon.tech> | 2021-02-18 12:32:23 +0200 |
commit | 3b0221cabd6614ed82fe2931948651666300cf39 (patch) | |
tree | 9a81908b1284e9e1a4070c54e6b6cfdc653a0168 /cps-service/src/test | |
parent | 6d13f166f2e3d1c357677ad6f37f6e35238aeac6 (diff) |
E2E RAN Schema Model - yang model vs data test
Issue-ID: CPS-196
Change-Id: I0171dfc2f82505c8ae8497ff49fe3eb28e1972a6
Signed-off-by: Ruslan Kashapov <ruslan.kashapov@pantheon.tech>
Diffstat (limited to 'cps-service/src/test')
3 files changed, 2008 insertions, 7 deletions
diff --git a/cps-service/src/test/groovy/org/onap/cps/api/impl/E2ENetworkSliceSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/api/impl/E2ENetworkSliceSpec.groovy index ac4ef278ee..75c98a82d9 100755 --- a/cps-service/src/test/groovy/org/onap/cps/api/impl/E2ENetworkSliceSpec.groovy +++ b/cps-service/src/test/groovy/org/onap/cps/api/impl/E2ENetworkSliceSpec.groovy @@ -26,7 +26,7 @@ import org.onap.cps.api.CpsAdminService import org.onap.cps.spi.CpsDataPersistenceService
import org.onap.cps.spi.CpsModulePersistenceService
import org.onap.cps.spi.model.Anchor
-import org.onap.cps.spi.model.DataNode
+import org.onap.cps.utils.YangUtils
import org.onap.cps.yang.YangTextSchemaSourceSetBuilder
import spock.lang.Specification
@@ -121,7 +121,7 @@ class E2ENetworkSliceSpec extends Specification { 1 * mockDataStoreService.storeDataNode('someDataspace', 'someAnchor', _) >>
{ args -> dataNodeStored = args[2]}
and: 'the size of the tree is correct'
- def cpsRanInventory = treeToFlatMapByXpath(new HashMap<>(), dataNodeStored)
+ def cpsRanInventory = TestUtils.getFlattenMapByXpath(dataNodeStored)
assert cpsRanInventory.size() == 3
and: 'ran-inventory contains the correct child node'
def ranInventory = cpsRanInventory.get('/ran-inventory')
@@ -136,10 +136,18 @@ class E2ENetworkSliceSpec extends Specification { pLMNIdList.getChildDataNodes().size() == 0
}
- def static treeToFlatMapByXpath(Map<String, DataNode> flatMap, DataNode dataNodeTree) {
- flatMap.put(dataNodeTree.getXpath(), dataNodeTree)
- dataNodeTree.getChildDataNodes()
- .forEach(childDataNode -> treeToFlatMapByXpath(flatMap, childDataNode))
- return flatMap
+ def 'E2E RAN Schema Model.'(){
+ given: 'yang resources'
+ def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap(
+ 'e2e/basic/ietf-inet-types.yang',
+ 'e2e/basic/ietf-yang-types.yang',
+ 'e2e/basic/cps-ran-schema-model@2021-01-28.yang'
+ )
+ and : 'json data'
+ def jsonData = TestUtils.getResourceFileContent('e2e/basic/cps-ran-schema-model-data-v4.json')
+ expect: 'schema context is built with no exception indicating the schema set being valid '
+ def schemaContext = YangTextSchemaSourceSetBuilder.of(yangResourcesNameToContentMap).getSchemaContext()
+ and: 'data is parsed with no exception indicating the model match'
+ YangUtils.parseJsonData(jsonData, schemaContext) != null
}
}
diff --git a/cps-service/src/test/resources/e2e/basic/cps-ran-schema-model-data-v4.json b/cps-service/src/test/resources/e2e/basic/cps-ran-schema-model-data-v4.json new file mode 100644 index 0000000000..0925eef735 --- /dev/null +++ b/cps-service/src/test/resources/e2e/basic/cps-ran-schema-model-data-v4.json @@ -0,0 +1,541 @@ +{ + "cps-ran-schema-model:cps-ran-schema": { + "NearRTRIC": [ + { + "idNearRTRIC": "11", + "attributes":{ + "ranNFNSSIIdList":[ + "ac8ca1a9-e1ec-4480-8720-c74e92566885" + ] + }, + "GNBCUUPFunction": [ + { + "idGNBCUUPFunction": "1111", + "attributes": { + "gNBId": 98763 + } + } + ], + "GNBCUCPFunction": [ + { + "idGNBCUCPFunction": "cucpserver1", + "attributes": { + "gNBCUName": "cucpserver1", + "gNBIdLength": 32, + "gNBId": 98763 + }, + "NRCellCU": [ + { + "idNRCellCU": "15826", + "attributes": { + "cellLocalId": 15826 + } + }, + { + "idNRCellCU": "15825", + "attributes": { + "cellLocalId": 15825 + } + }, + { + "idNRCellCU": "13999", + "attributes": { + "cellLocalId": 13999 + } + }, + { + "idNRCellCU": "15426", + "attributes": { + "cellLocalId": 15426 + } + }, + { + "idNRCellCU": "15425", + "attributes": { + "cellLocalId": 15425 + } + }, + { + "idNRCellCU": "15689", + "attributes": { + "cellLocalId": 15689 + } + }, + { + "idNRCellCU": "15687", + "attributes": { + "cellLocalId": 15687 + } + }, + { + "idNRCellCU": "15289", + "attributes": { + "cellLocalId": 15289 + } + }, + { + "idNRCellCU": "15176", + "attributes": { + "cellLocalId": 15176 + } + }, + { + "idNRCellCU": "14000", + "attributes": { + "cellLocalId": 14000 + } + }, + { + "idNRCellCU": "15155", + "attributes": { + "cellLocalId": 15155 + } + }, + { + "idNRCellCU": "15174", + "attributes": { + "cellLocalId": 15174 + } + }, + { + "idNRCellCU": "15175", + "attributes": { + "cellLocalId": 15175 + } + }, + { + "idNRCellCU": "15296", + "attributes": { + "cellLocalId": 15296 + } + }, + { + "idNRCellCU": "15290", + "attributes": { + "cellLocalId": 15290 + } + } + ] + } + ], + "GNBDUFunction": [ + { + "idGNBDUFunction": "1", + "attributes": { + "gNBDUId": 1, + "gNBDUName": "gnduserver1", + "gNBIdLength": 32 + }, + "NRCellDU": [ + { + "idNRCellDU": "15296", + "attributes": { + "cellLocalId": 15296, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "15689", + "attributes": { + "cellLocalId": 15689, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "15687", + "attributes": { + "cellLocalId": 15687, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "15289", + "attributes": { + "cellLocalId": 15289, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "15290", + "attributes": { + "cellLocalId": 15290, + "nRPCI": 12, + "nRTAC": 310 + } + } + ] + }, + { + "idGNBDUFunction": "3", + "attributes": { + "gNBDUId": 3, + "gNBDUName": "gnduserver3", + "gNBIdLength": 32 + }, + "NRCellDU": [ + { + "idNRCellDU": "15425", + "attributes": { + "cellLocalId": 15425, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "15826", + "attributes": { + "cellLocalId": 15826, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "13999", + "attributes": { + "cellLocalId": 13999, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "15426", + "attributes": { + "cellLocalId": 15426, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "14000", + "attributes": { + "cellLocalId": 14000, + "nRPCI": 12, + "nRTAC": 310 + } + } + ] + }, + { + "idGNBDUFunction": "2", + "attributes": { + "gNBDUId": 2, + "gNBDUName": "gnduserver2", + "gNBIdLength": 32 + }, + "NRCellDU": [ + { + "idNRCellDU": "15174", + "attributes": { + "cellLocalId": 15174, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "15175", + "attributes": { + "cellLocalId": 15175, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "15825", + "attributes": { + "cellLocalId": 15825, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "15176", + "attributes": { + "cellLocalId": 15176, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "15155", + "attributes": { + "cellLocalId": 15155, + "nRPCI": 12, + "nRTAC": 310 + } + } + ] + } + ] + }, + { + "idNearRTRIC": "22", + "GNBCUUPFunction": [ + { + "idGNBCUUPFunction": "2222", + "attributes": { + "gNBId": 98763 + } + } + ], + "GNBCUCPFunction": [ + { + "idGNBCUCPFunction": "cucpserver2", + "attributes": { + "gNBCUName": "cucpserver2", + "gNBIdLength": 32, + "gNBId": 98763 + }, + "NRCellCU": [ + { + "idNRCellCU": "13905", + "attributes": { + "cellLocalId": 13905 + } + }, + { + "idNRCellCU": "11569", + "attributes": { + "cellLocalId": 11569 + } + }, + { + "idNRCellCU": "14427", + "attributes": { + "cellLocalId": 14427 + } + }, + { + "idNRCellCU": "15549", + "attributes": { + "cellLocalId": 15549 + } + }, + { + "idNRCellCU": "10896", + "attributes": { + "cellLocalId": 10896 + } + }, + { + "idNRCellCU": "14656", + "attributes": { + "cellLocalId": 14656 + } + }, + { + "idNRCellCU": "10897", + "attributes": { + "cellLocalId": 10897 + } + }, + { + "idNRCellCU": "11568", + "attributes": { + "cellLocalId": 11568 + } + }, + { + "idNRCellCU": "13910", + "attributes": { + "cellLocalId": 13910 + } + }, + { + "idNRCellCU": "15548", + "attributes": { + "cellLocalId": 15548 + } + }, + { + "idNRCellCU": "11561", + "attributes": { + "cellLocalId": 11561 + } + }, + { + "idNRCellCU": "11562", + "attributes": { + "cellLocalId": 11562 + } + }, + { + "idNRCellCU": "14655", + "attributes": { + "cellLocalId": 14655 + } + }, + { + "idNRCellCU": "15361", + "attributes": { + "cellLocalId": 15361 + } + }, + { + "idNRCellCU": "15360", + "attributes": { + "cellLocalId": 15360 + } + } + ] + } + ], + "GNBDUFunction": [ + { + "idGNBDUFunction": "6", + "attributes": { + "gNBDUId": 6, + "gNBDUName": "gnduserver6", + "gNBIdLength": 32 + }, + "NRCellDU": [ + { + "idNRCellDU": "15361", + "attributes": { + "cellLocalId": 15361, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "15360", + "attributes": { + "cellLocalId": 15360, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "14427", + "attributes": { + "cellLocalId": 14427, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "15549", + "attributes": { + "cellLocalId": 15549, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "15548", + "attributes": { + "cellLocalId": 15548, + "nRPCI": 12, + "nRTAC": 310 + } + } + ] + }, + { + "idGNBDUFunction": "5", + "attributes": { + "gNBDUId": 5, + "gNBDUName": "gnduserver5", + "gNBIdLength": 32 + }, + "NRCellDU": [ + { + "idNRCellDU": "14655", + "attributes": { + "cellLocalId": 14655, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "13905", + "attributes": { + "cellLocalId": 13905, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "14656", + "attributes": { + "cellLocalId": 14656, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "10897", + "attributes": { + "cellLocalId": 10897, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "13910", + "attributes": { + "cellLocalId": 13910, + "nRPCI": 12, + "nRTAC": 310 + } + } + ] + }, + { + "idGNBDUFunction": "4", + "attributes": { + "gNBDUId": 4, + "gNBDUName": "gnduserver4", + "gNBIdLength": 32 + }, + "NRCellDU": [ + { + "idNRCellDU": "11561", + "attributes": { + "cellLocalId": 11561, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "11569", + "attributes": { + "cellLocalId": 11569, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "11562", + "attributes": { + "cellLocalId": 11562, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "10896", + "attributes": { + "cellLocalId": 10896, + "nRPCI": 12, + "nRTAC": 310 + } + }, + { + "idNRCellDU": "11568", + "attributes": { + "cellLocalId": 11568, + "nRPCI": 12, + "nRTAC": 310 + } + } + ] + } + ] + } + ] + } +}
\ No newline at end of file diff --git a/cps-service/src/test/resources/e2e/basic/cps-ran-schema-model@2021-01-28.yang b/cps-service/src/test/resources/e2e/basic/cps-ran-schema-model@2021-01-28.yang new file mode 100644 index 0000000000..224e884aa5 --- /dev/null +++ b/cps-service/src/test/resources/e2e/basic/cps-ran-schema-model@2021-01-28.yang @@ -0,0 +1,1452 @@ +module cps-ran-schema-model { + yang-version 1.1; + namespace "org:onap:ccsdk:features:sdnr:northbound:cps-ran-schema-model"; + prefix rn; + + import ietf-inet-types { + prefix inet; + } + import ietf-yang-types { + prefix yang; + } + + organization + "Open Network Automation Platform - ONAP + <https://www.onap.org>"; + contact + "Editors: + Sandeep Shah + <mailto:sandeep.shah@ibm.com> + + Swaminathan Seetharaman + <mailto:swaminathan.seetharaman@wipro.com>"; + description + "This module contains a collection of YANG definitions for capturing + relationships among managed elements of the radio access Network + to be stored in ONAP CPS platform. + + Copyright 2020-2021 IBM. + + Licensed under the Apache License, Version 2.0 (the 'License'); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an 'AS IS' BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License."; + + revision 2021-01-28 { + description + "CPS RAN Network YANG Model for ONAP/O-RAN POC"; + reference + "https://wiki.onap.org/display/DW/E2E+Network+Slicing+Use+Case+in+R7+Guilin"; + } + + typedef usageState { + type enumeration { + enum IDLE { + description + "TODO"; + } + enum ACTIVE { + description + "TODO"; + } + enum BUSY { + description + "TODO"; + } + } + description + "It describes whether or not the resource is actively in + use at a specific instant, and if so, whether or not it has spare + capacity for additional users at that instant. The value is READ-ONLY."; + reference + "ITU T Recommendation X.731"; + } + + typedef Mcc { + type string; + description + "The mobile country code consists of three decimal digits, + The first digit of the mobile country code identifies the geographic + region (the digits 1 and 8 are not used):"; + reference + "3GPP TS 23.003 subclause 2.2 and 12.1"; + } + + typedef Mnc { + type string; + description + "The mobile network code consists of two or three + decimal digits (for example: MNC of 001 is not the same as MNC of 01)"; + reference + "3GPP TS 23.003 subclause 2.2 and 12.1"; + } + + typedef Nci { + type string; + description + "NR Cell Identity. The NCI shall be of fixed length of 36 bits + and shall be coded using full hexadecimal representation. + The exact coding of the NCI is the responsibility of each PLMN operator"; + reference + "TS 23.003"; + } + + typedef OperationalState { + type enumeration { + enum DISABLED { + value 0; + description + "The resource is totally inoperable."; + } + enum ENABLED { + value 1; + description + "The resource is partially or fully operable."; + } + } + description + "TODO"; + reference + "3GPP TS 28.625 and ITU-T X.731"; + } + + typedef AvailabilityStatus { + type enumeration { + enum IN_TEST { + description + "TODO"; + } + enum FAILED { + description + "TODO"; + } + enum POWER_OFF { + description + "TODO"; + } + enum OFF_LINE { + description + "TODO"; + } + enum OFF_DUTY { + description + "TODO"; + } + enum DEPENDENCY { + description + "TODO"; + } + enum DEGRADED { + description + "TODO"; + } + enum NOT_INSTALLED { + description + "TODO"; + } + enum LOG_FULL { + description + "TODO"; + } + } + description + "TODO"; + reference + "TODO"; + } + + typedef CellState { + type enumeration { + enum IDLE { + description + "TODO"; + } + enum INACTIVE { + description + "TODO"; + } + enum ACTIVE { + description + "TODO"; + } + } + description + "TODO"; + reference + "TODO"; + } + + typedef SNssai { + type string; + description + "Single Network Slice Selection Assistance Information."; + reference + "TS 23.501 clause 5.15.2"; + } + + typedef Sst { + type uint8; + description + "TODO"; + reference + "TODO"; + } + + typedef Nrpci { + type uint32; + description + "Physical Cell Identity (PCI) of the NR cell."; + reference + "TS 36.211 subclause 6.11"; + } + + typedef Tac { + type int32 { + range "0..16777215"; + } + description + "Tracking Area Code"; + reference + "TS 23.003 clause 19.4.2.3"; + } + + typedef AmfRegionId { + type string; + description + ""; + reference + "clause 2.10.1 of 3GPP TS 23.003"; + } + + typedef AmfSetId { + type string; + description + ""; + reference + "clause 2.10.1 of 3GPP TS 23.003"; + } + + typedef AmfPointer { + type string; + description + ""; + reference + "clause 2.10.1 of 3GPP TS 23.003"; + } + + // type definitions especially for core NFs + + typedef NfType { + type enumeration { + enum NRF { + description + "TODO"; + } + enum UDM { + description + "TODO"; + } + enum AMF { + description + "TODO"; + } + enum SMF { + description + "TODO"; + } + enum AUSF { + description + "TODO"; + } + enum NEF { + description + "TODO"; + } + enum PCF { + description + "TODO"; + } + enum SMSF { + description + "TODO"; + } + enum NSSF { + description + "TODO"; + } + enum UDR { + description + "TODO"; + } + enum LMF { + description + "TODO"; + } + enum GMLC { + description + "TODO"; + } + enum 5G_EIR { + description + "TODO"; + } + enum SEPP { + description + "TODO"; + } + enum UPF { + description + "TODO"; + } + enum N3IWF { + description + "TODO"; + } + enum AF { + description + "TODO"; + } + enum UDSF { + description + "TODO"; + } + enum BSF { + description + "TODO"; + } + enum CHF { + description + "TODO"; + } + } + description + "TODO"; + } + + typedef NotificationType { + type enumeration { + enum N1_MESSAGES { + description + "TODO"; + } + enum N2_INFORMATION { + description + "TODO"; + } + enum LOCATION_NOTIFICATION { + description + "TODO"; + } + } + description + "TODO"; + } + + typedef Load { + type uint8 { + range "0..100"; + } + description + "Latest known load information of the NF, percentage "; + } + + typedef N1MessageClass { + type enumeration { + enum 5GMM { + description + "TODO"; + } + enum SM { + description + "TODO"; + } + enum LPP { + description + "TODO"; + } + enum SMS { + description + "TODO"; + } + } + description + "TODO"; + } + + typedef N2InformationClass { + type enumeration { + enum SM { + description + "TODO"; + } + enum NRPPA { + description + "TODO"; + } + enum PWS { + description + "TODO"; + } + enum PWS_BCAL { + description + "TODO"; + } + enum PWS_RF { + description + "TODO"; + } + } + description + "TODO"; + reference + "TODO"; + } + + typedef NsiId { + type string; + description + "TODO"; + } + + typedef UeMobilityLevel { + type enumeration { + enum STATIONARY { + description + "TODO"; + } + enum NOMADIC { + description + "TODO"; + } + enum RESTRICTED_MOBILITY { + description + "TODO"; + } + enum FULLY_MOBILITY { + description + "TODO"; + } + } + description + "TODO"; + reference + "TODO"; + } + + typedef ResourceSharingLevel { + type enumeration { + enum SHARED { + description + "TODO"; + } + enum NOT_SHARED { + description + "TODO"; + } + } + description + "TODO"; + reference + "TODO"; + } + + typedef TxDirection { + type enumeration { + enum DL { + description + "TODO"; + } + enum UL { + description + "TODO"; + } + enum DL_AND_UL { + description + "TODO"; + } + } + description + "TODO"; + reference + "TODO"; + } + + typedef DistinguishedName { // TODO is this equivalent to TS 32.300 ? + type string; + description + "Represents the international standard for the representation + of Distinguished Name (RFC 4512). + The format of the DistinguishedName REGEX is: + {AttributeType = AttributeValue} + + AttributeType consists of alphanumeric and hyphen (OIDs not allowed). + All other characters are restricted. + The Attribute value cannot contain control characters or the + following characters : \\ > < ; \" + , (Comma) and White space + The Attribute value can contain the following characters if they + are excaped : \\ > < ; \" + , (Comma) and White space + The Attribute value can contain control characters if its an escaped + double digit hex number. + Examples could be + UID=nobody@example.com,DC=example,DC=com + CN=John Smith,OU=Sales,O=ACME Limited,L=Moab,ST=Utah,C=US"; + reference + "RFC 4512 Lightweight Directory Access Protocol (LDAP): + Directory Information Models"; + } // recheck regexp it doesn't handle posix [:cntrl:] + + typedef QOffsetRange { + type int8; + units "dB"; + description + "TODO"; + reference + "TODO"; + } + + typedef QuotaType { + type enumeration { + enum STRICT { + description + "TODO"; + } + enum FLOAT { + description + "TODO"; + } + } + description + "TODO"; + } + + typedef CyclicPrefix { + type enumeration { + enum NORMAL { + description + "TODO"; + } + enum EXTENDED { + description + "TODO"; + } + } + description + "TODO"; + } + + grouping PLMNInfo { + description + "The PLMNInfo data type define a S-NSSAI member in a specific PLMNId, and it have + two attributes PLMNId and S-NSSAI (PLMNId, S-NSSAI). The PLMNId represents a data type that + is comprised of mcc (mobile country code) and mnc (mobile network code), (See TS 23.003 + subclause 2.2 and 12.1) and S-NSSAI represents an data type, that is comprised of an SST + (Slice/Service type) and an optional SD (Slice Differentiator) field, (See TS 23.003 [13])."; + uses PLMNId; + list sNSSAIList { + key "sNssai"; + uses sNSSAIConfig; + description "List of sNSSAIs"; + } + } + + grouping ManagedNFProfile { + description + "Defines profile for managed NF"; + reference + "3GPP TS 23.501"; + leaf idx { + type uint32; + description + "TODO"; + reference + "3GPP TS 23.501"; + } + leaf nfInstanceID { + type yang:uuid; + config false; + mandatory false; + description + "This parameter defines profile for managed NF. + The format of the NF Instance ID shall be a + Universally Unique Identifier (UUID) version 4, + as described in IETF RFC 4122 "; + } + leaf-list nfType { + type NfType; + config false; + min-elements 1; + description + "Type of the Network Function"; + } + leaf hostAddr { + type inet:host; + mandatory false; + description + "Host address of a NF"; + } + leaf authzInfo { + type string; + description + "This parameter defines NF Specific Service authorization + information. It shall include the NF type (s) and NF realms/origins + allowed to consume NF Service(s) of NF Service Producer."; + reference + "See TS 23.501"; + } + leaf location { + type string; + description + "Information about the location of the NF instance + (e.g. geographic location, data center) defined by operator"; + reference + "TS 29.510"; + } + leaf capacity { + type uint16; + mandatory false; + description + "This parameter defines static capacity information + in the range of 0-65535, expressed as a weight relative to other + NF instances of the same type; if capacity is also present in the + nfServiceList parameters, those will have precedence over this value."; + reference + "TS 29.510"; + } + leaf nFSrvGroupId { + type string; + description + "This parameter defines identity of the group that is + served by the NF instance. + May be config false or true depending on the ManagedFunction. + Config=true for Udrinfo. Config=false for UdmInfo and AusfInfo. + Shall be present if ../nfType = UDM or AUSF or UDR. "; + reference + "TS 29.510"; + } + leaf-list supportedDataSetIds { + type enumeration { + enum SUBSCRIPTION { + description + "TODO"; + } + enum POLICY { + description + "TODO"; + } + enum EXPOSURE { + description + "TODO"; + } + enum APPLICATION { + description + "TODO"; + } + } + description + "List of supported data sets in the UDR instance. + May be present if ../nfType = UDR"; + reference + "TS 29.510"; + } + leaf-list smfServingAreas { + type string; + description + "Defines the SMF service area(s) the UPF can serve. + Shall be present if ../nfType = UPF"; + reference + "TS 29.510"; + } + leaf priority { + type uint16; + description + "This parameter defines Priority (relative to other NFs + of the same type) in the range of 0-65535, to be used for NF selection; + lower values indicate a higher priority. If priority is also present + in the nfServiceList parameters, those will have precedence over + this value. Shall be present if ../nfType = AMF "; + reference + "TS 29.510"; + } + } + + + grouping PLMNId { + description + "TODO"; + reference + "TS 23.658"; + leaf mcc { + type Mcc; + mandatory true; + description + "TODO"; + } + leaf mnc { + type Mnc; + mandatory true; + description + "TODO"; + } + } + + grouping AmfIdentifier { + description + "The AMFI is constructed from an AMF Region ID, + an AMF Set ID and an AMF Pointer. + The AMF Region ID identifies the region, + the AMF Set ID uniquely identifies the AMF Set within the AMF Region, and + the AMF Pointer uniquely identifies the AMF within the AMF Set. "; + leaf amfRegionId { + type AmfRegionId; + description + "TODO"; + } + leaf amfSetId { + type AmfSetId; + description + "TODO"; + } + leaf amfPointer { + type AmfPointer; + description + "TODO"; + } + } + + grouping DefaultNotificationSubscription { + description + "TODO"; + leaf notificationType { + type NotificationType; + description + "TODO"; + } + leaf callbackUri { + type inet:uri; + description + "TODO"; + } + leaf n1MessageClass { + type N1MessageClass; + description + "TODO"; + } + leaf n2InformationClass { + type N2InformationClass; + description + "TODO"; + } + } + + grouping Ipv4AddressRange { + description + "TODO"; + leaf start { + type inet:ipv4-address; + description + "TODO"; + } + leaf end { + type inet:ipv4-address; + description + "TODO"; + } + } + + grouping Ipv6PrefixRange { + description + "TODO"; + leaf start { + type inet:ipv6-prefix; + description + "TODO"; + } + leaf end { + type inet:ipv6-prefix; + description + "TODO"; + } + } + + grouping AddressWithVlan { + description + "TODO"; + leaf ipAddress { + type inet:ip-address; + description + "TODO"; + } + leaf vlanId { + type uint16; + description + "TODO"; + } + } + + grouping ManagedElementGroup { + description + "Abstract class representing telecommunications resources."; + leaf dnPrefix { + type DistinguishedName; + description + "Provides naming context and splits the DN into a DN Prefix and Local DN"; + } + leaf userLabel { + type string; + description + "A user-friendly name of this object."; + } + leaf locationName { + type string; + config false; + description + "The physical location (e.g. an address) of an entity"; + } + leaf-list managedBy { + type DistinguishedName; + config false; + description + "Relates to the role played by ManagementSystem"; + } + leaf-list managedElementTypeList { + type string; + config false; + min-elements 1; + description + "The type of functionality provided by the ManagedElement. + It may represent one ME functionality or a combination of + Two examples of allowed values are: + - NodeB; + - HLR, VLR."; + } + } // Managed Element grouping + + grouping NearRTRICGroup { + description + "Abstract class representing Near RT RIC."; + leaf dnPrefix { + type DistinguishedName; + description + "Provides naming context and splits the DN into a DN Prefix and Local DN"; + } + leaf userLabel { + type string; + description + "A user-friendly name of this object."; + } + leaf locationName { + type string; + config false; + description + "The physical location (e.g. an address) of an entity"; + } + leaf gNBId { + type int64 { range "0..4294967295"; } + config false; + description "Identifies a gNB within a PLMN. The gNB Identifier (gNB ID) + is part of the NR Cell Identifier (NCI) of the gNB cells."; + reference "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413"; + } + + list pLMNInfoList { + uses PLMNInfo; + key "mcc mnc"; + description "The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs that can be served by the nearRTRIC."; + } + list RRMPolicyRatio { + key id; + leaf id { + type string; + description + "Key leaf"; + } + container attributes { + uses RRMPolicyRatioGroup; + } + description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the + inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both + standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the + abstract RRMPolicy_ IOC. For details see subclause 4.3.36."; + } + leaf-list ranNFNSSIIdList{ + type string; + config true; + description "Contains the list of RANNFNSSIs configured in a NearRTRIC"; + } + + + } // Near RT RIC grouping + + + + grouping Configuration{ + leaf configParameter{ + type string; + description "Type of the configuration parameter"; + } + leaf configValue{ + type int64; + description "Identifies the configuration to be done for the network elements under the NearRTRIC"; + + } + } + + + grouping GNBDUFunctionGroup { + description + "Represents the GNBDUFunction IOC."; + reference + "3GPP TS 28.541"; + + leaf gNBId { + type int64 { + range "0..4294967295"; + } + config false; + mandatory false; + description + "Identifies a gNB within a PLMN. The gNB Identifier (gNB ID) + is part of the NR Cell Identifier (NCI) of the gNB cells."; + reference + "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413"; + } + leaf gNBIdLength { + type int32 { + range "22..32"; + } + mandatory false; + description + "Indicates the number of bits for encoding the gNB ID."; + reference + "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413"; + } + leaf gNBDUId { + type int64 { + range "0..68719476735"; + } + mandatory false; + description + "Uniquely identifies the DU at least within a gNB."; + reference + "3GPP TS 38.473"; + } + leaf gNBDUName { + type string { + length "1..150"; + } + description + "Identifies the Distributed Unit of an NR node"; + reference + "3GPP TS 38.473"; + } + list RRMPolicyRatio { + key id; + leaf id { + type string; + description + "Key leaf"; + } + container attributes { + uses RRMPolicyRatioGroup; + } + description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the + inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both + standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the + abstract RRMPolicy_ IOC. For details see subclause 4.3.36."; + } + } + + grouping NRCellDUGroup { + description + "Represents the NRCellDU IOC."; + reference + "3GPP TS 28.541"; + list RRMPolicyRatio { + key id; + leaf id { + type string; + description + "Key leaf"; + } + container attributes { + uses RRMPolicyRatioGroup; + } + description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the + inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both + standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the + abstract RRMPolicy_ IOC. For details see subclause 4.3.36."; + } + leaf cellLocalId { + type int32 { + range "0..16383"; + } + mandatory false; + description + "Identifies an NR cell of a gNB. Together with the + corresponding gNB identifier in forms the NR Cell Identity (NCI)."; + reference + "NCI in 3GPP TS 38.300"; + } + list pLMNInfoList { + key "mcc mnc"; + min-elements 1; + description + "The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs that + can be served by the NR cell, and which S-NSSAIs that can be supported by the NR cell for + corresponding PLMN in case of network slicing feature is supported. The plMNId of the first + entry of the list is the PLMNId used to construct the nCGI for the NR cell."; + uses PLMNInfo; + } + leaf nRPCI { + type int32 { + range "0..1007"; + } + mandatory false; + description + "The Physical Cell Identity (PCI) of the NR cell."; + reference + "3GPP TS 36.211"; + } + leaf nRTAC { + type Tac; + description + "The common 5GS Tracking Area Code for the PLMNs."; + reference + "3GPP TS 23.003, 3GPP TS 38.473"; + } + } // grouping + + grouping rRMPolicyMemberGroup { + description + "TODO"; + uses PLMNId; + leaf sNSSAI { + type SNssai; + description + "This data type represents an RRM Policy member that will be part of a + rRMPolicyMemberList. A RRMPolicyMember is defined by its pLMNId and sNSSAI (S-NSSAI). + The members in a rRMPolicyMemberList are assigned a specific amount of RRM resources + based on settings in RRMPolicy."; + } + } + + grouping RRMPolicyRatioGroup { + + uses RRMPolicy_Group; // Inherits RRMPolicy_ + + leaf quotaType { + type QuotaType; + mandatory false; + description "The type of the quota which allows to allocate resources as + strictly usable for defined slice(s) (strict quota) or allows that + resources to be used by other slice(s) when defined slice(s) do not + need them (float quota)."; + } + + leaf rRMPolicyMaxRatio { + type uint8; + mandatory false; + units percent; + description "The RRM policy setting the maximum percentage of radio + resources to be allocated to the corresponding S-NSSAI list. This + quota can be strict or float quota. Strict quota means resources are + not allowed for other sNSSAIs even when they are not used by the + defined sNSSAIList. Float quota resources can be used by other sNSSAIs + when the defined sNSSAIList do not need them. Value 0 indicates that + there is no maximum limit."; + } + + leaf rRMPolicyMinRatio { + type uint8; + mandatory false; + units percent; + description "The RRM policy setting the minimum percentage of radio + resources to be allocated to the corresponding S-NSSAI list. This + quota can be strict or float quota. Strict quota means resources are + not allowed for other sNSSAIs even when they are not used by the + defined sNSSAIList. Float quota resources can be used by other sNSSAIs + when the defined sNSSAIList do not need them. Value 0 indicates that + there is no minimum limit."; + } + leaf rRMPolicyDedicatedRatio { + type uint8; + units percent; + description "Dedicated Ration."; + } + description "Represents the RRMPolicyRatio concrete IOC."; + } + + + grouping sNSSAIConfig{ + leaf sNssai { + type string; + description "s-NSSAI of a network slice."; + reference "3GPP TS 23.003"; + } + leaf status { + type string; + description "status of s-NSSAI"; + } + list configData{ + uses Configuration; + key "configParameter"; + description "List of configurations to be done at the network elements"; + } + } + + grouping RRMPolicy_Group { + description + "This IOC represents the properties of an abstract RRMPolicy. The RRMPolicy_ IOC + needs to be subclassed to be instantiated. It defines two attributes apart from those + inherited from Top IOC, the resourceType attribute defines type of resource (PRB, RRC + connected users, DRB usage etc.) and the rRMPolicyMemberList attribute defines the + RRMPolicyMember(s)that are subject to this policy. An RRM resource (defined in resourceType + attribute) is located in NRCellDU, NRCellCU, GNBDUFunction, GNBCUCPFunction or in + GNBCUUPFunction. The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the + inheritance in TS 28.541 Figure 4.2.1.2-1. This RRM framework allows adding new policies, + both standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the + abstract RRMPolicy_ IOC."; + leaf resourceType { + type string; + mandatory false; + description + "The resourceType attribute defines type of resource (PRB, RRC connected users, + DRB usage etc.) that is subject to policy. Valid values are 'PRB', 'RRC' or 'DRB'"; + } + list rRMPolicyMemberList { + key "idx"; + leaf idx { + type uint32; + description + "TODO"; + } + description + "It represents the list of RRMPolicyMember (s) that the managed object + is supporting. A RRMPolicyMember <<dataType>> include the PLMNId <<dataType>> + and S-NSSAI <<dataType>>."; + uses rRMPolicyMemberGroup; + } + } // grouping + + grouping GNBCUUPFunctionGroup { + description + "Represents the GNBCUUPFunction IOC."; + reference + "3GPP TS 28.541"; + + list RRMPolicyRatio { + key id; + leaf id { + type string; + description + "Key leaf"; + } + container attributes { + uses RRMPolicyRatioGroup; + } + description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the + inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both + standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the + abstract RRMPolicy_ IOC. For details see subclause 4.3.36."; + } + leaf gNBCUUPId { + type uint64 { + range "0..68719476735"; + } + config false; + mandatory false; + description + "Identifies the gNB-CU-UP at least within a gNB-CU-CP"; + reference + "'gNB-CU-UP ID' in subclause 9.3.1.15 of 3GPP TS 38.463"; + } + leaf gNBId { + type int64 { + range "0..4294967295"; + } + mandatory false; + description + "Indicates the number of bits for encoding the gNB Id."; + reference + "gNB Id in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413"; + } + list pLMNInfoList { + key "mcc mnc"; + description + "The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs that + can be served by the GNBCUUPFunction and which S-NSSAIs can be supported by the + GNBCUUPFunction for corresponding PLMN in case of network slicing feature is supported"; + uses PLMNInfo; + } + } // grouping + + grouping GNBCUCPFunctionGroup { + description + "Represents the GNBCUCPFunction IOC."; + reference + "3GPP TS 28.541"; + list RRMPolicyRatio { + key id; + leaf id { + type string; + description + "Key leaf"; + } + container attributes { + uses RRMPolicyRatioGroup; + } + description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the + inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both + standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the + abstract RRMPolicy_ IOC. For details see subclause 4.3.36."; + } + leaf gNBId { + type int64 { + range "0..4294967295"; + } + mandatory false; + description + "Identifies a gNB within a PLMN. The gNB Identifier (gNB ID) + is part of the NR Cell Identifier (NCI) of the gNB cells."; + reference + "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413"; + } + leaf gNBIdLength { + type int32 { + range "22..32"; + } + mandatory false; + description + "Indicates the number of bits for encoding the gNB ID."; + reference + "gNB ID in 3GPP TS 38.300, Global gNB ID in 3GPP TS 38.413"; + } + leaf gNBCUName { + type string { + length "1..150"; + } + mandatory false; + description + "Identifies the Central Unit of an gNB."; + reference + "3GPP TS 38.473"; + } + list pLMNId { + key "mcc mnc"; + min-elements 1; + max-elements 1; + description + "The PLMN identifier to be used as part of the global RAN + node identity."; + uses PLMNId; + } + } // grouping + + grouping NRCellCUGroup { + description + "Represents the NRCellCU IOC."; + reference + "3GPP TS 28.541"; + leaf cellLocalId { + type int32 { + range "0..16383"; + } + mandatory false; + description + "Identifies an NR cell of a gNB. Together with corresponding + gNB ID it forms the NR Cell Identifier (NCI)."; + } + list pLMNInfoList { + key "mcc mnc"; + min-elements 1; + description + "The PLMNInfoList is a list of PLMNInfo data type. It defines which PLMNs + that can be served by the NR cell, and which S-NSSAIs that can be supported by the + NR cell for corresponding PLMN in case of network slicing feature is supported."; + uses PLMNInfo; + // Note: Whether the attribute pLMNId in the pLMNInfo can be writable depends on the implementation. + } + list RRMPolicyRatio { + key id; + leaf id { + type string; + description + "Key leaf"; + } + container attributes { + uses RRMPolicyRatioGroup; + } + description " The RRMPolicyRatio IOC is one realization of a RRMPolicy_ IOC, see the + inheritance in Figure 4.2.1.2-1. This RRM framework allows adding new policies, both + standardized (like RRMPolicyRatio) or as vendor specific, by inheriting from the + abstract RRMPolicy_ IOC. For details see subclause 4.3.36."; + } + } // grouping NRCellCUGroup + + grouping NRCellRelationGroup { + description + "Represents the NRCellRelation IOC."; + reference + "3GPP TS 28.541"; + leaf nRTCI { + type uint64; + description + "Target NR Cell Identifier. It consists of NR Cell + Identifier (NCI) and Physical Cell Identifier of the target NR cell + (nRPCI)."; + } + } // grouping + + // container for RAN Network + + container cps-ran-schema { + description + "High-level hierarchical data structure to establish + relationships among O-RAN managed elements for the + purposes of storing in Configuration and Persistence + ONAP system "; + list NearRTRIC { + key "idNearRTRIC"; // list GNBCUCPFunction + description + "A list of expected near-real-time RIC O-RAN managed functions."; + leaf idNearRTRIC { + type string; + description + "Key leaf (namingAttribute) for a class/list. + Should be used as a key leaf for lists representing + stage 2 classes."; + reference + "3GPP TS 32.300 Name convention for managed objects"; + } + container attributes { + description + "TODO"; + uses NearRTRICGroup; + } + list GNBDUFunction { + key "idGNBDUFunction"; + description + "Represents the logical function DU of gNB or en-gNB."; + reference + "3GPP TS 28.541"; + leaf idGNBDUFunction { + type string; + description + "TODO"; + } + container attributes { + description + "TODO"; + uses GNBDUFunctionGroup; + } + list NRCellDU { + key "idNRCellDU"; + description + "Represents the information of a cell known by DU."; + reference + "3GPP TS 28.541"; + leaf idNRCellDU { + type string; + description + "TODO"; + } + container attributes { + description + "TODO"; + uses NRCellDUGroup; + } + } // list NRCellDU + } // list GNBDUFunction + list GNBCUUPFunction { + key "idGNBCUUPFunction"; + description + "TODO"; + leaf idGNBCUUPFunction { + type string; + description + "TODO"; + } + container attributes { + description + "TODO"; + uses GNBCUUPFunctionGroup; + } + } // list GNBCUUPFunction + list GNBCUCPFunction { + key "idGNBCUCPFunction"; // list NRCellCU + description + "Represents the logical function CU-CP of gNB and en-gNB."; + reference + "3GPP TS 28.541"; + leaf idGNBCUCPFunction { + type string; + description + "TODO"; + } + container attributes { + description + "TODO"; + uses GNBCUCPFunctionGroup; + } + list NRCellCU { + key "idNRCellCU"; + description + "Represents the information required by CU that is + responsible for the management of inter-cell mobility and neighbour + relations via ANR."; + reference + "3GPP TS 28.541"; + leaf idNRCellCU { + type string; + description + "TODO"; + } + container attributes { + description + "TODO"; + uses NRCellCUGroup; + } + list NRCellRelation { + key "idNRCellRelation"; + description + "Represents a neighbour cell relation from a source cell + to a target cell, where the target cell is an NRCellCU or + ExternalNRCellCU instance."; + reference + "3GPP TS 28.541"; + leaf idNRCellRelation { + type string; + description + "TODO"; + } + container attributes { + description + "TODO"; + uses NRCellRelationGroup; + } + } // list NRCellRelation + list NRFreqRelation { + key "idNRFreqRelation"; + description + "Together with the target NRFrequency, it represents the + frequency properties applicable to the referencing NRFreqRelation."; + reference + "3GPP TS 28.541"; + leaf idNRFreqRelation { + type string; + description + "TODO"; + } + } // list NRFreqRelation + } + } + } // list ManagedElement + } +} |