aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRishi.Chail <rishi.chail@est.tech>2021-01-19 12:38:28 +0000
committerRishi.Chail <rishi.chail@est.tech>2021-01-20 11:02:36 +0000
commitcd9f368b1f3c5e25e17e21649e582d84a909ac79 (patch)
tree0b29bca5156086ed1d4900b1b52ce9f829e41e61
parentdce4e316da66ede214977491c712b0a4ab457644 (diff)
Test E2E Network Slicing model with CPS
Added TC with yang schema sets which are base for E2E Network slicing Issue-ID: CPS-169 Signed-off-by: Rishi.Chail <rishi.chail@est.tech> Change-Id: I7f082833880157a1711b5a380697c8ba75a1a39f
-rwxr-xr-xcps-service/src/test/groovy/org/onap/cps/api/impl/E2ENetworkSliceSpec.groovy44
-rwxr-xr-xcps-service/src/test/resources/e2e/basic/ietf-inet-types.yang457
-rwxr-xr-xcps-service/src/test/resources/e2e/basic/ietf-yang-types.yang480
-rwxr-xr-xcps-service/src/test/resources/e2e/basic/ran-network2020-08-06.yang2157
4 files changed, 3138 insertions, 0 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
new file mode 100755
index 0000000000..22dc39ad90
--- /dev/null
+++ b/cps-service/src/test/groovy/org/onap/cps/api/impl/E2ENetworkSliceSpec.groovy
@@ -0,0 +1,44 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2021 Nordix Foundation. All rights reserved.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.api.impl
+
+import org.onap.cps.TestUtils
+import org.onap.cps.spi.CpsModulePersistenceService
+import spock.lang.Specification
+
+
+class E2ENetworkSliceSpec extends Specification {
+ def mockModuleStoreService = Mock(CpsModulePersistenceService)
+ def objectUnderTest = new CpsModuleServiceImpl()
+
+ def setup() {
+ objectUnderTest.cpsModulePersistenceService = mockModuleStoreService
+ }
+
+ def 'E2E model can be parsed by CPS.'() {
+ given: 'Valid yang resource as name-to-content map'
+ def yangResourcesNameToContentMap = TestUtils.getYangResourcesAsMap('e2e/basic/ietf-inet-types.yang','e2e/basic/ietf-yang-types.yang','e2e/basic/ran-network2020-08-06.yang')
+ when: 'Create schema set method is invoked'
+ objectUnderTest.createSchemaSet('someDataspace', 'someSchemaSet', yangResourcesNameToContentMap)
+ then: 'Parameters are validated and processing is delegated to persistence service'
+ 1 * mockModuleStoreService.storeSchemaSet('someDataspace', 'someSchemaSet', yangResourcesNameToContentMap)
+ }
+}
diff --git a/cps-service/src/test/resources/e2e/basic/ietf-inet-types.yang b/cps-service/src/test/resources/e2e/basic/ietf-inet-types.yang
new file mode 100755
index 0000000000..2f14270dec
--- /dev/null
+++ b/cps-service/src/test/resources/e2e/basic/ietf-inet-types.yang
@@ -0,0 +1,457 @@
+module ietf-inet-types {
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+ prefix "inet";
+
+ organization
+ "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+ contact
+ "WG Web: <http://tools.ietf.org/wg/netmod/>
+ WG List: <mailto:netmod@ietf.org>
+
+ WG Chair: David Kessens
+ <mailto:david.kessens@nsn.com>
+
+ WG Chair: Juergen Schoenwaelder
+ <mailto:j.schoenwaelder@jacobs-university.de>
+
+ Editor: Juergen Schoenwaelder
+ <mailto:j.schoenwaelder@jacobs-university.de>";
+
+ description
+ "This module contains a collection of generally useful derived
+ YANG data types for Internet addresses and related things.
+
+ Copyright (c) 2013 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 6991; see
+ the RFC itself for full legal notices.";
+
+ revision 2013-07-15 {
+ description
+ "This revision adds the following new data types:
+ - ip-address-no-zone
+ - ipv4-address-no-zone
+ - ipv6-address-no-zone";
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+
+ revision 2010-09-24 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 6021: Common YANG Data Types";
+ }
+
+ /*** collection of types related to protocol fields ***/
+
+ typedef ip-version {
+ type enumeration {
+ enum unknown {
+ value "0";
+ description
+ "An unknown or unspecified version of the Internet
+ protocol.";
+ }
+ enum ipv4 {
+ value "1";
+ description
+ "The IPv4 protocol as defined in RFC 791.";
+ }
+ enum ipv6 {
+ value "2";
+ description
+ "The IPv6 protocol as defined in RFC 2460.";
+ }
+ }
+ description
+ "This value represents the version of the IP protocol.
+
+ In the value set and its semantics, this type is equivalent
+ to the InetVersion textual convention of the SMIv2.";
+ reference
+ "RFC 791: Internet Protocol
+ RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+ RFC 4001: Textual Conventions for Internet Network Addresses";
+ }
+
+ typedef dscp {
+ type uint8 {
+ range "0..63";
+ }
+ description
+ "The dscp type represents a Differentiated Services Code Point
+ that may be used for marking packets in a traffic stream.
+ In the value set and its semantics, this type is equivalent
+ to the Dscp textual convention of the SMIv2.";
+ reference
+ "RFC 3289: Management Information Base for the Differentiated
+ Services Architecture
+ RFC 2474: Definition of the Differentiated Services Field
+ (DS Field) in the IPv4 and IPv6 Headers
+ RFC 2780: IANA Allocation Guidelines For Values In
+ the Internet Protocol and Related Headers";
+ }
+
+ typedef ipv6-flow-label {
+ type uint32 {
+ range "0..1048575";
+ }
+ description
+ "The ipv6-flow-label type represents the flow identifier or Flow
+ Label in an IPv6 packet header that may be used to
+ discriminate traffic flows.
+
+ In the value set and its semantics, this type is equivalent
+ to the IPv6FlowLabel textual convention of the SMIv2.";
+ reference
+ "RFC 3595: Textual Conventions for IPv6 Flow Label
+ RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+ }
+
+ typedef port-number {
+ type uint16 {
+ range "0..65535";
+ }
+ description
+ "The port-number type represents a 16-bit port number of an
+ Internet transport-layer protocol such as UDP, TCP, DCCP, or
+ SCTP. Port numbers are assigned by IANA. A current list of
+ all assignments is available from <http://www.iana.org/>.
+
+ Note that the port number value zero is reserved by IANA. In
+ situations where the value zero does not make sense, it can
+ be excluded by subtyping the port-number type.
+ In the value set and its semantics, this type is equivalent
+ to the InetPortNumber textual convention of the SMIv2.";
+ reference
+ "RFC 768: User Datagram Protocol
+ RFC 793: Transmission Control Protocol
+ RFC 4960: Stream Control Transmission Protocol
+ RFC 4340: Datagram Congestion Control Protocol (DCCP)
+ RFC 4001: Textual Conventions for Internet Network Addresses";
+ }
+
+ /*** collection of types related to autonomous systems ***/
+
+ typedef as-number {
+ type uint32;
+ description
+ "The as-number type represents autonomous system numbers
+ which identify an Autonomous System (AS). An AS is a set
+ of routers under a single technical administration, using
+ an interior gateway protocol and common metrics to route
+ packets within the AS, and using an exterior gateway
+ protocol to route packets to other ASes. IANA maintains
+ the AS number space and has delegated large parts to the
+ regional registries.
+
+ Autonomous system numbers were originally limited to 16
+ bits. BGP extensions have enlarged the autonomous system
+ number space to 32 bits. This type therefore uses an uint32
+ base type without a range restriction in order to support
+ a larger autonomous system number space.
+
+ In the value set and its semantics, this type is equivalent
+ to the InetAutonomousSystemNumber textual convention of
+ the SMIv2.";
+ reference
+ "RFC 1930: Guidelines for creation, selection, and registration
+ of an Autonomous System (AS)
+ RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+ RFC 4001: Textual Conventions for Internet Network Addresses
+ RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+ Number Space";
+ }
+
+ /*** collection of types related to IP addresses and hostnames ***/
+
+ typedef ip-address {
+ type union {
+ type inet:ipv4-address;
+ type inet:ipv6-address;
+ }
+ description
+ "The ip-address type represents an IP address and is IP
+ version neutral. The format of the textual representation
+ implies the IP version. This type supports scoped addresses
+ by allowing zone identifiers in the address format.";
+ reference
+ "RFC 4007: IPv6 Scoped Address Architecture";
+ }
+
+ typedef ipv4-address {
+ type string {
+ pattern
+ '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+ + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+ + '(%[\p{N}\p{L}]+)?';
+ }
+ description
+ "The ipv4-address type represents an IPv4 address in
+ dotted-quad notation. The IPv4 address may include a zone
+ index, separated by a % sign.
+
+ The zone index is used to disambiguate identical address
+ values. For link-local addresses, the zone index will
+ typically be the interface index number or the name of an
+ interface. If the zone index is not present, the default
+ zone of the device will be used.
+
+ The canonical format for the zone index is the numerical
+ format";
+ }
+
+ typedef ipv6-address {
+ type string {
+ pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+ + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+ + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+ + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+ + '(%[\p{N}\p{L}]+)?';
+ pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+ + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+ + '(%.+)?';
+ }
+ description
+ "The ipv6-address type represents an IPv6 address in full,
+ mixed, shortened, and shortened-mixed notation. The IPv6
+ address may include a zone index, separated by a % sign.
+
+ The zone index is used to disambiguate identical address
+ values. For link-local addresses, the zone index will
+ typically be the interface index number or the name of an
+ interface. If the zone index is not present, the default
+ zone of the device will be used.
+
+ The canonical format of IPv6 addresses uses the textual
+ representation defined in Section 4 of RFC 5952. The
+ canonical format for the zone index is the numerical
+ format as described in Section 11.2 of RFC 4007.";
+ reference
+ "RFC 4291: IP Version 6 Addressing Architecture
+ RFC 4007: IPv6 Scoped Address Architecture
+ RFC 5952: A Recommendation for IPv6 Address Text
+ Representation";
+ }
+
+ typedef ip-address-no-zone {
+ type union {
+ type inet:ipv4-address-no-zone;
+ type inet:ipv6-address-no-zone;
+ }
+ description
+ "The ip-address-no-zone type represents an IP address and is
+ IP version neutral. The format of the textual representation
+ implies the IP version. This type does not support scoped
+ addresses since it does not allow zone identifiers in the
+ address format.";
+ reference
+ "RFC 4007: IPv6 Scoped Address Architecture";
+ }
+
+ typedef ipv4-address-no-zone {
+ type inet:ipv4-address {
+ pattern '[0-9\.]*';
+ }
+ description
+ "An IPv4 address without a zone index. This type, derived from
+ ipv4-address, may be used in situations where the zone is
+ known from the context and hence no zone index is needed.";
+ }
+
+ typedef ipv6-address-no-zone {
+ type inet:ipv6-address {
+ pattern '[0-9a-fA-F:\.]*';
+ }
+ description
+ "An IPv6 address without a zone index. This type, derived from
+ ipv6-address, may be used in situations where the zone is
+ known from the context and hence no zone index is needed.";
+ reference
+ "RFC 4291: IP Version 6 Addressing Architecture
+ RFC 4007: IPv6 Scoped Address Architecture
+ RFC 5952: A Recommendation for IPv6 Address Text
+ Representation";
+ }
+
+ typedef ip-prefix {
+ type union {
+ type inet:ipv4-prefix;
+ type inet:ipv6-prefix;
+ }
+ description
+ "The ip-prefix type represents an IP prefix and is IP
+ version neutral. The format of the textual representations
+ implies the IP version.";
+ }
+
+ typedef ipv4-prefix {
+ type string {
+ pattern
+ '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+ + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
+ + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
+ }
+ description
+ "The ipv4-prefix type represents an IPv4 address prefix.
+ The prefix length is given by the number following the
+ slash character and must be less than or equal to 32.
+
+ A prefix length value of n corresponds to an IP address
+ mask that has n contiguous 1-bits from the most
+ significant bit (MSB) and all other bits set to 0.
+
+ The canonical format of an IPv4 prefix has all bits of
+ the IPv4 address set to zero that are not part of the
+ IPv4 prefix.";
+ }
+
+ typedef ipv6-prefix {
+ type string {
+ pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
+ + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
+ + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
+ + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
+ + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+ pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+ + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
+ + '(/.+)';
+ }
+ description
+ "The ipv6-prefix type represents an IPv6 address prefix.
+ The prefix length is given by the number following the
+ slash character and must be less than or equal to 128.
+
+ A prefix length value of n corresponds to an IP address
+ mask that has n contiguous 1-bits from the most
+ significant bit (MSB) and all other bits set to 0.
+
+ The IPv6 address should have all bits that do not belong
+ to the prefix set to zero.
+
+ The canonical format of an IPv6 prefix has all bits of
+ the IPv6 address set to zero that are not part of the
+ IPv6 prefix. Furthermore, the IPv6 address is represented
+ as defined in Section 4 of RFC 5952.";
+ reference
+ "RFC 5952: A Recommendation for IPv6 Address Text
+ Representation";
+ }
+
+ /*** collection of domain name and URI types ***/
+
+ typedef domain-name {
+ type string {
+ length "1..253";
+ pattern
+ '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
+ + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
+ + '|\.';
+ }
+ description
+ "The domain-name type represents a DNS domain name. The
+ name SHOULD be fully qualified whenever possible.
+
+ Internet domain names are only loosely specified. Section
+ 3.5 of RFC 1034 recommends a syntax (modified in Section
+ 2.1 of RFC 1123). The pattern above is intended to allow
+ for current practice in domain name use, and some possible
+ future expansion. It is designed to hold various types of
+ domain names, including names used for A or AAAA records
+ (host names) and other records, such as SRV records. Note
+ that Internet host names have a stricter syntax (described
+ in RFC 952) than the DNS recommendations in RFCs 1034 and
+ 1123, and that systems that want to store host names in
+ schema nodes using the domain-name type are recommended to
+ adhere to this stricter standard to ensure interoperability.
+
+ The encoding of DNS names in the DNS protocol is limited
+ to 255 characters. Since the encoding consists of labels
+ prefixed by a length bytes and there is a trailing NULL
+ byte, only 253 characters can appear in the textual dotted
+ notation.
+
+ The description clause of schema nodes using the domain-name
+ type MUST describe when and how these names are resolved to
+ IP addresses. Note that the resolution of a domain-name value
+ may require to query multiple DNS records (e.g., A for IPv4
+ and AAAA for IPv6). The order of the resolution process and
+ which DNS record takes precedence can either be defined
+ explicitly or may depend on the configuration of the
+ resolver.
+
+ Domain-name values use the US-ASCII encoding. Their canonical
+ format uses lowercase US-ASCII characters. Internationalized
+ domain names MUST be A-labels as per RFC 5890.";
+ reference
+ "RFC 952: DoD Internet Host Table Specification
+ RFC 1034: Domain Names - Concepts and Facilities
+ RFC 1123: Requirements for Internet Hosts -- Application
+ and Support
+ RFC 2782: A DNS RR for specifying the location of services
+ (DNS SRV)
+ RFC 5890: Internationalized Domain Names in Applications
+ (IDNA): Definitions and Document Framework";
+ }
+
+ typedef host {
+ type union {
+ type inet:ip-address;
+ type inet:domain-name;
+ }
+ description
+ "The host type represents either an IP address or a DNS
+ domain name.";
+ }
+
+ typedef uri {
+ type string;
+ description
+ "The uri type represents a Uniform Resource Identifier
+ (URI) as defined by STD 66.
+
+ Objects using the uri type MUST be in US-ASCII encoding,
+ and MUST be normalized as described by RFC 3986 Sections
+ 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary
+ percent-encoding is removed, and all case-insensitive
+ characters are set to lowercase except for hexadecimal
+ digits, which are normalized to uppercase as described in
+ Section 6.2.2.1.
+
+ The purpose of this normalization is to help provide
+ unique URIs. Note that this normalization is not
+ sufficient to provide uniqueness. Two URIs that are
+ textually distinct after this normalization may still be
+ equivalent.
+
+ Objects using the uri type may restrict the schemes that
+ they permit. For example, 'data:' and 'urn:' schemes
+ might not be appropriate.
+
+ A zero-length URI is not a valid URI. This can be used to
+ express 'URI absent' where required.
+
+ In the value set and its semantics, this type is equivalent
+ to the Uri SMIv2 textual convention defined in RFC 5017.";
+ reference
+ "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+ RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+ Group: Uniform Resource Identifiers (URIs), URLs,
+ and Uniform Resource Names (URNs): Clarifications
+ and Recommendations
+ RFC 5017: MIB Textual Conventions for Uniform Resource
+ Identifiers (URIs)";
+ }
+
+}
diff --git a/cps-service/src/test/resources/e2e/basic/ietf-yang-types.yang b/cps-service/src/test/resources/e2e/basic/ietf-yang-types.yang
new file mode 100755
index 0000000000..371a091d14
--- /dev/null
+++ b/cps-service/src/test/resources/e2e/basic/ietf-yang-types.yang
@@ -0,0 +1,480 @@
+module ietf-yang-types {
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
+ prefix "yang";
+
+ organization
+ "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+ contact
+ "WG Web: <http://tools.ietf.org/wg/netmod/>
+ WG List: <mailto:netmod@ietf.org>
+
+ WG Chair: David Kessens
+ <mailto:david.kessens@nsn.com>
+
+ WG Chair: Juergen Schoenwaelder
+ <mailto:j.schoenwaelder@jacobs-university.de>
+
+ Editor: Juergen Schoenwaelder
+ <mailto:j.schoenwaelder@jacobs-university.de>";
+
+ description
+ "This module contains a collection of generally useful derived
+ YANG data types.
+
+ Copyright (c) 2013 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 6991; see
+ the RFC itself for full legal notices.";
+
+ revision 2013-07-15 {
+ description
+ "This revision adds the following new data types:
+ - yang-identifier
+ - hex-string
+ - uuid
+ - dotted-quad";
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+
+ revision 2010-09-24 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 6021: Common YANG Data Types";
+ }
+
+ /*** collection of counter and gauge types ***/
+
+ typedef counter32 {
+ type uint32;
+ description
+ "The counter32 type represents a non-negative integer
+ that monotonically increases until it reaches a
+ maximum value of 2^32-1 (4294967295 decimal), when it
+ wraps around and starts increasing again from zero.
+
+ Counters have no defined 'initial' value, and thus, a
+ single value of a counter has (in general) no information
+ content. Discontinuities in the monotonically increasing
+ value normally occur at re-initialization of the
+ management system, and at other times as specified in the
+ description of a schema node using this type. If such
+ other times can occur, for example, the creation of
+ a schema node of type counter32 at times other than
+ re-initialization, then a corresponding schema node
+ should be defined, with an appropriate type, to indicate
+ the last discontinuity.
+
+ The counter32 type should not be used for configuration
+ schema nodes. A default statement SHOULD NOT be used in
+ combination with the type counter32.
+
+ In the value set and its semantics, this type is equivalent
+ to the Counter32 type of the SMIv2.";
+ reference
+ "RFC 2578: Structure of Management Information Version 2
+ (SMIv2)";
+ }
+
+ typedef zero-based-counter32 {
+ type yang:counter32;
+ default "0";
+ description
+ "The zero-based-counter32 type represents a counter32
+ that has the defined 'initial' value zero.
+
+ A schema node of this type will be set to zero (0) on creation
+ and will thereafter increase monotonically until it reaches
+ a maximum value of 2^32-1 (4294967295 decimal), when it
+ wraps around and starts increasing again from zero.
+
+ Provided that an application discovers a new schema node
+ of this type within the minimum time to wrap, it can use the
+ 'initial' value as a delta. It is important for a management
+ station to be aware of this minimum time and the actual time
+ between polls, and to discard data if the actual time is too
+ long or there is no defined minimum time.
+
+ In the value set and its semantics, this type is equivalent
+ to the ZeroBasedCounter32 textual convention of the SMIv2.";
+ reference
+ "RFC 4502: Remote Network Monitoring Management Information
+ Base Version 2";
+ }
+
+ typedef counter64 {
+ type uint64;
+ description
+ "The counter64 type represents a non-negative integer
+ that monotonically increases until it reaches a
+ maximum value of 2^64-1 (18446744073709551615 decimal),
+ when it wraps around and starts increasing again from zero.
+
+ Counters have no defined 'initial' value, and thus, a
+ single value of a counter has (in general) no information
+ content. Discontinuities in the monotonically increasing
+ value normally occur at re-initialization of the
+ management system, and at other times as specified in the
+ description of a schema node using this type. If such
+ other times can occur, for example, the creation of
+ a schema node of type counter64 at times other than
+ re-initialization, then a corresponding schema node
+ should be defined, with an appropriate type, to indicate
+ the last discontinuity.
+
+ The counter64 type should not be used for configuration
+ schema nodes. A default statement SHOULD NOT be used in
+ combination with the type counter64.
+
+ In the value set and its semantics, this type is equivalent
+ to the Counter64 type of the SMIv2.";
+ reference
+ "RFC 2578: Structure of Management Information Version 2
+ (SMIv2)";
+ }
+
+ typedef zero-based-counter64 {
+ type yang:counter64;
+ default "0";
+ description
+ "The zero-based-counter64 type represents a counter64 that
+ has the defined 'initial' value zero.
+
+
+
+
+ A schema node of this type will be set to zero (0) on creation
+ and will thereafter increase monotonically until it reaches
+ a maximum value of 2^64-1 (18446744073709551615 decimal),
+ when it wraps around and starts increasing again from zero.
+
+ Provided that an application discovers a new schema node
+ of this type within the minimum time to wrap, it can use the
+ 'initial' value as a delta. It is important for a management
+ station to be aware of this minimum time and the actual time
+ between polls, and to discard data if the actual time is too
+ long or there is no defined minimum time.
+
+ In the value set and its semantics, this type is equivalent
+ to the ZeroBasedCounter64 textual convention of the SMIv2.";
+ reference
+ "RFC 2856: Textual Conventions for Additional High Capacity
+ Data Types";
+ }
+
+ typedef gauge32 {
+ type uint32;
+ description
+ "The gauge32 type represents a non-negative integer, which
+ may increase or decrease, but shall never exceed a maximum
+ value, nor fall below a minimum value. The maximum value
+ cannot be greater than 2^32-1 (4294967295 decimal), and
+ the minimum value cannot be smaller than 0. The value of
+ a gauge32 has its maximum value whenever the information
+ being modeled is greater than or equal to its maximum
+ value, and has its minimum value whenever the information
+ being modeled is smaller than or equal to its minimum value.
+ If the information being modeled subsequently decreases
+ below (increases above) the maximum (minimum) value, the
+ gauge32 also decreases (increases).
+
+ In the value set and its semantics, this type is equivalent
+ to the Gauge32 type of the SMIv2.";
+ reference
+ "RFC 2578: Structure of Management Information Version 2
+ (SMIv2)";
+ }
+
+ typedef gauge64 {
+ type uint64;
+ description
+ "The gauge64 type represents a non-negative integer, which
+ may increase or decrease, but shall never exceed a maximum
+ value, nor fall below a minimum value. The maximum value
+ cannot be greater than 2^64-1 (18446744073709551615), and
+ the minimum value cannot be smaller than 0. The value of
+ a gauge64 has its maximum value whenever the information
+ being modeled is greater than or equal to its maximum
+ value, and has its minimum value whenever the information
+ being modeled is smaller than or equal to its minimum value.
+ If the information being modeled subsequently decreases
+ below (increases above) the maximum (minimum) value, the
+ gauge64 also decreases (increases).
+
+ In the value set and its semantics, this type is equivalent
+ to the CounterBasedGauge64 SMIv2 textual convention defined
+ in RFC 2856";
+ reference
+ "RFC 2856: Textual Conventions for Additional High Capacity
+ Data Types";
+ }
+
+ /*** collection of identifier-related types ***/
+
+ typedef object-identifier {
+ type string {
+ pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
+ + '(\.(0|([1-9]\d*)))*';
+ }
+ description
+ "The object-identifier type represents administratively
+ assigned names in a registration-hierarchical-name tree.
+
+ Values of this type are denoted as a sequence of numerical
+ non-negative sub-identifier values. Each sub-identifier
+ value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers
+ are separated by single dots and without any intermediate
+ whitespace.
+
+ The ASN.1 standard restricts the value space of the first
+ sub-identifier to 0, 1, or 2. Furthermore, the value space
+ of the second sub-identifier is restricted to the range
+ 0 to 39 if the first sub-identifier is 0 or 1. Finally,
+ the ASN.1 standard requires that an object identifier
+ has always at least two sub-identifiers. The pattern
+ captures these restrictions.
+
+ Although the number of sub-identifiers is not limited,
+ module designers should realize that there may be
+ implementations that stick with the SMIv2 limit of 128
+ sub-identifiers.
+
+ This type is a superset of the SMIv2 OBJECT IDENTIFIER type
+ since it is not restricted to 128 sub-identifiers. Hence,
+ this type SHOULD NOT be used to represent the SMIv2 OBJECT
+ IDENTIFIER type; the object-identifier-128 type SHOULD be
+ used instead.";
+ reference
+ "ISO9834-1: Information technology -- Open Systems
+ Interconnection -- Procedures for the operation of OSI
+ Registration Authorities: General procedures and top
+ arcs of the ASN.1 Object Identifier tree";
+ }
+
+ typedef object-identifier-128 {
+ type object-identifier {
+ pattern '\d*(\.\d*){1,127}';
+ }
+ description
+ "This type represents object-identifiers restricted to 128
+ sub-identifiers.
+
+ In the value set and its semantics, this type is equivalent
+ to the OBJECT IDENTIFIER type of the SMIv2.";
+ reference
+ "RFC 2578: Structure of Management Information Version 2
+ (SMIv2)";
+ }
+
+ typedef yang-identifier {
+ type string {
+ length "1..max";
+ pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
+ pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
+ }
+ description
+ "A YANG identifier string as defined by the 'identifier'
+ rule in Section 12 of RFC 6020. An identifier must
+ start with an alphabetic character or an underscore
+ followed by an arbitrary sequence of alphabetic or
+ numeric characters, underscores, hyphens, or dots.
+
+ A YANG identifier MUST NOT start with any possible
+ combination of the lowercase or uppercase character
+ sequence 'xml'.";
+ reference
+ "RFC 6020: YANG - A Data Modeling Language for the Network
+ Configuration Protocol (NETCONF)";
+ }
+
+ /*** collection of types related to date and time***/
+
+ typedef date-and-time {
+ type string {
+ pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
+ + '(Z|[\+\-]\d{2}:\d{2})';
+ }
+ description
+ "The date-and-time type is a profile of the ISO 8601
+ standard for representation of dates and times using the
+ Gregorian calendar. The profile is defined by the
+ date-time production in Section 5.6 of RFC 3339.
+
+ The date-and-time type is compatible with the dateTime XML
+ schema type with the following notable exceptions:
+
+ (a) The date-and-time type does not allow negative years.
+
+ (b) The date-and-time time-offset -00:00 indicates an unknown
+ time zone (see RFC 3339) while -00:00 and +00:00 and Z
+ all represent the same time zone in dateTime.
+
+ (c) The canonical format (see below) of data-and-time values
+ differs from the canonical format used by the dateTime XML
+ schema type, which requires all times to be in UTC using
+ the time-offset 'Z'.
+
+ This type is not equivalent to the DateAndTime textual
+ convention of the SMIv2 since RFC 3339 uses a different
+ separator between full-date and full-time and provides
+ higher resolution of time-secfrac.
+
+ The canonical format for date-and-time values with a known time
+ zone uses a numeric time zone offset that is calculated using
+ the device's configured known offset to UTC time. A change of
+ the device's offset to UTC time will cause date-and-time values
+ to change accordingly. Such changes might happen periodically
+ in case a server follows automatically daylight saving time
+ (DST) time zone offset changes. The canonical format for
+ date-and-time values with an unknown time zone (usually
+ referring to the notion of local time) uses the time-offset
+ -00:00.";
+ reference
+ "RFC 3339: Date and Time on the Internet: Timestamps
+ RFC 2579: Textual Conventions for SMIv2
+ XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+ }
+
+ typedef timeticks {
+ type uint32;
+ description
+ "The timeticks type represents a non-negative integer that
+ represents the time, modulo 2^32 (4294967296 decimal), in
+ hundredths of a second between two epochs. When a schema
+ node is defined that uses this type, the description of
+ the schema node identifies both of the reference epochs.
+
+ In the value set and its semantics, this type is equivalent
+ to the TimeTicks type of the SMIv2.";
+ reference
+ "RFC 2578: Structure of Management Information Version 2
+ (SMIv2)";
+ }
+
+ typedef timestamp {
+ type yang:timeticks;
+ description
+ "The timestamp type represents the value of an associated
+ timeticks schema node at which a specific occurrence
+ happened. The specific occurrence must be defined in the
+ description of any schema node defined using this type. When
+ the specific occurrence occurred prior to the last time the
+ associated timeticks attribute was zero, then the timestamp
+ value is zero. Note that this requires all timestamp values
+ to be reset to zero when the value of the associated timeticks
+ attribute reaches 497+ days and wraps around to zero.
+
+ The associated timeticks schema node must be specified
+ in the description of any schema node using this type.
+
+ In the value set and its semantics, this type is equivalent
+ to the TimeStamp textual convention of the SMIv2.";
+ reference
+ "RFC 2579: Textual Conventions for SMIv2";
+ }
+
+ /*** collection of generic address types ***/
+
+ typedef phys-address {
+ type string {
+ pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+ }
+
+
+
+
+ description
+ "Represents media- or physical-level addresses represented
+ as a sequence octets, each octet represented by two hexadecimal
+ numbers. Octets are separated by colons. The canonical
+ representation uses lowercase characters.
+
+ In the value set and its semantics, this type is equivalent
+ to the PhysAddress textual convention of the SMIv2.";
+ reference
+ "RFC 2579: Textual Conventions for SMIv2";
+ }
+
+ typedef mac-address {
+ type string {
+ pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
+ }
+ description
+ "The mac-address type represents an IEEE 802 MAC address.
+ The canonical representation uses lowercase characters.
+
+ In the value set and its semantics, this type is equivalent
+ to the MacAddress textual convention of the SMIv2.";
+ reference
+ "IEEE 802: IEEE Standard for Local and Metropolitan Area
+ Networks: Overview and Architecture
+ RFC 2579: Textual Conventions for SMIv2";
+ }
+
+ /*** collection of XML-specific types ***/
+
+ typedef xpath1.0 {
+ type string;
+ description
+ "This type represents an XPATH 1.0 expression.
+
+ When a schema node is defined that uses this type, the
+ description of the schema node MUST specify the XPath
+ context in which the XPath expression is evaluated.";
+ reference
+ "XPATH: XML Path Language (XPath) Version 1.0";
+ }
+
+ /*** collection of string types ***/
+
+ typedef hex-string {
+ type string {
+ pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+ }
+ description
+ "A hexadecimal string with octets represented as hex digits
+ separated by colons. The canonical representation uses
+ lowercase characters.";
+ }
+
+ typedef uuid {
+ type string {
+ pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
+ + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
+ }
+ description
+ "A Universally Unique IDentifier in the string representation
+ defined in RFC 4122. The canonical representation uses
+ lowercase characters.
+
+ The following is an example of a UUID in string representation:
+ f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+ ";
+ reference
+ "RFC 4122: A Universally Unique IDentifier (UUID) URN
+ Namespace";
+ }
+
+ typedef dotted-quad {
+ type string {
+ pattern
+ '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+ + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
+ }
+ description
+ "An unsigned 32-bit number expressed in the dotted-quad
+ notation, i.e., four octets written as decimal numbers
+ and separated with the '.' (full stop) character.";
+ }
+}
diff --git a/cps-service/src/test/resources/e2e/basic/ran-network2020-08-06.yang b/cps-service/src/test/resources/e2e/basic/ran-network2020-08-06.yang
new file mode 100755
index 0000000000..5065659307
--- /dev/null
+++ b/cps-service/src/test/resources/e2e/basic/ran-network2020-08-06.yang
@@ -0,0 +1,2157 @@
+module ran-network {
+ yang-version 1.1;
+ namespace "org:onap:ccsdk:features:sdnr:northbound:ran-network";
+ 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 managing
+ radio access network (RAN) managed network functions.
+ This YANG model is used solely for POC's in the ONAP and O-RAN communities
+
+ Copyright 2020 the O-RAN Alliance.
+
+ 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 2020-08-06 {
+ description
+ "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 AdministrativeState {
+ type enumeration {
+ enum LOCKED {
+ value 0;
+ description
+ "The resource is administratively prohibited from performing
+ services for its users.";
+ }
+ enum UNLOCKED {
+ value 1;
+ description
+ "The resource is administratively permitted to perform
+ services for its users. This is independent of its inherent
+ operability.";
+ }
+ enum SHUTTINGDOWN {
+ value 2;
+ description
+ "Use of the resource is administratively permitted to
+ existing instances of use only. While the system remains in
+ the shutting down state the manager or the managed element
+ may at any time cause the resource to transition to the
+ locked state.";
+ }
+ }
+ 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 SAP {
+ description
+ "Service access point.";
+ reference
+ "TS 28.622";
+ leaf host {
+ type inet:host;
+ mandatory true;
+ description
+ "TODO";
+ }
+ leaf port {
+ type inet:port-number;
+ mandatory true;
+ description
+ "TODO";
+ }
+ }
+
+ 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 near-rt-ric-url {
+ type inet:uri;
+ description
+ "URL for the near RT RIC. String representing IP addr:port";
+ }
+ 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";
+ }
+ leaf trackingArea {
+ type string;
+ description "Identifies the Tracking area controlled by the NearRTRIC";
+ }
+
+ leaf-list managedBy {
+ type DistinguishedName;
+ config false;
+ description
+ "Relates to the role played by ManagementSystem";
+ }
+
+ leaf-list rANNFNSSIList{
+ type string;
+ config true;
+ description "Identifies the list of RAN NF NSSIs that are served by the NearRTRIC";
+ }
+
+ 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 sliceProfilesList{
+ uses SliceProfile;
+ key "sliceProfileId";
+ description "List of slice profiles supported by the ran slice";
+ }
+ 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.";
+ }
+
+ } // 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 SliceProfile{
+ leaf sliceProfileId{
+ type string;
+ mandatory true;
+ description "slice profile id";
+ }
+ leaf sNSSAI{
+ type SNssai;
+ mandatory false;
+ description "The S-NSSAI may include both the SST and SD fields (in which case the S-NSSAI length is 32 bits in total), or the S-NSSAI may just include the SST field (in which case the S-NSSAI length is 8 bits only)";
+ }
+ leaf maxNumberofUEs{
+ type int64 { range "0..68719476735"; }
+ mandatory false;
+ description "maximum number of UEs";
+ }
+ leaf latency{
+ type int64 { range "0..68719476735"; }
+ mandatory false;
+ description "latency of the slice requested by the operator";
+ }
+ leaf uLThptPerSlice{
+ type int64 { range "0..68719476735"; }
+ mandatory false;
+ description "uplink throughput of the slice requested by the operator";
+ }
+ leaf dLThptPerSlice{
+ type int64 { range "0..68719476735"; }
+ mandatory false;
+ description "downlink throughput of the slice requested by the operator";
+ }
+ leaf maxNumberofConns{
+ type int64 { range "0..68719476735"; }
+ mandatory false;
+ description "maximum number of connections to be served by the slice";
+ }
+ leaf uEMobilityLevel{
+ type string;
+ mandatory false;
+ description "Mobility level of the UE";
+ }
+ leaf-list coverageAreaList{
+ type string;
+ config true;
+ description "Identifies the list of coverage areas to be served by the slice";
+ }
+ leaf resourceSharingLevel{
+ type string;
+ description "Resource sharing level";
+ }
+ }
+
+
+
+
+
+
+ grouping GNBDUFunctionGroup {
+ description
+ "Represents the GNBDUFunction IOC.";
+ reference
+ "3GPP TS 28.541";
+ leaf gNBDUFunction-url {
+ type inet:uri;
+ description
+ "URL for the GNBDUFunction. String representing IP addr:port";
+ }
+
+ 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";
+ }
+ leaf aggressorSetID {
+ type uint32 {
+ range "0..4194304";
+ }
+ config false;
+ description
+ "Indicates the associated aggressor gNB Set ID of the cell
+ Valid when Remote Interference Management function is supported.";
+ reference
+ "3GPP TS 38.211 subclause 7.4.1.6";
+ }
+ leaf victimSetID {
+ type uint32 {
+ range "0..4194304";
+ }
+ config false;
+ description
+ "Indicates the associated victim gNB Set ID of the cell
+ Valid when Remote Interference Management function is supported.";
+ reference
+ "3GPP TS 38.211 subclause 7.4.1.6";
+ }
+ 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";
+ leaf nRCellDU-url {
+ type inet:uri;
+ description
+ "URL for the NR Cell DU. String representing IP addr:port";
+ }
+ 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";
+ }
+ leaf operationalState {
+ type OperationalState;
+ config false;
+ description
+ "Operational state of the NRCellDU instance. Indicates
+ whether the resource is installed and partially or fully operable
+ (ENABLED) or the resource is not installed or not operable
+ (DISABLED).";
+ }
+ leaf administrativeState {
+ type AdministrativeState;
+ default "LOCKED";
+ description
+ "Administrative state of the NRCellDU. Indicates the
+ permission to use or prohibition against using the cell, imposed
+ through the OAM services.";
+ }
+ leaf cellState {
+ type CellState;
+ config false;
+ description
+ "Cell state of the NRCellDU instance. Indicates whether the
+ cell is not currently in use (IDLE), or currently in use but not
+ configured to carry traffic (INACTIVE), or currently in use and is
+ configured to carry traffic (ACTIVE).";
+ }
+ 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";
+ }
+ leaf arfcnDL {
+ type int32;
+ mandatory false;
+ description
+ "NR Absolute Radio Frequency Channel Number (NR-ARFCN) for
+ downlink.";
+ reference
+ "3GPP TS 38.104";
+ }
+ leaf arfcnUL {
+ type int32;
+ description
+ "NR Absolute Radio Frequency Channel Number (NR-ARFCN) for
+ uplink.";
+ reference
+ "3GPP TS 38.104";
+ }
+ leaf arfcnSUL {
+ type int32;
+ description
+ "NR Absolute Radio Frequency Channel Number (NR-ARFCN) for
+ supplementary uplink.";
+ reference
+ "3GPP TS 38.104";
+ }
+ leaf bSChannelBwDL {
+ type int32;
+ units "MHz";
+ description
+ "Base station channel bandwidth for downlink.";
+ reference
+ "3GPP TS 38.104";
+ }
+ leaf bSChannelBwUL {
+ type int32;
+ units "MHz";
+ description
+ "Base station channel bandwidth for uplink.";
+ reference
+ "3GPP TS 38.104";
+ }
+ leaf bSChannelBwSUL {
+ type int32;
+ units "MHz";
+ description
+ "Base station channel bandwidth for supplementary uplink.";
+ reference
+ "3GPP TS 38.104";
+ }
+ leaf ssbFrequency {
+ type int32 {
+ range "0..3279165";
+ }
+ mandatory false;
+ description
+ "Indicates cell defining SSB frequency domain position.
+ Frequency (in terms of NR-ARFCN) of the cell defining SSB transmission.
+ The frequency identifies the position of resource element RE=#0
+ (subcarrier #0) of resource block RB#10 of the SS block. The frequency
+ must be positioned on the NR global frequency raster, as defined in
+ 3GPP TS 38.101, and within bSChannelBwDL.";
+ }
+ leaf ssbPeriodicity {
+ type int32 {
+ range "5 | 10 | 20 | 40 | 80 | 160";
+ }
+ units "subframes (ms)";
+ mandatory false;
+ description
+ "Indicates cell defined SSB periodicity. The SSB periodicity
+ is used for the rate matching purpose.";
+ }
+ leaf ssbSubCarrierSpacing {
+ type int32 {
+ range "15 | 30 | 120 | 240";
+ }
+ units "kHz";
+ mandatory false;
+ description
+ "Subcarrier spacing of SSB. Only the values 15 kHz or 30 kHz
+ (< 6 GHz), 120 kHz or 240 kHz (> 6 GHz) are applicable.";
+ reference
+ "3GPP TS 38.211";
+ }
+ leaf ssbOffset {
+ type int32 {
+ range "0..159";
+ }
+ units "subframes (ms)";
+ mandatory false;
+ description
+ "Indicates cell defining SSB time domain position. Defined
+ as the offset of the measurement window, in which to receive SS/PBCH
+ blocks, where allowed values depend on the ssbPeriodicity
+ (ssbOffset < ssbPeriodicity).";
+ }
+ leaf ssbDuration {
+ type int32 {
+ range "1..5";
+ }
+ units "subframes (ms)";
+ mandatory false;
+ description
+ "Duration of the measurement window in which to receive
+ SS/PBCH blocks.";
+ reference
+ "3GPP TS 38.213";
+ }
+ leaf-list nRSectorCarrierRef {
+ type DistinguishedName;
+ min-elements 1;
+ description
+ "Reference to corresponding NRSectorCarrier instance.";
+ }
+ leaf-list bWPRef {
+ type DistinguishedName;
+ // min-elements 0;
+ description
+ "Reference to corresponding BWP instance.";
+ }
+ leaf-list nRFrequencyRef {
+ type DistinguishedName;
+ // min-elements 0;
+ description
+ "Reference to corresponding NRFrequency instance.";
+ }
+ } // 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";
+ leaf gNBCUUPFunction-url {
+ type inet:uri;
+ description
+ "URL for GNBCUUPFunction. String representing IP addr:port";
+ }
+ 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 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";
+ }
+ 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";
+ leaf gNBCUCPFunction-url {
+ type inet:uri;
+ description
+ "URL for GNBCUCPFunction. String representing IP addr:port";
+ }
+ 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;
+ }
+ leaf-list x2BlackList {
+ type DistinguishedName;
+ description
+ "List of nodes to which X2 connections are prohibited.";
+ }
+ leaf-list x2WhiteList {
+ type DistinguishedName;
+ description
+ "List of nodes to which X2 connections are enforced.";
+ }
+ leaf-list xnBlackList {
+ type DistinguishedName;
+ description
+ "List of nodes to which Xn connections are prohibited.";
+ }
+ leaf-list xnWhiteList {
+ type DistinguishedName;
+ description
+ "List of nodes to which X2 connections are enforced.";
+ }
+ leaf-list x2XnHOBlackList {
+ type DistinguishedName;
+ description
+ "List of nodes to which handovers over X2 or Xn are prohibited.";
+ }
+ } // grouping
+
+ grouping NRCellCUGroup {
+ description
+ "Represents the NRCellCU IOC.";
+ reference
+ "3GPP TS 28.541";
+ leaf nRCellCU-url {
+ type inet:uri;
+ description
+ "URL for NRCellCU. String representing IP addr:port";
+ }
+ 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.
+ }
+ leaf nRFrequencyRef {
+ type DistinguishedName;
+ config false;
+ description
+ "Reference to corresponding NRFrequency instance.";
+ }
+ 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).";
+ }
+ container cellIndividualOffset {
+ description
+ "A set of offset values for the neighbour cell. Used when
+ UE is in connected mode. Defined for rsrpOffsetSSB, rsrqOffsetSSB,
+ sinrOffsetSSB, rsrpOffsetCSI-RS, rsrqOffsetCSI-RS and
+ sinrOffsetCSI-RS.";
+ reference
+ "cellIndividualOffset in MeasObjectNR in 3GPP TS 38.331";
+ leaf rsrpOffsetSsb {
+ type QOffsetRange;
+ default "0";
+ description
+ "Offset value of rsrpOffsetSSB.";
+ }
+ leaf rsrqOffsetSsb {
+ type QOffsetRange;
+ default "0";
+ description
+ "Offset value of rsrqOffsetSSB.";
+ }
+ leaf sinrOffsetSsb {
+ type QOffsetRange;
+ default "0";
+ description
+ "Offset value of sinrOffsetSSB.";
+ }
+ leaf rsrpOffsetCsiRs {
+ type QOffsetRange;
+ default "0";
+ description
+ "Offset value of rsrpOffsetCSI-RS.";
+ }
+ leaf rsrqOffsetCsiRs {
+ type QOffsetRange;
+ default "0";
+ description
+ "Offset value of rsrqOffsetCSI-RS.";
+ }
+ leaf sinrOffsetCsiRs {
+ type QOffsetRange;
+ default "0";
+ description
+ "Offset value of sinrOffsetCSI-RS.";
+ }
+ }
+ leaf nRFreqRelationRef {
+ type DistinguishedName;
+ mandatory false;
+ description
+ "Reference to a corresponding NRFreqRelation instance.";
+ }
+ leaf adjacentNRCellRef {
+ type DistinguishedName;
+ mandatory false;
+ description
+ "Reference to an adjacent NR cell (NRCellCU or
+ ExternalNRCellCU).";
+ }
+ leaf isRemoveAllowed {
+ type boolean;
+ default "true";
+ description
+ "True if the ANR function in the node is allowed to remove this relation.";
+ }
+ leaf isHOAllowed {
+ type boolean;
+ default "true";
+ description
+ "True if handovers are allowed over this relation.";
+ }
+ } // grouping
+
+ grouping NRFreqRelationGroup {
+ description
+ "Represents the NRFreqRelation IOC.";
+ reference
+ "3GPP TS 28.541";
+ container offsetMO {
+ description
+ "A set of offset values applicable to all measured cells
+ with reference signal(s) indicated in corresponding MeasObjectNR. It
+ is used to indicate a cell, beam or measurement object specific offset
+ to be applied when evaluating candidates for cell re-selection or when
+ evaluating triggering conditions for measurement reporting. It is
+ defined for rsrpOffsetSSB, rsrqOffsetSSB, sinrOffsetSSB,
+ rsrpOffsetCSI-RS, rsrqOffsetCSI-RS and sinrOffsetCSI-RS.";
+ reference
+ "offsetMO in MeasObjectNR in 3GPP TS 38.331";
+ leaf rsrpOffsetSsb {
+ type QOffsetRange;
+ default "0";
+ description
+ "Offset value of rsrpOffsetSSB.";
+ }
+ leaf rsrqOffsetSsb {
+ type QOffsetRange;
+ default "0";
+ description
+ "Offset value of rsrqOffsetSSB.";
+ }
+ leaf sinrOffsetSsb {
+ type QOffsetRange;
+ default "0";
+ description
+ "Offset value of sinrOffsetSSB.";
+ }
+ leaf rsrpOffsetCsiRs {
+ type QOffsetRange;
+ default "0";
+ description
+ "Offset value of rsrpOffsetCSI-RS.";
+ }
+ leaf rsrqOffsetCsiRs {
+ type QOffsetRange;
+ default "0";
+ description
+ "Offset value of rsrqOffsetCSI-RS.";
+ }
+ leaf sinrOffsetCsiRs {
+ type QOffsetRange;
+ default "0";
+ description
+ "Offset value of sinrOffsetCSI-RS.";
+ }
+ }
+ leaf-list blackListEntry {
+ type uint16 {
+ range "0..1007";
+ }
+ // min-elements 0;
+ description
+ "A list of Physical Cell Identities (PCIs) that are
+ blacklisted in NR measurements.";
+ reference
+ "3GPP TS 38.331";
+ }
+ leaf-list blackListEntryIdleMode {
+ type uint16 {
+ range "0..1007";
+ }
+ // min-elements 0;
+ description
+ "A list of Physical Cell Identities (PCIs) that are
+ blacklisted in SIB4 and SIB5.";
+ }
+ leaf cellReselectionPriority {
+ type uint32;
+ default "0";
+ description
+ "The absolute priority of the carrier frequency used by the
+ cell reselection procedure. Value 0 means lowest priority. The value
+ must not already used by other RAT, i.e. equal priorities between RATs
+ are not supported. The UE behaviour when no value is entered is
+ specified in subclause 5.2.4.1 of 3GPP TS 38.304.";
+ reference
+ "CellReselectionPriority in 3GPP TS 38.331, priority in
+ 3GPP TS 38.304";
+ }
+ leaf cellReselectionSubPriority {
+ type uint8 {
+ range "2 | 4 | 6 | 8";
+ }
+ units "0.1";
+ description
+ "Indicates a fractional value to be added to the value of
+ cellReselectionPriority to obtain the absolute priority of the
+ concerned carrier frequency for E-UTRA and NR.";
+ reference
+ "3GPP TS 38.331";
+ }
+ leaf pMax {
+ type int32 {
+ range "-30..33";
+ }
+ units "dBm";
+ // mandatory false;
+ description
+ "Used for calculation of the parameter Pcompensation
+ (defined in 3GPP TS 38.304), at cell reselection to a cell.";
+ reference
+ "PEMAX in 3GPP TS 38.101";
+ }
+ leaf qOffsetFreq {
+ type QOffsetRange;
+ default "0";
+ // mandatory false;
+ description
+ "The frequency specific offset applied when evaluating
+ candidates for cell reselection.";
+ }
+ leaf qQualMin {
+ type int32 {
+ range "-34..-3 | 0";
+ }
+ units "dB";
+ default "0";
+ description
+ "Indicates the minimum required quality level in the cell.
+ Value 0 means that it is not sent and UE applies in such case the
+ (default) value of negative infinity for Qqualmin. Sent in SIB3 or
+ SIB5.";
+ reference
+ "3GPP TS 38.304";
+ }
+ leaf qRxLevMin {
+ type int32 {
+ range "-140..-44";
+ }
+ units "dBm";
+ mandatory false;
+ description
+ "Indicates the required minimum received Reference Symbol
+ Received Power (RSRP) level in the NR frequency for cell reselection.
+ Broadcast in SIB3 or SIB5, depending on whether the related frequency
+ is intra- or inter-frequency. Resolution is 2.";
+ reference
+ "3GPP TS 38.304";
+ }
+ leaf threshXHighP {
+ type int32 {
+ range "0..62";
+ }
+ units "dB";
+ mandatory false;
+ description
+ "Specifies the Srxlev threshold used by the UE when
+ reselecting towards a higher priority RAT/frequency than the current
+ serving frequency. Each frequency of NR and E-UTRAN might have a
+ specific threshold. Resolution is 2.";
+ reference
+ "ThreshX, HighP in 3GPP TS 38.304";
+ }
+ leaf threshXHighQ {
+ type int32 {
+ range "0..31";
+ }
+ units "dB";
+ mandatory false;
+ description
+ "Specifies the Squal threshold used by the UE when
+ reselecting towards a higher priority RAT/frequency than the current
+ serving frequency. Each frequency of NR and E-UTRAN might have a
+ specific threshold.";
+ reference
+ "ThreshX, HighQ in 3GPP TS 38.304";
+ }
+ leaf threshXLowP {
+ type int32 {
+ range "0..62";
+ }
+ units "dB";
+ mandatory false;
+ description
+ "Specifies the Srxlev threshold used by the UE when
+ reselecting towards a lower priority RAT/frequency than the current
+ serving frequency. Each frequency of NR and E-UTRAN might have a
+ specific threshold. Resolution is 2.";
+ reference
+ "ThreshX, LowP in 3GPP TS 38.304";
+ }
+ leaf threshXLowQ {
+ type int32 {
+ range "0..31";
+ }
+ units "dB";
+ mandatory false;
+ description
+ "Specifies the Squal threshold used by the UE when
+ reselecting towards a lower priority RAT/frequency than the current
+ serving frequency. Each frequency of NR and E-UTRAN might have a
+ specific threshold.";
+ reference
+ "ThreshX, LowQ in 3GPP TS 38.304";
+ }
+ leaf tReselectionNR {
+ type int32 {
+ range "0..7";
+ }
+ units "s";
+ mandatory false;
+ description
+ "Cell reselection timer for NR.";
+ reference
+ "TreselectionRAT for NR in 3GPP TS 38.331";
+ }
+ leaf tReselectionNRSfHigh {
+ type uint8 {
+ range "25 | 50 | 75 | 100";
+ }
+ units "%";
+ mandatory false;
+ description
+ "The attribute tReselectionNr (parameter TreselectionNR in
+ 3GPP TS 38.304) is multiplied with this scaling factor if the UE is
+ in high mobility state.";
+ reference
+ "Speed dependent ScalingFactor for TreselectionNR for high
+ mobility state in 3GPP TS 38.304";
+ }
+ leaf tReselectionNRSfMedium {
+ type uint8 {
+ range "25 | 50 | 75 | 100";
+ }
+ units "%";
+ mandatory false;
+ description
+ "The attribute tReselectionNr (parameter TreselectionNR in
+ 3GPP TS 38.304) multiplied with this scaling factor if the UE is in
+ medium mobility state.";
+ reference
+ "Speed dependent ScalingFactor for TreselectionNR for medium
+ mobility state in 3GPP TS 38.304";
+ }
+ leaf nRFrequencyRef {
+ type DistinguishedName;
+ mandatory false;
+ description
+ "Reference to a corresponding NRFrequency instance.";
+ }
+ } // grouping
+
+ grouping ManagedNFServiceGroup {
+ description
+ "A ManagedNFService representing a Network Function (NF) service.";
+ reference
+ "Clause 7 of 3GPP TS 23.501.";
+ leaf userLabel {
+ type string;
+ description
+ "A user-friendly (and user assignable) name of this object.";
+ }
+ list sAP {
+ key "host port";
+ min-elements 1;
+ max-elements 1;
+ description
+ "The service access point of the managed NF service instance";
+ uses SAP;
+ }
+ } // grouping
+
+ // container for RAN Network
+
+ container ran-network {
+ description
+ "Represents telecommunications equipment or
+ TMN entities within the telecommunications network providing support
+ and/or service to the subscriber.";
+ 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;
+ uses ManagedNFServiceGroup;
+ }
+ 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;
+ uses ManagedNFServiceGroup;
+ }
+ } // list NRCellDU
+ } // list GNBDUFunction
+ list GNBCUUPFunction {
+ key "idGNBCUUPFunction";
+ description
+ "TODO";
+ leaf idGNBCUUPFunction {
+ type string;
+ description
+ "TODO";
+ }
+ container attributes {
+ description
+ "TODO";
+ uses GNBCUUPFunctionGroup;
+ uses ManagedNFServiceGroup;
+ }
+ } // 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;
+ uses ManagedNFServiceGroup;
+ }
+ 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;
+ uses ManagedNFServiceGroup;
+ }
+ 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;
+ uses ManagedNFServiceGroup;
+ }
+ } // 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";
+ }
+ container attributes {
+ description
+ "TODO";
+ uses NRFreqRelationGroup;
+ uses ManagedNFServiceGroup;
+ }
+ } // list NRFreqRelation
+ }
+ }
+ } // list ManagedElement
+ }
+}