aboutsummaryrefslogtreecommitdiffstats
path: root/packages
AgeCommit message (Collapse)AuthorFilesLines
2019-04-24Rebase image on policy-common-alpineDmitry Puzikov1-24/+12
Issue-ID: INT-1000 Change-Id: Ibd575b57c794a107d8fc890ffbe7303030984892 Signed-off-by: Dmitry Puzikov <dmitry.puzikov@tieto.com>
2019-04-16One year cert with new component namesjhh1-0/+0
Change-Id: I50afac9fc880d4dd5619093f917be8e55ee80fad Issue-ID: POLICY-1580 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-04-04Add lifecycle feature to install packagejhh1-85/+93
Change-Id: Ia9edd30131d4dde22c9d2559b4ad1428fdc13f89 Issue-ID: POLICY-1608 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-03-25Add MDC Topic FilteringDaniel Cruz1-0/+6
A feature to provide configurable properties for network topics to extrac fields from JSON strings and place them in a mapped diagnostic context. Issue-ID: POLICY-1499 Change-Id: Icfca0be3b263ccf1612b79ed617e2b1ffb0317e6 Signed-off-by: Daniel Cruz <dc443y@att.com>
2019-03-16Manually add NSS libraries to images.Jorge Hernandez2-2/+4
Alpine OpenJDK was updated 2 days ago (3/14), this upgrade seems to break java applications that depend on libnss*.so OS libraries, which seem are no longer installed with the jdk. Before: openjdk version "1.8.0_191" OpenJDK Runtime Environment (IcedTea 3.10.0) (Alpine 8.191.12-r0) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode ls /usr/lib/libnss* /usr/lib/libnss3.so /usr/lib/libnssckbi.so.41 /usr/lib/libnssdbm3.so.41 /usr/lib/libnss3.so.41 /usr/lib/libnssdbm3.chk /usr/lib/libnssutil3.so /usr/lib/libnssckbi.so /usr/lib/libnssdbm3.so /usr/lib/libnssutil3.so.41 Now: openjdk version "1.8.0_201" OpenJDK Runtime Environment (IcedTea 3.11.0) (Alpine 8.201.08-r0) OpenJDK 64-Bit Server VM (build 25.201-b08, mixed mode) > ls /usr/lib/libnss*" ls: cannot access '/usr/lib/libnss*': No such file or directory Change-Id: I371d1b3426ded294dba16d4217f6c9ce5a5acf04 Issue-ID: POLICY-1604 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-03-15Add alpine packages for better diagnosticsJorge Hernandez1-6/+9
Change-Id: I96e30e2ffb7dc35ffc1e377c1021ee871ab5a310 Issue-ID: POLICY-1560 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-03-10fixing problems related to move to Alpine base OSJorge Hernandez2-4/+6
Three problems are solved: (a) no amsterdam application comes up, (b) wait for mariadb not working, (c) timeout does not work (different syntax). Change-Id: Ib46312201e8be06816b1339e543711f293225ca1 Issue-ID: POLICY-1551 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-03-07Merge "Tweaking scripts to install for pdpd-cl image"Pamela Dragosh2-9/+25
2019-03-07Tweaking scripts to install for pdpd-cl imageJorge Hernandez2-9/+25
Change-Id: I5f7ab5de402a5412938f42ae76e21f112b106b3a Issue-ID: POLICY-1560 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-03-07Use Alpine as base docker image in drools-pdpHengye1-21/+8
Issue-ID: POLICY-1551 Change-Id: I565644e048c789c3c71546ae00c0beb84bb6358a Signed-off-by: Hengye <yehui.wang@est.tech>
2019-03-06Fix JAVA_HOME in docker imageJorge Hernandez1-0/+2
JAVA_HOME is known at image creation. Change-Id: I7274c47b5e890870d61949109ed2e1292a049eb9 Issue-ID: POLICY-1560 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-03-06pdp-d remove volume + install simplificationsJorge Hernandez3-41/+4
volume is unused and hides config dir when inherited from pdp-d-cl. small simplification in pdp-d install Change-Id: I50d343b8d289f2f883bc31a6c650584343d8cd97 Issue-ID: POLICY-1560 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-03-04Merge "Add Controller Logging Feature"Jorge Hernandez1-0/+6
2019-03-01Add Controller Logging FeatureDaniel Cruz1-0/+6
This features provides a mechanism to extend the logback.xml properties to add controller specific loggers. The controller's logger will log messages from topics that the controller listens to in a controller specific network log. The original network log is preserved and still logs every message from every controller. Note that the way a logger is associated with a controller is by having the logger name match the controller's name. Any configuration file that has "logback-include-" prepended and a ".xml" extension will be added to the logback.xml and logback-eelf.xml files as extensions to the base configuration. Issue-ID: POLICY-1427 Change-Id: Iaeb823421eadb7ee413b6b03ae3dfe862f230612 Signed-off-by: Daniel Cruz <dc443y@att.com>
2019-03-01move all hard install config to environment varsJorge Hernandez3-85/+72
+ support multiple system properties files with variable interpolation loaded at initialization + support of configurable JVM options (-X, etc ..). + rearrange aaf configuration to avoid {{}} installation variables and use dynamic enviroment variables. + miscellaneous clean up in areas touched and checkstyle. Change-Id: I71ad839778e17eb57c098a2c5cc2bf96e468669a Issue-ID: POLICY-1524 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-02-27Base POLICY-PDP-PAP channel configurationJorge Hernandez1-1/+7
With these changes the PDP should come up listening in the new PAP-PDP topic for messages, and configured to send. Change-Id: I395f87a7401aeb6385d640e51f75d71c0def36b0 Issue-ID: POLICY-1548 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-02-21Moving hard install config to environment varsJorge Hernandez1-3/+0
Change-Id: I01e0cf2e2399ec81337961e0a2b3a349c34f55c4 Issue-ID: POLICY-1517 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-02-14Decouple nexus reconfiguration from installationJorge Hernandez6-325/+336
This allows for nexus to be reconfigured dynamically. Change-Id: I103707ab7525ddb29663d7785739a34dff538605 Issue-ID: POLICY-1518 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-01-04Add tooling for drools policy developersJorge Hernandez6-95/+135
This commit adds tooling to better support development activities for drools developers. 1. deploy artifacts to nexus or to local file repository on demand. It also allows to test on a single drools instance without the dependency on a nexus repo. 2. make installation configuration files conform to same convention (all upper case). Change-Id: Ia0a2fc25db2ef21b774a9eee4ed51d4b876a1993 Issue-ID: POLICY-1367 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2018-12-17Merge "Environment variable pointing to logback.xml"Jorge Hernandez1-0/+2
2018-12-13Environment variable pointing to logback.xmlJorge Hernandez1-0/+2
Per current logging spec, the location is recommended to be under /etc/onap/<component>/subcomponent but is acceptable to have an enviroment variable pointing to it instead. Environment variable is preferred over fixed location so the config files are not all over the place, and is not placed under directories owned by root. Change-Id: Id5679f49a726fa43147ffb3e141acec30ebfdaaf Issue-ID: POLICY-1294 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2018-12-13Update to latest keystore from AAF toolingJorge Hernandez1-0/+0
It is generic with extended expiration, and support for policy-distribution and policy-apex-pdp components. Change-Id: I02157b063159ed6f8fc71f00cf0f890059b20c7b Issue-ID: POLICY-1377 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2018-10-31Set new master version for Dublinliamfallon4-15/+9
Issue-ID: POLICY-1232 Change-Id: I768c9f4e0e1411854fe6aadb52abbc616654127d Signed-off-by: liamfallon <liam.fallon@ericsson.com>
2018-10-24Fix refering to snapshot in policy/drools-pdp1.3.1ramverma4-4/+4
Issue-ID: POLICY-1213 Change-Id: I485c15044ba5cc0d3daceaf0876f543cc5c8af82 Signed-off-by: ramverma <ram.krishna.verma@ericsson.com>
2018-10-11Updated the keystore to include pdp wildcard1.3.0Jorge Hernandez1-0/+0
This allows to talk directly to OOM PDP-X pods without going through the service Change-Id: I9acd171f483c28473442afad80361be374bd4901 Issue-ID: POLICY-1198 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2018-10-09Regenerate policy keystoreJorge Hernandez1-0/+0
The keystore has been regenerated using the latest tooling from AAF. Previous versions seem to add a bogus " fqdn" which makes the the particular policy.api.simpledemo.onap.org entry invalid. The latest version does not append it. This change is done for consistency with policy/engine for which proper format of this entry is necessary to interact with CLAMP. Drools is never accessed with this identity, therefore the changes are complimentary and do not require release of new artifacts. Change-Id: Ibf6c2e7130dda247ac320f334765e04d369d6b20 Issue-ID: POLICY-1193 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-10-02Recreate latest keystoreJorge Hernandez1-0/+0
Some changes have been made since the first set of stores were generated from the cert manager tooling in the windriver test instance used for this purpose. Change-Id: Ic9a0b056fb2c4e8fb23a0c0e0462087b8b7125da Issue-ID: POLICY-1156 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-09-19AAF Configuration in PDP-DJorge Hernandez2-1/+24
AAF is disabled by default until pairwise testing is completed. Change-Id: Ica83873a2605742689ed0c2e06dfade20bef8bf0 Signed-off-by: Jorge Hernandez <jh1730@att.com> Issue-ID: POLICY-1043 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-08-30Merge "Set parent to policy/parent"Liam Fallon2-159/+163
2018-08-29Set parent to policy/parentPamela Dragosh2-159/+163
Set the parent to point to policy/parent instead of oparent. Clean up some duplicate management versions. Change-Id: I28957b05b80c9564ad32c958143822b6b0768219 Issue-ID: INT-619 Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
2018-08-28Fixed feature-healthcheck issueMichael Mokry1-1/+1
Modified properties to true for https on PAP and PDP Found a minor typo in do-start.sh that is benign currently but could cause an issue in the future so figured I would clean it up now. Change-Id: I06385d36d69955d49cabeb39b09d75ffeaec2fdc Issue-ID: POLICY-781 Signed-off-by: Michael Mokry <mm117s@att.com>
2018-08-20https certs with aaf+pdpd containers compatibilityJorge Hernandez6-5/+50
Updated license date (jrh3). Change-Id: I1bc244da64f4a1e683f8c6a1be53157474f46ee9 Issue-ID: POLICY-1026 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-06-05Update drools-pdp to SNAPSHOT-1.3.0liamfallon4-4/+4
Snapshot updated for Casablanca. Change-Id: I75c0a41ce2c1a56ab658be8bfd27a5c81977f990 Issue-ID: POLICY-875 Signed-off-by: liamfallon <liam.fallon@ericsson.com>
2018-05-21Update Policy Drools PDP to 1.2.3-SNAPSHOTliamfallon4-4/+4
These reviews must be merged in order because of layering. This review should be merged SECOND. Change-Id: I3d3fb84622686b23d435aaf0cd43d307684a4a1f Issue-ID: POLICY-844 Signed-off-by: liamfallon <liam.fallon@ericsson.com>
2018-05-16Upgrade SNAPSHOT to 1.2.2liamfallon4-4/+4
These reviews must be merged in order because of layering. This review should be merged THIRD Change-Id: Icdb5c18106ade60bbc1eea67a1b42e70ac5383e5 Issue-ID: POLICY-798 Signed-off-by: liamfallon <liam.fallon@ericsson.com>
2018-05-09Change pooling property namev1.2.1Jim Hahn1-0/+20
Removed "AMSTERDAM_" prefix from pooling topic property name. Added feature-specific conf file with pooling topic property. Enabled distributed locking DB properties. Change distributed locking DB name to "pooling" to match the code. Add default value to feature-specific conf file. Change "_" in default topic name to "-". Change-Id: I53de51787694e5920dc9ced07b5a9ac60bb63e45 Issue-ID: POLICY-782 Signed-off-by: Jim Hahn <jrh3@att.com>
2018-04-30Make custom preinstallation available in imageJorge Hernandez2-10/+12
This script could be used by OOM installation to trigger the installation of a drools application or other purposes (ie. control loop) Change-Id: Iafdb413ee85aa341351481584e8c967cc1a3c112 Issue-ID: POLICY-566 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-04-26Merge "cook policy-keystore into drools image"Pamela Dragosh3-5/+20
2018-04-25cook policy-keystore into drools imageJorge Hernandez3-5/+20
OOM team reported issues with ONAP installation in terms of config map sizes. After discussion with OOM team, one solution is to cook it in the docker image itself. This will solve the size issue on the OOM side. Change-Id: I6848370f119cabdae450a1153a88ebd8c0f6b392 Issue-ID: POLICY-747 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-04-24Add locking and pooling to installation packageJim Hahn1-0/+12
Added feature-distributed-locking and feature-pooling-dmaap as dependencies to the packages/install pom. Change-Id: I2275ebcf93648ccdbf24355201bad9399e4143b1 Issue-ID: POLICY-760 Signed-off-by: Jim Hahn <jrh3@att.com>
2018-04-19Upgrade 1.2.1 SNAPSHOT packagesPamela Dragosh4-4/+4
These were missed in the initial review https://gerrit.onap.org/r/#/c/42783/ Issue-ID: POLICY-736 Change-Id: I63cc42f4cea4674e7f542bfeab262b1cd0c311fb Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
2018-04-16strip timestamped versions in feature installsJorge Hernandez1-1/+1
This is to satisfy CSIT tests that contains a mix of SNAPSHOT and timestamped versions while running tests Change-Id: I1fe426dcca9250d0fe2c9c5264f1acb1ffbde57b Issue-ID: POLICY-745 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-04-16Add missing licensesPamela Dragosh6-0/+101
Adding missing licenses to files that should not harm compilation, JUnit tests and instantiation. Issue-ID: POLICY-741 Change-Id: I3075e3493676ee28693323f978c0b5b210b20a34 Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
2018-04-05Optionally load available applicationsv1.2.0Jorge Hernandez3-24/+10
During container instantiation, it will check for available applications to preload, ie. control loop or any other ones. It will install them if available or start with no applications loaded otherwise. Change-Id: I6908d279cbe34e04bcabf830ed30480ba147598f Issue-ID: POLICY-735 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-04-02Companion changes to apps startup improvementsJorge Hernandez3-12/+9
see https://gerrit.onap.org/r/40577 for reference Change-Id: I76eb0d791a012d1ad2046ef27ec9f8b181cf3cb3 Issue-ID: POLICY-534 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-03-28persit controller configuration upon restartsJorge Hernandez3-34/+51
case of drools containers restarts or pulling new images. Change-Id: I30747a605bf1cb5ae351cd1359263728d82afcca Issue-ID: POLICY-575 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-03-26l2 management maturity pdp-dJorge Hernandez3-3/+12
configurable log location metric/audit log for transaction metrics conforming to new field definition. support metrics/audits records with custom logback filters so they are not intrusive with developer log testing. Change-Id: I7a4dcc6790b85539e613ad8705e731e7298ce106 Issue-ID: POLICY-533 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-03-09Merge "configurable logs dir and creation as root"Pamela Dragosh1-2/+4
2018-03-08configurable logs dir and creation as rootJorge Hernandez1-2/+4
Change-Id: Ib23ee897372f0911394441739da5c7b9e7398910 Issue-ID: POLICY-554 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-03-08Remove filtering from packages/docker/pommmis1-1/+0
Filtering should not be applied in the maven-resources-plugin execution as this incorecttly modifes the scripts copied by this plugin Issue-ID: POLICY-652 Change-Id: I57595711c4a6f4522d679016370012e0dc8833d6 Signed-off-by: mmis <michael.morris@ericsson.com>
a> 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158
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 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";
    }
    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
  }
}