From eea5bb7c99cd4d2aa4d5e49f314db192445e6145 Mon Sep 17 00:00:00 2001
From: armingol <pablo.armingolrobles@telefonica.com>
Date: Fri, 26 Jul 2024 08:42:10 +0200
Subject: [PATCH 01/14] First version

---
 nbi.json                                      | 4837 +++++++++++++++++
 .../ietf_network_new/NameMapping.py           |   46 +
 .../ietf_network_new/NetworkTypeEnum.py       |   23 +
 .../nbi_plugins/ietf_network_new/Networks.py  |   69 +
 .../ietf_network_new/YangHandler.py           |  195 +
 .../nbi_plugins/ietf_network_new/__init__.py  |   42 +
 .../yang/iana-routing-types@2017-12-04.yang   |  473 ++
 .../yang/ietf-eth-te-topology@2023-09-28.yang | 2275 ++++++++
 .../ietf-eth-tran-service@2023-10-23.yang     | 1004 ++++
 .../yang/ietf-eth-tran-types@2023-10-23.yang  |  457 ++
 .../yang/ietf-inet-types@2013-07-15.yang      |  459 ++
 .../yang/ietf-layer1-types@2022-10-14.yang    | 1414 +++++
 .../ietf-network-topology@2018-02-26.yang     |  294 +
 .../yang/ietf-network@2018-02-26.yang         |  193 +
 .../yang/ietf-otn-topology@2023-07-06.yang    | 2405 ++++++++
 .../yang/ietf-routing-types@2017-12-04.yang   |  774 +++
 .../yang/ietf-te-packet-types@2020-06-10.yang |  475 ++
 .../yang/ietf-te-topology@2020-08-06.yang     | 1952 +++++++
 .../yang/ietf-te-types@2020-06-10.yang        | 3379 ++++++++++++
 .../ietf-trans-client-service@2023-10-23.yang |  325 ++
 ...etf-trans-client-svc-types@2023-10-23.yang |   63 +
 .../yang/ietf-yang-types@2013-07-15.yang      |  475 ++
 22 files changed, 21629 insertions(+)
 create mode 100644 nbi.json
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NameMapping.py
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NetworkTypeEnum.py
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/__init__.py
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/iana-routing-types@2017-12-04.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-te-topology@2023-09-28.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-service@2023-10-23.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-types@2023-10-23.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-inet-types@2013-07-15.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-layer1-types@2022-10-14.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network-topology@2018-02-26.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network@2018-02-26.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-otn-topology@2023-07-06.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-routing-types@2017-12-04.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-packet-types@2020-06-10.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-topology@2020-08-06.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-types@2020-06-10.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-service@2023-10-23.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-svc-types@2023-10-23.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-yang-types@2013-07-15.yang

diff --git a/nbi.json b/nbi.json
new file mode 100644
index 000000000..ffd7a849a
--- /dev/null
+++ b/nbi.json
@@ -0,0 +1,4837 @@
+[
+  {
+    "ietf-network-hardware-inventory:network-hardware-inventory": {
+      "network-elements": {
+        "network-element": [
+          {
+            "components": {
+              "component": [
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "08b718c1-5523-5c70-8699-9e7cc11ac171"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/10",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 2
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 10,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/10"
+                  ],
+                  "uuid": "00778c55-e1f1-5801-b9b7-25815c65cb1b"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "cb6fb97c-fe8f-528f-b34e-c7c9ee52e485"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/17",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 3
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 17,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/17"
+                  ],
+                  "uuid": "01310680-37b7-58bf-914a-1ba4583a16c2"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "6ba73403-f894-5781-8a83-a906649b26be"
+                  ],
+                  "description": "\"100G/40G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/1",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 4
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 1,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/1"
+                  ],
+                  "uuid": "01b7daf5-f25e-51da-96b8-d14f7249f6b4"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#10",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 5,
+                        "uuid": "00778c55-e1f1-5801-b9b7-25815c65cb1b"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 10,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#10"
+                  ],
+                  "uuid": "08b718c1-5523-5c70-8699-9e7cc11ac171"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "fb5d6c6d-edf2-5d17-b39f-62a889797be3"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/8",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 6
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 8,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/8"
+                  ],
+                  "uuid": "14c2bb4e-7d9c-5e32-a53a-0bbbdcd720c3"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#14",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 7,
+                        "uuid": "cce67881-0cf8-5778-83fc-099e4dddfa50"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 14,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#14"
+                  ],
+                  "uuid": "15411cf7-182d-5dbe-89e7-260d95798ec7"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "da6e0382-5ca3-5f23-8ae6-1c8ccc897c65"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/24",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 8
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 24,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/24"
+                  ],
+                  "uuid": "1574d8e0-900f-5047-87f6-dc1f09883836"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "72f4bcf3-d7c7-59e8-80c6-a8cd2971f17d"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/13",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 9
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 13,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/13"
+                  ],
+                  "uuid": "1b97500c-f4d6-57fc-b8dd-259c150aa33d"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#25",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 10,
+                        "uuid": "2057d491-54e2-52f3-be89-7e8453af1956"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 25,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#25"
+                  ],
+                  "uuid": "1c8e6596-1eb7-517e-8324-c74875efb9cc"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "1c8e6596-1eb7-517e-8324-c74875efb9cc"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/25",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 11
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 25,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/25"
+                  ],
+                  "uuid": "2057d491-54e2-52f3-be89-7e8453af1956"
+                },
+                {
+                  "class": "iana-hardware:power-supply",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Power-Supply#2",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 12,
+                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 2,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Power-Supply#2"
+                  ],
+                  "uuid": "211c3af7-d69a-5c23-b911-2dc522afbf1d"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "39498531-80a9-5660-9018-04e215ffe618"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/20",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 13
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 20,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/20"
+                  ],
+                  "uuid": "21cbcc2b-4750-5476-8df6-2ba67470b336"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#1",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 14,
+                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 1,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#1"
+                  ],
+                  "uuid": "22de51e1-0a09-59b3-864e-8fd379931bb6"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "ecf4c207-e36b-52cb-a34a-2cecc4030d25"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/15",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 15
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 15,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/15"
+                  ],
+                  "uuid": "24639859-aa84-532a-ac92-d7fc91db0a22"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "b49ce3de-b5f9-5f02-b2f6-aa9e0c4ab9c0"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/18",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 16
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 18,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/18"
+                  ],
+                  "uuid": "2815040e-3a39-545e-9799-4f223014dbfc"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "6fe099f7-0b6d-5fdb-bdf5-72046ec4c6b4"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/11",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 17
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 11,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/11"
+                  ],
+                  "uuid": "2cc805ae-4959-5c53-8d21-98314a61bdfb"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#2",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 18,
+                        "uuid": "d0757c2c-8d4b-57aa-8f17-c5fab40551d4"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 2,
+                  "serial-num": "\"FA70191603686\"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#2"
+                  ],
+                  "uuid": "323bb3fe-391d-5cc2-8cf0-0b99ec874045"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#20",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 19,
+                        "uuid": "21cbcc2b-4750-5476-8df6-2ba67470b336"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 20,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#20"
+                  ],
+                  "uuid": "39498531-80a9-5660-9018-04e215ffe618"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "a40ba96e-db02-502f-b8e7-c4ce60e6a681"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/4",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 20
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 4,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/4"
+                  ],
+                  "uuid": "3b8c5d33-58ab-5403-80fa-395bbf8e91a0"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#30",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 21,
+                        "uuid": "58ea7baa-3ac1-5501-9fdf-a1310881fe83"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 30,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#30"
+                  ],
+                  "uuid": "400555ff-395a-54c0-a8e6-6702c0505dbe"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "49a31219-0e33-5d0f-a45a-3bf285f9e2fd"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/9",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 22
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 9,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/9"
+                  ],
+                  "uuid": "43455150-4a95-58d8-bf84-d0e83095431b"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#9",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 23,
+                        "uuid": "43455150-4a95-58d8-bf84-d0e83095431b"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 9,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#9"
+                  ],
+                  "uuid": "49a31219-0e33-5d0f-a45a-3bf285f9e2fd"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#26",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 24,
+                        "uuid": "6e5b78c9-869a-5fbe-90b2-0cd287b2e4be"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 26,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#26"
+                  ],
+                  "uuid": "4c860a8b-e262-5d27-8f98-0b0be6562a4d"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#5",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 25,
+                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 5,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#5"
+                  ],
+                  "uuid": "52aaa9ea-61f7-5052-b988-2fac4afe4172"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "d7d2e358-3203-5e6b-a23b-eecc4f866fa9"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/22",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 26
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 22,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/22"
+                  ],
+                  "uuid": "54a2e18e-edfc-5b65-a5c3-20c7bd7e3593"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "c9a857e4-736c-54a1-abe8-bd5768f556b4"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/6",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 27
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 6,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/6"
+                  ],
+                  "uuid": "55937b2f-19d0-52e6-ac51-3ca68d5ba047"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "400555ff-395a-54c0-a8e6-6702c0505dbe"
+                  ],
+                  "description": "\"1G Copper\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/30",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 28
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 30,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/30"
+                  ],
+                  "uuid": "58ea7baa-3ac1-5501-9fdf-a1310881fe83"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#1",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 29,
+                        "uuid": "01b7daf5-f25e-51da-96b8-d14f7249f6b4"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 1,
+                  "serial-num": "\"IWKBW7180045   \"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#1"
+                  ],
+                  "uuid": "6ba73403-f894-5781-8a83-a906649b26be"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "4c860a8b-e262-5d27-8f98-0b0be6562a4d"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/26",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 30
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 26,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/26"
+                  ],
+                  "uuid": "6e5b78c9-869a-5fbe-90b2-0cd287b2e4be"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#11",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 31,
+                        "uuid": "2cc805ae-4959-5c53-8d21-98314a61bdfb"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 11,
+                  "serial-num": "\"ACW1747006N4   \"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#11"
+                  ],
+                  "uuid": "6fe099f7-0b6d-5fdb-bdf5-72046ec4c6b4"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#13",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 32,
+                        "uuid": "1b97500c-f4d6-57fc-b8dd-259c150aa33d"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 13,
+                  "serial-num": "\"AD1331A02S9    \"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#13"
+                  ],
+                  "uuid": "72f4bcf3-d7c7-59e8-80c6-a8cd2971f17d"
+                },
+                {
+                  "class": "iana-hardware:power-supply",
+                  "description": "\"CRXT-T0T12B\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"CRXT-T0T12B\"",
+                  "name": "Power-Supply#1",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 33,
+                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 1,
+                  "serial-num": "\"21030005\"",
+                  "software-rev": "",
+                  "uri": [
+                    "Power-Supply#1"
+                  ],
+                  "uuid": "7905b083-401b-5685-8ec2-ad2ba21f716b"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "ca78897e-e256-5a57-91e8-792e92280c30"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/23",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 34
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 23,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/23"
+                  ],
+                  "uuid": "7dbf69ba-707e-54b6-98fc-f907f40234b4"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#16",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 35,
+                        "uuid": "d6e15727-40bd-51f6-a7c4-7356358a60b6"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 16,
+                  "serial-num": "\"CN04HG00184001E\"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#16"
+                  ],
+                  "uuid": "7f5c81bf-e019-58d4-96a3-9fbb9edc22f8"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "e43d275a-e710-5a00-b1c9-6b964f4214f2"
+                  ],
+                  "description": "\"1G Copper\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/29",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 36
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 29,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/29"
+                  ],
+                  "uuid": "8ae15e57-f162-567c-a619-df5b548c0902"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#27",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 37,
+                        "uuid": "df37f614-ec9f-5181-8c41-c322f31586ea"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 27,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#27"
+                  ],
+                  "uuid": "8e3677d0-42a7-5942-9b09-e86657cbcd41"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#12",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 38,
+                        "uuid": "ffb8587d-ddb3-5eec-ba78-bb5be047def2"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 12,
+                  "serial-num": "\"F162250012     \"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#12"
+                  ],
+                  "uuid": "9b42bf35-e457-5303-b765-523009f7a5a4"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "fe86ab62-509d-513a-b378-2bc18a794542"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/21",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 39
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 21,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/21"
+                  ],
+                  "uuid": "9beab43b-9bb4-5672-adc3-f6329e4ba827"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "aae72351-d863-5c58-b76b-bba4b2075ef9"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/19",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 40
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 19,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/19"
+                  ],
+                  "uuid": "a3154e0c-8fb7-5cda-b245-4be61a10b220"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#4",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 41,
+                        "uuid": "3b8c5d33-58ab-5403-80fa-395bbf8e91a0"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 4,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#4"
+                  ],
+                  "uuid": "a40ba96e-db02-502f-b8e7-c4ce60e6a681"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "ad294931-6af3-51dd-a869-77b0737e8d2c"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/5",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 42
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 5,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/5"
+                  ],
+                  "uuid": "a4cfdc29-bcaa-57ec-8c83-126e0e77c2ec"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "de36dafb-2d66-54ef-9351-54ee4a1b0f9b"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/3",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 43
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 3,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/3"
+                  ],
+                  "uuid": "a9e9c4ec-265a-5039-848c-2ebf578855f3"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#19",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 44,
+                        "uuid": "a3154e0c-8fb7-5cda-b245-4be61a10b220"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 19,
+                  "serial-num": "\"AD0911A00C2    \"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#19"
+                  ],
+                  "uuid": "aae72351-d863-5c58-b76b-bba4b2075ef9"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#28",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 45,
+                        "uuid": "df910973-1c02-53ff-8dde-3bce8955a73a"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 28,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#28"
+                  ],
+                  "uuid": "aaf4e1d8-b1fe-5864-a1ce-ae8d6b188293"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#5",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 46,
+                        "uuid": "a4cfdc29-bcaa-57ec-8c83-126e0e77c2ec"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 5,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#5"
+                  ],
+                  "uuid": "ad294931-6af3-51dd-a869-77b0737e8d2c"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#18",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 47,
+                        "uuid": "2815040e-3a39-545e-9799-4f223014dbfc"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 18,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#18"
+                  ],
+                  "uuid": "b49ce3de-b5f9-5f02-b2f6-aa9e0c4ab9c0"
+                },
+                {
+                  "class": "iana-hardware:chassis",
+                  "contained-child": [
+                    "211c3af7-d69a-5c23-b911-2dc522afbf1d"                  ],
+                  "description": "\"7315-30X-O-48V-S\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "\"R0B\"",
+                  "is-fru": false,
+                  "mfg-date": "2021-10-25T00:00:00+00:00",
+                  "mfg-name": "\"7315-30X-O-48V-S\"",
+                  "name": "chassis",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 48,
+                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 0,
+                  "serial-num": "\"731530X2143013\"",
+                  "software-rev": "\"21.5.1 (9799)\"",
+                  "uri": [
+                    "chassis"
+                  ],
+                  "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#3",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 49,
+                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 3,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#3"
+                  ],
+                  "uuid": "c4a286b4-14bc-508c-94d5-3210d5a4670d"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#6",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 50,
+                        "uuid": "55937b2f-19d0-52e6-ac51-3ca68d5ba047"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 6,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#6"
+                  ],
+                  "uuid": "c9a857e4-736c-54a1-abe8-bd5768f556b4"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#23",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 51,
+                        "uuid": "7dbf69ba-707e-54b6-98fc-f907f40234b4"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 23,
+                  "serial-num": "\"ACW1747006MV   \"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#23"
+                  ],
+                  "uuid": "ca78897e-e256-5a57-91e8-792e92280c30"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#17",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 52,
+                        "uuid": "01310680-37b7-58bf-914a-1ba4583a16c2"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 17,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#17"
+                  ],
+                  "uuid": "cb6fb97c-fe8f-528f-b34e-c7c9ee52e485"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "15411cf7-182d-5dbe-89e7-260d95798ec7"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/14",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 53
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 14,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/14"
+                  ],
+                  "uuid": "cce67881-0cf8-5778-83fc-099e4dddfa50"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#4",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 54,
+                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 4,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#4"
+                  ],
+                  "uuid": "ce3fb53f-c07c-5b1d-b8b3-8c08da8800b9"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "323bb3fe-391d-5cc2-8cf0-0b99ec874045"
+                  ],
+                  "description": "\"100G/40G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/2",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 55
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 2,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/2"
+                  ],
+                  "uuid": "d0757c2c-8d4b-57aa-8f17-c5fab40551d4"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#7",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 56,
+                        "uuid": "db647a95-a6e8-5ad3-8d9a-0842517fe27d"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 7,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#7"
+                  ],
+                  "uuid": "d54a9b97-d671-5c84-988d-1d0bc3a62f55"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "7f5c81bf-e019-58d4-96a3-9fbb9edc22f8"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/16",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 57
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 16,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/16"
+                  ],
+                  "uuid": "d6e15727-40bd-51f6-a7c4-7356358a60b6"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#22",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 58,
+                        "uuid": "54a2e18e-edfc-5b65-a5c3-20c7bd7e3593"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 22,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#22"
+                  ],
+                  "uuid": "d7d2e358-3203-5e6b-a23b-eecc4f866fa9"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#24",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 59,
+                        "uuid": "1574d8e0-900f-5047-87f6-dc1f09883836"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 24,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#24"
+                  ],
+                  "uuid": "da6e0382-5ca3-5f23-8ae6-1c8ccc897c65"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "d54a9b97-d671-5c84-988d-1d0bc3a62f55"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/7",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 60
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 7,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/7"
+                  ],
+                  "uuid": "db647a95-a6e8-5ad3-8d9a-0842517fe27d"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#3",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 61,
+                        "uuid": "a9e9c4ec-265a-5039-848c-2ebf578855f3"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 3,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#3"
+                  ],
+                  "uuid": "de36dafb-2d66-54ef-9351-54ee4a1b0f9b"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "8e3677d0-42a7-5942-9b09-e86657cbcd41"
+                  ],
+                  "description": "\"1G Copper\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/27",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 62
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 27,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/27"
+                  ],
+                  "uuid": "df37f614-ec9f-5181-8c41-c322f31586ea"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "aaf4e1d8-b1fe-5864-a1ce-ae8d6b188293"
+                  ],
+                  "description": "\"1G Copper\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/28",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 63
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 28,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/28"
+                  ],
+                  "uuid": "df910973-1c02-53ff-8dde-3bce8955a73a"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#29",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 64,
+                        "uuid": "8ae15e57-f162-567c-a619-df5b548c0902"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 29,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#29"
+                  ],
+                  "uuid": "e43d275a-e710-5a00-b1c9-6b964f4214f2"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#15",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 65,
+                        "uuid": "24639859-aa84-532a-ac92-d7fc91db0a22"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 15,
+                  "serial-num": "\"CN04HG0018P13RE\"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#15"
+                  ],
+                  "uuid": "ecf4c207-e36b-52cb-a34a-2cecc4030d25"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#2",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 66,
+                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 2,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#2"
+                  ],
+                  "uuid": "f3e2636c-c742-5542-8586-7a7d516e8544"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#8",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 67,
+                        "uuid": "14c2bb4e-7d9c-5e32-a53a-0bbbdcd720c3"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 8,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#8"
+                  ],
+                  "uuid": "fb5d6c6d-edf2-5d17-b39f-62a889797be3"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#21",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 68,
+                        "uuid": "9beab43b-9bb4-5672-adc3-f6329e4ba827"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 21,
+                  "serial-num": "\"ACW1747006MZ   \"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#21"
+                  ],
+                  "uuid": "fe86ab62-509d-513a-b378-2bc18a794542"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "9b42bf35-e457-5303-b765-523009f7a5a4"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/12",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 69
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 12,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/12"
+                  ],
+                  "uuid": "ffb8587d-ddb3-5eec-ba78-bb5be047def2"
+                }
+              ]
+            },
+            "name": "R199",
+            "uuid": "2a672db3-9ac5-5124-b9b2-12c9fc9dd4a8"
+          }
+        ]
+      }
+    }
+  },
+  {
+    "ietf-network-hardware-inventory:network-hardware-inventory": {
+      "network-elements": {
+        "network-element": [
+          {
+            "components": {
+              "component": [
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#3",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 2,
+                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 3,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#3"
+                  ],
+                  "uuid": "02d7b07c-7552-5c2d-b6dd-9b1aa07087e1"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "5beb5441-c807-59c1-8535-1c2eb4f9cee8"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/12",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 3
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 12,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/12"
+                  ],
+                  "uuid": "07207602-d029-5cc1-83af-4a243166c7bc"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "1cd5416f-a2cd-5615-9ab9-aae1560bf39a"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/3",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 4
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 3,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/3"
+                  ],
+                  "uuid": "0f9a7a09-eb52-5a70-a2f7-94fff68f4510"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#9",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 5,
+                        "uuid": "d4c56b9d-d131-55c5-8536-1aece8087ffb"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 9,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#9"
+                  ],
+                  "uuid": "0fb1b102-0ac4-5de3-8e16-117b2f5e12a9"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "201b08ac-5107-577b-85c9-4cc742ece6ce"
+                  ],
+                  "description": "\"100G/40G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/1",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 6
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 1,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/1"
+                  ],
+                  "uuid": "1343ac3a-c765-5c10-a04c-eb43e4093a46"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "54186200-dac6-57cf-a84c-f2b1ebe4f5fc"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/7",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 7
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 7,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/7"
+                  ],
+                  "uuid": "145ba61e-7112-5eec-b41c-91978b80d77f"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#3",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 8,
+                        "uuid": "0f9a7a09-eb52-5a70-a2f7-94fff68f4510"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 3,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#3"
+                  ],
+                  "uuid": "1cd5416f-a2cd-5615-9ab9-aae1560bf39a"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#1",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 9,
+                        "uuid": "1343ac3a-c765-5c10-a04c-eb43e4093a46"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 1,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#1"
+                  ],
+                  "uuid": "201b08ac-5107-577b-85c9-4cc742ece6ce"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "ab9c4611-0ad8-5f9a-8848-c97a8829e693"
+                  ],
+                  "description": "\"100G/40G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/26",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 10
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 26,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/26"
+                  ],
+                  "uuid": "22d12bd5-f2b1-545c-a2a1-58c59defc2e0"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "7fbe001d-9cd5-55cf-9b2d-1e2198c4d8e1"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/5",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 11
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 5,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/5"
+                  ],
+                  "uuid": "4015a0f7-a90e-53fa-a8e9-e97d58854f24"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#27",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 12,
+                        "uuid": "d470e8ce-f044-54f6-9dd8-05fad9bc0b34"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 27,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#27"
+                  ],
+                  "uuid": "40aaac2b-be53-530b-8fb9-4dc4240dad2b"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#20",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 13,
+                        "uuid": "946ea635-16d3-531e-ac0a-0f70f0d38e08"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 20,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#20"
+                  ],
+                  "uuid": "43423068-88f4-5780-9186-a840031a5562"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#13",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 14,
+                        "uuid": "5d3dafdb-43a9-5745-9d9e-b07cea2e719b"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 13,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#13"
+                  ],
+                  "uuid": "448f2156-8dc4-5fb8-9671-be17c6054b44"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#4",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 15,
+                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 4,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#4"
+                  ],
+                  "uuid": "50a04d98-5873-5e5a-b725-c41b04c91ea4"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#7",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 16,
+                        "uuid": "145ba61e-7112-5eec-b41c-91978b80d77f"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 7,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#7"
+                  ],
+                  "uuid": "54186200-dac6-57cf-a84c-f2b1ebe4f5fc"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "eae9dff7-3885-5640-8348-c91ce05543c6"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/4",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 17
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 4,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/4"
+                  ],
+                  "uuid": "5655d66f-a362-57e2-9a9c-ab4bcdb863d5"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#12",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 18,
+                        "uuid": "07207602-d029-5cc1-83af-4a243166c7bc"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 12,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#12"
+                  ],
+                  "uuid": "5beb5441-c807-59c1-8535-1c2eb4f9cee8"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "448f2156-8dc4-5fb8-9671-be17c6054b44"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/13",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 19
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 13,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/13"
+                  ],
+                  "uuid": "5d3dafdb-43a9-5745-9d9e-b07cea2e719b"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#10",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 20,
+                        "uuid": "8669c5b6-c6a4-526f-bed1-9c0d24146739"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 10,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#10"
+                  ],
+                  "uuid": "61a96138-48de-56e4-bc8b-355967ca944f"
+                },
+                {
+                  "class": "iana-hardware:power-supply",
+                  "description": "\"CRXT-T0T12A\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"CRXT-T0T12A\"",
+                  "name": "Power-Supply#1",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 21,
+                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 1,
+                  "serial-num": "\"19430061\"",
+                  "software-rev": "",
+                  "uri": [
+                    "Power-Supply#1"
+                  ],
+                  "uuid": "677ce193-eabe-5c99-be1d-87e5d8a735bc"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#19",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 22,
+                        "uuid": "e2cd6e88-e40c-5f39-91f0-646fdb3f14fb"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 19,
+                  "serial-num": "\"F1930015671    \"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#19"
+                  ],
+                  "uuid": "6838ea30-544e-5188-af7e-7a21e4bc4012"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#25",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 23,
+                        "uuid": "ce8079db-7521-592f-95bc-459a05b95483"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 25,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#25"
+                  ],
+                  "uuid": "728c024d-336b-5657-b0aa-6968704c534a"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "c9756d8f-a333-528e-99f5-fa8bbb73301d"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/16",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 24
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 16,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/16"
+                  ],
+                  "uuid": "75b6bf48-155c-5b2d-b94c-3a022d2ee7b3"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#21",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 25,
+                        "uuid": "81e12350-5582-5d28-8f89-8bec87ddfcf5"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 21,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#21"
+                  ],
+                  "uuid": "7bcb17de-7b39-53c2-a383-8ff2508c194e"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#5",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 26,
+                        "uuid": "4015a0f7-a90e-53fa-a8e9-e97d58854f24"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 5,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#5"
+                  ],
+                  "uuid": "7fbe001d-9cd5-55cf-9b2d-1e2198c4d8e1"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#11",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 27,
+                        "uuid": "90248895-6cdf-55cc-ba47-07208aec7561"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 11,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#11"
+                  ],
+                  "uuid": "810184e8-051d-5366-bb5c-ebed97590fb4"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "7bcb17de-7b39-53c2-a383-8ff2508c194e"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/21",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 28
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 21,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/21"
+                  ],
+                  "uuid": "81e12350-5582-5d28-8f89-8bec87ddfcf5"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "96874de4-51d9-5c68-9700-042d4263cdd8"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/6",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 29
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 6,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/6"
+                  ],
+                  "uuid": "8214b7cb-bbc3-5b69-805d-ed35128f796f"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "a0166f5f-7f55-5880-9231-48624cda031c"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/17",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 30
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 17,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/17"
+                  ],
+                  "uuid": "8452da86-83c6-5f59-942b-0d59a08e60b8"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "61a96138-48de-56e4-bc8b-355967ca944f"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/10",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 31
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 10,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/10"
+                  ],
+                  "uuid": "8669c5b6-c6a4-526f-bed1-9c0d24146739"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "b0451047-ff08-5bc6-8bc8-bf21b0d70049"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/2",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 32
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 2,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/2"
+                  ],
+                  "uuid": "8a37750c-b5ef-510b-80cd-f4eb7d938b8c"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#5",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 33,
+                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 5,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#5"
+                  ],
+                  "uuid": "8db38f44-4e57-5621-9801-b7683b19ff56"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#15",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 34,
+                        "uuid": "a67341ee-0313-58aa-b416-7d698d3877be"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 15,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#15"
+                  ],
+                  "uuid": "8ec6edce-4522-597d-88c8-37697cb154fe"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#8",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 35,
+                        "uuid": "c2d9a8ff-a854-50d8-8550-dc1f60ef9261"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 8,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#8"
+                  ],
+                  "uuid": "8f802e29-1885-55d2-9122-9a1fffc3ec46"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "810184e8-051d-5366-bb5c-ebed97590fb4"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/11",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 36
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 11,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/11"
+                  ],
+                  "uuid": "90248895-6cdf-55cc-ba47-07208aec7561"
+                },
+                {
+                  "class": "iana-hardware:power-supply",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Power-Supply#2",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 37,
+                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 2,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Power-Supply#2"
+                  ],
+                  "uuid": "93c9b45e-7574-5fb6-b0b1-6574f823b46a"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "43423068-88f4-5780-9186-a840031a5562"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/20",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 38
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 20,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/20"
+                  ],
+                  "uuid": "946ea635-16d3-531e-ac0a-0f70f0d38e08"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#6",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 39,
+                        "uuid": "8214b7cb-bbc3-5b69-805d-ed35128f796f"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 6,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#6"
+                  ],
+                  "uuid": "96874de4-51d9-5c68-9700-042d4263cdd8"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#23",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 40,
+                        "uuid": "c28279e3-4dae-5af8-b8be-99ccc1cda2f1"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 23,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#23"
+                  ],
+                  "uuid": "99258fb4-22e3-5516-bc2e-c1f50f238d31"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#17",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 41,
+                        "uuid": "8452da86-83c6-5f59-942b-0d59a08e60b8"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 17,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#17"
+                  ],
+                  "uuid": "a0166f5f-7f55-5880-9231-48624cda031c"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "f1568cd5-a694-57a5-b233-8d21f11fb5bc"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/22",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 42
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 22,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/22"
+                  ],
+                  "uuid": "a52bac7b-0b70-5a5b-9066-99ed66e09cbb"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "8ec6edce-4522-597d-88c8-37697cb154fe"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/15",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 43
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 15,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/15"
+                  ],
+                  "uuid": "a67341ee-0313-58aa-b416-7d698d3877be"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#14",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 44,
+                        "uuid": "b3ed689a-f997-59d6-9b3d-aff511a0e253"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 14,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#14"
+                  ],
+                  "uuid": "a8b55643-e432-5a14-b34b-9f0824d1ae66"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "ba77d752-b621-598b-91e3-c80c13109fb8"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/18",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 45
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 18,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/18"
+                  ],
+                  "uuid": "ab710745-3989-5e4d-8b70-7048bd437d0e"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#26",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 46,
+                        "uuid": "22d12bd5-f2b1-545c-a2a1-58c59defc2e0"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 26,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#26"
+                  ],
+                  "uuid": "ab9c4611-0ad8-5f9a-8848-c97a8829e693"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#2",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 47,
+                        "uuid": "8a37750c-b5ef-510b-80cd-f4eb7d938b8c"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 2,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#2"
+                  ],
+                  "uuid": "b0451047-ff08-5bc6-8bc8-bf21b0d70049"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "b606eb8f-079e-5039-936f-e1fa8c8bbc22"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/24",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 48
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 24,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/24"
+                  ],
+                  "uuid": "b3cdb834-c93e-5029-9dd6-21cb3696c84c"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "a8b55643-e432-5a14-b34b-9f0824d1ae66"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/14",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 49
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 14,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/14"
+                  ],
+                  "uuid": "b3ed689a-f997-59d6-9b3d-aff511a0e253"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#24",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 50,
+                        "uuid": "b3cdb834-c93e-5029-9dd6-21cb3696c84c"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 24,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#24"
+                  ],
+                  "uuid": "b606eb8f-079e-5039-936f-e1fa8c8bbc22"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#18",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 51,
+                        "uuid": "ab710745-3989-5e4d-8b70-7048bd437d0e"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 18,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#18"
+                  ],
+                  "uuid": "ba77d752-b621-598b-91e3-c80c13109fb8"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "99258fb4-22e3-5516-bc2e-c1f50f238d31"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/23",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 52
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 23,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/23"
+                  ],
+                  "uuid": "c28279e3-4dae-5af8-b8be-99ccc1cda2f1"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "8f802e29-1885-55d2-9122-9a1fffc3ec46"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/8",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 53
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 8,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/8"
+                  ],
+                  "uuid": "c2d9a8ff-a854-50d8-8550-dc1f60ef9261"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#16",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 54,
+                        "uuid": "75b6bf48-155c-5b2d-b94c-3a022d2ee7b3"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 16,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#16"
+                  ],
+                  "uuid": "c9756d8f-a333-528e-99f5-fa8bbb73301d"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "728c024d-336b-5657-b0aa-6968704c534a"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/25",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 55
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 25,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/25"
+                  ],
+                  "uuid": "ce8079db-7521-592f-95bc-459a05b95483"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "40aaac2b-be53-530b-8fb9-4dc4240dad2b"
+                  ],
+                  "description": "\"100G/40G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/27",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 56
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 27,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/27"
+                  ],
+                  "uuid": "d470e8ce-f044-54f6-9dd8-05fad9bc0b34"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "0fb1b102-0ac4-5de3-8e16-117b2f5e12a9"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/9",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 57
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 9,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/9"
+                  ],
+                  "uuid": "d4c56b9d-d131-55c5-8536-1aece8087ffb"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#2",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 58,
+                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 2,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#2"
+                  ],
+                  "uuid": "d637794b-b553-59b9-9d85-115d151e94e7"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "6838ea30-544e-5188-af7e-7a21e4bc4012"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/19",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 59
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 19,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/19"
+                  ],
+                  "uuid": "e2cd6e88-e40c-5f39-91f0-646fdb3f14fb"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#4",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 60,
+                        "uuid": "5655d66f-a362-57e2-9a9c-ab4bcdb863d5"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 4,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#4"
+                  ],
+                  "uuid": "eae9dff7-3885-5640-8348-c91ce05543c6"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#22",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 61,
+                        "uuid": "a52bac7b-0b70-5a5b-9066-99ed66e09cbb"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 22,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#22"
+                  ],
+                  "uuid": "f1568cd5-a694-57a5-b233-8d21f11fb5bc"
+                },
+                {
+                  "class": "iana-hardware:chassis",
+                  "contained-child": [
+                    "02d7b07c-7552-5c2d-b6dd-9b1aa07087e1"
+                  ],
+                  "description": "\"DRX-30\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "\"R0D\"",
+                  "is-fru": false,
+                  "mfg-date": "2020-01-09T00:00:00+00:00",
+                  "mfg-name": "\"DRX-30\"",
+                  "name": "chassis",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 62,
+                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 0,
+                  "serial-num": "\"731527XB1952198\"",
+                  "software-rev": "\"21.5.1 (9799)\"",
+                  "uri": [
+                    "chassis"
+                  ],
+                  "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#1",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 63,
+                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 1,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#1"
+                  ],
+                  "uuid": "f8acb54f-f88a-59d0-9a59-f3460f19c706"
+                }
+              ]
+            },
+            "name": "R155",
+            "uuid": "50f6fe52-9cbd-5e7b-b4ad-082a264c4452"
+          }
+        ]
+      }
+    }
+  },
+  {
+    "ietf-network-hardware-inventory:network-hardware-inventory": {
+      "network-elements": {
+        "network-element": [
+          {
+            "components": {
+              "component": [
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "380c56d9-4da7-52a0-8902-17e44d84182d"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/6",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 2
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 6,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/6"
+                  ],
+                  "uuid": "015374ab-9cae-58c3-8e0e-a438482511d1"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "a537dd75-55ed-5f80-bbe0-a5fcec8fe992"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/20",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 3
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 20,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/20"
+                  ],
+                  "uuid": "030e2ea4-7cdf-5212-9a28-88dc24c52629"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "cdcb47b3-3fe9-5db0-a70a-df607933c68b"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/17",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 4
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 17,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/17"
+                  ],
+                  "uuid": "11e08bd6-770d-55a0-a635-e54cf3dbccc7"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#15",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 5,
+                        "uuid": "d425d98d-4f08-5519-a754-63fa109ba13b"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 15,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#15"
+                  ],
+                  "uuid": "1c93cb2d-2c23-50df-95d8-f32fe26e1373"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#4",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 6,
+                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 4,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#4"
+                  ],
+                  "uuid": "1feb16b7-ccd9-5cd6-a958-56400aafb910"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "b9326b3e-4bfd-5334-8205-17964ca521d3"
+                  ],
+                  "description": "\"100G/40G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/1",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 7
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 1,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/1"
+                  ],
+                  "uuid": "2033bacd-7ca6-5226-ad88-e05f3b36881b"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "4f052094-76bf-57e9-8c50-ab087f7585fc"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/22",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 8
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 22,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/22"
+                  ],
+                  "uuid": "2058b20d-6517-5380-8b20-e1ebda347ff1"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "68748f18-ee2c-5650-9476-375489dcf90c"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/14",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 9
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 14,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/14"
+                  ],
+                  "uuid": "2733b361-a1e5-5a22-b0ff-f20346c233b7"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "2dc02c86-6a77-5767-9c6f-07b20d09bcc5"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/8",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 10
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 8,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/8"
+                  ],
+                  "uuid": "2ca154b0-4e4b-5024-92b0-b7cf4bcc4fac"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#8",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 11,
+                        "uuid": "2ca154b0-4e4b-5024-92b0-b7cf4bcc4fac"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 8,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#8"
+                  ],
+                  "uuid": "2dc02c86-6a77-5767-9c6f-07b20d09bcc5"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "9f20d73a-2898-5bcb-8dcf-09441dcaaa14"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/10",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 12
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 10,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/10"
+                  ],
+                  "uuid": "2e08a6e2-10f9-5b61-b358-a46e5d2168c7"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "a86ad9f3-d5f7-5e4b-911a-89e15cf56cbb"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/16",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 13
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 16,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/16"
+                  ],
+                  "uuid": "2febcb3d-0afa-594e-9ebe-c6f23c8b7e8a"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#23",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 14,
+                        "uuid": "60bd77bf-2c0e-5058-ac6a-f4b107888668"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 23,
+                  "serial-num": "\"PYA2FD5        \"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#23"
+                  ],
+                  "uuid": "330654aa-1136-58c7-9836-dce23b03e84b"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "abb4254a-f8fc-5c88-a884-cba09af44e2f"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/2",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 15
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 2,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/2"
+                  ],
+                  "uuid": "36c2ad7f-3191-5d73-ba5b-a90eee210e28"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#6",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 16,
+                        "uuid": "015374ab-9cae-58c3-8e0e-a438482511d1"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 6,
+                  "serial-num": "\"AZG28W2        \"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#6"
+                  ],
+                  "uuid": "380c56d9-4da7-52a0-8902-17e44d84182d"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "389fa34a-d04c-5328-af4b-f3d825907e11"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/5",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 17
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 5,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/5"
+                  ],
+                  "uuid": "383a5fda-c038-5273-919e-e2fdebec614a"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#5",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 18,
+                        "uuid": "383a5fda-c038-5273-919e-e2fdebec614a"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 5,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#5"
+                  ],
+                  "uuid": "389fa34a-d04c-5328-af4b-f3d825907e11"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#9",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 19,
+                        "uuid": "f0c6922f-c0bb-5f69-920b-0d8ebc3f7c63"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 9,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#9"
+                  ],
+                  "uuid": "399007c8-f6c1-5b1e-9c88-19d5815b447f"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#22",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 20,
+                        "uuid": "2058b20d-6517-5380-8b20-e1ebda347ff1"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 22,
+                  "serial-num": "\"F162250019     \"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#22"
+                  ],
+                  "uuid": "4f052094-76bf-57e9-8c50-ab087f7585fc"
+                },
+                {
+                  "class": "iana-hardware:power-supply",
+                  "description": "\"CRXT-T0T12A\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"CRXT-T0T12A\"",
+                  "name": "Power-Supply#1",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 21,
+                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 1,
+                  "serial-num": "\"19330053\"",
+                  "software-rev": "",
+                  "uri": [
+                    "Power-Supply#1"
+                  ],
+                  "uuid": "52494162-56ba-5362-84c2-de654f647fd4"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "330654aa-1136-58c7-9836-dce23b03e84b"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/23",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 22
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 23,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/23"
+                  ],
+                  "uuid": "60bd77bf-2c0e-5058-ac6a-f4b107888668"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "ff8fc959-332f-5e3d-8b4b-ad52935ab386"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/7",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 23
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 7,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/7"
+                  ],
+                  "uuid": "638f45d1-e274-5c90-bd6c-6d0b43354705"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#3",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 24,
+                        "uuid": "d976f4a3-6490-5006-8452-65d8b80af1b6"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 3,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#3"
+                  ],
+                  "uuid": "6548a5c7-3dc3-56d3-9521-3b8f1bcd00f5"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "8cd2af8e-072a-56e3-88d0-dd3a73b14ca3"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/4",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 25
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 4,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/4"
+                  ],
+                  "uuid": "669a0888-e577-511f-8bb1-a78854d21236"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "e2dc2aaf-afea-5356-8ea5-c77e9895da0b"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/18",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 26
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 18,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/18"
+                  ],
+                  "uuid": "66f3fad6-f259-558c-87cb-85c267bf872d"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#14",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 27,
+                        "uuid": "2733b361-a1e5-5a22-b0ff-f20346c233b7"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 14,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#14"
+                  ],
+                  "uuid": "68748f18-ee2c-5650-9476-375489dcf90c"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "7a57c318-8e6c-5b45-89e5-fae2c611fb03"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/19",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 28
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 19,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/19"
+                  ],
+                  "uuid": "6c5296eb-eeaa-5d24-b274-3cc24095ebfe"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "8ba82a4b-08cc-5f84-89da-ce532af55224"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/11",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 29
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 11,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/11"
+                  ],
+                  "uuid": "6f156244-93a8-5b24-8300-3bcb1d390ec5"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#21",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 30,
+                        "uuid": "cae5f45f-0442-5ea1-ba3f-beac8c1e2e55"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 21,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#21"
+                  ],
+                  "uuid": "7317a965-f981-59e8-87ca-0aa8c87634b1"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#19",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 31,
+                        "uuid": "6c5296eb-eeaa-5d24-b274-3cc24095ebfe"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 19,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#19"
+                  ],
+                  "uuid": "7a57c318-8e6c-5b45-89e5-fae2c611fb03"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#5",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 32,
+                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 5,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#5"
+                  ],
+                  "uuid": "7c8a8160-a11b-588d-8302-c2fa37b7acd3"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#24",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 33,
+                        "uuid": "b1fe3b03-236d-509f-9738-0863a0051cc0"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 24,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#24"
+                  ],
+                  "uuid": "86b7296f-1bc6-5ed6-9019-89776c5e624c"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "e3a4825b-62c2-5119-bed1-9c4b7edeb0bf"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/12",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 34
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 12,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/12"
+                  ],
+                  "uuid": "88619a40-3670-5447-8264-a5a44e75f8ea"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#11",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 35,
+                        "uuid": "6f156244-93a8-5b24-8300-3bcb1d390ec5"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 11,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#11"
+                  ],
+                  "uuid": "8ba82a4b-08cc-5f84-89da-ce532af55224"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#4",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 36,
+                        "uuid": "669a0888-e577-511f-8bb1-a78854d21236"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 4,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#4"
+                  ],
+                  "uuid": "8cd2af8e-072a-56e3-88d0-dd3a73b14ca3"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "bddb5da3-8ca6-50a8-91e2-4ab1d7bca8b1"
+                  ],
+                  "description": "\"100G/40G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/27",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 37
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 27,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/27"
+                  ],
+                  "uuid": "8dab697e-efe0-5818-b072-841bcd57340e"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#10",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 38,
+                        "uuid": "2e08a6e2-10f9-5b61-b358-a46e5d2168c7"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 10,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#10"
+                  ],
+                  "uuid": "9f20d73a-2898-5bcb-8dcf-09441dcaaa14"
+                },
+                {
+                  "class": "iana-hardware:chassis",
+                  "contained-child": [
+                    "1feb16b7-ccd9-5cd6-a958-56400aafb910"
+                  ],
+                  "description": "\"DRX-30\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "\"R0D\"",
+                  "is-fru": false,
+                  "mfg-date": "2020-01-08T00:00:00+00:00",
+                  "mfg-name": "\"DRX-30\"",
+                  "name": "chassis",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 39,
+                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 0,
+                  "serial-num": "\"731527XB1952144\"",
+                  "software-rev": "\"21.5.1 (9799)\"",
+                  "uri": [
+                    "chassis"
+                  ],
+                  "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#20",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 40,
+                        "uuid": "030e2ea4-7cdf-5212-9a28-88dc24c52629"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 20,
+                  "serial-num": "\"CN04HG0018P1452\"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#20"
+                  ],
+                  "uuid": "a537dd75-55ed-5f80-bbe0-a5fcec8fe992"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#3",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 41,
+                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 3,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#3"
+                  ],
+                  "uuid": "a548914d-f039-5463-a7cf-e3a2d0e970ce"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#16",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 42,
+                        "uuid": "2febcb3d-0afa-594e-9ebe-c6f23c8b7e8a"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 16,
+                  "serial-num": "\"030SBF6TH661789\"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#16"
+                  ],
+                  "uuid": "a86ad9f3-d5f7-5e4b-911a-89e15cf56cbb"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#2",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 43,
+                        "uuid": "36c2ad7f-3191-5d73-ba5b-a90eee210e28"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 2,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#2"
+                  ],
+                  "uuid": "abb4254a-f8fc-5c88-a884-cba09af44e2f"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "86b7296f-1bc6-5ed6-9019-89776c5e624c"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/24",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 44
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 24,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/24"
+                  ],
+                  "uuid": "b1fe3b03-236d-509f-9738-0863a0051cc0"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#1",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 45,
+                        "uuid": "2033bacd-7ca6-5226-ad88-e05f3b36881b"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 1,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#1"
+                  ],
+                  "uuid": "b9326b3e-4bfd-5334-8205-17964ca521d3"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#27",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 46,
+                        "uuid": "8dab697e-efe0-5818-b072-841bcd57340e"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 27,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#27"
+                  ],
+                  "uuid": "bddb5da3-8ca6-50a8-91e2-4ab1d7bca8b1"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "7317a965-f981-59e8-87ca-0aa8c87634b1"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/21",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 47
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 21,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/21"
+                  ],
+                  "uuid": "cae5f45f-0442-5ea1-ba3f-beac8c1e2e55"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#2",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 48,
+                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 2,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#2"
+                  ],
+                  "uuid": "cbb8d2b5-a57f-508b-a054-509ace91bc88"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#17",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 49,
+                        "uuid": "11e08bd6-770d-55a0-a635-e54cf3dbccc7"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 17,
+                  "serial-num": "\"CN04HG00183038D\"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#17"
+                  ],
+                  "uuid": "cdcb47b3-3fe9-5db0-a70a-df607933c68b"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "f441b766-d83b-51f0-bb87-9feacbaa222e"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/13",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 50
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 13,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/13"
+                  ],
+                  "uuid": "d20d0c2a-5cbd-5602-b54b-a44134b391b7"
+                },
+                {
+                  "class": "iana-hardware:power-supply",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Power-Supply#2",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 51,
+                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 2,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Power-Supply#2"
+                  ],
+                  "uuid": "d35ae2b7-88e8-5f8e-bb1c-6b1b04c41652"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "d9a36c03-d934-5ca3-ab94-047b6114ce5a"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/25",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 52
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 25,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/25"
+                  ],
+                  "uuid": "d3cbf635-9c86-542b-b169-53a77dea2d75"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "1c93cb2d-2c23-50df-95d8-f32fe26e1373"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/15",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 53
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 15,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/15"
+                  ],
+                  "uuid": "d425d98d-4f08-5519-a754-63fa109ba13b"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "e7c4e4dc-5f70-53a8-9680-6d1d1f382611"
+                  ],
+                  "description": "\"100G/40G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/26",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 54
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 26,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/26"
+                  ],
+                  "uuid": "d71a754a-1d95-5fa9-956a-fba4da2e9841"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "6548a5c7-3dc3-56d3-9521-3b8f1bcd00f5"
+                  ],
+                  "description": "\"25G/10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/3",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 55
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 3,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/3"
+                  ],
+                  "uuid": "d976f4a3-6490-5006-8452-65d8b80af1b6"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#25",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 56,
+                        "uuid": "d3cbf635-9c86-542b-b169-53a77dea2d75"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 25,
+                  "serial-num": "\"F162250016     \"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#25"
+                  ],
+                  "uuid": "d9a36c03-d934-5ca3-ab94-047b6114ce5a"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#18",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 57,
+                        "uuid": "66f3fad6-f259-558c-87cb-85c267bf872d"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 18,
+                  "serial-num": "\"P22224B0261    \"",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#18"
+                  ],
+                  "uuid": "e2dc2aaf-afea-5356-8ea5-c77e9895da0b"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#12",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 58,
+                        "uuid": "88619a40-3670-5447-8264-a5a44e75f8ea"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 12,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#12"
+                  ],
+                  "uuid": "e3a4825b-62c2-5119-bed1-9c4b7edeb0bf"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#26",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 59,
+                        "uuid": "d71a754a-1d95-5fa9-956a-fba4da2e9841"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 26,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#26"
+                  ],
+                  "uuid": "e7c4e4dc-5f70-53a8-9680-6d1d1f382611"
+                },
+                {
+                  "class": "iana-hardware:port",
+                  "contained-child": [
+                    "399007c8-f6c1-5b1e-9c88-19d5815b447f"
+                  ],
+                  "description": "\"10G/1G Fiber\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "eth-1/0/9",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 60
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 9,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "eth-1/0/9"
+                  ],
+                  "uuid": "f0c6922f-c0bb-5f69-920b-0d8ebc3f7c63"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#13",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 61,
+                        "uuid": "d20d0c2a-5cbd-5602-b54b-a44134b391b7"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 13,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#13"
+                  ],
+                  "uuid": "f441b766-d83b-51f0-bb87-9feacbaa222e"
+                },
+                {
+                  "class": "iana-hardware:fan",
+                  "description": "\"AS7315\"",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "\"AS7315\"",
+                  "name": "Fan#1",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 62,
+                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 1,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Fan#1"
+                  ],
+                  "uuid": "fbee5498-f04b-543b-b0df-054b8ddcdab5"
+                },
+                {
+                  "class": "iana-hardware:module",
+                  "description": "",
+                  "firmware-rev": "",
+                  "hardware-rev": "",
+                  "is-fru": false,
+                  "mfg-name": "",
+                  "name": "Transceiver#7",
+                  "parent-component-references": {
+                    "component-reference": [
+                      {
+                        "index": 63,
+                        "uuid": "638f45d1-e274-5c90-bd6c-6d0b43354705"
+                      }
+                    ]
+                  },
+                  "parent-rel-pos": 7,
+                  "serial-num": "",
+                  "software-rev": "",
+                  "uri": [
+                    "Transceiver#7"
+                  ],
+                  "uuid": "ff8fc959-332f-5e3d-8b4b-ad52935ab386"
+                }
+              ]
+            },
+            "name": "R149",
+            "uuid": "fd28848d-18e7-5cb5-bb02-4085d088eede"
+          }
+        ]
+      }
+    }
+  }
+]
\ No newline at end of file
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NameMapping.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NameMapping.py
new file mode 100644
index 000000000..0c1055911
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NameMapping.py
@@ -0,0 +1,46 @@
+# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
+#
+# 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.
+
+from typing import Dict, Tuple
+from common.proto.context_pb2 import Device, DeviceId, EndPoint, EndPointId
+
+class NameMappings:
+    def __init__(self) -> None:
+        self._device_uuid_to_name   : Dict[str,             str] = dict()
+        self._endpoint_uuid_to_name : Dict[Tuple[str, str], str] = dict()
+    
+    def store_device_name(self, device : Device) -> None:
+        device_uuid = device.device_id.device_uuid.uuid
+        device_name = device.name
+        self._device_uuid_to_name[device_uuid] = device_name
+        self._device_uuid_to_name[device_name] = device_name
+
+    def store_endpoint_name(self, device : Device, endpoint : EndPoint) -> None:
+        device_uuid = device.device_id.device_uuid.uuid
+        device_name = device.name
+        endpoint_uuid = endpoint.endpoint_id.endpoint_uuid.uuid
+        endpoint_name = endpoint.name
+        self._endpoint_uuid_to_name[(device_uuid, endpoint_uuid)] = endpoint_name
+        self._endpoint_uuid_to_name[(device_name, endpoint_uuid)] = endpoint_name
+        self._endpoint_uuid_to_name[(device_uuid, endpoint_name)] = endpoint_name
+        self._endpoint_uuid_to_name[(device_name, endpoint_name)] = endpoint_name
+
+    def get_device_name(self, device_id : DeviceId) -> str:
+        device_uuid = device_id.device_uuid.uuid
+        return self._device_uuid_to_name.get(device_uuid, device_uuid)
+
+    def get_endpoint_name(self, endpoint_id : EndPointId) -> str:
+        device_uuid = endpoint_id.device_id.device_uuid.uuid
+        endpoint_uuid = endpoint_id.endpoint_uuid.uuid
+        return self._endpoint_uuid_to_name.get((device_uuid, endpoint_uuid), endpoint_uuid)
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NetworkTypeEnum.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NetworkTypeEnum.py
new file mode 100644
index 000000000..96fe4dff1
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NetworkTypeEnum.py
@@ -0,0 +1,23 @@
+# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
+#
+# 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.
+
+from enum import Enum
+from typing import Optional
+
+class NetworkTypeEnum(Enum):
+    TE_OTN_TOPOLOGY      = 'otn'
+    TE_ETH_TRAN_TOPOLOGY = 'eth-tran'
+
+def get_network_topology_type(topology_id : str) -> Optional[NetworkTypeEnum]:
+    return NetworkTypeEnum._value2member_map_.get(topology_id)
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
new file mode 100644
index 000000000..4a11eaf08
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
@@ -0,0 +1,69 @@
+# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
+#
+# 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.
+
+import json, logging
+from flask import request
+from flask.json import jsonify
+from flask_restful import Resource
+from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME
+from common.tools.context_queries.Topology import get_topology_details
+from context.client.ContextClient import ContextClient
+from nbi.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH
+from nbi.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR
+from .YangHandler import YangHandler
+from .ManualFixes import manual_fixes
+
+LOGGER = logging.getLogger(__name__)
+
+TE_TOPOLOGY_NAMES = [
+    'providerId-10-clientId-0-topologyId-1',
+    'providerId-10-clientId-0-topologyId-2'
+]
+
+class Networks(Resource):
+    @HTTP_AUTH.login_required
+    def get(self):
+        LOGGER.info('Request: {:s}'.format(str(request)))
+        topology_id = ''
+        try:
+            context_client = ContextClient()
+            #target = get_slice_by_uuid(context_client, vpn_id, rw_copy=True)
+            #if target is None:
+            #    raise Exception('VPN({:s}) not found in database'.format(str(vpn_id)))
+
+            topology_details = get_topology_details(
+                context_client, DEFAULT_TOPOLOGY_NAME, context_uuid=DEFAULT_CONTEXT_NAME, #rw_copy=True
+            )
+            if topology_details is None:
+                MSG = 'Topology({:s}/{:s}) not found'
+                raise Exception(MSG.format(DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME))
+            
+            network_list_reply = []
+            yang_handler = YangHandler()
+            for te_topology_name in TE_TOPOLOGY_NAMES:
+                network_reply = yang_handler.compose_network(te_topology_name, topology_details)
+                network_list_reply.append(network_reply)
+
+            # TODO: improve these workarounds to enhance performance
+            yang_handler.destroy()
+            response = jsonify(network_list_reply)
+            # Workaround; pyangbind does not allow to set otn_topology / eth-tran-topology
+            manual_fixes(response)
+
+            response.status_code = HTTP_OK
+        except Exception as e: # pylint: disable=broad-except
+            LOGGER.exception('Something went wrong Retrieving Topology({:s})'.format(str(topology_id)))
+            response = jsonify({'error': str(e)})
+            response.status_code = HTTP_SERVERERROR
+        return response
\ No newline at end of file
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
new file mode 100644
index 000000000..50db6d33b
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
@@ -0,0 +1,195 @@
+# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
+#
+# 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.
+
+import json, libyang, logging, os, re
+from typing import Any
+from common.DeviceTypes import DeviceTypeEnum
+from common.proto.context_pb2 import TopologyDetails, Device, Link, EndPoint
+from .NameMapping import NameMappings
+from .NetworkTypeEnum import NetworkTypeEnum, get_network_topology_type
+
+LOGGER = logging.getLogger(__name__)
+
+YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang')
+YANG_MODULES = [
+    'ietf-network',
+    'ietf-network-topology'
+]
+
+MAPPINGS_TE_NODE_NAME = {
+    '10.0.10.1'  : 'OA',
+    '10.0.20.1'  : 'P',
+    '10.0.30.1'  : 'OE',
+    '10.0.40.1'  : 'P',
+
+    '128.32.10.1': 'ONT1',
+    '128.32.20.1': 'ONT2',
+    '128.32.33.5': 'OLT',
+}
+
+IGNORE_ENDPOINT_NAMES = {'mgmt', 'eth1'}
+
+IGNORE_DEVICE_TYPES = {
+    DeviceTypeEnum.CLIENT.value,
+    DeviceTypeEnum.DATACENTER.value,
+    DeviceTypeEnum.EMULATED_CLIENT.value,
+    DeviceTypeEnum.EMULATED_DATACENTER.value,
+    DeviceTypeEnum.EMULATED_IP_SDN_CONTROLLER,
+    DeviceTypeEnum.EMULATED_MICROWAVE_RADIO_SYSTEM.value,
+    DeviceTypeEnum.EMULATED_OPEN_LINE_SYSTEM.value,
+    DeviceTypeEnum.EMULATED_XR_CONSTELLATION.value,
+    DeviceTypeEnum.IP_SDN_CONTROLLER,
+    DeviceTypeEnum.MICROWAVE_RADIO_SYSTEM.value,
+    DeviceTypeEnum.NETWORK.value,
+    DeviceTypeEnum.OPEN_LINE_SYSTEM.value,
+    DeviceTypeEnum.XR_CONSTELLATION.value,
+}
+
+IGNORE_DEVICE_NAMES = {
+    NetworkTypeEnum.TE_OTN_TOPOLOGY: {
+        'nce-t', '128.32.10.1', '128.32.33.5', '128.32.20.5', '128.32.20.1', '128.32.10.5',
+    },
+    NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY: {
+        'nce-t',
+    },
+}
+
+TE_TOPOLOGY_NAME = 'Huawei-Network'
+
+class YangHandler:
+    def __init__(self) -> None:
+        self._yang_context = libyang.Context(YANG_DIR)
+        for yang_module_name in YANG_MODULES:
+            LOGGER.info('Loading module: {:s}'.format(str(yang_module_name)))
+            self._yang_context.load_module(yang_module_name).feature_enable_all()
+
+    def compose_network(self, te_topology_name : str, topology_details : TopologyDetails) -> None:
+        networks = self._yang_context.create_data_path('/ietf-network:networks')
+        
+        network = networks.create_path('network[network-id="{:s}"]'.format(te_topology_name))
+        
+        network.create_path('network-id', te_topology_name)
+       
+        network_types = network.create_path('network-types') #augmentation, mirar RFC8346
+        network_types.create_path('ietf-l3-unicast-topology:l3-unicast-topology') #no se si es asi
+        network.create_path('supporting-network', ) #lista de networks-id, NO SE COMO VERLO
+        attributes = network.create_path('ietf-l3-unicast-topology:l3-topology-attributes')
+        #NO SE QUE ATRIBUTOS, CASO ESPECIAL OSPF?
+        attributes.create_path('name',)
+        attributes.create_path('flag',)
+
+        ''' NO SEEEEEE SI HACE FALTA
+        # TODO: resolve setting of otn_topology/eth_tran_topology network type; not working in bindings.
+        # See "../ManualFixes.py".
+        topology_id = ietf_network_obj.te_topology_identifier.topology_id
+        topology_id = {
+            '1': NetworkTypeEnum.TE_OTN_TOPOLOGY.value,
+            '2': NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY.value,
+        }.get(topology_id, topology_id)
+        network_type = get_network_topology_type(topology_id)
+        if network_type == NetworkTypeEnum.TE_OTN_TOPOLOGY:
+            #ietf_network_obj.network_types.te_topology.otn_topology._set_present()
+            pass
+        elif network_type == NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY:
+            #ietf_network_obj.network_types.te_topology.eth_tran_topology._set_present()
+            pass
+        else:
+            raise Exception('Unsupported TopologyId({:s})'.format(str(topology_id)))
+        '''
+        name_mappings = NameMappings()
+ 
+        ignore_device_uuids = set()
+        
+
+        for device in topology_details.devices:
+            device_uuid = device.device_id.device_uuid.uuid
+
+            device_type = device.device_type
+            if device_type in IGNORE_DEVICE_TYPES:
+                ignore_device_uuids.add(device_uuid)
+                continue
+
+            device_name = device.name
+            if device_name in IGNORE_DEVICE_NAMES.get(network_type, set()): #NETWORK_TYPE?
+                ignore_device_uuids.add(device_uuid)
+                continue
+
+            self.compose_node(device, name_mappings, network)
+
+        for link in topology_details.links:
+            link_device_uuids = {
+                endpoint_id.device_id.device_uuid.uuid
+                for endpoint_id in link.link_endpoint_ids
+            }
+            if len(ignore_device_uuids.intersection(link_device_uuids)) > 0:
+                continue
+            link_name = link.name
+
+            self.compose_link(link_name, link, name_mappings, network)
+    
+
+    def compose_node(self, device : Device, name_mappings : NameMappings, network : Any
+    ) -> None:
+        device_name = device.name
+
+        name_mappings.store_device_name(device)
+
+        node = network.create_path('node[node-id="{:s}"]'.format(device_name))
+        node.create_path('node-id', device_name)
+        #supporting node (nw-ref, node-ref)?
+        node_attributes = node.create_path('ietf-l3-unicast-topology:l3-node-attributes')
+        #no se que va en cada atributo
+        node_attributes.create_path('name',)
+        node_attributes.create_path('flag',)
+        node_attributes.create_path('router-id',)
+        prefix = node_attributes.create_path('prefix[prefix="{:s}"]'.format())
+        prefix.create_path('prefix',)
+        prefix.create_path('metric',)
+        prefix.create_path('flag',)
+
+
+        for endpoint in device.device_endpoints:
+            endpoint_name = endpoint.name
+            if endpoint_name in IGNORE_ENDPOINT_NAMES: continue
+            
+            tp = node.create_path('ietf-network-topology:termination-point[tp-id="{:s}"]'.format(endpoint_name))
+            tp.create_path('tp-id', endpoint_name)
+            #supporting termination point?
+            tp_attributes = tp.create_path('ietf-l3-unicast-topology:l3-termination-point-attributes')
+            tp_attributes.create_path('termination-point-type',endpoint.endpoint_type) 
+
+    def compose_link(self, link_name : Any, link_specs : Link, name_mappings : NameMappings, network : Any
+    ) -> None:
+        links = network.create_path('ietf-network-topology:link[link-id="{:s}"]'.format(link_name))
+        links.create_path('link-id', link_name)
+        src_endpoint_id = link_specs.link_endpoint_ids[0]
+
+        source = links.create_path('source')
+        source.create_path('source_node', name_mappings.get_device_name(src_endpoint_id.device_id))
+        source.create_path('source_tp', name_mappings.get_endpoint_name(src_endpoint_id))
+
+        dst_endpoint_id = link_specs.link_endpoint_ids[-1]
+
+        destination = links.create_path('destination')
+        destination.create_path('dest_node', name_mappings.get_device_name(dst_endpoint_id.device_id))
+        destination.create_path('dest_tp', name_mappings.get_endpoint_name(dst_endpoint_id))
+    
+        #supporting-link???
+
+        link_attributes = links.create_path('ietf-l3-unicast-topology:l3-link-attributes')
+        #no se que atributos poner
+        link_attributes.create_path('name',)
+        link_attributes.create_path('flag',)
+        link_attributes.create_path('metric',)
+
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/__init__.py
new file mode 100644
index 000000000..a1966f23f
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/__init__.py
@@ -0,0 +1,42 @@
+# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
+#
+# 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.
+
+# RFC 8795 - YANG Data Model for Traffic Engineering (TE) Topologies
+# Ref: https://datatracker.ietf.org/doc/html/rfc8795
+
+# RFC 8776 - Common YANG Data Types for Traffic Engineering
+# Ref: https://datatracker.ietf.org/doc/html/rfc8776
+
+# RFC 8345 - A YANG Data Model for Network Topologies
+# Ref: https://datatracker.ietf.org/doc/html/rfc8345
+
+# RFC 6991 - Common YANG Data Types
+# Ref: https://datatracker.ietf.org/doc/html/rfc6991
+
+# RFC draft-ietf-ccamp-eth-client-te-topo-yang-05 - A YANG Data Model for Ethernet TE Topology
+# Ref: https://datatracker.ietf.org/doc/draft-ietf-ccamp-eth-client-te-topo-yang/
+
+# RFC draft-ietf-ccamp-client-signal-yang-10 - A YANG Data Model for Transport Network Client Signals
+# Ref: https://datatracker.ietf.org/doc/draft-ietf-ccamp-client-signal-yang/
+
+from nbi.service.rest_server.RestServer import RestServer
+from nbi.service.rest_server.nbi_plugins.ietf_network_new.Networks import Networks
+
+URL_PREFIX = '/restconf/data/ietf-network:networks'
+
+
+def register_ietf_network(rest_server : RestServer):
+    rest_server.add_resource(Networks, URL_PREFIX)
+
+    
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/iana-routing-types@2017-12-04.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/iana-routing-types@2017-12-04.yang
new file mode 100644
index 000000000..250cba4b6
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/iana-routing-types@2017-12-04.yang
@@ -0,0 +1,473 @@
+   module iana-routing-types {
+     namespace "urn:ietf:params:xml:ns:yang:iana-routing-types";
+     prefix iana-rt-types;
+
+     organization
+       "IANA";
+     contact
+       "Internet Assigned Numbers Authority
+
+        Postal: ICANN
+                12025 Waterfront Drive, Suite 300
+                Los Angeles, CA  90094-2536
+                United States of America
+        Tel:    +1 310 301 5800
+        <mailto:iana@iana.org>";
+
+     description
+       "This module contains a collection of YANG data types
+        considered defined by IANA and used for routing
+        protocols.
+
+        Copyright (c) 2017 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
+        (https://trustee.ietf.org/license-info).
+
+        This version of this YANG module is part of RFC 8294; see
+        the RFC itself for full legal notices.";
+
+      revision 2017-12-04 {
+        description "Initial revision.";
+        reference
+          "RFC 8294: Common YANG Data Types for the Routing Area.
+           Section 4.";
+     }
+
+     /*** Collection of IANA types related to routing ***/
+     /*** IANA Address Family enumeration ***/
+
+     typedef address-family {
+       type enumeration {
+         enum ipv4 {
+           value 1;
+           description
+             "IPv4 Address Family.";
+         }
+
+         enum ipv6 {
+           value 2;
+           description
+             "IPv6 Address Family.";
+         }
+
+         enum nsap {
+           value 3;
+           description
+             "OSI Network Service Access Point (NSAP) Address Family.";
+         }
+
+         enum hdlc {
+           value 4;
+           description
+             "High-Level Data Link Control (HDLC) Address Family.";
+         }
+
+         enum bbn1822 {
+           value 5;
+           description
+             "Bolt, Beranek, and Newman Report 1822 (BBN 1822)
+              Address Family.";
+         }
+
+         enum ieee802 {
+           value 6;
+           description
+             "IEEE 802 Committee Address Family
+              (aka Media Access Control (MAC) address).";
+         }
+
+         enum e163 {
+           value 7;
+           description
+             "ITU-T E.163 Address Family.";
+         }
+
+         enum e164 {
+           value 8;
+           description
+             "ITU-T E.164 (Switched Multimegabit Data Service (SMDS),
+              Frame Relay, ATM) Address Family.";
+         }
+
+         enum f69 {
+           value 9;
+           description
+             "ITU-T F.69 (Telex) Address Family.";
+         }
+
+         enum x121 {
+           value 10;
+           description
+             "ITU-T X.121 (X.25, Frame Relay) Address Family.";
+         }
+
+         enum ipx {
+           value 11;
+           description
+             "Novell Internetwork Packet Exchange (IPX)
+              Address Family.";
+         }
+
+         enum appletalk {
+           value 12;
+           description
+             "Apple AppleTalk Address Family.";
+         }
+
+         enum decnet-iv {
+           value 13;
+           description
+             "Digital Equipment DECnet Phase IV Address Family.";
+         }
+
+         enum vines {
+           value 14;
+           description
+             "Banyan Vines Address Family.";
+         }
+
+         enum e164-nsap {
+           value 15;
+           description
+             "ITU-T E.164 with NSAP sub-address Address Family.";
+         }
+
+         enum dns {
+           value 16;
+           description
+             "Domain Name System (DNS) Address Family.";
+         }
+
+         enum distinguished-name {
+           value 17;
+           description
+             "Distinguished Name Address Family.";
+         }
+
+         enum as-num {
+           value 18;
+           description
+             "Autonomous System (AS) Number Address Family.";
+         }
+
+         enum xtp-v4 {
+           value 19;
+           description
+             "Xpress Transport Protocol (XTP) over IPv4
+              Address Family.";
+         }
+
+         enum xtp-v6 {
+           value 20;
+           description
+             "XTP over IPv6 Address Family.";
+         }
+
+         enum xtp-native {
+           value 21;
+           description
+             "XTP native mode Address Family.";
+         }
+
+         enum fc-port {
+           value 22;
+           description
+             "Fibre Channel (FC) World-Wide Port Name Address Family.";
+         }
+
+         enum fc-node {
+           value 23;
+           description
+             "FC World-Wide Node Name Address Family.";
+         }
+
+         enum gwid {
+           value 24;
+           description
+             "ATM Gateway Identifier (GWID) Number Address Family.";
+         }
+
+         enum l2vpn {
+           value 25;
+           description
+             "Layer 2 VPN (L2VPN) Address Family.";
+         }
+
+         enum mpls-tp-section-eid {
+           value 26;
+           description
+             "MPLS Transport Profile (MPLS-TP) Section Endpoint
+              Identifier Address Family.";
+         }
+
+         enum mpls-tp-lsp-eid {
+           value 27;
+           description
+             "MPLS-TP Label Switched Path (LSP) Endpoint Identifier
+              Address Family.";
+         }
+
+         enum mpls-tp-pwe-eid {
+           value 28;
+           description
+             "MPLS-TP Pseudowire Endpoint Identifier Address Family.";
+         }
+
+         enum mt-v4 {
+           value 29;
+           description
+             "Multi-Topology IPv4 Address Family.";
+         }
+
+         enum mt-v6 {
+           value 30;
+           description
+             "Multi-Topology IPv6 Address Family.";
+         }
+
+         enum eigrp-common-sf {
+           value 16384;
+           description
+             "Enhanced Interior Gateway Routing Protocol (EIGRP)
+              Common Service Family Address Family.";
+         }
+
+         enum eigrp-v4-sf {
+           value 16385;
+           description
+             "EIGRP IPv4 Service Family Address Family.";
+         }
+
+         enum eigrp-v6-sf {
+           value 16386;
+           description
+             "EIGRP IPv6 Service Family Address Family.";
+         }
+
+         enum lcaf {
+           value 16387;
+           description
+             "Locator/ID Separation Protocol (LISP)
+              Canonical Address Format (LCAF) Address Family.";
+         }
+
+         enum bgp-ls {
+           value 16388;
+           description
+             "Border Gateway Protocol - Link State (BGP-LS)
+              Address Family.";
+         }
+
+         enum mac-48 {
+           value 16389;
+           description
+             "IEEE 48-bit MAC Address Family.";
+         }
+
+         enum mac-64 {
+           value 16390;
+           description
+             "IEEE 64-bit MAC Address Family.";
+         }
+
+         enum trill-oui {
+           value 16391;
+           description
+             "Transparent Interconnection of Lots of Links (TRILL)
+              IEEE Organizationally Unique Identifier (OUI)
+              Address Family.";
+         }
+
+         enum trill-mac-24 {
+           value 16392;
+           description
+             "TRILL final 3 octets of 48-bit MAC Address Family.";
+         }
+
+         enum trill-mac-40 {
+           value 16393;
+           description
+             "TRILL final 5 octets of 64-bit MAC Address Family.";
+         }
+
+         enum ipv6-64 {
+           value 16394;
+           description
+             "First 8 octets (64 bits) of IPv6 address
+              Address Family.";
+         }
+
+         enum trill-rbridge-port-id {
+           value 16395;
+           description
+             "TRILL Routing Bridge (RBridge) Port ID Address Family.";
+         }
+
+         enum trill-nickname {
+           value 16396;
+           description
+             "TRILL Nickname Address Family.";
+         }
+       }
+
+       description
+         "Enumeration containing all the IANA-defined
+          Address Families.";
+
+     }
+
+     /*** Subsequent Address Family Identifiers (SAFIs) ***/
+     /*** for multiprotocol BGP enumeration ***/
+
+     typedef bgp-safi {
+       type enumeration {
+         enum unicast-safi {
+           value 1;
+           description
+             "Unicast SAFI.";
+         }
+
+         enum multicast-safi {
+           value 2;
+           description
+             "Multicast SAFI.";
+         }
+
+         enum labeled-unicast-safi {
+           value 4;
+           description
+             "Labeled Unicast SAFI.";
+         }
+
+         enum multicast-vpn-safi {
+           value 5;
+           description
+             "Multicast VPN SAFI.";
+         }
+
+         enum pseudowire-safi {
+           value 6;
+           description
+             "Multi-segment Pseudowire VPN SAFI.";
+         }
+
+         enum tunnel-encap-safi {
+           value 7;
+           description
+             "Tunnel Encap SAFI.";
+         }
+
+         enum mcast-vpls-safi {
+           value 8;
+           description
+             "Multicast Virtual Private LAN Service (VPLS) SAFI.";
+         }
+
+         enum tunnel-safi {
+           value 64;
+           description
+             "Tunnel SAFI.";
+         }
+
+         enum vpls-safi {
+           value 65;
+           description
+             "VPLS SAFI.";
+         }
+
+         enum mdt-safi {
+           value 66;
+           description
+             "Multicast Distribution Tree (MDT) SAFI.";
+         }
+
+         enum v4-over-v6-safi {
+           value 67;
+           description
+             "IPv4 over IPv6 SAFI.";
+         }
+
+         enum v6-over-v4-safi {
+           value 68;
+           description
+             "IPv6 over IPv4 SAFI.";
+         }
+
+         enum l1-vpn-auto-discovery-safi {
+           value 69;
+           description
+             "Layer 1 VPN Auto-Discovery SAFI.";
+         }
+
+         enum evpn-safi {
+           value 70;
+           description
+             "Ethernet VPN (EVPN) SAFI.";
+         }
+
+         enum bgp-ls-safi {
+           value 71;
+           description
+             "BGP-LS SAFI.";
+         }
+
+         enum bgp-ls-vpn-safi {
+           value 72;
+           description
+             "BGP-LS VPN SAFI.";
+         }
+
+         enum sr-te-safi {
+           value 73;
+           description
+             "Segment Routing - Traffic Engineering (SR-TE) SAFI.";
+         }
+
+         enum labeled-vpn-safi {
+           value 128;
+           description
+             "MPLS Labeled VPN SAFI.";
+         }
+
+         enum multicast-mpls-vpn-safi {
+           value 129;
+           description
+             "Multicast for BGP/MPLS IP VPN SAFI.";
+         }
+
+         enum route-target-safi {
+           value 132;
+           description
+             "Route Target SAFI.";
+         }
+
+         enum ipv4-flow-spec-safi {
+           value 133;
+           description
+             "IPv4 Flow Specification SAFI.";
+         }
+
+         enum vpnv4-flow-spec-safi {
+           value 134;
+           description
+             "IPv4 VPN Flow Specification SAFI.";
+         }
+
+         enum vpn-auto-discovery-safi {
+           value 140;
+           description
+             "VPN Auto-Discovery SAFI.";
+         }
+       }
+       description
+         "Enumeration for BGP SAFI.";
+       reference
+         "RFC 4760: Multiprotocol Extensions for BGP-4.";
+     }
+   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-te-topology@2023-09-28.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-te-topology@2023-09-28.yang
new file mode 100644
index 000000000..b182f7f5a
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-te-topology@2023-09-28.yang
@@ -0,0 +1,2275 @@
+   module ietf-eth-te-topology {
+     yang-version 1.1;
+     namespace "urn:ietf:params:xml:ns:yang:ietf-eth-te-topology";
+     prefix "etht";
+
+     import ietf-network {
+       prefix "nw";
+       reference
+         "RFC 8345: A YANG Data Model for Network Topologies";
+     }
+
+     import ietf-network-topology {
+       prefix "nt";
+       reference
+         "RFC 8345: A YANG Data Model for Network Topologies";
+     }
+
+     import ietf-te-topology {
+       prefix "tet";
+       reference
+         "RFC 8795: YANG Data Model for Traffic Engineering
+          (TE) Topologies";
+     }
+
+     import ietf-yang-types {
+       prefix "yang";
+       reference
+        "RFC 6991: Common YANG Data Types";
+     }
+
+     import ietf-eth-tran-types {
+       prefix "etht-types";
+       reference
+        "RFC YYYY: A YANG Data Model for Transport Network Client
+        Signals";
+     }
+     // RFC Ed.: replace YYYY with actual RFC number, update date
+     // information and remove this note
+
+     organization
+       "IETF CCAMP Working Group";
+     contact
+       "WG Web: <https://datatracker.ietf.org/wg/ccamp/>
+        WG List: <mailto:ccamp@ietf.org>
+
+        Editor: Haomian Zheng
+          <mailto:zhenghaomian@huawei.com>
+
+        Editor: Italo Busi
+          <mailto:italo.busi@huawei.com>
+
+        Editor: Aihua Guo
+          <mailto:aihuaguo.ietf@gmail.com>
+
+        Editor: Yunbin Xu
+          <mailto:xuyunbin@caict.ac.cn>
+
+        Editor: Yang Zhao
+          <mailto:zhaoyangyjy@chinamobile.com>
+
+        Editor: Xufeng Liu
+          <mailto:xufeng.liu.ietf@gmail.com>";
+
+     description
+       "This module defines a YANG data model for describing
+        layer-2 Ethernet transport topologies. The model fully
+        conforms to the Network Management Datastore
+        Architecture (NMDA).
+
+        Copyright (c) 2023 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 Revised BSD License
+        set forth in Section 4.c of the IETF Trust's Legal Provisions
+        Relating to IETF Documents
+        (https://trustee.ietf.org/license-info).
+
+        This version of this YANG module is part of RFC XXXX; see
+        the RFC itself for full legal notices.
+
+        The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
+        NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
+        'MAY', and 'OPTIONAL' in this document are to be interpreted as
+        described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
+        they appear in all capitals, as shown here.";
+
+     revision 2023-09-28 {
+       description
+         "Initial Revision";
+       reference
+         "RFC XXXX: A YANG Data Model for Ethernet TE Topology";
+       // RFC Ed.: replace XXXX with actual RFC number, update date
+       // information and remove this note
+     }
+
+     /*
+      * Groupings
+      */
+
+     grouping label-range-info {
+       description
+         "Ethernet technology-specific label range related
+         information with a presence container indicating that the
+         label range is an Ethernet technology-specific label range.
+
+         This grouping SHOULD be used together with the
+         eth-label and eth-label-step groupings to provide Ethernet
+         technology-specific label information to the models which
+         use the label-restriction-info grouping defined in the module
+         ietf-te-types.";
+
+       container ethernet-label-range {
+         presence
+           "Indicates the label range is an Ethernet label range.
+
+           This container must not be present if there are other
+           presence containers or attributes indicating another type
+           of label range.";
+         description
+           "Ethernet-specific label range related information.";
+
+         uses etht-types:eth-label-restriction;
+       }
+     }
+
+     grouping eth-tran-topology-type {
+       description
+         "Identifies the Ethernet Transport topology type";
+
+       container eth-tran-topology {
+         presence "indicates a topology type of
+                   Ethernet Transport Network.";
+         description "Eth transport topology type";
+       }
+     }
+
+     grouping ltp-bandwidth-profiles {
+       description
+         "A grouping which represents the bandwidth profile(s)
+         for the ETH LTP.";
+
+       choice direction {
+         description
+           "Whether the bandwidth profiles are symmetrical or
+            asymmetrical";
+         case symmetrical {
+           description
+             "The same bandwidth profile is used to describe the ingress
+              and the egress bandwidth profile.";
+
+           container ingress-egress-bandwidth-profile {
+             description
+               "The bandwith profile used in the ingress and egress
+                direction.";
+             uses etht-types:etht-bandwidth-profiles;
+           }
+         }
+         case asymmetrical {
+           description
+             "Different ingress and egress bandwidth profiles
+              can be specified.";
+           container ingress-bandwidth-profile {
+             description
+               "The bandwidth profile used in the ingress direction.";
+             uses etht-types:etht-bandwidth-profiles;
+           }
+           container egress-bandwidth-profile {
+             description
+               "The bandwidth profile used in the egress direction.";
+             uses etht-types:etht-bandwidth-profiles;
+           }
+         }
+       }
+     }
+     grouping eth-ltp-attributes {
+       description
+         "Ethernet transport Link Termination Point (LTP) attributes";
+
+       leaf ltp-mac-address {
+         type yang:mac-address;
+         description
+           "The MAC address of the Ethernet LTP.";
+       }
+       leaf port-vlan-id {
+         type etht-types:vlanid;
+         description
+           "The Port VLAN ID of the Ethernet LTP.";
+         reference
+           "IEEE 802.1Q: Virtual Bridged Local Area Networks";
+       }
+       leaf maximum-frame-size {
+         type uint16 {
+           range "64 .. 65535";
+         }
+         description
+           "Maximum frame size";
+         reference
+           "IEEE 802.1Q: Virtual Bridged Local Area Networks";
+       }
+         uses ltp-bandwidth-profiles;
+     }
+
+     grouping svc-vlan-classification {
+       description
+         "Grouping defining the capabilities for VLAN classification.";
+
+       leaf-list supported-tag-types {
+         type etht-types:eth-tag-classify;
+         description
+           "List of VLAN tag types that can be used for the VLAN
+            classification. In case VLAN classification is not
+            supported, the list is empty.";
+       }
+       leaf vlan-bundling {
+         type boolean;
+         description
+           "In case VLAN classification is supported, indicates whether
+           VLAN bundling classification is also supported.";
+         reference
+           "MEF 10.3: Ethernet Services Attributes Phase 3";
+       }
+       leaf vlan-range {
+         type etht-types:vid-range-type;
+         description
+           "In case VLAN classification is supported, indicates the
+           of available VLAN ID values.";
+       }
+     }
+
+     grouping svc-vlan-push {
+       description
+         "Grouping defining the capabilities for VLAN push or swap
+          operations.";
+
+       leaf-list supported-tag-types {
+         type etht-types:eth-tag-type;
+         description
+           "List of VLAN tag types that can be used to push or swap a
+            VLAN tag. In case VLAN push/swap is not supported, the list
+            is empty.";
+         reference
+           "IEEE 802.1Q: Virtual Bridged Local Area Networks";
+       }
+       leaf vlan-range {
+         type etht-types:vid-range-type;
+         description
+           "In case VLAN push/swap operation is supported, the range
+           of available VLAN ID values.";
+       }
+     }
+
+     grouping eth-svc-attributes {
+       description
+         "Ethernet Link Termination Point (LTP) service attributes.";
+
+       container supported-classification {
+         description
+           "Service classification capability supported by the
+           Ethernet Link Termination Point (LTP).";
+
+         leaf port-classification {
+           type boolean;
+           description
+             "Indicates that the ETH LTP support port-based service
+             classification.";
+         }
+         container vlan-classification {
+           description
+             "Service classification capabilities based on the VLAN
+              tag(s) supported by the ETH LTP.";
+           leaf vlan-tag-classification {
+             type boolean;
+             description
+               "Indicates that the ETH LTP supports VLAN service
+               classification.";
+           }
+           container outer-tag {
+             description
+               "Service classification capabilities based on the outer
+                VLAN tag, supported by the ETH LTP.";
+             uses svc-vlan-classification;
+           }
+           container second-tag {
+             description
+               "Service classification capabilities based on the second
+                VLAN tag, supported by the ETH LTP.";
+             leaf second-tag-classification {
+               type boolean;
+               must ". = 'false' or "
+                  + "../../vlan-tag-classification = 'true'" {
+                 description
+                   "VLAN service classification based on the second
+                   VLAN tag can be supported only when VLAN service
+                   classification";
+               }
+               description
+                 "Indicates that the ETH LTP support  VLAN service
+                  classification based on the second VLAN tag.";
+             }
+             uses svc-vlan-classification;
+           }
+         }
+       }
+
+       container supported-vlan-operations {
+         description
+           "Reports the VLAN operations supported by the ETH LTP.";
+
+         leaf asymmetrical-operations {
+           type boolean;
+           description
+             "Indicates whether the ETH LTP supports also asymmetrical
+              VLAN operations.It is assumed that symmetrical VLAN
+              operations are alwyas supported.";
+         }
+         leaf transparent-vlan-operations {
+           type boolean;
+           description
+             "Indicates that the ETH LTP supports transparent
+             operations.";
+         }
+         container vlan-pop {
+           description
+             "Indicates VLAN pop or swap operations capabilities.";
+
+           leaf vlan-pop-operations {
+             type boolean;
+             description
+               "Indicates that the ETH LTP supports VLAN pop or
+                swap operations.";
+           }
+           leaf max-pop-tags {
+             type uint8 {
+               range "1..2";
+             }
+             description
+               "Indicates the maximum number of tags that can be
+                popped/swapped.";
+           }
+         }
+         container vlan-push {
+           description
+             "Indicates VLAN push or swap operations capabilities.";
+
+           leaf vlan-push-operation {
+             type boolean;
+             description
+               "Indicates that the ETH LTP supports VLAN push or
+                swap operations.";
+           }
+           container outer-tag {
+             description
+               "Indicates the supported VLAN operation capabilities
+                on the outer VLAN tag.";
+             uses svc-vlan-push;
+           }
+           container second-tag {
+             description
+               "Indicates the supported VLAN operation capabilities
+                on the second VLAN tag.";
+             leaf push-second-tag {
+               type boolean;
+               description
+                 "Indicates that the ETH LTP supports VLAN push or swap
+                  operations for the second VLAN tag.";
+             }
+             uses svc-vlan-push;
+           }
+         }
+       }
+     }
+
+     /*
+      * Data nodes
+      */
+
+     augment "/nw:networks/nw:network/nw:network-types/"
+           + "tet:te-topology" {
+       description
+         "Augment network types to include ETH transport newtork";
+
+       uses eth-tran-topology-type;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te"
+           + "/tet:te-node-attributes" {
+       when "../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description "Augment only for Ethernet transport network.";
+       }
+       description "Augment TE node attributes.";
+       container eth-node {
+         presence "The TE node is an Ethernet node.";
+         description
+           "Presence container used only to indicate that the TE node
+           is an Ethernet node.";
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link" {
+       when "../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description "Augment only for Ethernet transport network.";
+       }
+       description "Augment link configuration";
+
+       container eth-svc {
+         presence
+           "When present, indicates that the Link supports Ethernet
+           client signals.";
+         description
+           "Presence container used only to indicate that the link
+           supports Ethernet client signals.";
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/nt:termination-point" {
+       when "../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description "Augment only for Ethernet transport network.";
+       }
+       description
+         "Augment ETH LTP attributes";
+
+       container eth-svc {
+         presence
+           "When present, indicates that the Link Termination Point
+           (LTP) supports Ethernet client signals.";
+         description
+           "ETH LTP Service attributes.";
+
+         uses eth-svc-attributes;
+       }
+       container eth-link-tp {
+         description
+           "Attributes of the Ethernet Link Termination Point (LTP).";
+         uses eth-ltp-attributes;
+       }
+     }
+
+     /*
+      * Augment TE bandwidth
+      */
+
+     augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
+           + "tet:te/"
+           + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
+           + "tet:te-bandwidth/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment maximum LSP TE bandwidth for the link termination
+          point (LTP).";
+       case eth {
+         uses etht-types:eth-bandwidth;
+       }
+     }
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE bandwidth path constraints of the TE node
+          connectivity matrices.";
+       case eth {
+         uses etht-types:eth-bandwidth;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE bandwidth path constraints of the
+          connectivity matrix entry.";
+       case eth {
+         uses etht-types:eth-bandwidth;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE bandwidth path constraints of the TE node
+          connectivity matrices information source.";
+       case eth {
+         uses etht-types:eth-bandwidth;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE bandwidth path constraints of the
+          connectivity matrix entry information source";
+       case eth {
+         uses etht-types:eth-bandwidth;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:client-layer-adaptation/tet:switching-capability/"
+           + "tet:te-bandwidth/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment client TE bandwidth of the tunnel termination point
+          (TTP)";
+       case eth {
+         uses etht-types:eth-bandwidth;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/tet:path-constraints/"
+           + "tet:te-bandwidth/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE bandwidth path constraints for the TTP
+          Local Link Connectivities.";
+       case eth {
+         uses etht-types:eth-bandwidth;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/tet:path-constraints/"
+           + "tet:te-bandwidth/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE bandwidth path constraints for the TTP
+          Local Link Connectivity entry.";
+       case eth {
+         uses etht-types:eth-bandwidth;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
+           + "tet:te-bandwidth/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment maximum LSP TE bandwidth for the TE link.";
+       case eth {
+         uses etht-types:eth-bandwidth;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:max-link-bandwidth/"
+           + "tet:te-bandwidth" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment maximum TE bandwidth for the TE link";
+       uses etht-types:eth-bandwidth;
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:max-resv-link-bandwidth/"
+           + "tet:te-bandwidth" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment maximum reservable TE bandwidth for the TE link";
+       uses etht-types:eth-bandwidth;
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:unreserved-bandwidth/"
+           + "tet:te-bandwidth" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment unreserved TE bandwidth for the TE Link";
+       uses etht-types:eth-bandwidth;
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:interface-switching-capability/"
+           + "tet:max-lsp-bandwidth/"
+           + "tet:te-bandwidth/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment maximum LSP TE bandwidth for the TE link
+          information source";
+       case eth {
+         uses etht-types:eth-bandwidth;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:max-link-bandwidth/"
+           + "tet:te-bandwidth" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment maximum TE bandwidth for the TE link
+          information source";
+       uses etht-types:eth-bandwidth;
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:max-resv-link-bandwidth/"
+           + "tet:te-bandwidth" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment maximum reservable TE bandwidth for the TE link
+          information-source";
+       uses etht-types:eth-bandwidth;
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:unreserved-bandwidth/"
+           + "tet:te-bandwidth" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment unreserved TE bandwidth of the TE link
+          information source";
+       uses etht-types:eth-bandwidth;
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:interface-switching-capability/"
+           + "tet:max-lsp-bandwidth/"
+           + "tet:te-bandwidth/tet:technology" {
+       description
+         "Augment maximum LSP TE bandwidth of the TE link
+          template";
+       case eth {
+         uses etht-types:eth-bandwidth;
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:max-link-bandwidth/"
+           + "tet:te-bandwidth" {
+       description
+         "Augment maximum TE bandwidth the TE link template";
+       uses etht-types:eth-bandwidth;
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:max-resv-link-bandwidth/"
+           + "tet:te-bandwidth" {
+       description
+         "Augment maximum reservable TE bandwidth for the TE link
+          template.";
+       uses etht-types:eth-bandwidth;
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:unreserved-bandwidth/"
+           + "tet:te-bandwidth" {
+       description
+         "Augment unreserved TE bandwidth the TE link template";
+       uses etht-types:eth-bandwidth;
+     }
+
+     /*
+      * Augment TE label range information
+      */
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE label range information for the TE node
+          connectivity matrices.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:from/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE label range information for the source LTP
+          of the connectivity matrix entry.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:to/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE label range information for the destination LTP
+          of the connectivity matrix entry.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:connectivity-matrices/tet:label-restrictions/"
+           + "tet:label-restriction" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE label range information for the TE node
+          connectivity matrices information source.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:from/tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE label range information for the source LTP
+          of the connectivity matrix entry information source.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:to/tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE label range information for the destination LTP
+          of the connectivity matrix entry information source.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE label range information for the TTP
+          Local Link Connectivities.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE label range information for the TTP
+          Local Link Connectivity entry.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE label range information for the TE link.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+           Ethernet topology type.";
+       }
+       description
+         "Augment TE label range information for the TE link
+          information source.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       description
+         "Augment TE label range information for the TE link template.";
+       uses label-range-info;
+     }
+
+     /*
+      * Augment TE label.
+      */
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range start for the TE node
+          connectivity matrices";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:label-restrictions/"
+           + "tet:label-restriction/tet:label-end/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range end for the TE node
+          connectivity matrices";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:label-restrictions/"
+           + "tet:label-restriction/tet:label-step/"
+           + "tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range step for the TE node
+          connectivity matrices";
+       case eth {
+         uses etht-types:eth-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:underlay/tet:primary-path/tet:path-element/"
+           + "tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path of the
+          TE node connectivity matrices";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:underlay/tet:backup-path/tet:path-element/"
+           + "tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path of the
+          TE node connectivity matrices";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-exclude-objects/"
+           + "tet:route-object-exclude-object/"
+           + "tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects excluded
+          by the path computation of the TE node connectivity
+          matrices";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-include-objects/"
+           + "tet:route-object-include-object/"
+           + "tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects included
+          by the path computation of the TE node connectivity
+          matrices";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:path-properties/tet:path-route-objects/"
+           + "tet:path-route-object/tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the computed path route objects
+          of the TE node connectivity matrices";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:from/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range start for the source LTP
+          of the connectivity matrix entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:from/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range end for the source LTP
+          of the connectivity matrix entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:from/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/"
+           + "tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range step for the source LTP
+          of the connectivity matrix entry.";
+       case eth {
+         uses etht-types:eth-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:to/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range start for the destination LTP
+          of the connectivity matrix entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:to/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range end for the destination LTP
+          of the connectivity matrix entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:to/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/"
+           + "tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range step for the destination LTP
+          of the connectivity matrix entry.";
+       case eth {
+         uses etht-types:eth-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:underlay/tet:primary-path/tet:path-element/"
+           + "tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path
+          of the connectivity matrix entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:underlay/tet:backup-path/tet:path-element/"
+           + "tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path
+          of the connectivity matrix entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:optimizations/"
+           + "tet:algorithm/tet:metric/tet:optimization-metric/"
+           + "tet:explicit-route-exclude-objects/"
+           + "tet:route-object-exclude-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects excluded
+          by the path computation of the connectivity matrix entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:optimizations/"
+           + "tet:algorithm/tet:metric/tet:optimization-metric/"
+           + "tet:explicit-route-include-objects/"
+           + "tet:route-object-include-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects included
+          by the path computation of the connectivity matrix entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:path-properties/tet:path-route-objects/"
+           + "tet:path-route-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the computed path route objects
+          of the connectivity matrix entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:connectivity-matrices/tet:label-restrictions/"
+           + "tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range start for the TE node connectivity
+          matrices information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:connectivity-matrices/tet:label-restrictions/"
+           + "tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range end for the TE node connectivity
+          matrices information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:connectivity-matrices/tet:label-restrictions/"
+           + "tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       when "../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range step for the TE node connectivity
+          matrices information source.";
+       case eth {
+         uses etht-types:eth-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path
+          of the TE node connectivity matrices of the information
+          source entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path
+          of the TE node connectivity matrices of the information
+          source entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-exclude-objects/"
+           + "tet:route-object-exclude-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects excluded
+          by the path computation of the TE node connectivity matrices
+          information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-include-objects/"
+           + "tet:route-object-include-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects included
+          by the path computation of the TE node connectivity matrices
+          information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:path-properties/tet:path-route-objects/"
+           + "tet:path-route-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the computed path route objects
+          of the TE node connectivity matrices information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:from/tet:label-restrictions/"
+           + "tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range start for the source LTP
+          of the connectivity matrix entry information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:from/tet:label-restrictions/"
+           + "tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range end for the source LTP
+          of the connectivity matrix entry information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:from/tet:label-restrictions/"
+           + "tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range step for the source LTP
+          of the connectivity matrix entry information source.";
+       case eth {
+         uses etht-types:eth-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:to/tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range start for the destination LTP
+          of the connectivity matrix entry information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:to/tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range end for the destination LTP
+          of the connectivity matrix entry information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:to/tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range step for the destination LTP
+          of the connectivity matrix entry information source.";
+       case eth {
+         uses etht-types:eth-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path
+          of the connectivity matrix entry information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path
+          of the connectivity matrix entry information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-exclude-objects/"
+           + "tet:route-object-exclude-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects excluded
+          by the path computation of the connectivity matrix entry
+          information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-include-objects/"
+           + "tet:route-object-include-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects included
+          by the path computation of the connectivity matrix entry
+          information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:path-properties/tet:path-route-objects/"
+           + "tet:path-route-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the computed path route objects
+          of the connectivity matrix entry information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+         + "tet:tunnel-termination-point/"
+         + "tet:local-link-connectivities/"
+         + "tet:label-restrictions/tet:label-restriction/"
+         + "tet:label-start/"
+         + "tet:te-label/tet:technology" {
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range start for the TTP
+          Local Link Connectivities.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/"
+           + "tet:te-label/tet:technology"{
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range end for the TTP
+          Local Link Connectivities.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/"
+           + "tet:technology"{
+       when "../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range step for the TTP
+          Local Link Connectivities.";
+       case eth {
+         uses etht-types:eth-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path
+          of the TTP Local Link Connectivities.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path
+          of the TTP Local Link Connectivities.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-exclude-objects/"
+           + "tet:route-object-exclude-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects excluded
+          by the path computation of the TTP Local Link
+          Connectivities.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-include-objects/"
+           + "tet:route-object-include-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects included
+          by the path computation of the TTP Local Link
+          Connectivities.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:path-properties/tet:path-route-objects/"
+           + "tet:path-route-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the computed path route objects
+          of the TTP Local Link Connectivities.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range start for the TTP
+          Local Link Connectivity entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range end for the TTP
+          Local Link Connectivity entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range step for the TTP
+          Local Link Connectivity entry.";
+       case eth {
+         uses etht-types:eth-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path
+          of the TTP Local Link Connectivity entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path
+          of the TTP Local Link Connectivity entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-exclude-objects/"
+           + "tet:route-object-exclude-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects excluded
+          by the path computation of the TTP Local Link
+          Connectivity entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-include-objects/"
+           + "tet:route-object-include-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects included
+          by the path computation of the TTP Local Link
+          Connectivity entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:path-properties/tet:path-route-objects/"
+           + "tet:path-route-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the computed path route objects
+          of the TTP Local Link Connectivity entry.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path
+          of the TE link.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path
+          of the TE link.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range start for the TE link.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range end for the TE link.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range step for the TE link.";
+       case eth {
+         uses etht-types:eth-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range start for the TE link
+          information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range end for the TE link
+          information source.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "etht:eth-tran-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            Ethernet topology type.";
+       }
+       description
+         "Augment TE label range step for the TE link
+          information source.";
+       case eth {
+         uses etht-types:eth-label-step;
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       description
+         "Augment TE label hop for the underlay primary path
+          of the TE link template.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       description
+         "Augment TE label hop for the underlay backup path
+          of the TE link template.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       description
+         "Augment TE label range start for the TE link template.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       description
+         "Augment TE label range end for the TE link template.";
+       case eth {
+         uses etht-types:eth-label;
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       description
+         "Augment TE label range step for the TE link template.";
+       case eth {
+         uses etht-types:eth-label-step;
+       }
+     }
+
+   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-service@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-service@2023-10-23.yang
new file mode 100644
index 000000000..222066adf
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-service@2023-10-23.yang
@@ -0,0 +1,1004 @@
+   module ietf-eth-tran-service {
+     yang-version 1.1;
+     namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-service";
+
+     prefix "ethtsvc";
+     import ietf-yang-types {
+       prefix "yang";
+       reference "RFC 6991 - Common YANG Data Types";
+     }
+
+     import ietf-network {
+       prefix "nw";
+       reference "RFC8345 - A YANG Data Model for Network Topologies";
+     }
+
+     import ietf-network-topology {
+       prefix "nt";
+       reference "RFC8345 - A YANG Data Model for Network Topologies";
+     }
+
+     import ietf-te-types {
+       prefix "te-types";
+       reference "RFC 8776 - Traffic Engineering Common YANG Types";
+     }
+
+     import ietf-eth-tran-types {
+       prefix "etht-types";
+       reference "RFC XXXX - A YANG Data Model for Transport
+                  Network Client Signals";
+     }
+
+     import ietf-routing-types {
+       prefix "rt-types";
+       reference "RFC 8294 - Common YANG Data Types for the
+                  Routing Area";
+
+     }
+
+     import ietf-te {
+       prefix "te";
+       reference "RFC YYYY - A YANG Data Model for Traffic
+                  Engineering Tunnels and Interfaces";
+     }
+
+     organization
+       "Internet Engineering Task Force (IETF) CCAMP WG";
+     contact
+       "
+         WG List: <mailto:ccamp@ietf.org>
+
+         ID-draft editor:
+           Haomian Zheng (zhenghaomian@huawei.com);
+           Italo Busi (italo.busi@huawei.com);
+           Aihua Guo (aihuaguo.ietf@gmail.com);
+           Anton Snitser (antons@sedonasys.com);0
+           Francesco Lazzeri (francesco.lazzeri@ericsson.com);
+           Yunbin Xu (xuyunbin@caict.ac.cn);
+           Yang Zhao (zhaoyangyjy@chinamobile.com);
+           Xufeng Liu (xufeng.liu.ietf@gmail.com);
+           Giuseppe Fioccola (giuseppe.fioccola@huawei.com);
+           Chaode Yu (yuchaode@huawei.com)
+       ";
+
+     description
+       "This module defines a YANG data model for describing
+        the Ethernet services. The model fully conforms to the
+        Network Management Datastore Architecture (NMDA).
+
+        Copyright (c) 2021 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
+        (https://trustee.ietf.org/license-info).
+        This version of this YANG module is part of RFC XXXX; see
+        the RFC itself for full legal notices.";
+
+     revision 2023-10-23 {
+       description
+         "version -04 as an WG document";
+       reference
+         "draft-ietf-ccamp-client-signal-yang";
+     }
+
+     /*
+      * Groupings
+      */
+
+     grouping vlan-classification {
+       description
+         "A grouping which represents classification
+         on an 802.1Q VLAN tag.";
+
+       leaf tag-type {
+         type etht-types:eth-tag-classify;
+         description
+           "The tag type used for VLAN classification.";
+       }
+       choice individual-bundling-vlan {
+         description
+           "VLAN based classification can be individual
+            or bundling.";
+
+         case individual-vlan {
+           leaf vlan-value {
+             type etht-types:vlanid;
+             description
+               "VLAN ID value.";
+           }
+         }
+
+         case vlan-bundling {
+           leaf vlan-range {
+             type etht-types:vid-range-type;
+             description
+               "List of VLAN ID values.";
+           }
+         }
+       }
+     }
+
+     grouping vlan-write {
+       description
+         "A grouping which represents push/pop operations
+          of an 802.1Q VLAN tag.";
+
+       leaf tag-type {
+         type etht-types:eth-tag-type;
+         description
+           "The VLAN tag type to push/swap.";
+       }
+       leaf vlan-value {
+         type etht-types:vlanid;
+         description
+           "The VLAN ID value to push/swap.";
+       }
+   /*
+    * To be added: this attribute is used when:
+    * a) the ETH service has only one CoS (as in current version)
+    * b) as a default when a mapping between a given CoS value
+    *    and the PCP value is not defined (in future versions)
+    */
+       leaf default-pcp {
+         type uint8 {
+           range "0..7";
+         }
+         description
+           "The default Priority Code Point (PCP) value to push/swap";
+       }
+     }
+
+     grouping vlan-operations {
+       description
+         "A grouping which represents VLAN operations.";
+
+         leaf pop-tags {
+         type uint8 {
+           range "1..2";
+         }
+         description
+           "The number of VLAN tags to pop (or swap if used in
+            conjunction with push-tags)";
+       }
+       container push-tags {
+         description
+           "The VLAN tags to push (or swap if used in
+            conjunction with pop-tags)";
+
+         container outer-tag {
+           presence
+             "Indicates existence of the outermost VLAN tag to
+              push/swap";
+
+           description
+             "The outermost VLAN tag to push/swap.";
+
+           uses vlan-write;
+         }
+         container second-tag {
+         must
+           '../outer-tag/tag-type = "etht-types:s-vlan-tag-type" and ' +
+           'tag-type = "etht-types:c-vlan-tag-type"'
+           {
+
+             error-message
+               "
+                 When pushing/swapping two tags, the outermost tag must
+                 be specified and of S-VLAN type and the second
+                 outermost tag must be of C-VLAN tag type.
+               ";
+             description
+               "
+                 For IEEE 802.1Q interoperability, when pushing/swapping
+                 two tags, it is required that the outermost tag exists
+                 and is an S-VLAN, and the second outermost tag is a
+                 C-VLAN.
+               ";
+           }
+
+           presence
+             "Indicates existence of a second outermost VLAN tag to
+              push/swap";
+
+           description
+             "The second outermost VLAN tag to push/swap.";
+           uses vlan-write;
+         }
+       }
+     }
+
+     grouping named-or-value-bandwidth-profile {
+       description
+         "A grouping to configure a bandwdith profile either by
+          referencing a named bandwidth profile or by
+          configuring the values of the bandwidth profile attributes.";
+       choice style {
+         description
+           "Whether the bandwidth profile is named or defined by value";
+
+         case named {
+           description
+             "Named bandwidth profile.";
+           leaf bandwidth-profile-name {
+             type leafref {
+                path "/ethtsvc:etht-svc/ethtsvc:globals/"
+                + "ethtsvc:named-bandwidth-profiles/"
+                + "ethtsvc:bandwidth-profile-name";
+                }
+             description
+               "Name of the bandwidth profile.";
+           }
+         }
+         case value {
+           description
+             "Bandwidth profile configured by value.";
+           uses etht-types:etht-bandwidth-profiles;
+         }
+       }
+     }
+
+     grouping bandwidth-profiles {
+       description
+         "A grouping which represent bandwidth profile configuration.";
+
+       choice direction {
+         description
+           "Whether the bandwidth profiles are symmetrical or
+            asymmetrical";
+         case symmetrical {
+           description
+             "The same bandwidth profile is used to describe both
+              the ingress and the egress bandwidth profile.";
+           container ingress-egress-bandwidth-profile {
+             description
+               "The bandwdith profile used in both directions.";
+             uses named-or-value-bandwidth-profile;
+           }
+         }
+         case asymmetrical {
+           description
+             "Ingress and egress bandwidth profiles can be specified.";
+           container ingress-bandwidth-profile {
+             description
+               "The bandwdith profile used in the ingress direction.";
+             uses named-or-value-bandwidth-profile;
+           }
+           container egress-bandwidth-profile {
+             description
+               "The bandwdith profile used in the egress direction.";
+             uses named-or-value-bandwidth-profile;
+           }
+         }
+       }
+     }
+
+     grouping etht-svc-access-parameters {
+       description
+         "ETH services access parameters";
+
+       leaf access-node-id {
+         type te-types:te-node-id;
+         description
+           "The identifier of the access node in
+            the ETH TE topology.";
+       }
+
+       leaf access-node-uri {
+         type nw:node-id;
+         description
+           "The identifier of the access node in the network.";
+       }
+
+       leaf access-ltp-id {
+         type te-types:te-tp-id;
+         description
+           "The TE link termination point identifier, used
+            together with access-node-id to identify the
+            access LTP.";
+       }
+
+       leaf access-ltp-uri {
+         type nt:tp-id;
+         description
+           "The link termination point identifier in network topology,
+           used together with access-node-uri to identify the
+           access LTP.";
+       }
+
+       leaf access-role {
+         type identityref {
+           base etht-types:access-role;
+         }
+         description
+           "Indicate the role of access, e.g., working or protection. ";
+       }
+
+       container pm-config {
+         uses pm-config-grouping;
+         description
+         "This grouping is used to set the threshold value for
+         performance monitoring. ";
+       }
+
+       container state {
+         config false;
+         description
+         "The state is used to monitor the status of service. ";
+         leaf operational-state {
+           type identityref {
+             base te-types:tunnel-state-type;
+           }
+           description
+           "Indicating the operational state of client signal. ";
+         }
+         leaf provisioning-state {
+           type identityref {
+             base te-types:lsp-state-type;
+           }
+           description
+           "Indicating the provisional state of client signal,
+           especially when there is a change, i.e., revise, create. ";
+         }
+       }
+
+       leaf performance {
+         type identityref {
+           base etht-types:performance;
+         }
+         config false;
+         description
+           "Performance Monitoring for the service. ";
+       }
+
+     }
+
+     grouping etht-svc-tunnel-parameters {
+       description
+         "ETH services tunnel parameters.";
+       choice technology {
+         description
+           "Service multiplexing is optional and flexible.";
+
+         case native-ethernet {
+           /*
+            placeholder to support proprietary multiplexing
+            (for further discussion)
+           */
+           list eth-tunnels {
+             key name;
+             description
+               "ETH Tunnel list in native Ethernet scenario.";
+             uses tunnels-grouping;
+           }
+         }
+
+         case frame-base {
+           list otn-tunnels {
+             key name;
+             description
+               "OTN Tunnel list in Frame-based scenario.";
+             uses tunnels-grouping;
+           }
+         }
+
+         case mpls-tp {
+           container pw {
+             description
+               "Pseudowire information for Ethernet over MPLS-TP.";
+             uses pw-segment-grouping;
+           }
+         }
+       }
+
+   /*
+    * Open issue: can we constraints it to be used only with mp services?
+    */
+       leaf src-split-horizon-group {
+         type string;
+         description
+         "Identify a split horizon group at the Tunnel source TTP";
+       }
+       leaf dst-split-horizon-group {
+         type string;
+         description
+         "Identify a split horizon group at the Tunnel destination TTP";
+       }
+     }
+
+     grouping  etht-svc-pm-threshold-config {
+       description
+         "Configuraiton parameters for Ethernet service PM thresholds.";
+
+       leaf sending-rate-high {
+         type uint64;
+         description
+           "High threshold of packet sending rate in kbps.";
+       }
+       leaf sending-rate-low {
+         type uint64;
+         description
+           "Low threshold of packet sending rate in kbps.";
+       }
+       leaf receiving-rate-high {
+         type uint64;
+         description
+           "High threshold of packet receiving rate in kbps.";
+       }
+       leaf receiving-rate-low {
+         type uint64;
+         description
+           "Low threshold of packet receiving rate in kbps.";
+       }
+     }
+
+     grouping  etht-svc-pm-stats {
+       description
+         "Ethernet service PM statistics.";
+
+       leaf sending-rate-too-high {
+         type uint32;
+         description
+           "Counter that indicates the number of times the
+           sending rate is above the high threshold";
+       }
+       leaf sending-rate-too-low {
+         type uint32;
+         description
+           "Counter that indicates the number of times the
+           sending rate is below the low threshold";
+       }
+       leaf receiving-rate-too-high {
+         type uint32;
+         description
+           "Counter that indicates the number of times the
+           receiving rate is above the high threshold";
+       }
+       leaf receiving-rate-too-low {
+         type uint32;
+         description
+           "Counter that indicates the number of times the
+           receiving rate is below the low threshold";
+       }
+     }
+
+     grouping  etht-svc-instance-config {
+       description
+         "Configuraiton parameters for Ethernet services.";
+
+       leaf etht-svc-name {
+         type string;
+         description
+           "Name of the ETH service.";
+       }
+
+       leaf etht-svc-title {
+         type string;
+         description
+           "The Identifier of the ETH service.";
+       }
+
+       leaf user-label {
+         type string;
+         description
+           "Alias of the ETH service.";
+       }
+
+       leaf etht-svc-descr {
+         type string;
+         description
+           "Description of the ETH service.";
+       }
+
+       leaf etht-svc-customer {
+         type string;
+         description
+           "Customer of the ETH service.";
+       }
+
+        leaf etht-svc-type {
+         type etht-types:service-type;
+         description
+           "Type of ETH service (p2p, mp2mp or rmp).";
+         /* Add default as p2p */
+       }
+
+        leaf etht-svc-lifecycle {
+         type etht-types:lifecycle-status;
+         description
+           "Lifecycle state of ETH service.";
+         /* Add default as installed  */
+       }
+       uses te-types:te-topology-identifier;
+
+       uses resilience-grouping;
+       list etht-svc-end-points {
+         key etht-svc-end-point-name;
+         description
+           "The logical end point for the ETH service. ";
+         uses etht-svc-end-point-grouping;
+       }
+
+       container alarm-shreshold {
+         description "threshold configuration for the E2E client signal";
+         uses alarm-shreshold-grouping;
+       }
+
+       container underlay {
+         description
+           "The unterlay tunnel information that carrying the
+           ETH service. ";
+         uses etht-svc-tunnel-parameters;
+       }
+
+       leaf admin-status {
+         type identityref {
+           base te-types:tunnel-admin-state-type;
+         }
+         default te-types:tunnel-admin-state-up;
+         description "ETH service administrative state.";
+       }
+     }
+
+     grouping  etht-svc-instance-state {
+       description
+         "State parameters for Ethernet services.";
+
+       leaf operational-state {
+       type identityref {
+           base te-types:tunnel-state-type;
+         }
+         default te-types:tunnel-state-up;
+       description "ETH service operational state.";
+       }
+       leaf provisioning-state {
+         type identityref {
+           base te-types:lsp-state-type;
+         }
+         description "ETH service provisioning state.";
+       }
+       leaf creation-time {
+         type yang:date-and-time;
+         description
+           "Time of ETH service creation.";
+       }
+       leaf last-updated-time {
+         type yang:date-and-time;
+         description
+           "Time of ETH service last update.";
+       }
+
+       leaf created-by {
+          type string;
+          description
+            "The client signal is created by whom,
+             can be a system or staff ID.";
+        }
+        leaf last-updated-by {
+          type string;
+          description
+            "The client signal is last updated by whom,
+             can be a system or staff ID.";
+        }
+        leaf owned-by {
+          type string;
+          description
+            "The client signal is last updated by whom,
+             can be a system ID.";
+        }
+        container pm-state {
+          description
+            "PM data of E2E Ethernet service";
+          uses pm-state-grouping;
+        }
+        container error-info {
+          description "error messages of configuration";
+          uses error-info-grouping;
+        }
+     }
+
+     grouping pm-state-grouping {
+       leaf latency {
+         description
+           "latency value of the E2E Ethernet service";
+         type uint32;
+         units microsecond;
+       }
+     }
+
+     grouping error-info-grouping {
+       leaf error-code {
+         description "error code";
+         type uint16;
+       }
+
+       leaf error-description {
+         description "detail message of error";
+         type string;
+       }
+
+       leaf error-timestamp {
+         description "the date and time error is happened";
+         type yang:date-and-time;
+       }
+     }
+
+     grouping alarm-shreshold-grouping {
+       leaf latency-threshold {
+         description "a threshold for the E2E client signal service's
+         latency. Once the latency value exceed this threshold, an alarm
+         should be triggered.";
+         type uint32;
+         units microsecond;
+       }
+     }
+
+     /*
+      * Data nodes
+      */
+
+     container etht-svc {
+       description
+         "ETH services.";
+
+       container globals {
+         description
+           "Globals Ethernet configuration data container";
+         list named-bandwidth-profiles {
+           key bandwidth-profile-name;
+           description
+             "List of named bandwidth profiles used by
+              Ethernet services.";
+
+           leaf bandwidth-profile-name {
+             type string;
+             description
+               "Name of the bandwidth profile.";
+           }
+           uses etht-types:etht-bandwidth-profiles;
+         }
+       }
+       list etht-svc-instances {
+         key etht-svc-name;
+         description
+           "The list of p2p ETH service instances";
+
+         uses etht-svc-instance-config;
+
+         container state {
+           config false;
+           description
+             "Ethernet Service states.";
+
+           uses etht-svc-instance-state;
+         }
+       }
+     }
+
+     grouping resilience-grouping {
+       description
+         "Grouping for resilience configuration. ";
+       container resilience {
+       description
+         "To configure the data plane protection parameters,
+         currently a placeholder only, future candidate attributes
+         include, Revert, WTR, Hold-off Timer, ...";
+         uses te:protection-restoration-properties;
+       }
+     }
+
+     grouping etht-svc-end-point-grouping {
+       description
+         "Grouping for the end point configuration.";
+       leaf etht-svc-end-point-name {
+         type string;
+         description
+         "The name of the logical end point of ETH service. ";
+       }
+
+       leaf etht-svc-end-point-id {
+         type string;
+         description
+         "The identifier of the logical end point of ETH service.";
+       }
+
+       leaf etht-svc-end-point-descr {
+         type string;
+         description
+         "The description of the logical end point of ETH service. ";
+       }
+
+       leaf topology-role {
+         type identityref {
+           base etht-types:topology-role;
+         }
+         description
+         "Indicating the underlay topology role,
+         e.g., hub,spoke, any-to-any ";
+       }
+
+       container resilience {
+         description
+         "Placeholder for resilience configuration, for future study. ";
+       }
+
+       list etht-svc-access-points {
+         key access-point-id;
+         min-elements "1";
+   /*
+     Open Issue:
+       Is it possible to limit the max-elements only for p2p services?
+         max-elements "2";
+   */
+         description
+           "List of the ETH trasport services access point instances.";
+
+         leaf access-point-id {
+           type string;
+           description
+             "ID of the service access point instance";
+         }
+         uses etht-svc-access-parameters;
+       }
+
+       leaf service-classification-type {
+         type identityref {
+           base etht-types:service-classification-type;
+         }
+         description
+           "Service classification type.";
+       }
+
+       choice service-classification {
+         description
+           "Access classification can be port-based or
+            VLAN based.";
+         case port-classification {
+           /* no additional information */
+         }
+
+         case vlan-classification {
+           container outer-tag {
+             presence "The outermost VLAN tag exists";
+             description
+               "Classifies traffic using the outermost VLAN tag.";
+
+             uses vlan-classification;
+           }
+           container second-tag {
+             must
+               '../outer-tag/tag-type = "etht-types:classify-s-vlan" and ' +
+               'tag-type = "etht-types:classify-c-vlan"'
+             {
+               error-message
+                 "
+                   When matching two tags, the outermost tag must be
+                   specified and of S-VLAN type and the second
+                   outermost tag must be of C-VLAN tag type.
+                 ";
+               description
+                 "
+                   For IEEE 802.1Q interoperability, when matching two
+                   tags, it is required that the outermost tag exists
+                   and is an S-VLAN, and the second outermost tag is a
+                   C-VLAN.
+                 ";
+             }
+             presence "The second outermost VLAN tag exists";
+
+             description
+               "Classifies traffic using the second outermost VLAN tag.";
+
+             uses vlan-classification;
+           }
+         }
+       }
+
+   /*
+    * Open issue: can we constraints it to be used only with mp services?
+    */
+       leaf split-horizon-group {
+         type string;
+         description "Identify a split horizon group";
+       }
+       uses bandwidth-profiles;
+
+       container vlan-operations {
+         description
+           "Configuration of VLAN operations.";
+         choice direction {
+           description
+             "Whether the VLAN operations are symmetrical or
+              asymmetrical";
+           case symmetrical {
+             container symmetrical-operation {
+               uses vlan-operations;
+               description
+                 "Symmetrical operations.
+                  Expressed in the ingress direction, but
+                  the reverse operation is applied to egress traffic";
+             }
+           }
+           case asymmetrical {
+             container asymmetrical-operation {
+               description "Asymmetrical operations";
+               container ingress {
+                 uses vlan-operations;
+                 description "Ingress operations";
+               }
+               container egress {
+                 uses vlan-operations;
+                 description "Egress operations";
+               }
+             }
+           }
+         }
+       }
+     }
+
+     grouping pm-config-grouping {
+       description
+         "Grouping used for Performance Monitoring Configuration. ";
+       leaf pm-enable {
+         type boolean;
+         description
+         "Whether to enable the performance monitoring.";
+       }
+
+       leaf sending-rate-high {
+         type uint64;
+         description
+         "The upperbound of sending rate.";
+       }
+
+       leaf sending-rate-low {
+         type uint64;
+         description
+         "The lowerbound of sending rate.";
+       }
+
+       leaf receiving-rate-high {
+         type uint64;
+         description
+         "The upperbound of receiving rate.";
+       }
+
+       leaf receiving-rate-low {
+         type uint64;
+         description
+         "The lowerbound of receiving rate.";
+       }
+     }
+
+     grouping pw-segment-grouping {
+       description
+         "Grouping used for PW configuration. ";
+       leaf pw-id {
+         type string;
+         description
+         "The Identifier information of pseudowire. ";
+       }
+
+       leaf pw-name {
+         type string;
+         description
+         "The name information of pseudowire.";
+       }
+
+       leaf transmit-label {
+         type rt-types:mpls-label;
+         description
+         "Transmit label information in PW. ";
+       }
+
+       leaf receive-label {
+         type rt-types:mpls-label;
+         description
+         "Receive label information in PW. ";
+       }
+       leaf encapsulation-type {
+         type identityref {
+           base etht-types:encapsulation-type;
+         }
+         description
+           "The encapsulation type, raw or tag. ";
+       }
+
+       leaf oper-status {
+         type identityref {
+           base te-types:tunnel-state-type;
+         }
+         config false;
+         description
+           "The operational state of the PW segment. ";
+       }
+
+       container ingress-bandwidth-profile {
+         description
+           "Bandwidth Profile for ingress. ";
+         uses pw-segment-named-or-value-bandwidth-profile;
+       }
+
+       list pw-paths {
+         key path-id;
+         description
+           "A list of pw paths. ";
+
+         leaf path-id {
+           type uint8;
+           description
+             "The identifier of pw paths. ";
+
+         }
+
+         list tp-tunnels {
+           key name;
+           description
+             "Names of TP Tunnel underlay";
+           leaf name {
+             type string;
+             description
+               "Names of TP Tunnel underlay";
+             }
+         }
+       }
+
+     }
+     grouping pw-segment-named-or-value-bandwidth-profile {
+       description
+         "A grouping to configure a bandwdith profile either by
+          referencing a named bandwidth profile or by
+          configuring the values of the bandwidth profile attributes.";
+       choice style {
+         description
+           "Whether the bandwidth profile is named or defined by value";
+         case named {
+           description
+             "Named bandwidth profile.";
+           leaf bandwidth-profile-name {
+             type leafref {
+               path "/ethtsvc:etht-svc/ethtsvc:globals/"
+               + "ethtsvc:named-bandwidth-profiles/"
+               + "ethtsvc:bandwidth-profile-name";
+             }
+             description
+               "Name of the bandwidth profile.";
+           }
+         }
+         case value {
+           description
+             "Bandwidth profile configured by value.";
+           uses etht-types:pw-segement-bandwidth-profile-grouping;
+         }
+       }
+     }
+
+     grouping tunnels-grouping {
+       description
+         "A group of tunnels. ";
+       leaf name {
+         type leafref {
+           path "/te:te/te:tunnels/te:tunnel/te:name";
+           require-instance false;
+         }
+         description "Dependency tunnel name";
+       }
+       leaf encoding {
+         type identityref {
+           base te-types:lsp-encoding-types;
+         }
+         description "LSP encoding type";
+         reference "RFC3945";
+       }
+       leaf switching-type {
+         type identityref {
+           base te-types:switching-capabilities;
+         }
+         description "LSP switching type";
+         reference "RFC3945";
+       }
+     }
+   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-types@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-types@2023-10-23.yang
new file mode 100644
index 000000000..f46908b34
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-types@2023-10-23.yang
@@ -0,0 +1,457 @@
+ module ietf-eth-tran-types {
+     yang-version 1.1;
+     namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-types";
+
+     prefix "etht-types";
+
+     organization
+       "Internet Engineering Task Force (IETF) CCAMP WG";
+     contact
+       "
+         WG List: <mailto:ccamp@ietf.org>
+
+         ID-draft editor:
+           Haomian Zheng (zhenghaomian@huawei.com);
+           Italo Busi (italo.busi@huawei.com);
+           Aihua Guo (aihuaguo.ietf@gmail.com);
+           Anton Snitser (antons@sedonasys.com);
+           Francesco Lazzeri (francesco.lazzeri@ericsson.com);
+           Yunbin Xu (xuyunbin@caict.ac.cn);
+           Yang Zhao (zhaoyangyjy@chinamobile.com);
+           Xufeng Liu (xufeng.liu.ietf@gmail.com);
+           Giuseppe Fioccola (giuseppe.fioccola@huawei.com);
+           Chaode Yu (yuchaode@huawei.com)
+       ";
+
+     description
+       "This module defines the ETH types.
+        The model fully conforms to the Network Management
+        Datastore Architecture (NMDA).
+
+        Copyright (c) 2019 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
+        (https://trustee.ietf.org/license-info).
+        This version of this YANG module is part of RFC XXXX; see
+        the RFC itself for full legal notices.";
+
+     revision 2023-10-23 {
+       description
+         "version -05 as a WG draft";
+       reference
+         "draft-ietf-ccamp-client-signal-yang";
+     }
+
+     /*
+      * Identities
+      */
+
+     identity eth-vlan-tag-type {
+       description
+         "ETH VLAN tag type.";
+     }
+
+     identity c-vlan-tag-type {
+       base eth-vlan-tag-type;
+       description
+         "802.1Q Customer VLAN";
+     }
+
+     identity s-vlan-tag-type {
+       base eth-vlan-tag-type;
+       description
+         "802.1Q Service VLAN (QinQ)";
+     }
+
+     identity service-classification-type {
+       description
+         "Service classification.";
+     }
+
+     identity port-classification {
+       base service-classification-type;
+       description
+         "Port classification.";
+     }
+     identity vlan-classification {
+       base service-classification-type;
+       description
+         "VLAN classification.";
+     }
+
+     identity eth-vlan-tag-classify {
+       description
+         "VLAN tag classification.";
+     }
+
+     identity classify-c-vlan {
+       base eth-vlan-tag-classify;
+       description
+         "Classify 802.1Q Customer VLAN tag.
+          Only C-tag type is accepted";
+     }
+
+     identity classify-s-vlan {
+       base eth-vlan-tag-classify;
+       description
+         "Classify 802.1Q Service VLAN (QinQ) tag.
+          Only S-tag type is accepted";
+     }
+
+     identity classify-s-or-c-vlan {
+       base eth-vlan-tag-classify;
+       description
+         "Classify S-VLAN or C-VLAN tag-classify.
+          Either tag is accepted";
+     }
+
+     identity bandwidth-profile-type-ir {
+       description
+         "Bandwidth Profile Types";
+     }
+
+     identity mef-10-bwp {
+       base bandwidth-profile-type-ir;
+       description
+         "MEF 10 Bandwidth Profile";
+     }
+
+     identity rfc-2697-bwp {
+       base bandwidth-profile-type-ir;
+       description
+         "RFC 2697 Bandwidth Profile";
+     }
+     identity rfc-2698-bwp {
+       base bandwidth-profile-type-ir;
+       description
+         "RFC 2698 Bandwidth Profile";
+     }
+
+     identity rfc-4115-bwp {
+       base bandwidth-profile-type-ir;
+       description
+         "RFC 4115 Bandwidth Profile";
+     }
+
+     identity service-type-ir {
+       description
+         "Type of Ethernet service.";
+     }
+
+     identity p2p-svc {
+       base service-type-ir;
+       description
+         "Ethernet point-to-point service (EPL, EVPL).";
+     }
+
+     identity rmp-svc {
+       base service-type-ir;
+       description
+         "Ethernet rooted-multitpoint service (E-TREE, EP-TREE).";
+     }
+
+     identity mp2mp-svc {
+       base service-type-ir;
+       description
+         "Ethernet multipoint-to-multitpoint service (E-LAN, EP-LAN).";
+     }
+
+     identity lifecycle-status-ir {
+       description
+         "Lifecycle Status.";
+     }
+
+     identity installed {
+       base lifecycle-status-ir;
+       description
+         "Installed.";
+     }
+
+     identity planned {
+       base lifecycle-status-ir;
+       description
+         "Planned.";
+     }
+
+     identity pending-removal {
+       base lifecycle-status-ir;
+       description
+         "Pending Removal.";
+     }
+
+     /*
+      * Type Definitions
+      */
+
+     typedef eth-tag-type {
+       type identityref {
+         base eth-vlan-tag-type;
+       }
+       description
+         "Identifies a specific ETH VLAN tag type.";
+     }
+
+     typedef eth-tag-classify {
+       type identityref {
+         base eth-vlan-tag-classify;
+       }
+       description
+         "Identifies a specific VLAN tag classification.";
+     }
+
+     typedef vlanid {
+       type uint16 {
+         range "1..4094";
+       }
+       description
+         "The 12-bit VLAN-ID used in the VLAN Tag header.";
+     }
+
+     typedef vid-range-type {
+       type string {
+         pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" +
+                 "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)";
+       }
+       description
+         "A list of VLAN Ids, or non overlapping VLAN ranges, in
+          ascending order, between 1 and 4094.
+          This type is used to match an ordered list of VLAN Ids, or
+          contiguous ranges of VLAN Ids. Valid VLAN Ids must be in the
+          range 1 to 4094, and included in the list in non overlapping
+          ascending order.
+
+          For example: 1,10-100,50,500-1000";
+     }
+
+     typedef bandwidth-profile-type {
+       type identityref {
+         base bandwidth-profile-type-ir;
+       }
+       description
+         "Identifies a specific Bandwidth Profile type.";
+     }
+
+     typedef service-type {
+       type identityref {
+         base service-type-ir;
+       }
+       description
+         "Identifies the type of Ethernet service.";
+     }
+
+     typedef lifecycle-status {
+       type identityref {
+         base lifecycle-status-ir;
+       }
+       description
+         "Identifies the lLifecycle Status .";
+     }
+
+     /*
+      * Grouping Definitions
+      */
+
+     grouping etht-bandwidth-profiles {
+       description
+         "Bandwidth profile configuration paramters.";
+
+       leaf bandwidth-profile-type {
+         type etht-types:bandwidth-profile-type;
+         description
+           "The type of bandwidth profile.";
+       }
+       leaf CIR {
+         type uint64;
+         description
+           "Committed Information Rate in Kbps";
+       }
+       leaf CBS {
+         type uint64;
+         description
+           "Committed Burst Size in in KBytes";
+       }
+       leaf EIR {
+         type uint64;
+         /* Need to indicate that EIR is not supported by RFC 2697
+
+         must
+           '../bw-profile-type = "mef-10-bwp" or ' +
+           '../bw-profile-type = "rfc-2698-bwp" or ' +
+           '../bw-profile-type = "rfc-4115-bwp"'
+
+         must
+           '../bw-profile-type != "rfc-2697-bwp"'
+         */
+         description
+           "Excess Information Rate in Kbps
+            In case of RFC 2698, PIR = CIR + EIR";
+       }
+       leaf EBS {
+         type uint64;
+         description
+           "Excess Burst Size in KBytes.
+             In case of RFC 2698, PBS = CBS + EBS";
+       }
+       leaf color-aware {
+         type boolean;
+         description
+           "Indicates weather the color-mode is
+           color-aware or color-blind.";
+       }
+       leaf coupling-flag {
+         type boolean;
+         /* Need to indicate that Coupling Flag is defined only for MEF 10
+
+         must
+           '../bw-profile-type = "mef-10-bwp"'
+         */
+         description
+           "Coupling Flag.";
+       }
+     }
+
+     identity topology-role {
+       description
+         "The role of underlay topology: e.g., hub, spoke,
+         any-to-any.";
+     }
+
+     identity resilience {
+       description
+       "Placeholder for resilience information in data plane,
+       for future study. ";
+     }
+
+     identity access-role {
+       description
+       "Indicating whether the access is a working or protection access.";
+     }
+
+     identity root-primary {
+       base access-role;
+       description
+         "Designates the primary root UNI of an E-Tree service, and may also
+              designates the UNI access role of E-LINE and E-LAN service.";
+     }
+
+     identity root-backup {
+       base access-role;
+       description
+         "Designates the backup root UNI of an E-Tree service.";
+     }
+
+     identity leaf-access {
+       base access-role;
+       description
+         "Designates the leaf UNI of an E-Tree service.";
+     }
+
+     identity leaf-edge {
+       base access-role;
+       description "";
+     }
+
+     identity performance {
+       description
+       "Placeholder for performance information, for future study.";
+     }
+
+     identity encapsulation-type {
+       description
+       "Indicating how the service is encapsulated (to PW), e.g, raw or tag. ";
+     }
+     grouping pw-segement-bandwidth-profile-grouping {
+       description
+         "bandwidth profile grouping for PW segment. ";
+       leaf bandwidth-profile-type {
+         type etht-types:bandwidth-profile-type;
+         description
+           "The type of bandwidth profile.";
+       }
+       leaf CIR {
+         type uint64;
+         description
+           "Committed Information Rate in Kbps";
+       }
+       leaf CBS {
+         type uint64;
+         description
+           "Committed Burst Size in in KBytes";
+       }
+       leaf EIR {
+         type uint64;
+         /* Need to indicate that EIR is not supported by RFC 2697
+
+         must
+           '../bw-profile-type = "mef-10-bwp" or ' +
+           '../bw-profile-type = "rfc-2698-bwp" or ' +
+           '../bw-profile-type = "rfc-4115-bwp"'
+
+         must
+           '../bw-profile-type != "rfc-2697-bwp"'
+         */
+         description
+           "Excess Information Rate in Kbps
+            In case of RFC 2698, PIR = CIR + EIR";
+       }
+       leaf EBS {
+         type uint64;
+         description
+           "Excess Burst Size in KBytes.
+             In case of RFC 2698, PBS = CBS + EBS";
+       }
+     }
+         grouping eth-bandwidth {
+         description
+           "Available bandwith for ethernet.";
+         leaf eth-bandwidth {
+           type uint64{
+             range "0..10000000000";
+           }
+           units "Kbps";
+           description
+             "Available bandwith value expressed in kilobits per second";
+         }
+       }
+
+       grouping eth-label-restriction {
+         description
+           "Label Restriction for ethernet.";
+         leaf tag-type {
+           type etht-types:eth-tag-type;
+           description "VLAN tag type.";
+         }
+         leaf priority {
+           type uint8;
+           description "priority.";
+         }
+       }
+       grouping eth-label {
+         description
+           "Label for ethernet.";
+         leaf vlanid {
+           type etht-types:vlanid;
+             description
+               "VLAN tag id.";
+         }
+       }
+
+       grouping eth-label-step {
+         description "Label step for Ethernet VLAN";
+         leaf eth-step {
+           type uint16 {
+             range "1..4095";
+         }
+         default 1;
+         description
+           "Label step which represent possible increments for
+            an Ethernet VLAN tag.";
+         reference
+           "IEEE 802.1ad: Provider Bridges.";
+       }
+     }
+   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-inet-types@2013-07-15.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-inet-types@2013-07-15.yang
new file mode 100644
index 000000000..790bafc31
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-inet-types@2013-07-15.yang
@@ -0,0 +1,459 @@
+   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 {
+         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]\.?)'
+         + '|\.';
+         length "1..253";
+       }
+       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/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-layer1-types@2022-10-14.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-layer1-types@2022-10-14.yang
new file mode 100644
index 000000000..188336931
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-layer1-types@2022-10-14.yang
@@ -0,0 +1,1414 @@
+   module ietf-layer1-types {
+     yang-version 1.1;
+     namespace "urn:ietf:params:xml:ns:yang:ietf-layer1-types";
+     prefix "l1-types";
+
+     import ietf-routing-types {
+       prefix rt-types;
+       reference
+         "RFC 8294: Common YANG Data Types for the Routing Area";
+     }
+
+     organization
+       "IETF CCAMP Working Group";
+     contact
+       "WG Web: <https://datatracker.ietf.org/wg/ccamp/>
+        WG List: <mailto:ccamp@ietf.org>
+
+        Editor: Haomian Zheng
+                <mailto:zhenghaomian@huawei.com>
+
+        Editor: Italo Busi
+                <mailto:Italo.Busi@huawei.com>";
+
+     description
+       "This module defines Layer 1 types. The model fully conforms
+        to the Network Management Datastore Architecture (NMDA).
+
+        Copyright (c) 2022 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 Revised BSD License
+        set forth in Section 4.c of the IETF Trust's Legal Provisions
+        Relating to IETF Documents
+        (https://trustee.ietf.org/license-info).
+
+        This version of this YANG module is part of RFC XXXX; see
+        the RFC itself for full legal notices.
+
+       The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
+       NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
+       'MAY', and 'OPTIONAL' in this document are to be interpreted as
+       described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
+
+
+
+
+       they appear in all capitals, as shown here.";
+
+     revision "2022-10-14" {
+       description
+         "Initial Version";
+       reference
+         "RFC XXXX: A YANG Data Model for Layer 1 Types";
+       // RFC Editor: replace XXXX with actual RFC number, update date
+       // information and remove this note
+     }
+
+     /*
+      * Identities
+      */
+
+     identity tributary-slot-granularity {
+       description
+         "Tributary Slot Granularity (TSG)";
+       reference
+         "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity tsg-1.25G {
+       base tributary-slot-granularity;
+       description
+         "1.25G tributary slot granularity";
+     }
+
+     identity tsg-2.5G {
+       base tributary-slot-granularity;
+       description
+         "2.5G tributary slot granularity";
+     }
+
+     identity tsg-5G {
+       base tributary-slot-granularity;
+       description
+         "5G tributary slot granularity";
+     }
+
+     identity odu-type {
+       description
+         "Base identity from which specific Optical Data Unit (ODU)
+         type is derived.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+
+
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity ODU0 {
+       base odu-type;
+       description
+         "ODU0 type (1.24Gb/s).";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity ODU1 {
+       base odu-type;
+       description
+         "ODU1 type (2.49Gb/s).";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity ODU2 {
+       base odu-type;
+       description
+         "ODU2 type (10.03Gb/s).";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity ODU2e {
+       base odu-type;
+       description
+         "ODU2e type (10.39Gb/s).";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+
+
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity ODU3 {
+       base odu-type;
+       description
+         "ODU3 type (40.31Gb/s).";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity ODU4 {
+       base odu-type;
+       description
+         "ODU4 type (104.79Gb/s).";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity ODUflex {
+       base odu-type;
+       description
+         "ODUflex type (flexible bit rate, not resizable).
+
+          It could be used for any type of ODUflex, including
+          ODUflex(CBR), ODUflex(GFP), ODUflex(GFP,n,k), ODUflex(IMP,s),
+          ODUflex(IMP) and ODUflex(FlexE-aware).";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity ODUflex-resizable {
+       base odu-type;
+       description
+         "ODUflex protocol (flexible bit rate, resizable).
+
+
+
+
+          It could be used only for ODUflex(GFP,n,k).";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity protocol {
+       description
+         "Base identity from which specific protocol is derived.";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity Ethernet {
+       base protocol;
+       description
+         "Ethernet protocol.";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity Fibre-Channel {
+       base protocol;
+       description
+         "Fibre-Channel (FC) protocol.";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity SDH {
+       base protocol;
+       description
+         "SDH protocol.";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity SONET {
+       base protocol;
+       description
+         "SONET protocol.";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+
+
+
+     identity client-signal {
+       description
+         "Base identity from which specific Constant Bit Rate (CBR)
+         client signal is derived";
+     }
+
+     identity coding-func {
+       description
+         "Base identity from which specific coding function
+          is derived.";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity ETH-1Gb {
+       base client-signal;
+       description
+         "Client signal type of 1GbE";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity ETH-10Gb-LAN {
+       base client-signal;
+       description
+         "Client signal type of ETH-10Gb-LAN (10.3 Gb/s)";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+          IEEE 802.3-2018, Clause 49: IEEE Standard for Ethernet";
+     }
+
+     identity ETH-10Gb-WAN {
+       base client-signal;
+       description
+         "Client signal type of ETH-10Gb-WAN (9.95 Gb/s)";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+
+
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+          IEEE 802.3-2018, Clause 50: IEEE Standard for Ethernet";
+     }
+
+     identity ETH-40Gb {
+       base client-signal;
+       description
+         "Client signal type of 40GbE";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity ETH-100Gb {
+       base client-signal;
+       description
+         "Client signal type of 100GbE";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity STM-1 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of STM-1;
+          STM-1 G.707 (N=1) coding function.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity STM-4 {
+       base client-signal;
+
+
+
+
+       base coding-func;
+       description
+         "Client signal type of STM-4;
+          STM-4 G.707 (N=4) coding function.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity STM-16 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of STM-16;
+          STM-16 G.707 (N=16) coding function.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity STM-64 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of STM-64;
+          STM-64 G.707 (N=64) coding function.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity STM-256 {
+       base client-signal;
+
+
+
+
+       base coding-func;
+       description
+         "Client signal type of STM-256;
+          STM-256 G.707 (N=256) coding function.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity OC-3 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of OC3;
+          OC-3 GR-253-CORE (N=3) coding function.";
+       reference
+         "ANSI T1.105-1995: Synchronous Optical Network (SONET)
+          Basic Description including Multiplex Structure, Rates,
+          and Formats
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity OC-12 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of OC12;
+          OC-12 GR-253-CORE (N=12) coding function.";
+       reference
+         "ANSI T1.105-1995: Synchronous Optical Network (SONET)
+          Basic Description including Multiplex Structure, Rates,
+          and Formats
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity OC-48 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of OC48;
+          OC-48 GR-253-CORE (N=48) coding function.";
+
+
+
+
+       reference
+         "ANSI T1.105-1995: Synchronous Optical Network (SONET)
+          Basic Description including Multiplex Structure, Rates,
+          and Formats
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity OC-192 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of OC192;
+          OC-192 GR-253-CORE (N=192) coding function.";
+       reference
+         "ANSI T1.105-1995: Synchronous Optical Network (SONET)
+          Basic Description including Multiplex Structure, Rates,
+          and Formats
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity OC-768 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of OC768;
+          OC-768 GR-253-CORE (N=768) coding function.";
+       reference
+         "ANSI T1.105-1995: Synchronous Optical Network (SONET)
+          Basic Description including Multiplex Structure, Rates,
+          and Formats
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity FC-100 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of Fibre Channel FC-100;
+          FC-100 FC-FS-2 (1.0625 Gb/s) coding function.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+
+
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity FC-200 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of Fibre Channel FC-200;
+          FC-200 FC-FS-2 (2.125 Gb/s) coding function.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity FC-400 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of Fibre Channel FC-400;
+          FC-400 FC-FS-2 (4.250 Gb/s) coding function.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity FC-800 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of Fibre Channel FC-800;
+          FC-800 FC-FS-2 (8.500 Gb/s) coding function.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+
+
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity FC-1200 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of Fibre Channel FC-1200;
+          FC-1200 FC-10GFC (10.51875 Gb/s) coding function.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity FC-1600 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of Fibre Channel FC-1600;
+          FC-1600 FC-FS-3 (14.025 Gb/s) coding function.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity FC-3200 {
+       base client-signal;
+       base coding-func;
+       description
+         "Client signal type of Fibre Channel FC-3200;
+          FC-3200 FC-FS-4 (28.05 Gb/s) coding function.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)
+
+
+
+
+          MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity FICON-4G {
+       base client-signal;
+       description
+         "Client signal type of Fibre Connection 4G";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity FICON-8G {
+       base client-signal;
+       description
+         "Client signal type of Fibre Connection 8G";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks
+
+          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+          Transport Network (OTN)";
+     }
+
+     identity ETH-1000X {
+       base coding-func;
+       description
+         "1000BASE-X PCS clause 36 coding function.";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity ETH-10GW {
+       base coding-func;
+       description
+         "10GBASE-W (WAN PHY) PCS clause 49 and WIS clause 50
+          coding function.";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity ETH-10GR {
+       base coding-func;
+       description
+         "10GBASE-R (LAN PHY) PCS clause 49 coding function.";
+
+
+
+
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity ETH-40GR {
+       base coding-func;
+       description
+         "40GBASE-R PCS clause 82 coding function.";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity ETH-100GR {
+       base coding-func;
+       description
+         "100GBASE-R PCS clause 82 coding function.";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity optical-interface-func {
+       description
+         "Base identity from which optical-interface-function
+          is derived.";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity SX-PMD-1000 {
+       base optical-interface-func;
+       description
+         "SX-PMD-clause-38 Optical Interface function for
+         1000BASE-X PCS-36";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity LX-PMD-1000 {
+       base optical-interface-func;
+       description
+         "LX-PMD-clause-38 Optical Interface function for
+          1000BASE-X PCS-36";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity LX10-PMD-1000 {
+       base optical-interface-func;
+
+
+
+
+       description
+         "LX10-PMD-clause-59 Optical Interface function for
+          1000BASE-X PCS-36";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity BX10-PMD-1000 {
+       base optical-interface-func;
+       description
+         "BX10-PMD-clause-59 Optical Interface function for
+          1000BASE-X PCS-36";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity LW-PMD-10G {
+       base optical-interface-func;
+       description
+         "LW-PMD-clause-52 Optical Interface function for
+          10GBASE-W PCS-49-WIS-50";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity EW-PMD-10G {
+       base optical-interface-func;
+       description
+         "EW-PMD-clause-52 Optical Interface function for
+          10GBASE-W PCS-49-WIS-50";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity LR-PMD-10G {
+       base optical-interface-func;
+       description
+         "LR-PMD-clause-52 Optical Interface function for
+          10GBASE-R PCS-49";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity ER-PMD-10G {
+       base optical-interface-func;
+       description
+         "ER-PMD-clause-52 Optical Interface function for
+          10GBASE-R PCS-49";
+
+
+
+
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity LR4-PMD-40G {
+       base optical-interface-func;
+       description
+         "LR4-PMD-clause-87 Optical Interface function for
+          40GBASE-R PCS-82";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity ER4-PMD-40G {
+       base optical-interface-func;
+       description
+         "ER4-PMD-clause-87 Optical Interface function for
+          40GBASE-R PCS-82";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity FR-PMD-40G {
+       base optical-interface-func;
+       description
+         "FR-PMD-clause-89 Optical Interface function for
+          40GBASE-R PCS-82";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity LR4-PMD-100G {
+       base optical-interface-func;
+       description
+         "LR4-PMD-clause-88 Optical Interface function for
+          100GBASE-R PCS-82";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+     identity ER4-PMD-100G {
+       base optical-interface-func;
+       description
+         "ER4-PMD-clause-88 Optical Interface function for
+          100GBASE-R PCS-82";
+       reference
+         "MEF63: Subscriber Layer 1 Service Attributes";
+     }
+
+
+
+
+     /*
+      * Typedefs
+      */
+
+     typedef otn-tpn {
+       type uint16 {
+         range "1..4095";
+       }
+       description
+         "Tributary Port Number (TPN) for OTN. ";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks.";
+     }
+
+     typedef otn-ts {
+       type uint16 {
+         range "1..4095";
+       }
+       description
+         "Tributary Slot (TS) for OTN.";
+       reference
+         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+          G.709 Optical Transport Networks.";
+     }
+
+     typedef otn-label-range-type {
+       type enumeration {
+         enum trib-slot {
+           description
+             "Defines a range of OTN tributary slots (TS).";
+         }
+         enum trib-port {
+           description
+             "Defines a range of OTN tributary ports (TPN).";
+         }
+       }
+       description
+         "Defines the type of OTN label range: TS or TPN. ";
+     }
+
+     typedef gfp-k {
+       type enumeration {
+         enum 2 {
+           description
+             "The ODU2.ts rate (1,249,177.230 kbit/s) is used
+              to compute the rate of an ODUflex(GFP,n,2). ";
+         }
+
+
+
+
+         enum 3 {
+           description
+             "The ODU3.ts rate (1,254,470.354 kbit/s) is used
+              to compute the rate of an ODUflex(GFP,n,3). ";
+         }
+         enum 4 {
+           description
+             "The ODU4.ts rate (1,301,467.133 kbit/s) is used
+              to compute the rate of an ODUflex(GFP,n,4). ";
+         }
+       }
+       description
+         "The ODUk.ts used to compute the rate of an ODUflex(GFP,n,k)";
+       reference
+         "ITU-T G.709 v6.0 (06/2020), Table 7-8 and L.7: Interfaces for
+          the Optical Transport Network (OTN)";
+     }
+
+     typedef flexe-client-rate {
+       type union {
+         type uint16;
+         type enumeration {
+           enum "10G" {
+             description
+               "Represents a 10G FlexE Client signal (s=2)";
+           }
+           enum "40G" {
+             description
+               "Represents a 40G FlexE Client signal (s=8)";
+           }
+         }
+       }
+       description
+         "The FlexE Client signal rate (s x 5,156,250.000 kbit/s)
+          used to compute the rate of an ODUflex(IMP, s).
+          Valid values for s are s=2 (10G), s=4 (40G) and
+          s=5 x n (n x 25G).
+          In the first two cases an enumeration value
+          (either 10G or 40G) is used, while in the latter case
+          the value of n is used";
+       reference
+         "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the
+          Optical Transport Network (OTN)";
+     }
+
+     typedef odtu-flex-type {
+       type enumeration {
+         enum "2" {
+
+
+
+
+           description
+             "The ODTU2.ts ODTU type.";
+         }
+         enum "3" {
+           description
+             "The ODTU3.ts ODTU type.";
+         }
+         enum "4" {
+           description
+             "The ODTU4.ts ODTU type.";
+         }
+         enum "Cn" {
+           description
+             "The ODTUCn.ts ODTU type.";
+         }
+       }
+       description
+         "The type of Optical Data Tributary Unit (ODTU),
+         whose nominal bitrate is used to compute the number of
+         Tributary Slots (TS) required by an ODUflex LSP, according to
+         the (19-1a) and (20-1a) formulas defined in G.709.";
+       reference
+         "ITU-T G.709 v6.0 (06/2020), Table 7-7, clause 19.6 and
+         clause 20.5: Interfaces for the Optical Transport
+         Network (OTN)";
+     }
+
+     typedef bandwidth-scientific-notation {
+       type string {
+         pattern
+           '0(\.0?)?([eE](\+)?0?)?|'
+         + '[1-9](\.[0-9]{0,6})?[eE](\+)?(9[0-6]|[1-8][0-9]|0?[0-9])?';
+       }
+       units "bps";
+       description
+         "Bandwidth values, expressed using the scientific notation
+         in bits per second.
+
+         The encoding format is the external decimal-significant
+         character sequences specified in IEEE 754 and ISO/IEC C99
+         for 32-bit decimal floating-point numbers:
+         (-1)**(S) * 10**(Exponent) * (Significant),
+         where Significant uses 7 digits.
+
+         An implementation for this representation MAY use decimal32
+         or binary32. The range of the Exponent is from -95 to +96
+         for decimal32, and from -38 to +38 for binary32.
+         As a bandwidth value, the format is restricted to be
+
+
+
+
+         normalized, non-negative, and non-fraction:
+         n.dddddde{+}dd, N.DDDDDDE{+}DD, 0e0 or 0E0,
+         where 'd' and 'D' are decimal digits; 'n' and 'N' are
+         non-zero decimal digits; 'e' and 'E' indicate a power of ten.
+         Some examples are 0e0, 1e10, and 9.953e9.";
+       reference
+         "IEEE Std 754-2008: IEEE Standard for Floating-Point
+         Arithmetic.
+         ISO/IEC C99: Information technology - Programming
+         Languages - C.";
+     }
+
+     /*
+      * Groupings
+      */
+
+     grouping otn-link-bandwidth {
+       description
+         "Bandwidth attributes for OTN links";
+       container otn {
+         description
+           "Bandwidth attributes for OTN links";
+         list odulist {
+           key "odu-type";
+           description
+             "OTN bandwidth definition";
+           leaf odu-type {
+             type identityref {
+               base odu-type;
+             }
+             description "ODU type";
+           }
+           leaf number {
+             type uint16;
+             description "Number of ODUs";
+           }
+           leaf ts-number {
+             when 'derived-from-or-self(../odu-type,"ODUflex") or
+                   derived-from-or-self(../odu-type,
+                   "ODUflex-resizable")' {
+               description
+                 "Applicable when odu-type is ODUflex or
+                 ODUflex-resizable";
+             }
+             type uint16 {
+               range "1..4095";
+             }
+             description
+
+
+
+
+               "The number of Tributary Slots (TS) that
+               could be used by all the ODUflex LSPs.";
+           }
+         }
+       }
+     }
+
+     grouping otn-path-bandwidth {
+       description
+         "Bandwidth attributes for OTN paths.";
+       container otn {
+         description
+           "Bandwidth attributes for OTN paths.";
+         leaf odu-type {
+           type identityref {
+             base odu-type;
+           }
+           description "ODU type";
+         }
+         choice oduflex-type {
+           when 'derived-from-or-self(./odu-type,"ODUflex") or
+                 derived-from-or-self(./odu-type,
+                 "ODUflex-resizable")' {
+             description
+               "Applicable when odu-type is ODUflex or
+                ODUflex-resizable";
+           }
+           description
+             "Types of ODUflex used to compute the ODUflex
+              nominal bit rate.";
+           reference
+             "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the
+              Optical Transport Network (OTN)";
+           case generic {
+             leaf nominal-bit-rate {
+               type union {
+                 type l1-types:bandwidth-scientific-notation;
+                 type rt-types:bandwidth-ieee-float32;
+               }
+               mandatory true;
+               description
+                 "Nominal ODUflex bit rate.";
+             }
+           }
+           case cbr {
+             leaf client-type {
+               type identityref {
+                 base client-signal;
+
+
+
+
+               }
+               mandatory true;
+               description
+                 "The type of Constant Bit Rate (CBR) client signal
+                 of an ODUflex(CBR).";
+             }
+           }
+           case gfp-n-k {
+             leaf gfp-n {
+               type uint8 {
+                 range "1..80";
+               }
+               mandatory true;
+               description
+                 "The value of n for an ODUflex(GFP,n,k).";
+               reference
+                 "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7:
+                  Interfaces for the Optical Transport Network (OTN)";
+             }
+             leaf gfp-k {
+               type gfp-k;
+               description
+                 "The value of k for an ODUflex(GFP,n,k).
+
+                  If omitted, it is calculated from the value of gfp-n
+                  as described in Table 7-8 of G.709";
+               reference
+                 "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7:
+                  Interfaces for the Optical Transport Network (OTN)";
+             }
+           }
+           case flexe-client {
+             leaf flexe-client {
+               type flexe-client-rate;
+               mandatory true;
+               description
+                 "The rate of the FlexE-client for an ODUflex(IMP,s).";
+             }
+           }
+           case flexe-aware {
+             leaf flexe-aware-n {
+               type uint16;
+               mandatory true;
+               description
+                 "The rate of FlexE-aware client signal
+                  for ODUflex(FlexE-aware)";
+             }
+           }
+
+
+
+
+           case packet {
+             leaf opuflex-payload-rate {
+               type union {
+                 type l1-types:bandwidth-scientific-notation;
+                 type rt-types:bandwidth-ieee-float32;
+               }
+               mandatory true;
+               description
+                 "Either the GFP-F encapsulated packet client nominal
+                  bit rate for an ODUflex(GFP) or the 64b/66b encoded
+                  packet client nominal bit rate for an ODUflex(IMP).";
+             }
+           }
+         }
+       }
+     }
+
+     grouping otn-max-path-bandwidth {
+       description
+         "Maximum bandwidth attributes for OTN paths.";
+       container otn {
+         description
+           "Maximum bandwidth attributes for OTN paths.";
+         leaf odu-type {
+           type identityref {
+             base odu-type;
+           }
+           description "ODU type";
+         }
+         leaf max-ts-number {
+           when 'derived-from-or-self(../odu-type,"ODUflex") or
+                 derived-from-or-self(../odu-type,
+                 "ODUflex-resizable")' {
+             description
+               "Applicable when odu-type is ODUflex or
+                ODUflex-resizable";
+           }
+           type uint16 {
+             range "1..4095";
+           }
+           description
+             "The maximum number of Tributary Slots (TS) that could be
+             used  by an ODUflex LSP.";
+         }
+       }
+     }
+
+     grouping otn-label-range-info {
+
+
+
+
+       description
+         "Label range information for OTN.
+
+          This grouping SHOULD be used together with the
+          otn-label-start-end and otn-label-step groupings to provide
+          OTN technology-specific label information to the models which
+          use the label-restriction-info grouping defined in the module
+          ietf-te-types.";
+       container otn-label-range {
+         description
+           "Label range information for OTN.";
+         leaf range-type {
+           type otn-label-range-type;
+           description "The type of range (e.g., TPN or TS)
+             to which the label range applies";
+         }
+         leaf tsg {
+           type identityref {
+             base tributary-slot-granularity;
+           }
+           description
+             "Tributary slot granularity (TSG) to which the label range
+             applies.
+
+             This leaf MUST be present when the range-type is TS.
+
+             This leaf MAY be omitted when mapping an ODUk over an OTUk
+             Link. In this case the range-type is tpn, with only one
+             entry (ODUk), and the tpn range has only one value (1).";
+           reference
+             "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+             Transport Network (OTN)";
+         }
+         leaf-list odu-type-list {
+           type identityref {
+             base odu-type;
+           }
+           description
+             "List of ODU types to which the label range applies.
+
+             An Empty odu-type-list means that the label range
+             applies to all the supported ODU types.";
+         }
+         leaf priority {
+           type uint8 {
+             range 0..7;
+           }
+           description
+
+
+
+
+             "Priority in Interface Switching Capability
+             Descriptor (ISCD).";
+           reference
+             "RFC4203: OSPF Extensions in Support of Generalized
+             Multi-Protocol Label Switching (GMPLS)";
+         }
+       }
+     }
+
+     grouping otn-label-start-end {
+       description
+         "The OTN label-start or label-end used to specify an OTN label
+          range.
+
+          This grouping is dependent on the range-type defined in the
+          otn-label-range-info grouping.
+
+          This grouping SHOULD be used together with the
+          otn-label-range-info and otn-label-step groupings to provide
+          OTN technology-specific label information to the models which
+          use the label-restriction-info grouping defined in the module
+          ietf-te-types.";
+       container otn {
+         description
+           "Label start or label end for OTN.";
+         choice range-type {
+           description
+             "OTN label range type, either TPN range or TS range";
+           case trib-port {
+             leaf tpn {
+               when "../../../../otn-label-range/range-type =
+                     'trib-port'" {
+                 description
+                   "Valid only when range-type represented by
+                   trib-port";
+               }
+               type otn-tpn;
+               description
+                 "Tributary Port Number (TPN).";
+               reference
+                 "RFC7139: GMPLS Signaling Extensions for Control of
+                 Evolving G.709 Optical Transport Networks.";
+             }
+           }
+           case trib-slot {
+             leaf ts {
+               when "../../../../otn-label-range/range-type =
+                     'trib-slot'" {
+
+
+
+
+                 description
+                   "Valid only when range-type represented by
+                   trib-slot";
+               }
+               type otn-ts;
+               description
+                 "Tributary Slot (TS) number.";
+               reference
+                 "RFC7139: GMPLS Signaling Extensions for Control of
+                 Evolving G.709 Optical Transport Networks";
+             }
+           }
+         }
+       }
+     }
+
+     grouping otn-label-hop {
+       description "OTN Label";
+       reference
+         "RFC7139, section 6: GMPLS Signaling Extensions for Control of
+          Evolving G.709 Optical Transport Networks";
+       container otn {
+         description
+           "Label hop for OTN.";
+         leaf tpn {
+           type otn-tpn;
+           description
+             "Tributary Port Number (TPN).";
+           reference
+             "RFC7139: GMPLS Signaling Extensions for Control of
+             Evolving G.709 Optical Transport Networks.";
+         }
+         leaf tsg {
+           type identityref {
+             base tributary-slot-granularity;
+           }
+           description "Tributary Slot Granularity (TSG).";
+           reference
+             "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+             Transport Network (OTN)";
+         }
+         leaf ts-list {
+           type string {
+               pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?"
+                     + "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)";
+             }
+           description
+             "A list of available Tributary Slots (TS) ranging
+
+
+
+
+             between 1 and 4095. If multiple values or
+             ranges are given, they all MUST be disjoint
+             and MUST be in ascending order.
+             For example 1-20,25,50-1000.";
+           reference
+             "RFC 7139: GMPLS Signaling Extensions for Control
+             of Evolving G.709 Optical Transport Networks";
+         }
+       }
+     }
+
+     grouping otn-label-step {
+       description
+         "Label step for OTN.
+
+          This grouping is dependent on the range-type defined in the
+          otn-label-range-info grouping.
+
+          This grouping SHOULD be used together with the
+          otn-label-range-info and otn-label-start-end groupings to
+          provide OTN technology-specific label information to the
+          models which use the label-restriction-info grouping defined
+          in the module ietf-te-types.";
+       container otn {
+         description
+           "Label step for OTN";
+         choice range-type {
+           description
+             "OTN label range type, either TPN range or TS range";
+           case trib-port {
+             leaf tpn {
+               when "../../../otn-label-range/range-type =
+                     'trib-port'" {
+                 description
+                   "Valid only when range-type represented by
+                   trib-port";
+               }
+               type otn-tpn;
+               description
+                 "Label step which represents possible increments for
+                 Tributary Port Number (TPN).";
+               reference
+                 "RFC7139: GMPLS Signaling Extensions for Control of
+                 Evolving G.709 Optical Transport Networks.";
+             }
+           }
+           case trib-slot {
+             leaf ts {
+
+
+
+
+               when "../../../otn-label-range/range-type =
+                     'trib-slot'" {
+                 description
+                   "Valid only when range-type represented by
+                   trib-slot";
+               }
+               type otn-ts;
+               description
+                 "Label step which represents possible increments for
+                 Tributary Slot (TS) number.";
+               reference
+                 "RFC7139: GMPLS Signaling Extensions for Control of
+                 Evolving G.709 Optical Transport Networks.";
+             }
+           }
+         }
+       }
+     }
+   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network-topology@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network-topology@2018-02-26.yang
new file mode 100644
index 000000000..0538ac01b
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network-topology@2018-02-26.yang
@@ -0,0 +1,294 @@
+   module ietf-network-topology {
+     yang-version 1.1;
+     namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology";
+     prefix nt;
+
+     import ietf-inet-types {
+       prefix inet;
+       reference
+         "RFC 6991: Common YANG Data Types";
+     }
+     import ietf-network {
+       prefix nw;
+       reference
+         "RFC 8345: A YANG Data Model for Network Topologies";
+     }
+
+     organization
+       "IETF I2RS (Interface to the Routing System) Working Group";
+
+     contact
+       "WG Web:    <https://datatracker.ietf.org/wg/i2rs/>
+        WG List:   <mailto:i2rs@ietf.org>
+
+        Editor:    Alexander Clemm
+                   <mailto:ludwig@clemm.org>
+
+        Editor:    Jan Medved
+                   <mailto:jmedved@cisco.com>
+
+        Editor:    Robert Varga
+                   <mailto:robert.varga@pantheon.tech>
+
+        Editor:    Nitin Bahadur
+                   <mailto:nitin_bahadur@yahoo.com>
+
+        Editor:    Hariharan Ananthakrishnan
+                   <mailto:hari@packetdesign.com>
+
+        Editor:    Xufeng Liu
+                   <mailto:xufeng.liu.ietf@gmail.com>";
+
+     description
+       "This module defines a common base model for a network topology,
+        augmenting the base network data model with links to connect
+        nodes, as well as termination points to terminate links
+        on nodes.
+
+        Copyright (c) 2018 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
+        (https://trustee.ietf.org/license-info).
+
+        This version of this YANG module is part of RFC 8345;
+        see the RFC itself for full legal notices.";
+
+     revision 2018-02-26 {
+       description
+         "Initial revision.";
+       reference
+         "RFC 8345: A YANG Data Model for Network Topologies";
+     }
+
+     typedef link-id {
+       type inet:uri;
+       description
+         "An identifier for a link in a topology.  The precise
+          structure of the link-id will be up to the implementation.
+          The identifier SHOULD be chosen such that the same link in a
+          real network topology will always be identified through the
+          same identifier, even if the data model is instantiated in
+          separate datastores.  An implementation MAY choose to capture
+          semantics in the identifier -- for example, to indicate the
+          type of link and/or the type of topology of which the link is
+          a part.";
+     }
+
+     typedef tp-id {
+       type inet:uri;
+       description
+         "An identifier for termination points on a node.  The precise
+          structure of the tp-id will be up to the implementation.
+          The identifier SHOULD be chosen such that the same termination
+          point in a real network topology will always be identified
+          through the same identifier, even if the data model is
+          instantiated in separate datastores.  An implementation MAY
+          choose to capture semantics in the identifier -- for example,
+          to indicate the type of termination point and/or the type of
+          node that contains the termination point.";
+     }
+
+     grouping link-ref {
+       description
+         "This grouping can be used to reference a link in a specific
+          network.  Although it is not used in this module, it is
+          defined here for the convenience of augmenting modules.";
+       leaf link-ref {
+         type leafref {
+           path "/nw:networks/nw:network[nw:network-id=current()/../"+
+             "network-ref]/nt:link/nt:link-id";
+           require-instance false;
+         }
+         description
+           "A type for an absolute reference to a link instance.
+            (This type should not be used for relative references.
+            In such a case, a relative path should be used instead.)";
+       }
+       uses nw:network-ref;
+     }
+
+     grouping tp-ref {
+       description
+         "This grouping can be used to reference a termination point
+          in a specific node.  Although it is not used in this module,
+          it is defined here for the convenience of augmenting
+          modules.";
+       leaf tp-ref {
+         type leafref {
+           path "/nw:networks/nw:network[nw:network-id=current()/../"+
+             "network-ref]/nw:node[nw:node-id=current()/../"+
+             "node-ref]/nt:termination-point/nt:tp-id";
+           require-instance false;
+         }
+         description
+           "A type for an absolute reference to a termination point.
+            (This type should not be used for relative references.
+            In such a case, a relative path should be used instead.)";
+       }
+       uses nw:node-ref;
+     }
+
+     augment "/nw:networks/nw:network" {
+       description
+         "Add links to the network data model.";
+       list link {
+         key "link-id";
+         description
+           "A network link connects a local (source) node and
+            a remote (destination) node via a set of the respective
+            node's termination points.  It is possible to have several
+            links between the same source and destination nodes.
+            Likewise, a link could potentially be re-homed between
+            termination points.  Therefore, in order to ensure that we
+            would always know to distinguish between links, every link
+            is identified by a dedicated link identifier.  Note that a
+            link models a point-to-point link, not a multipoint link.";
+         leaf link-id {
+           type link-id;
+           description
+             "The identifier of a link in the topology.
+              A link is specific to a topology to which it belongs.";
+         }
+         container source {
+           description
+             "This container holds the logical source of a particular
+              link.";
+           leaf source-node {
+             type leafref {
+               path "../../../nw:node/nw:node-id";
+               require-instance false;
+             }
+             description
+               "Source node identifier.  Must be in the same topology.";
+           }
+           leaf source-tp {
+             type leafref {
+               path "../../../nw:node[nw:node-id=current()/../"+
+                 "source-node]/termination-point/tp-id";
+               require-instance false;
+             }
+             description
+               "This termination point is located within the source node
+                and terminates the link.";
+           }
+         }
+
+         container destination {
+           description
+             "This container holds the logical destination of a
+              particular link.";
+           leaf dest-node {
+             type leafref {
+               path "../../../nw:node/nw:node-id";
+             require-instance false;
+             }
+             description
+               "Destination node identifier.  Must be in the same
+                network.";
+           }
+           leaf dest-tp {
+             type leafref {
+               path "../../../nw:node[nw:node-id=current()/../"+
+                 "dest-node]/termination-point/tp-id";
+               require-instance false;
+             }
+             description
+               "This termination point is located within the
+                destination node and terminates the link.";
+           }
+         }
+         list supporting-link {
+           key "network-ref link-ref";
+           description
+             "Identifies the link or links on which this link depends.";
+           leaf network-ref {
+             type leafref {
+               path "../../../nw:supporting-network/nw:network-ref";
+             require-instance false;
+             }
+             description
+               "This leaf identifies in which underlay topology
+                the supporting link is present.";
+           }
+
+           leaf link-ref {
+             type leafref {
+               path "/nw:networks/nw:network[nw:network-id=current()/"+
+                 "../network-ref]/link/link-id";
+               require-instance false;
+             }
+             description
+               "This leaf identifies a link that is a part
+                of this link's underlay.  Reference loops in which
+                a link identifies itself as its underlay, either
+                directly or transitively, are not allowed.";
+           }
+         }
+       }
+     }
+     augment "/nw:networks/nw:network/nw:node" {
+       description
+         "Augments termination points that terminate links.
+          Termination points can ultimately be mapped to interfaces.";
+       list termination-point {
+         key "tp-id";
+         description
+           "A termination point can terminate a link.
+            Depending on the type of topology, a termination point
+            could, for example, refer to a port or an interface.";
+         leaf tp-id {
+           type tp-id;
+           description
+             "Termination point identifier.";
+         }
+         list supporting-termination-point {
+           key "network-ref node-ref tp-ref";
+           description
+             "This list identifies any termination points on which a
+              given termination point depends or onto which it maps.
+              Those termination points will themselves be contained
+              in a supporting node.  This dependency information can be
+              inferred from the dependencies between links.  Therefore,
+              this item is not separately configurable.  Hence, no
+              corresponding constraint needs to be articulated.
+              The corresponding information is simply provided by the
+              implementing system.";
+
+           leaf network-ref {
+             type leafref {
+               path "../../../nw:supporting-node/nw:network-ref";
+             require-instance false;
+             }
+             description
+               "This leaf identifies in which topology the
+                supporting termination point is present.";
+           }
+           leaf node-ref {
+             type leafref {
+               path "../../../nw:supporting-node/nw:node-ref";
+             require-instance false;
+             }
+             description
+               "This leaf identifies in which node the supporting
+                termination point is present.";
+           }
+           leaf tp-ref {
+             type leafref {
+               path "/nw:networks/nw:network[nw:network-id=current()/"+
+                 "../network-ref]/nw:node[nw:node-id=current()/../"+
+                 "node-ref]/termination-point/tp-id";
+               require-instance false;
+             }
+             description
+               "Reference to the underlay node (the underlay node must
+                be in a different topology).";
+           }
+         }
+       }
+     }
+   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network@2018-02-26.yang
new file mode 100644
index 000000000..d9da81eee
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network@2018-02-26.yang
@@ -0,0 +1,193 @@
+   module ietf-network {
+     yang-version 1.1;
+     namespace "urn:ietf:params:xml:ns:yang:ietf-network";
+     prefix nw;
+
+     import ietf-inet-types {
+       prefix inet;
+       reference
+         "RFC 6991: Common YANG Data Types";
+     }
+
+     organization
+       "IETF I2RS (Interface to the Routing System) Working Group";
+
+     contact
+       "WG Web:    <https://datatracker.ietf.org/wg/i2rs/>
+        WG List:   <mailto:i2rs@ietf.org>
+
+        Editor:    Alexander Clemm
+                   <mailto:ludwig@clemm.org>
+
+        Editor:    Jan Medved
+                   <mailto:jmedved@cisco.com>
+
+        Editor:    Robert Varga
+                   <mailto:robert.varga@pantheon.tech>
+
+        Editor:    Nitin Bahadur
+                   <mailto:nitin_bahadur@yahoo.com>
+
+        Editor:    Hariharan Ananthakrishnan
+                   <mailto:hari@packetdesign.com>
+
+        Editor:    Xufeng Liu
+                   <mailto:xufeng.liu.ietf@gmail.com>";
+
+     description
+       "This module defines a common base data model for a collection
+        of nodes in a network.  Node definitions are further used
+        in network topologies and inventories.
+
+        Copyright (c) 2018 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
+        (https://trustee.ietf.org/license-info).
+
+        This version of this YANG module is part of RFC 8345;
+        see the RFC itself for full legal notices.";
+
+     revision 2018-02-26 {
+       description
+         "Initial revision.";
+       reference
+         "RFC 8345: A YANG Data Model for Network Topologies";
+     }
+
+     typedef node-id {
+       type inet:uri;
+       description
+         "Identifier for a node.  The precise structure of the node-id
+          will be up to the implementation.  For example, some
+          implementations MAY pick a URI that includes the network-id
+          as part of the path.  The identifier SHOULD be chosen
+          such that the same node in a real network topology will
+          always be identified through the same identifier, even if
+          the data model is instantiated in separate datastores.  An
+          implementation MAY choose to capture semantics in the
+          identifier -- for example, to indicate the type of node.";
+     }
+
+     typedef network-id {
+       type inet:uri;
+       description
+         "Identifier for a network.  The precise structure of the
+          network-id will be up to the implementation.  The identifier
+          SHOULD be chosen such that the same network will always be
+          identified through the same identifier, even if the data model
+          is instantiated in separate datastores.  An implementation MAY
+          choose to capture semantics in the identifier -- for example,
+          to indicate the type of network.";
+     }
+
+     grouping network-ref {
+       description
+         "Contains the information necessary to reference a network --
+          for example, an underlay network.";
+       leaf network-ref {
+         type leafref {
+           path "/nw:networks/nw:network/nw:network-id";
+         require-instance false;
+         }
+         description
+           "Used to reference a network -- for example, an underlay
+            network.";
+       }
+     }
+
+     grouping node-ref {
+       description
+         "Contains the information necessary to reference a node.";
+       leaf node-ref {
+         type leafref {
+           path "/nw:networks/nw:network[nw:network-id=current()/../"+
+             "network-ref]/nw:node/nw:node-id";
+           require-instance false;
+         }
+         description
+           "Used to reference a node.
+            Nodes are identified relative to the network that
+            contains them.";
+       }
+       uses network-ref;
+     }
+
+     container networks {
+       description
+         "Serves as a top-level container for a list of networks.";
+       list network {
+         key "network-id";
+         description
+           "Describes a network.
+            A network typically contains an inventory of nodes,
+            topological information (augmented through the
+            network-topology data model), and layering information.";
+         leaf network-id {
+           type network-id;
+           description
+             "Identifies a network.";
+         }
+         container network-types {
+           description
+             "Serves as an augmentation target.
+              The network type is indicated through corresponding
+              presence containers augmented into this container.";
+         }
+         list supporting-network {
+           key "network-ref";
+           description
+             "An underlay network, used to represent layered network
+              topologies.";
+           leaf network-ref {
+             type leafref {
+               path "/nw:networks/nw:network/nw:network-id";
+             require-instance false;
+             }
+             description
+               "References the underlay network.";
+           }
+         }
+
+         list node {
+           key "node-id";
+           description
+             "The inventory of nodes of this network.";
+           leaf node-id {
+             type node-id;
+             description
+               "Uniquely identifies a node within the containing
+                network.";
+           }
+           list supporting-node {
+             key "network-ref node-ref";
+             description
+               "Represents another node that is in an underlay network
+                and that supports this node.  Used to represent layering
+                structure.";
+             leaf network-ref {
+               type leafref {
+                 path "../../../nw:supporting-network/nw:network-ref";
+               require-instance false;
+               }
+               description
+                 "References the underlay network of which the
+                  underlay node is a part.";
+             }
+             leaf node-ref {
+               type leafref {
+                 path "/nw:networks/nw:network/nw:node/nw:node-id";
+               require-instance false;
+               }
+               description
+                 "References the underlay node itself.";
+             }
+           }
+         }
+       }
+     }
+   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-otn-topology@2023-07-06.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-otn-topology@2023-07-06.yang
new file mode 100644
index 000000000..587612e8e
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-otn-topology@2023-07-06.yang
@@ -0,0 +1,2405 @@
+   module ietf-otn-topology {
+     yang-version 1.1;
+     namespace "urn:ietf:params:xml:ns:yang:ietf-otn-topology";
+     prefix "otnt";
+
+     import ietf-network {
+       prefix "nw";
+       reference "RFC 8345: A YANG Data Model for Network Topologies";
+     }
+
+     import ietf-network-topology {
+       prefix "nt";
+       reference "RFC 8345: A YANG Data Model for Network Topologies";
+     }
+
+     import ietf-te-topology {
+       prefix "tet";
+       reference
+         "RFC 8795: YANG Data Model for Traffic Engineering
+          (TE) Topologies";
+     }
+
+     import ietf-layer1-types {
+       prefix "l1-types";
+       reference
+         "I-D.ietf-ccamp-layer1-types: A YANG Data Model
+          for Layer 1 Types";
+     }
+
+     organization
+       "IETF CCAMP Working Group";
+     contact
+       "WG Web: <https://datatracker.ietf.org/wg/ccamp/>
+        WG List: <mailto:ccamp@ietf.org>
+
+        Editor: Haomian Zheng
+                <mailto:zhenghaomian@huawei.com>
+
+        Editor: Italo Busi
+                <mailto:italo.busi@huawei.com>
+
+        Editor: Xufeng Liu
+                <mailto:xufeng.liu.ietf@gmail.com>
+
+        Editor: Sergio Belotti
+                <mailto:sergio.belotti@nokia.com>
+
+
+
+
+        Editor: Oscar Gonzalez de Dios
+                <mailto:oscar.gonzalezdedios@telefonica.com>";
+
+     description
+       "This module defines a protocol independent Layer 1/ODU topology
+        data model. The model fully conforms
+        to the Network Management Datastore Architecture (NMDA).
+
+        Copyright (c) 2023 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 Revised BSD License
+        set forth in Section 4.c of the IETF Trust's Legal Provisions
+        Relating to IETF Documents
+        (https://trustee.ietf.org/license-info).
+
+        This version of this YANG module is part of RFC XXXX; see
+        the RFC itself for full legal notices.
+
+        The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
+        NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
+        'MAY', and 'OPTIONAL' in this document are to be interpreted as
+        described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
+        they appear in all capitals, as shown here.";
+
+     revision 2023-07-06 {
+       description
+         "Initial Revision";
+       reference
+         "RFC XXXX: A YANG Data Model for Optical Transport Network
+         Topology";
+       // RFC Ed.: replace XXXX with actual RFC number, update date
+       // information and remove this note
+     }
+
+     /*
+      * Groupings
+      */
+
+     grouping label-range-info {
+       description
+         "OTN technology-specific label range related information with
+         a presence container indicating that the label range is an
+         OTN technology-specific label range.
+
+         This grouping SHOULD be used together with the
+
+
+
+
+         otn-label-start-end and otn-label-step groupings to provide
+         OTN technology-specific label information to the models which
+         use the label-restriction-info grouping defined in the module
+         ietf-te-types.";
+       uses l1-types:otn-label-range-info {
+         refine otn-label-range {
+           presence
+             "Indicates the label range is an OTN label range.
+
+             This container MUST NOT be present if there are other
+             presence containers or attributes indicating another type
+             of label range.";
+         }
+       }
+     }
+
+    /*
+     * Data nodes
+     */
+
+     augment "/nw:networks/nw:network/nw:network-types/"
+           + "tet:te-topology" {
+       container otn-topology {
+         presence "indicates a topology type of Optical Transport
+                   Network (OTN)-electrical layer.";
+         description "OTN topology type";
+       }
+       description "augment network types to include OTN newtork";
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te"
+           + "/tet:te-node-attributes" {
+       when "../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description "Augment only for OTN network.";
+       }
+       description "Augment TE node attributes.";
+       container otn-node {
+         presence "The TE node is an OTN node.";
+         description
+           "Introduce new TE node type for OTN node.";
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes" {
+       when "../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+
+
+
+
+         description "Augment only for OTN network.";
+       }
+       description "Augment link configuration";
+
+       container otn-link {
+         description
+           "Attributes of the OTN Link.";
+         leaf odtu-flex-type {
+           type l1-types:odtu-flex-type;
+           description
+             "The type of Optical Data Tributary Unit (ODTU)
+             whose nominal bitrate is used to compute the number of
+             Tributary Slots (TS) required by the ODUflex LSPs set up
+             on this OTN Link.";
+         }
+         leaf tsg {
+           type identityref {
+             base l1-types:tributary-slot-granularity;
+           }
+           description "Tributary slot granularity.";
+           reference
+             "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+             Transport Network (OTN)";
+         }
+         leaf distance {
+           type uint32;
+           description "distance in the unit of kilometers";
+         }
+       }
+       container client-svc {
+         presence
+           "When present, indicates that the Link supports Costant
+           Bit Rate (CBR) client signals.";
+         description
+           "Attributes of the Link supporting CBR client signals.";
+         leaf-list supported-client-signal {
+           type identityref {
+             base l1-types:client-signal;
+           }
+           min-elements 1;
+           description
+             "List of client signal types supported by the Link.";
+         }
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
+           + "tet:te" {
+
+
+
+
+       when "../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description "Augment only for OTN network";
+       }
+       description "OTN TP attributes config in ODU topology.";
+
+       container otn-ltp {
+         description
+           "Attributes of the OTN Link Termination Point (LTP).";
+         leaf odtu-flex-type {
+           type l1-types:odtu-flex-type;
+           description
+             "The type of Optical Data Tributary Unit (ODTU)
+             whose nominal bitrate is used to compute the number of
+             Tributary Slots (TS) required by the ODUflex LSPs set up
+             on this OTN Link Termination Point (LTP).";
+         }
+       }
+       container client-svc {
+         presence
+           "When present, indicates that the Link Termination Point
+           (LTP) supports Costant Bit Rate (CBR) client signals.";
+         description
+           "OTN LTP Service attributes.";
+         leaf-list supported-client-signal {
+           type identityref {
+             base l1-types:client-signal;
+           }
+           description
+             "List of client signal types supported by the LTP.";
+         }
+       }
+     }
+
+     /*
+      * Augment TE bandwidth
+      */
+
+     augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
+           + "tet:te/"
+           + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
+           + "tet:te-bandwidth/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+
+
+
+
+       description
+         "Augment maximum LSP TE bandwidth for the link termination
+          point (LTP).";
+       case otn {
+         uses l1-types:otn-max-path-bandwidth {
+           description
+             "The odtu-flex-type attribute of the OTN Link Termination
+             Point (LTP) is used to compute the number of Tributary
+             Slots (TS) required by the ODUflex LSPs set up on this
+             OTN LTP.";
+         }
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE bandwidth path constraints of the TE node
+          connectivity matrices.";
+       case otn {
+         uses l1-types:otn-link-bandwidth {
+           augment otn {
+             description
+               "Augment OTN link bandwidth information.";
+             leaf odtu-flex-type {
+               type l1-types:odtu-flex-type;
+               description
+                 "The type of Optical Data Tributary Unit (ODTU)
+                 whose nominal bitrate is used to compute the number of
+                 Tributary Slots (TS) required by the ODUflex LSPs
+                 set up along the underlay paths of these OTN
+                 connectivity matrices.";
+             }
+           }
+         }
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+
+
+
+
+           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE bandwidth path constraints of the
+          connectivity matrix entry.";
+       case otn {
+         uses l1-types:otn-link-bandwidth {
+           augment otn {
+             description
+               "Augment OTN link bandwidth information.";
+             leaf odtu-flex-type {
+               type l1-types:odtu-flex-type;
+               description
+                 "The type of Optical Data Tributary Unit (ODTU)
+                 whose nominal bitrate is used to compute the number of
+                 Tributary Slots (TS) required by the ODUflex LSPs
+                 set up along the underlay path of this OTN
+                 connectivity matrix entry.";
+             }
+           }
+         }
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE bandwidth path constraints of the TE node
+          connectivity matrices information source.";
+       case otn {
+         uses l1-types:otn-link-bandwidth {
+           augment otn {
+             description
+               "Augment OTN link bandwidth information.";
+             leaf odtu-flex-type {
+               type l1-types:odtu-flex-type;
+
+
+
+
+               description
+                 "The type of Optical Data Tributary Unit (ODTU)
+                 whose nominal bitrate is used to compute the number of
+                 Tributary Slots (TS) required by the ODUflex LSPs
+                 set up along the underlay paths of these OTN
+                 connectivity matrices.";
+             }
+           }
+         }
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE bandwidth path constraints of the
+          connectivity matrix entry information source";
+       case otn {
+         uses l1-types:otn-link-bandwidth {
+           augment otn {
+             description
+               "Augment OTN link bandwidth information.";
+             leaf odtu-flex-type {
+               type l1-types:odtu-flex-type;
+               description
+                 "The type of Optical Data Tributary Unit (ODTU)
+                 whose nominal bitrate is used to compute the number of
+                 Tributary Slots (TS) required by the ODUflex LSPs
+                 set up along the underlay path of this OTN
+                 connectivity matrix entry.";
+             }
+           }
+         }
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:client-layer-adaptation/tet:switching-capability/"
+           + "tet:te-bandwidth/tet:technology" {
+
+
+
+
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment client TE bandwidth of the tunnel termination point
+          (TTP)";
+       case otn {
+         uses l1-types:otn-link-bandwidth {
+           augment otn {
+             description
+               "Augment OTN link bandwidth information.";
+             leaf odtu-flex-type {
+               type l1-types:odtu-flex-type;
+               description
+                 "The type of Optical Data Tributary Unit (ODTU)
+                 whose nominal bitrate is used to compute the number of
+                 Tributary Slots (TS) required by the ODUflex LSPs
+                 terminated on this OTN Tunnel Termination Point
+                 (TTP).";
+             }
+           }
+         }
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/tet:path-constraints/"
+           + "tet:te-bandwidth/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE bandwidth path constraints for the TTP
+          Local Link Connectivities.";
+       case otn {
+         uses l1-types:otn-link-bandwidth {
+           augment otn {
+             description
+               "Augment OTN link bandwidth information.";
+             leaf odtu-flex-type {
+               type l1-types:odtu-flex-type;
+
+
+
+
+               description
+                 "The type of Optical Data Tributary Unit (ODTU)
+                 whose nominal bitrate is used to compute the number of
+                 Tributary Slots (TS) required by the ODUflex LSPs
+                 set up along the underlay paths of these OTN Local
+                 Link Connectivities.";
+             }
+           }
+         }
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/tet:path-constraints/"
+           + "tet:te-bandwidth/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE bandwidth path constraints for the TTP
+          Local Link Connectivity entry.";
+       case otn {
+         uses l1-types:otn-link-bandwidth {
+           augment otn {
+             description
+               "Augment OTN link bandwidth information.";
+             leaf odtu-flex-type {
+               type l1-types:odtu-flex-type;
+               description
+                 "The type of Optical Data Tributary Unit (ODTU)
+                 whose nominal bitrate is used to compute the number of
+                 Tributary Slots (TS) required by the ODUflex LSPs
+                 set up along the underlay path of this OTN Local
+                 Link Connectivyt entry.";
+             }
+           }
+         }
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
+
+
+
+
+           + "tet:te-bandwidth/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment maximum LSP TE bandwidth for the TE link.";
+       case otn {
+         uses l1-types:otn-max-path-bandwidth {
+           description
+             "The odtu-flex-type attribute of the OTN Link is used
+             to compute the number of Tributary Slots (TS) required
+             by the ODUflex LSPs set up on this OTN Link.";
+         }
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:max-link-bandwidth/"
+           + "tet:te-bandwidth" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment maximum TE bandwidth for the TE link";
+       uses l1-types:otn-link-bandwidth {
+         description
+           "The odtu-flex-type attribute of the OTN Link is used
+           to compute the number of Tributary Slots (TS) required
+           by the ODUflex LSPs set up on this OTN Link.";
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:max-resv-link-bandwidth/"
+           + "tet:te-bandwidth" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+
+
+
+
+       }
+       description
+         "Augment maximum reservable TE bandwidth for the TE link";
+       uses l1-types:otn-link-bandwidth {
+         description
+           "The odtu-flex-type attribute of the OTN Link is used
+           to compute the number of Tributary Slots (TS) required
+           by the ODUflex LSPs set up on this OTN Link.";
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:unreserved-bandwidth/"
+           + "tet:te-bandwidth" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment unreserved TE bandwidth for the TE Link";
+       uses l1-types:otn-link-bandwidth {
+         description
+           "The odtu-flex-type attribute of the OTN Link is used
+           to compute the number of Tributary Slots (TS) required
+           by the ODUflex LSPs set up on this OTN Link.";
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:interface-switching-capability/"
+           + "tet:max-lsp-bandwidth/"
+           + "tet:te-bandwidth/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment maximum LSP TE bandwidth for the TE link
+          information source";
+       case otn {
+         uses l1-types:otn-max-path-bandwidth {
+           description
+
+
+
+
+             "The odtu-flex-type attribute of the OTN Link is used
+             to compute the number of Tributary Slots (TS) required
+             by the ODUflex LSPs set up on this OTN Link.";
+         }
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:max-link-bandwidth/"
+           + "tet:te-bandwidth" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment maximum TE bandwidth for the TE link
+          information source";
+       uses l1-types:otn-link-bandwidth {
+         description
+           "The odtu-flex-type attribute of the OTN Link is used
+           to compute the number of Tributary Slots (TS) required
+           by the ODUflex LSPs set up on this OTN Link.";
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:max-resv-link-bandwidth/"
+           + "tet:te-bandwidth" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment maximum reservable TE bandwidth for the TE link
+          information-source";
+       uses l1-types:otn-link-bandwidth {
+         description
+           "The odtu-flex-type attribute of the OTN Link is used
+           to compute the number of Tributary Slots (TS) required
+           by the ODUflex LSPs set up on this OTN Link.";
+       }
+     }
+
+
+
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:unreserved-bandwidth/"
+           + "tet:te-bandwidth" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment unreserved TE bandwidth of the TE link
+          information source";
+       uses l1-types:otn-link-bandwidth {
+         description
+           "The odtu-flex-type attribute of the OTN Link is used
+           to compute the number of Tributary Slots (TS) required
+           by the ODUflex LSPs set up on this OTN Link.";
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:interface-switching-capability/"
+           + "tet:max-lsp-bandwidth/"
+           + "tet:te-bandwidth/tet:technology" {
+       description
+         "Augment maximum LSP TE bandwidth of the TE link
+          template";
+       case otn {
+         uses l1-types:otn-max-path-bandwidth {
+           description
+             "The odtu-flex-type attribute of the OTN Link is used
+             to compute the number of Tributary Slots (TS) required
+             by the ODUflex LSPs set up on the OTN Link that uses this
+             Link Template.";
+         }
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:max-link-bandwidth/"
+           + "tet:te-bandwidth" {
+       description
+         "Augment maximum TE bandwidth the TE link template";
+       uses l1-types:otn-link-bandwidth {
+         description
+
+
+
+
+           "The odtu-flex-type attribute of the OTN Link is used
+           to compute the number of Tributary Slots (TS) required
+           by the ODUflex LSPs set up on the OTN Link that uses this
+           Link Template.";
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:max-resv-link-bandwidth/"
+           + "tet:te-bandwidth" {
+       description
+         "Augment maximum reservable TE bandwidth for the TE link
+          template.";
+       uses l1-types:otn-link-bandwidth {
+         description
+           "The odtu-flex-type attribute of the OTN Link is used
+           to compute the number of Tributary Slots (TS) required
+           by the ODUflex LSPs set up on the OTN Link that uses this
+           Link Template.";
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:unreserved-bandwidth/"
+           + "tet:te-bandwidth" {
+       description
+         "Augment unreserved TE bandwidth the TE link template";
+       uses l1-types:otn-link-bandwidth {
+         description
+           "The odtu-flex-type attribute of the OTN Link is used
+           to compute the number of Tributary Slots (TS) required
+           by the ODUflex LSPs set up on the OTN Link that uses this
+           Link Template.";
+       }
+     }
+
+     /*
+      * Augment TE label range information
+      */
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+
+
+
+
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range information for the TE node
+          connectivity matrices.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:from/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range information for the source LTP
+          of the connectivity matrix entry.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:to/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range information for the destination LTP
+          of the connectivity matrix entry.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:connectivity-matrices/tet:label-restrictions/"
+           + "tet:label-restriction" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+
+
+
+
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range information for the TE node
+          connectivity matrices information source.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:from/tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range information for the source LTP
+          of the connectivity matrix entry information source.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:to/tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range information for the destination LTP
+          of the connectivity matrix entry information source.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+
+
+
+
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range information for the TTP
+          Local Link Connectivities.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range information for the TTP
+          Local Link Connectivity entry.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range information for the TE link.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       when "../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+
+
+
+
+       }
+       description
+         "Augment TE label range information for the TE link
+          information source.";
+       uses label-range-info;
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction" {
+       description
+         "Augment TE label range information for the TE link template.";
+       uses label-range-info;
+     }
+
+     /*
+      * Augment TE label
+      */
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range start for the TE node
+          connectivity matrices";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:label-restrictions/"
+           + "tet:label-restriction/tet:label-end/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+
+
+
+
+       }
+       description
+         "Augment TE label range end for the TE node
+          connectivity matrices";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:label-restrictions/"
+           + "tet:label-restriction/tet:label-step/"
+           + "tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range step for the TE node
+          connectivity matrices";
+       case otn {
+         uses l1-types:otn-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:underlay/tet:primary-path/tet:path-element/"
+           + "tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path of the
+          TE node connectivity matrices";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+
+
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:underlay/tet:backup-path/tet:path-element/"
+           + "tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path of the
+          TE node connectivity matrices";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-exclude-objects/"
+           + "tet:route-object-exclude-object/"
+           + "tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects excluded
+          by the path computation of the TE node connectivity
+          matrices";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+
+
+
+
+           + "tet:explicit-route-include-objects/"
+           + "tet:route-object-include-object/"
+           + "tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects included
+          by the path computation of the TE node connectivity
+          matrices";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:path-properties/tet:path-route-objects/"
+           + "tet:path-route-object/tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the computed path route objects
+          of the TE node connectivity matrices";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:from/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+
+
+
+
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range start for the source LTP
+          of the connectivity matrix entry.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:from/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range end for the source LTP
+          of the connectivity matrix entry.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:from/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/"
+           + "tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+
+
+
+
+         "Augment TE label range step for the source LTP
+          of the connectivity matrix entry.";
+       case otn {
+         uses l1-types:otn-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:to/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range start for the destination LTP
+          of the connectivity matrix entry.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:to/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range end for the destination LTP
+          of the connectivity matrix entry.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+
+
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:to/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/"
+           + "tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range step for the destination LTP
+          of the connectivity matrix entry.";
+       case otn {
+         uses l1-types:otn-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:underlay/tet:primary-path/tet:path-element/"
+           + "tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path
+          of the connectivity matrix entry.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:underlay/tet:backup-path/tet:path-element/"
+           + "tet:type/tet:label/tet:label-hop/"
+           + "tet:te-label/tet:technology" {
+
+
+
+
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path
+          of the connectivity matrix entry.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:optimizations/"
+           + "tet:algorithm/tet:metric/tet:optimization-metric/"
+           + "tet:explicit-route-exclude-objects/"
+           + "tet:route-object-exclude-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects excluded
+          by the path computation of the connectivity matrix entry.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/tet:optimizations/"
+           + "tet:algorithm/tet:metric/tet:optimization-metric/"
+           + "tet:explicit-route-include-objects/"
+           + "tet:route-object-include-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+
+
+
+
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects included
+          by the path computation of the connectivity matrix entry.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:te-node-attributes/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:path-properties/tet:path-route-objects/"
+           + "tet:path-route-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the computed path route objects
+          of the connectivity matrix entry.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:connectivity-matrices/tet:label-restrictions/"
+           + "tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range start for the TE node connectivity
+          matrices information source.";
+       case otn {
+
+
+
+
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:connectivity-matrices/tet:label-restrictions/"
+           + "tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range end for the TE node connectivity
+          matrices information source.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:connectivity-matrices/tet:label-restrictions/"
+           + "tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       when "../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range step for the TE node connectivity
+          matrices information source.";
+       case otn {
+         uses l1-types:otn-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+
+
+
+
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path
+          of the TE node connectivity matrices of the information
+          source entry.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path
+          of the TE node connectivity matrices of the information
+          source entry.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-exclude-objects/"
+           + "tet:route-object-exclude-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+
+
+
+
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects excluded
+          by the path computation of the TE node connectivity matrices
+          information source.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-include-objects/"
+           + "tet:route-object-include-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects included
+          by the path computation of the TE node connectivity matrices
+          information source.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:path-properties/tet:path-route-objects/"
+           + "tet:path-route-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the computed path route objects
+
+
+
+
+          of the TE node connectivity matrices information source.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:from/tet:label-restrictions/"
+           + "tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range start for the source LTP
+          of the connectivity matrix entry information source.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:from/tet:label-restrictions/"
+           + "tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range end for the source LTP
+          of the connectivity matrix entry information source.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+
+
+
+
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:from/tet:label-restrictions/"
+           + "tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range step for the source LTP
+          of the connectivity matrix entry information source.";
+       case otn {
+         uses l1-types:otn-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:to/tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range start for the destination LTP
+          of the connectivity matrix entry information source.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:to/tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+
+
+
+
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range end for the destination LTP
+          of the connectivity matrix entry information source.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:to/tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range step for the destination LTP
+          of the connectivity matrix entry information source.";
+       case otn {
+         uses l1-types:otn-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path
+          of the connectivity matrix entry information source.";
+       case otn {
+
+
+
+
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path
+          of the connectivity matrix entry information source.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-exclude-objects/"
+           + "tet:route-object-exclude-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects excluded
+          by the path computation of the connectivity matrix entry
+          information source.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+
+
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-include-objects/"
+           + "tet:route-object-include-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects included
+          by the path computation of the connectivity matrix entry
+          information source.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:information-source-entry/tet:connectivity-matrices/"
+           + "tet:connectivity-matrix/"
+           + "tet:path-properties/tet:path-route-objects/"
+           + "tet:path-route-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the computed path route objects
+          of the connectivity matrix entry information source.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+         + "tet:tunnel-termination-point/"
+         + "tet:local-link-connectivities/"
+
+
+
+
+         + "tet:label-restrictions/tet:label-restriction/"
+         + "tet:label-start/"
+         + "tet:te-label/tet:technology" {
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range start for the TTP
+          Local Link Connectivities.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/"
+           + "tet:te-label/tet:technology"{
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range end for the TTP
+          Local Link Connectivities.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/"
+           + "tet:technology"{
+       when "../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+
+
+
+
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range step for the TTP
+          Local Link Connectivities.";
+       case otn {
+         uses l1-types:otn-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path
+          of the TTP Local Link Connectivities.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path
+          of the TTP Local Link Connectivities.";
+       case otn {
+
+
+
+
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-exclude-objects/"
+           + "tet:route-object-exclude-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects excluded
+          by the path computation of the TTP Local Link
+          Connectivities.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-include-objects/"
+           + "tet:route-object-include-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects included
+          by the path computation of the TTP Local Link
+          Connectivities.";
+       case otn {
+
+
+
+
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:path-properties/tet:path-route-objects/"
+           + "tet:path-route-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the computed path route objects
+          of the TTP Local Link Connectivities.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range start for the TTP
+          Local Link Connectivity entry.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+
+
+
+
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       when "../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range end for the TTP
+          Local Link Connectivity entry.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range step for the TTP
+          Local Link Connectivity entry.";
+       case otn {
+         uses l1-types:otn-label-step;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+
+
+
+
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path
+          of the TTP Local Link Connectivity entry.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path
+          of the TTP Local Link Connectivity entry.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-exclude-objects/"
+           + "tet:route-object-exclude-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+
+
+
+
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects excluded
+          by the path computation of the TTP Local Link
+          Connectivity entry.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:optimizations/tet:algorithm/tet:metric/"
+           + "tet:optimization-metric/"
+           + "tet:explicit-route-include-objects/"
+           + "tet:route-object-include-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the explicit route objects included
+          by the path computation of the TTP Local Link
+          Connectivity entry.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nw:node/tet:te/"
+           + "tet:tunnel-termination-point/"
+           + "tet:local-link-connectivities/"
+           + "tet:local-link-connectivity/"
+           + "tet:path-properties/tet:path-route-objects/"
+           + "tet:path-route-object/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+
+
+
+
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the computed path route objects
+          of the TTP Local Link Connectivity entry.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay primary path
+          of the TE link.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       when "../../../../../../../../"
+          + "nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label hop for the underlay backup path
+          of the TE link.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+
+
+
+
+           + "tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range start for the TE link.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range end for the TE link.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range step for the TE link.";
+       case otn {
+         uses l1-types:otn-label-step;
+       }
+
+
+
+
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range start for the TE link
+          information source.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       when "../../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+       description
+         "Augment TE label range end for the TE link
+          information source.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/nw:network/nt:link/tet:te/"
+           + "tet:information-source-entry/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       when "../../../../../../nw:network-types/tet:te-topology/"
+          + "otnt:otn-topology" {
+         description
+           "Augmentation parameters apply only for networks with
+            OTN topology type.";
+       }
+
+
+
+
+       description
+         "Augment TE label range step for the TE link
+          information source.";
+       case otn {
+         uses l1-types:otn-label-step;
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       description
+         "Augment TE label hop for the underlay primary path
+          of the TE link template.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+       description
+         "Augment TE label hop for the underlay backup path
+          of the TE link template.";
+       case otn {
+         uses l1-types:otn-label-hop;
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-start/tet:te-label/tet:technology" {
+       description
+         "Augment TE label range start for the TE link template.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-end/tet:te-label/tet:technology" {
+       description
+
+
+
+
+         "Augment TE label range end for the TE link template.";
+       case otn {
+         uses l1-types:otn-label-start-end;
+       }
+     }
+
+     augment "/nw:networks/tet:te/tet:templates/"
+           + "tet:link-template/tet:te-link-attributes/"
+           + "tet:label-restrictions/tet:label-restriction/"
+           + "tet:label-step/tet:technology" {
+       description
+         "Augment TE label range step for the TE link template.";
+       case otn {
+         uses l1-types:otn-label-step;
+       }
+     }
+   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-routing-types@2017-12-04.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-routing-types@2017-12-04.yang
new file mode 100644
index 000000000..695d9eaeb
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-routing-types@2017-12-04.yang
@@ -0,0 +1,774 @@
+   module ietf-routing-types {
+     namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types";
+     prefix rt-types;
+
+     import ietf-yang-types {
+       prefix yang;
+     }
+     import ietf-inet-types {
+       prefix inet;
+     }
+
+     organization
+       "IETF RTGWG - Routing Area Working Group";
+     contact
+       "WG Web:   <https://datatracker.ietf.org/wg/rtgwg/>
+        WG List:  <mailto:rtgwg@ietf.org>
+
+        Editors:  Xufeng Liu
+                  <mailto:Xufeng_Liu@jabail.com>
+                  Yingzhen Qu
+                  <mailto:yingzhen.qu@huawei.com>
+                  Acee Lindem
+                  <mailto:acee@cisco.com>
+                  Christian Hopps
+                  <mailto:chopps@chopps.org>
+                  Lou Berger
+                  <mailto:lberger@labn.com>";
+
+     description
+       "This module contains a collection of YANG data types
+        considered generally useful for routing protocols.
+
+        Copyright (c) 2017 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
+        (https://trustee.ietf.org/license-info).
+
+        This version of this YANG module is part of RFC 8294; see
+        the RFC itself for full legal notices.";
+
+      revision 2017-12-04 {
+        description "Initial revision.";
+        reference
+          "RFC 8294: Common YANG Data Types for the Routing Area.
+           Section 3.";
+     }
+
+     /*** Identities related to MPLS/GMPLS ***/
+
+     identity mpls-label-special-purpose-value {
+       description
+         "Base identity for deriving identities describing
+          special-purpose Multiprotocol Label Switching (MPLS) label
+          values.";
+       reference
+         "RFC 7274: Allocating and Retiring Special-Purpose MPLS
+          Labels.";
+     }
+
+     identity ipv4-explicit-null-label {
+       base mpls-label-special-purpose-value;
+       description
+         "This identity represents the IPv4 Explicit NULL Label.";
+       reference
+         "RFC 3032: MPLS Label Stack Encoding.  Section 2.1.";
+     }
+
+     identity router-alert-label {
+       base mpls-label-special-purpose-value;
+       description
+         "This identity represents the Router Alert Label.";
+       reference
+         "RFC 3032: MPLS Label Stack Encoding.  Section 2.1.";
+     }
+
+     identity ipv6-explicit-null-label {
+       base mpls-label-special-purpose-value;
+       description
+         "This identity represents the IPv6 Explicit NULL Label.";
+       reference
+         "RFC 3032: MPLS Label Stack Encoding.  Section 2.1.";
+     }
+
+     identity implicit-null-label {
+       base mpls-label-special-purpose-value;
+       description
+         "This identity represents the Implicit NULL Label.";
+       reference
+         "RFC 3032: MPLS Label Stack Encoding.  Section 2.1.";
+     }
+
+     identity entropy-label-indicator {
+       base mpls-label-special-purpose-value;
+       description
+         "This identity represents the Entropy Label Indicator.";
+       reference
+         "RFC 6790: The Use of Entropy Labels in MPLS Forwarding.
+          Sections 3 and 10.1.";
+     }
+
+     identity gal-label {
+       base mpls-label-special-purpose-value;
+       description
+         "This identity represents the Generic Associated Channel
+          (G-ACh) Label (GAL).";
+       reference
+         "RFC 5586: MPLS Generic Associated Channel.
+          Sections 4 and 10.";
+     }
+
+     identity oam-alert-label {
+       base mpls-label-special-purpose-value;
+       description
+         "This identity represents the OAM Alert Label.";
+       reference
+         "RFC 3429: Assignment of the 'OAM Alert Label' for
+          Multiprotocol Label Switching Architecture (MPLS)
+          Operation and Maintenance (OAM) Functions.
+          Sections 3 and 6.";
+     }
+
+     identity extension-label {
+       base mpls-label-special-purpose-value;
+       description
+         "This identity represents the Extension Label.";
+       reference
+         "RFC 7274: Allocating and Retiring Special-Purpose MPLS
+          Labels.  Sections 3.1 and 5.";
+     }
+
+     /*** Collection of types related to routing ***/
+
+     typedef router-id {
+       type yang:dotted-quad;
+       description
+         "A 32-bit number in the dotted-quad format assigned to each
+          router.  This number uniquely identifies the router within
+          an Autonomous System.";
+     }
+
+     /*** Collection of types related to VPNs ***/
+
+     typedef route-target {
+       type string {
+         pattern
+           '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+         +     '6[0-4][0-9]{3}|'
+         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|'
+         +     '42949672[0-8][0-9]|'
+         +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|'
+         +     '42949[0-5][0-9]{4}|'
+         +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|'
+         +     '42[0-8][0-9]{7}|4[01][0-9]{8}|'
+         +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|'
+         + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|'
+         +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|'
+         +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|'
+         +     '655[0-2][0-9]|'
+         +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|'
+         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+         + '(2:(429496729[0-5]|42949672[0-8][0-9]|'
+         +     '4294967[01][0-9]{2}|'
+         +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|'
+         +     '4294[0-8][0-9]{5}|'
+         +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|'
+         +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):'
+         +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+         +     '6[0-4][0-9]{3}|'
+         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+         + '(6(:[a-fA-F0-9]{2}){6})|'
+         + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):'
+         +     '[0-9a-fA-F]{1,12})';
+       }
+
+       description
+         "A Route Target is an 8-octet BGP extended community
+          initially identifying a set of sites in a BGP VPN
+          (RFC 4364).  However, it has since taken on a more general
+          role in BGP route filtering.  A Route Target consists of two
+          or three fields: a 2-octet Type field, an administrator
+          field, and, optionally, an assigned number field.
+
+          According to the data formats for types 0, 1, 2, and 6 as
+          defined in RFC 4360, RFC 5668, and RFC 7432, the encoding
+          pattern is defined as:
+
+          0:2-octet-asn:4-octet-number
+          1:4-octet-ipv4addr:2-octet-number
+          2:4-octet-asn:2-octet-number
+          6:6-octet-mac-address
+
+          Additionally, a generic pattern is defined for future
+          Route Target types:
+
+          2-octet-other-hex-number:6-octet-hex-number
+
+          Some valid examples are 0:100:100, 1:1.1.1.1:100,
+          2:1234567890:203, and 6:26:00:08:92:78:00.";
+       reference
+         "RFC 4360: BGP Extended Communities Attribute.
+          RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).
+          RFC 5668: 4-Octet AS Specific BGP Extended Community.
+          RFC 7432: BGP MPLS-Based Ethernet VPN.";
+     }
+
+     typedef ipv6-route-target {
+       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]|1[0-9]{2}|[1-9]?[0-9])\.){3}'
+             + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))'
+             + ':'
+             + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+             + '6[0-4][0-9]{3}|'
+             + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
+         pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))'
+             + ':'
+             + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+             + '6[0-4][0-9]{3}|'
+             + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
+       }
+       description
+         "An IPv6 Route Target is a 20-octet BGP IPv6 Address
+          Specific Extended Community serving the same function
+          as a standard 8-octet Route Target, except that it only
+          allows an IPv6 address as the global administrator.
+          The format is <ipv6-address:2-octet-number>.
+
+          Two valid examples are 2001:db8::1:6544 and
+          2001:db8::5eb1:791:6b37:17958.";
+       reference
+         "RFC 5701: IPv6 Address Specific BGP Extended Community
+          Attribute.";
+     }
+
+     typedef route-target-type {
+       type enumeration {
+         enum import {
+           value 0;
+           description
+             "The Route Target applies to route import.";
+         }
+         enum export {
+           value 1;
+           description
+             "The Route Target applies to route export.";
+         }
+
+         enum both {
+           value 2;
+           description
+             "The Route Target applies to both route import and
+              route export.";
+         }
+       }
+       description
+         "Indicates the role a Route Target takes in route filtering.";
+       reference
+         "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).";
+     }
+
+     typedef route-distinguisher {
+       type string {
+         pattern
+           '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+         +     '6[0-4][0-9]{3}|'
+         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|'
+         +     '42949672[0-8][0-9]|'
+         +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|'
+         +     '42949[0-5][0-9]{4}|'
+         +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|'
+         +     '42[0-8][0-9]{7}|4[01][0-9]{8}|'
+         +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|'
+         + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|'
+         +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|'
+         +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|'
+         +     '655[0-2][0-9]|'
+         +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|'
+         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+         + '(2:(429496729[0-5]|42949672[0-8][0-9]|'
+         +     '4294967[01][0-9]{2}|'
+         +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|'
+         +     '4294[0-8][0-9]{5}|'
+         +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|'
+         +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):'
+         +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+         +     '6[0-4][0-9]{3}|'
+         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+         + '(6(:[a-fA-F0-9]{2}){6})|'
+         + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):'
+         +     '[0-9a-fA-F]{1,12})';
+       }
+
+       description
+         "A Route Distinguisher is an 8-octet value used to
+          distinguish routes from different BGP VPNs (RFC 4364).
+          A Route Distinguisher will have the same format as a
+          Route Target as per RFC 4360 and will consist of
+          two or three fields: a 2-octet Type field, an administrator
+          field, and, optionally, an assigned number field.
+
+          According to the data formats for types 0, 1, 2, and 6 as
+          defined in RFC 4360, RFC 5668, and RFC 7432, the encoding
+          pattern is defined as:
+
+          0:2-octet-asn:4-octet-number
+          1:4-octet-ipv4addr:2-octet-number
+          2:4-octet-asn:2-octet-number
+          6:6-octet-mac-address
+
+          Additionally, a generic pattern is defined for future
+          route discriminator types:
+
+          2-octet-other-hex-number:6-octet-hex-number
+
+          Some valid examples are 0:100:100, 1:1.1.1.1:100,
+          2:1234567890:203, and 6:26:00:08:92:78:00.";
+       reference
+         "RFC 4360: BGP Extended Communities Attribute.
+          RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).
+          RFC 5668: 4-Octet AS Specific BGP Extended Community.
+          RFC 7432: BGP MPLS-Based Ethernet VPN.";
+     }
+
+     typedef route-origin {
+       type string {
+         pattern
+           '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+         +     '6[0-4][0-9]{3}|'
+         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|'
+         +     '42949672[0-8][0-9]|'
+         +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|'
+         +     '42949[0-5][0-9]{4}|'
+         +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|'
+         +     '42[0-8][0-9]{7}|4[01][0-9]{8}|'
+         +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|'
+         + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|'
+         +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|'
+         +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|'
+         +     '655[0-2][0-9]|'
+         +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|'
+         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+         + '(2:(429496729[0-5]|42949672[0-8][0-9]|'
+         +     '4294967[01][0-9]{2}|'
+         +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|'
+         +     '4294[0-8][0-9]{5}|'
+         +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|'
+         +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):'
+         +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+         +     '6[0-4][0-9]{3}|'
+         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+         + '(6(:[a-fA-F0-9]{2}){6})|'
+         + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):'
+         +    '[0-9a-fA-F]{1,12})';
+       }
+       description
+         "A Route Origin is an 8-octet BGP extended community
+          identifying the set of sites where the BGP route
+          originated (RFC 4364).  A Route Origin will have the same
+          format as a Route Target as per RFC 4360 and will consist
+          of two or three fields: a 2-octet Type field, an
+          administrator field, and, optionally, an assigned number
+          field.
+
+          According to the data formats for types 0, 1, 2, and 6 as
+          defined in RFC 4360, RFC 5668, and RFC 7432, the encoding
+          pattern is defined as:
+
+          0:2-octet-asn:4-octet-number
+          1:4-octet-ipv4addr:2-octet-number
+          2:4-octet-asn:2-octet-number
+          6:6-octet-mac-address
+
+          Additionally, a generic pattern is defined for future
+          Route Origin types:
+
+          2-octet-other-hex-number:6-octet-hex-number
+
+          Some valid examples are 0:100:100, 1:1.1.1.1:100,
+          2:1234567890:203, and 6:26:00:08:92:78:00.";
+       reference
+         "RFC 4360: BGP Extended Communities Attribute.
+          RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).
+          RFC 5668: 4-Octet AS Specific BGP Extended Community.
+          RFC 7432: BGP MPLS-Based Ethernet VPN.";
+     }
+
+     typedef ipv6-route-origin {
+       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]|1[0-9]{2}|[1-9]?[0-9])\.){3}'
+             + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))'
+             + ':'
+             + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+             + '6[0-4][0-9]{3}|'
+             + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
+         pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))'
+             + ':'
+             + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+             + '6[0-4][0-9]{3}|'
+             + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
+       }
+       description
+         "An IPv6 Route Origin is a 20-octet BGP IPv6 Address
+          Specific Extended Community serving the same function
+          as a standard 8-octet route, except that it only allows
+          an IPv6 address as the global administrator.  The format
+          is <ipv6-address:2-octet-number>.
+
+          Two valid examples are 2001:db8::1:6544 and
+          2001:db8::5eb1:791:6b37:17958.";
+       reference
+         "RFC 5701: IPv6 Address Specific BGP Extended Community
+          Attribute.";
+     }
+
+     /*** Collection of types common to multicast ***/
+
+     typedef ipv4-multicast-group-address {
+       type inet:ipv4-address {
+         pattern '(2((2[4-9])|(3[0-9]))\.).*';
+       }
+       description
+         "This type represents an IPv4 multicast group address,
+          which is in the range of 224.0.0.0 to 239.255.255.255.";
+       reference
+         "RFC 1112: Host Extensions for IP Multicasting.";
+     }
+
+     typedef ipv6-multicast-group-address {
+       type inet:ipv6-address {
+         pattern '(([fF]{2}[0-9a-fA-F]{2}):).*';
+       }
+       description
+         "This type represents an IPv6 multicast group address,
+          which is in the range of ff00::/8.";
+       reference
+         "RFC 4291: IP Version 6 Addressing Architecture.  Section 2.7.
+          RFC 7346: IPv6 Multicast Address Scopes.";
+     }
+
+     typedef ip-multicast-group-address {
+       type union {
+         type ipv4-multicast-group-address;
+         type ipv6-multicast-group-address;
+       }
+       description
+         "This type represents a version-neutral IP multicast group
+          address.  The format of the textual representation implies
+          the IP version.";
+     }
+
+     typedef ipv4-multicast-source-address {
+       type union {
+         type enumeration {
+           enum * {
+             description
+               "Any source address.";
+           }
+         }
+         type inet:ipv4-address;
+       }
+       description
+         "Multicast source IPv4 address type.";
+     }
+
+     typedef ipv6-multicast-source-address {
+       type union {
+         type enumeration {
+           enum * {
+             description
+               "Any source address.";
+           }
+         }
+         type inet:ipv6-address;
+       }
+       description
+         "Multicast source IPv6 address type.";
+     }
+
+     /*** Collection of types common to protocols ***/
+
+     typedef bandwidth-ieee-float32 {
+       type string {
+         pattern
+           '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
+         + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
+         + '1[01][0-9]|0?[0-9]?[0-9])?)';
+       }
+       description
+         "Bandwidth in IEEE 754 floating-point 32-bit binary format:
+          (-1)**(S) * 2**(Exponent-127) * (1 + Fraction),
+          where Exponent uses 8 bits and Fraction uses 23 bits.
+          The units are octets per second.
+          The encoding format is the external hexadecimal-significant
+          character sequences specified in IEEE 754 and ISO/IEC C99.
+          The format is restricted to be normalized, non-negative, and
+          non-fraction: 0x1.hhhhhhp{+}d, 0X1.HHHHHHP{+}D, or 0x0p0,
+          where 'h' and 'H' are hexadecimal digits and 'd' and 'D' are
+          integers in the range of [0..127].
+
+          When six hexadecimal digits are used for 'hhhhhh' or
+          'HHHHHH', the least significant digit must be an even
+          number.  'x' and 'X' indicate hexadecimal; 'p' and 'P'
+          indicate a power of two.  Some examples are 0x0p0, 0x1p10,
+          and 0x1.abcde2p+20.";
+       reference
+         "IEEE Std 754-2008: IEEE Standard for Floating-Point
+          Arithmetic.
+          ISO/IEC C99: Information technology - Programming
+          Languages - C.";
+     }
+
+     typedef link-access-type {
+       type enumeration {
+         enum broadcast {
+           description
+             "Specify broadcast multi-access network.";
+         }
+         enum non-broadcast-multiaccess {
+           description
+             "Specify Non-Broadcast Multi-Access (NBMA) network.";
+         }
+         enum point-to-multipoint {
+           description
+             "Specify point-to-multipoint network.";
+         }
+         enum point-to-point {
+           description
+             "Specify point-to-point network.";
+         }
+       }
+       description
+         "Link access type.";
+     }
+
+     typedef timer-multiplier {
+       type uint8;
+       description
+         "The number of timer value intervals that should be
+          interpreted as a failure.";
+     }
+
+     typedef timer-value-seconds16 {
+       type union {
+         type uint16 {
+           range "1..65535";
+         }
+         type enumeration {
+           enum infinity {
+             description
+               "The timer is set to infinity.";
+           }
+           enum not-set {
+             description
+               "The timer is not set.";
+           }
+         }
+       }
+       units "seconds";
+       description
+         "Timer value type, in seconds (16-bit range).";
+     }
+
+     typedef timer-value-seconds32 {
+       type union {
+         type uint32 {
+           range "1..4294967295";
+         }
+         type enumeration {
+           enum infinity {
+             description
+               "The timer is set to infinity.";
+           }
+           enum not-set {
+             description
+               "The timer is not set.";
+           }
+         }
+       }
+       units "seconds";
+       description
+         "Timer value type, in seconds (32-bit range).";
+     }
+
+     typedef timer-value-milliseconds {
+       type union {
+         type uint32 {
+           range "1..4294967295";
+         }
+         type enumeration {
+           enum infinity {
+             description
+               "The timer is set to infinity.";
+           }
+           enum not-set {
+             description
+               "The timer is not set.";
+           }
+         }
+       }
+       units "milliseconds";
+       description
+         "Timer value type, in milliseconds.";
+     }
+
+     typedef percentage {
+       type uint8 {
+         range "0..100";
+       }
+       description
+         "Integer indicating a percentage value.";
+     }
+
+     typedef timeticks64 {
+       type uint64;
+       description
+         "This type is based on the timeticks type defined in
+          RFC 6991, but with 64-bit width.  It represents the time,
+          modulo 2^64, in hundredths of a second between two epochs.";
+       reference
+         "RFC 6991: Common YANG Data Types.";
+     }
+
+     typedef uint24 {
+       type uint32 {
+         range "0..16777215";
+       }
+       description
+         "24-bit unsigned integer.";
+     }
+
+     /*** Collection of types related to MPLS/GMPLS ***/
+
+     typedef generalized-label {
+       type binary;
+       description
+         "Generalized Label.  Nodes sending and receiving the
+          Generalized Label are aware of the link-specific
+          label context and type.";
+       reference
+         "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+          Signaling Functional Description.  Section 3.2.";
+     }
+
+     typedef mpls-label-special-purpose {
+       type identityref {
+         base mpls-label-special-purpose-value;
+       }
+       description
+         "This type represents the special-purpose MPLS label values.";
+       reference
+         "RFC 3032: MPLS Label Stack Encoding.
+          RFC 7274: Allocating and Retiring Special-Purpose MPLS
+          Labels.";
+     }
+
+     typedef mpls-label-general-use {
+       type uint32 {
+         range "16..1048575";
+       }
+       description
+         "The 20-bit label value in an MPLS label stack as specified
+          in RFC 3032.  This label value does not include the
+          encodings of Traffic Class and TTL (Time to Live).
+          The label range specified by this type is for general use,
+          with special-purpose MPLS label values excluded.";
+       reference
+         "RFC 3032: MPLS Label Stack Encoding.";
+     }
+
+     typedef mpls-label {
+       type union {
+         type mpls-label-special-purpose;
+         type mpls-label-general-use;
+       }
+       description
+         "The 20-bit label value in an MPLS label stack as specified
+          in RFC 3032.  This label value does not include the
+          encodings of Traffic Class and TTL.";
+       reference
+         "RFC 3032: MPLS Label Stack Encoding.";
+     }
+
+     /*** Groupings **/
+
+     grouping mpls-label-stack {
+       description
+         "This grouping specifies an MPLS label stack.  The label
+          stack is encoded as a list of label stack entries.  The
+          list key is an identifier that indicates the relative
+          ordering of each entry, with the lowest-value identifier
+          corresponding to the top of the label stack.";
+       container mpls-label-stack {
+         description
+           "Container for a list of MPLS label stack entries.";
+         list entry {
+           key "id";
+           description
+             "List of MPLS label stack entries.";
+           leaf id {
+             type uint8;
+             description
+               "Identifies the entry in a sequence of MPLS label
+                stack entries.  An entry with a smaller identifier
+                value precedes an entry with a larger identifier
+                value in the label stack.  The value of this ID has
+                no semantic meaning other than relative ordering
+                and referencing the entry.";
+           }
+           leaf label {
+             type rt-types:mpls-label;
+             description
+               "Label value.";
+           }
+
+           leaf ttl {
+             type uint8;
+             description
+               "Time to Live (TTL).";
+             reference
+               "RFC 3032: MPLS Label Stack Encoding.";
+           }
+           leaf traffic-class {
+             type uint8 {
+               range "0..7";
+             }
+             description
+               "Traffic Class (TC).";
+             reference
+               "RFC 5462: Multiprotocol Label Switching (MPLS) Label
+                Stack Entry: 'EXP' Field Renamed to 'Traffic Class'
+                Field.";
+           }
+         }
+       }
+     }
+
+     grouping vpn-route-targets {
+       description
+         "A grouping that specifies Route Target import-export rules
+          used in BGP-enabled VPNs.";
+       reference
+         "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).
+          RFC 4664: Framework for Layer 2 Virtual Private Networks
+          (L2VPNs).";
+       list vpn-target {
+         key "route-target";
+         description
+           "List of Route Targets.";
+         leaf route-target {
+           type rt-types:route-target;
+           description
+             "Route Target value.";
+         }
+         leaf route-target-type {
+           type rt-types:route-target-type;
+           mandatory true;
+           description
+             "Import/export type of the Route Target.";
+         }
+       }
+     }
+   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-packet-types@2020-06-10.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-packet-types@2020-06-10.yang
new file mode 100644
index 000000000..8e7d4aafa
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-packet-types@2020-06-10.yang
@@ -0,0 +1,475 @@
+module ietf-te-packet-types {
+  yang-version 1.1;
+  namespace "urn:ietf:params:xml:ns:yang:ietf-te-packet-types";
+  prefix te-packet-types;
+
+  /* Import TE generic types */
+
+  import ietf-te-types {
+    prefix te-types;
+    reference
+      "RFC 8776: Common YANG Data Types for Traffic Engineering";
+  }
+
+  organization
+    "IETF Traffic Engineering Architecture and Signaling (TEAS)
+     Working Group";
+  contact
+    "WG Web:   <https://datatracker.ietf.org/wg/teas/>
+     WG List:  <mailto:teas@ietf.org>
+
+     Editor:   Tarek Saad
+               <mailto:tsaad@juniper.net>
+
+     Editor:   Rakesh Gandhi
+               <mailto:rgandhi@cisco.com>
+
+     Editor:   Vishnu Pavan Beeram
+               <mailto:vbeeram@juniper.net>
+
+     Editor:   Xufeng Liu
+               <mailto:xufeng.liu.ietf@gmail.com>
+
+     Editor:   Igor Bryskin
+               <mailto:i_bryskin@yahoo.com>";
+  description
+    "This YANG module contains a collection of generally useful YANG
+     data type definitions specific to MPLS TE.  The model fully
+     conforms to the Network Management Datastore Architecture
+     (NMDA).
+
+     Copyright (c) 2020 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
+     (https://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of RFC 8776; see the
+     RFC itself for full legal notices.";
+
+  revision 2020-06-10 {
+    description
+      "Latest revision of TE MPLS types.";
+    reference
+      "RFC 8776: Common YANG Data Types for Traffic Engineering";
+  }
+
+  /**
+   * Typedefs
+   */
+
+  typedef te-bandwidth-requested-type {
+    type enumeration {
+      enum specified {
+        description
+          "Bandwidth is explicitly specified.";
+      }
+      enum auto {
+        description
+          "Bandwidth is automatically computed.";
+      }
+    }
+    description
+      "Enumerated type for specifying whether bandwidth is
+       explicitly specified or automatically computed.";
+  }
+
+  typedef te-class-type {
+    type uint8;
+    description
+      "Diffserv-TE Class-Type.  Defines a set of Traffic Trunks
+       crossing a link that is governed by a specific set of
+       bandwidth constraints.  Class-Type is used for the purposes
+       of link bandwidth allocation, constraint-based routing, and
+       admission control.";
+    reference
+      "RFC 4124: Protocol Extensions for Support of Diffserv-aware
+       MPLS Traffic Engineering";
+  }
+
+  typedef bc-type {
+    type uint8 {
+      range "0..7";
+    }
+    description
+      "Diffserv-TE bandwidth constraints as defined in RFC 4124.";
+    reference
+      "RFC 4124: Protocol Extensions for Support of Diffserv-aware
+       MPLS Traffic Engineering";
+  }
+
+  typedef bandwidth-kbps {
+    type uint64;
+    units "Kbps";
+    description
+      "Bandwidth values, expressed in kilobits per second.";
+  }
+
+  typedef bandwidth-mbps {
+    type uint64;
+    units "Mbps";
+    description
+      "Bandwidth values, expressed in megabits per second.";
+  }
+
+  typedef bandwidth-gbps {
+    type uint64;
+    units "Gbps";
+    description
+      "Bandwidth values, expressed in gigabits per second.";
+  }
+
+  identity backup-protection-type {
+    description
+      "Base identity for the backup protection type.";
+  }
+
+  identity backup-protection-link {
+    base backup-protection-type;
+    description
+      "Backup provides link protection only.";
+  }
+
+  identity backup-protection-node-link {
+    base backup-protection-type;
+    description
+      "Backup offers node (preferred) or link protection.";
+  }
+
+  identity bc-model-type {
+    description
+      "Base identity for the Diffserv-TE Bandwidth Constraints
+       Model type.";
+    reference
+      "RFC 4124: Protocol Extensions for Support of Diffserv-aware
+       MPLS Traffic Engineering";
+  }
+
+  identity bc-model-rdm {
+    base bc-model-type;
+    description
+      "Russian Dolls Bandwidth Constraints Model type.";
+    reference
+      "RFC 4127: Russian Dolls Bandwidth Constraints Model for
+                 Diffserv-aware MPLS Traffic Engineering";
+  }
+
+  identity bc-model-mam {
+    base bc-model-type;
+    description
+      "Maximum Allocation Bandwidth Constraints Model type.";
+    reference
+      "RFC 4125: Maximum Allocation Bandwidth Constraints Model for
+                 Diffserv-aware MPLS Traffic Engineering";
+  }
+
+  identity bc-model-mar {
+    base bc-model-type;
+    description
+      "Maximum Allocation with Reservation Bandwidth Constraints
+       Model type.";
+    reference
+      "RFC 4126: Max Allocation with Reservation Bandwidth
+       Constraints Model for Diffserv-aware MPLS Traffic Engineering
+       & Performance Comparisons";
+  }
+
+  grouping performance-metrics-attributes-packet {
+    description
+      "Contains PM attributes.";
+    uses te-types:performance-metrics-attributes {
+      augment "performance-metrics-one-way" {
+        leaf one-way-min-delay {
+          type uint32 {
+            range "0..16777215";
+          }
+          description
+            "One-way minimum delay or latency in microseconds.";
+        }
+        leaf one-way-min-delay-normality {
+          type te-types:performance-metrics-normality;
+          default "normal";
+          description
+            "One-way minimum delay or latency normality.";
+        }
+        leaf one-way-max-delay {
+          type uint32 {
+            range "0..16777215";
+          }
+          description
+            "One-way maximum delay or latency in microseconds.";
+        }
+        leaf one-way-max-delay-normality {
+          type te-types:performance-metrics-normality;
+          default "normal";
+          description
+            "One-way maximum delay or latency normality.";
+        }
+        leaf one-way-delay-variation {
+          type uint32 {
+            range "0..16777215";
+          }
+          description
+            "One-way delay variation in microseconds.";
+          reference
+            "RFC 5481: Packet Delay Variation Applicability
+             Statement, Section 4.2";
+        }
+        leaf one-way-delay-variation-normality {
+          type te-types:performance-metrics-normality;
+          default "normal";
+          description
+            "One-way delay variation normality.";
+          reference
+            "RFC 7471: OSPF Traffic Engineering (TE) Metric
+             Extensions
+             RFC 7823: Performance-Based Path Selection for
+             Explicitly Routed Label Switched Paths (LSPs) Using
+             TE Metric Extensions
+             RFC 8570: IS-IS Traffic Engineering (TE) Metric
+             Extensions";
+        }
+        leaf one-way-packet-loss {
+          type decimal64 {
+            fraction-digits 6;
+            range "0..50.331642";
+          }
+          description
+            "One-way packet loss as a percentage of the total traffic
+             sent over a configurable interval.  The finest precision
+             is 0.000003%, where the maximum is 50.331642%.";
+          reference
+            "RFC 8570: IS-IS Traffic Engineering (TE) Metric
+             Extensions, Section 4.4";
+        }
+        leaf one-way-packet-loss-normality {
+          type te-types:performance-metrics-normality;
+          default "normal";
+          description
+            "Packet loss normality.";
+          reference
+            "RFC 7471: OSPF Traffic Engineering (TE) Metric
+             Extensions
+             RFC 7823: Performance-Based Path Selection for
+             Explicitly Routed Label Switched Paths (LSPs) Using
+             TE Metric Extensions
+             RFC 8570: IS-IS Traffic Engineering (TE) Metric
+             Extensions";
+        }
+        description
+          "PM one-way packet-specific augmentation for a generic PM
+           grouping.";
+      }
+      augment "performance-metrics-two-way" {
+        leaf two-way-min-delay {
+          type uint32 {
+            range "0..16777215";
+          }
+          default "0";
+          description
+            "Two-way minimum delay or latency in microseconds.";
+        }
+        leaf two-way-min-delay-normality {
+          type te-types:performance-metrics-normality;
+          default "normal";
+          description
+            "Two-way minimum delay or latency normality.";
+          reference
+            "RFC 7471: OSPF Traffic Engineering (TE) Metric
+             Extensions
+             RFC 7823: Performance-Based Path Selection for
+             Explicitly Routed Label Switched Paths (LSPs) Using
+             TE Metric Extensions
+             RFC 8570: IS-IS Traffic Engineering (TE) Metric
+             Extensions";
+        }
+        leaf two-way-max-delay {
+          type uint32 {
+            range "0..16777215";
+          }
+          default "0";
+          description
+            "Two-way maximum delay or latency in microseconds.";
+        }
+        leaf two-way-max-delay-normality {
+          type te-types:performance-metrics-normality;
+          default "normal";
+          description
+            "Two-way maximum delay or latency normality.";
+          reference
+            "RFC 7471: OSPF Traffic Engineering (TE) Metric
+             Extensions
+             RFC 7823: Performance-Based Path Selection for
+             Explicitly Routed Label Switched Paths (LSPs) Using
+             TE Metric Extensions
+             RFC 8570: IS-IS Traffic Engineering (TE) Metric
+             Extensions";
+        }
+        leaf two-way-delay-variation {
+          type uint32 {
+            range "0..16777215";
+          }
+          default "0";
+          description
+            "Two-way delay variation in microseconds.";
+          reference
+            "RFC 5481: Packet Delay Variation Applicability
+             Statement, Section 4.2";
+        }
+        leaf two-way-delay-variation-normality {
+          type te-types:performance-metrics-normality;
+          default "normal";
+          description
+            "Two-way delay variation normality.";
+          reference
+            "RFC 7471: OSPF Traffic Engineering (TE) Metric
+             Extensions
+             RFC 7823: Performance-Based Path Selection for
+             Explicitly Routed Label Switched Paths (LSPs) Using
+             TE Metric Extensions
+             RFC 8570: IS-IS Traffic Engineering (TE) Metric
+             Extensions";
+        }
+        leaf two-way-packet-loss {
+          type decimal64 {
+            fraction-digits 6;
+            range "0..50.331642";
+          }
+          default "0";
+          description
+            "Two-way packet loss as a percentage of the total traffic
+             sent over a configurable interval.  The finest precision
+             is 0.000003%.";
+        }
+        leaf two-way-packet-loss-normality {
+          type te-types:performance-metrics-normality;
+          default "normal";
+          description
+            "Two-way packet loss normality.";
+        }
+        description
+          "PM two-way packet-specific augmentation for a generic PM
+           grouping.";
+        reference
+          "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+           RFC 7823: Performance-Based Path Selection for
+           Explicitly Routed Label Switched Paths (LSPs) Using
+           TE Metric Extensions
+           RFC 8570: IS-IS Traffic Engineering (TE) Metric
+           Extensions";
+      }
+    }
+  }
+
+  grouping one-way-performance-metrics-packet {
+    description
+      "One-way packet PM throttle grouping.";
+    leaf one-way-min-delay {
+      type uint32 {
+        range "0..16777215";
+      }
+      default "0";
+      description
+        "One-way minimum delay or latency in microseconds.";
+    }
+    leaf one-way-max-delay {
+      type uint32 {
+        range "0..16777215";
+      }
+      default "0";
+      description
+        "One-way maximum delay or latency in microseconds.";
+    }
+    leaf one-way-delay-variation {
+      type uint32 {
+        range "0..16777215";
+      }
+      default "0";
+      description
+        "One-way delay variation in microseconds.";
+    }
+    leaf one-way-packet-loss {
+      type decimal64 {
+        fraction-digits 6;
+        range "0..50.331642";
+      }
+      default "0";
+      description
+        "One-way packet loss as a percentage of the total traffic
+         sent over a configurable interval.  The finest precision is
+         0.000003%.";
+    }
+  }
+
+  grouping two-way-performance-metrics-packet {
+    description
+      "Two-way packet PM throttle grouping.";
+    leaf two-way-min-delay {
+      type uint32 {
+        range "0..16777215";
+      }
+      default "0";
+      description
+        "Two-way minimum delay or latency in microseconds.";
+    }
+    leaf two-way-max-delay {
+      type uint32 {
+        range "0..16777215";
+      }
+      default "0";
+      description
+        "Two-way maximum delay or latency in microseconds.";
+    }
+    leaf two-way-delay-variation {
+      type uint32 {
+        range "0..16777215";
+      }
+      default "0";
+      description
+        "Two-way delay variation in microseconds.";
+    }
+    leaf two-way-packet-loss {
+      type decimal64 {
+        fraction-digits 6;
+        range "0..50.331642";
+      }
+      default "0";
+      description
+        "Two-way packet loss as a percentage of the total traffic
+         sent over a configurable interval.  The finest precision is
+         0.000003%.";
+    }
+  }
+
+  grouping performance-metrics-throttle-container-packet {
+    description
+      "Packet PM threshold grouping.";
+    uses te-types:performance-metrics-throttle-container {
+      augment "throttle/threshold-out" {
+        uses one-way-performance-metrics-packet;
+        uses two-way-performance-metrics-packet;
+        description
+          "PM threshold-out packet augmentation for a
+           generic grouping.";
+      }
+      augment "throttle/threshold-in" {
+        uses one-way-performance-metrics-packet;
+        uses two-way-performance-metrics-packet;
+        description
+          "PM threshold-in packet augmentation for a
+           generic grouping.";
+      }
+      augment "throttle/threshold-accelerated-advertisement" {
+        uses one-way-performance-metrics-packet;
+        uses two-way-performance-metrics-packet;
+        description
+          "PM accelerated advertisement packet augmentation for a
+           generic grouping.";
+      }
+    }
+  }
+}
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-topology@2020-08-06.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-topology@2020-08-06.yang
new file mode 100644
index 000000000..6d76a77b2
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-topology@2020-08-06.yang
@@ -0,0 +1,1952 @@
+module ietf-te-topology {
+  yang-version 1.1;
+  namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology";
+  prefix tet;
+
+  import ietf-yang-types {
+    prefix yang;
+    reference
+      "RFC 6991: Common YANG Data Types";
+  }
+  import ietf-inet-types {
+    prefix inet;
+    reference
+      "RFC 6991: Common YANG Data Types";
+  }
+  import ietf-te-types {
+    prefix te-types;
+    reference
+      "RFC 8776: Common YANG Data Types for Traffic Engineering";
+  }
+  import ietf-network {
+    prefix nw;
+    reference
+      "RFC 8345: A YANG Data Model for Network Topologies";
+  }
+  import ietf-network-topology {
+    prefix nt;
+    reference
+      "RFC 8345: A YANG Data Model for Network Topologies";
+  }
+
+  organization
+    "IETF Traffic Engineering Architecture and Signaling (TEAS)
+     Working Group";
+  contact
+    "WG Web:   <https://datatracker.ietf.org/wg/teas/>
+     WG List:  <mailto:teas@ietf.org>
+
+     Editor:   Xufeng Liu
+               <mailto:xufeng.liu.ietf@gmail.com>
+
+     Editor:   Igor Bryskin
+               <mailto:i_bryskin@yahoo.com>
+
+     Editor:   Vishnu Pavan Beeram
+               <mailto:vbeeram@juniper.net>
+
+     Editor:   Tarek Saad
+               <mailto:tsaad@juniper.net>
+
+     Editor:   Himanshu Shah
+               <mailto:hshah@ciena.com>
+
+     Editor:   Oscar Gonzalez de Dios
+               <mailto:oscar.gonzalezdedios@telefonica.com>";
+  description
+    "This YANG module defines a TE topology model for representing,
+     retrieving, and manipulating technology-agnostic TE topologies.
+
+     Copyright (c) 2020 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
+     (https://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of RFC 8795; see the
+     RFC itself for full legal notices.";
+
+  revision 2020-08-06 {
+    description
+      "Initial revision.";
+    reference
+      "RFC 8795: YANG Data Model for Traffic Engineering (TE)
+       Topologies";
+  }
+
+  /*
+   * Features
+   */
+
+  feature nsrlg {
+    description
+      "This feature indicates that the system supports NSRLGs
+       (Non-Shared Risk Link Groups).";
+  }
+
+  feature te-topology-hierarchy {
+    description
+      "This feature indicates that the system allows an underlay
+       and/or overlay TE topology hierarchy.";
+  }
+
+  feature template {
+    description
+      "This feature indicates that the system supports
+       template configuration.";
+  }
+
+  /*
+   * Typedefs
+   */
+
+  typedef geographic-coordinate-degree {
+    type decimal64 {
+      fraction-digits 8;
+    }
+    description
+      "Decimal degree (DD) used to express latitude and longitude
+       geographic coordinates.";
+  }
+  // geographic-coordinate-degree
+
+  typedef te-info-source {
+    type enumeration {
+      enum unknown {
+        description
+          "The source is unknown.";
+      }
+      enum locally-configured {
+        description
+          "Configured entity.";
+      }
+      enum ospfv2 {
+        description
+          "OSPFv2.";
+      }
+      enum ospfv3 {
+        description
+          "OSPFv3.";
+      }
+      enum isis {
+        description
+          "IS-IS.";
+      }
+      enum bgp-ls {
+        description
+          "BGP-LS.";
+        reference
+          "RFC 7752: North-Bound Distribution of Link-State and
+           Traffic Engineering (TE) Information Using BGP";
+      }
+      enum system-processed {
+        description
+          "System-processed entity.";
+      }
+      enum other {
+        description
+          "Other source.";
+      }
+    }
+    description
+      "Describes the type of source that has provided the
+       related information, and the source's credibility.";
+  }
+  // te-info-source
+
+  /*
+   * Groupings
+   */
+
+  grouping connectivity-matrix-entry-path-attributes {
+    description
+      "Attributes of a connectivity matrix entry.";
+    leaf is-allowed {
+      type boolean;
+      description
+        "'true' - switching is allowed;
+         'false' - switching is disallowed.";
+    }
+    container underlay {
+      if-feature "te-topology-hierarchy";
+      description
+        "Attributes of the TE link underlay.";
+      reference
+        "RFC 4206: Label Switched Paths (LSP) Hierarchy with
+         Generalized Multi-Protocol Label Switching (GMPLS)
+         Traffic Engineering (TE)";
+      uses te-link-underlay-attributes;
+    }
+    uses te-types:generic-path-constraints;
+    uses te-types:generic-path-optimization;
+    uses te-types:generic-path-properties;
+  }
+  // connectivity-matrix-entry-path-attributes
+
+  grouping geolocation-container {
+    description
+      "Contains a GPS location.";
+    container geolocation {
+      config false;
+      description
+        "Contains a GPS location.";
+      leaf altitude {
+        type int64;
+        units "millimeters";
+        description
+          "Distance above sea level.";
+      }
+      leaf latitude {
+        type geographic-coordinate-degree {
+          range "-90..90";
+        }
+        description
+          "Relative position north or south on the Earth's surface.";
+      }
+      leaf longitude {
+        type geographic-coordinate-degree {
+          range "-180..180";
+        }
+        description
+          "Angular distance east or west on the Earth's surface.";
+      }
+    }
+    // geolocation
+  }
+  // geolocation-container
+
+  grouping information-source-state-attributes {
+    description
+      "The attributes identifying the source that has provided the
+       related information, and the source's credibility.";
+    leaf credibility-preference {
+      type uint16;
+      description
+        "The preference value for calculating the Traffic
+         Engineering database credibility value used for
+         tie-break selection between different information-source
+         values.  A higher value is preferable.";
+    }
+    leaf logical-network-element {
+      type string;
+      description
+        "When applicable, this is the name of a logical network
+         element from which the information is learned.";
+    }
+    leaf network-instance {
+      type string;
+      description
+        "When applicable, this is the name of a network instance
+         from which the information is learned.";
+    }
+  }
+  // information-source-state-attributes
+
+  grouping information-source-per-link-attributes {
+    description
+      "Per-node container of the attributes identifying the source
+       that has provided the related information, and the source's
+       credibility.";
+    leaf information-source {
+      type te-info-source;
+      config false;
+      description
+        "Indicates the type of information source.";
+    }
+    leaf information-source-instance {
+      type string;
+      config false;
+      description
+        "The name indicating the instance of the information
+         source.";
+    }
+    container information-source-state {
+      config false;
+      description
+        "Contains state attributes related to the information
+         source.";
+      uses information-source-state-attributes;
+      container topology {
+        description
+          "When the information is processed by the system,
+           the attributes in this container indicate which topology
+           is used to generate the result information.";
+        uses nt:link-ref;
+      }
+    }
+  }
+  // information-source-per-link-attributes
+
+  grouping information-source-per-node-attributes {
+    description
+      "Per-node container of the attributes identifying the source
+       that has provided the related information, and the source's
+       credibility.";
+    leaf information-source {
+      type te-info-source;
+      config false;
+      description
+        "Indicates the type of information source.";
+    }
+    leaf information-source-instance {
+      type string;
+      config false;
+      description
+        "The name indicating the instance of the information
+         source.";
+    }
+    container information-source-state {
+      config false;
+      description
+        "Contains state attributes related to the information
+         source.";
+      uses information-source-state-attributes;
+      container topology {
+        description
+          "When the information is processed by the system,
+           the attributes in this container indicate which topology
+           is used to generate the result information.";
+        uses nw:node-ref;
+      }
+    }
+  }
+  // information-source-per-node-attributes
+
+  grouping interface-switching-capability-list {
+    description
+      "List of Interface Switching Capability Descriptors (ISCDs).";
+    list interface-switching-capability {
+      key "switching-capability encoding";
+      description
+        "List of ISCDs for this link.";
+      reference
+        "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+         Signaling Functional Description
+         RFC 4203: OSPF Extensions in Support of Generalized
+         Multi-Protocol Label Switching (GMPLS)";
+      leaf switching-capability {
+        type identityref {
+          base te-types:switching-capabilities;
+        }
+        description
+          "Switching capability for this interface.";
+      }
+      leaf encoding {
+        type identityref {
+          base te-types:lsp-encoding-types;
+        }
+        description
+          "Encoding supported by this interface.";
+      }
+      uses te-link-iscd-attributes;
+    }
+    // interface-switching-capability
+  }
+  // interface-switching-capability-list
+
+  grouping statistics-per-link {
+    description
+      "Statistics attributes per TE link.";
+    leaf discontinuity-time {
+      type yang:date-and-time;
+      description
+        "The time of the most recent occasion at which any one or
+         more of this interface's counters suffered a
+         discontinuity.  If no such discontinuities have occurred
+         since the last re-initialization of the local management
+         subsystem, then this node contains the time the local
+         management subsystem re-initialized itself.";
+    }
+    /* Administrative attributes */
+    leaf disables {
+      type yang:counter32;
+      description
+        "Number of times that a link was disabled.";
+    }
+    leaf enables {
+      type yang:counter32;
+      description
+        "Number of times that a link was enabled.";
+    }
+    leaf maintenance-clears {
+      type yang:counter32;
+      description
+        "Number of times that a link was taken out of maintenance.";
+    }
+    leaf maintenance-sets {
+      type yang:counter32;
+      description
+        "Number of times that a link was put in maintenance.";
+    }
+    leaf modifies {
+      type yang:counter32;
+      description
+        "Number of times that a link was modified.";
+    }
+    /* Operational attributes */
+    leaf downs {
+      type yang:counter32;
+      description
+        "Number of times that a link was set to an operational state
+         of 'down'.";
+    }
+    leaf ups {
+      type yang:counter32;
+      description
+        "Number of times that a link was set to an operational state
+         of 'up'.";
+    }
+    /* Recovery attributes */
+    leaf fault-clears {
+      type yang:counter32;
+      description
+        "Number of times that a link experienced a fault-clear
+         event.";
+    }
+    leaf fault-detects {
+      type yang:counter32;
+      description
+        "Number of times that a link experienced fault detection.";
+    }
+    leaf protection-switches {
+      type yang:counter32;
+      description
+        "Number of times that a link experienced protection
+         switchover.";
+    }
+    leaf protection-reverts {
+      type yang:counter32;
+      description
+        "Number of times that a link experienced protection
+         reversion.";
+    }
+    leaf restoration-failures {
+      type yang:counter32;
+      description
+        "Number of times that a link experienced restoration
+         failure.";
+    }
+    leaf restoration-starts {
+      type yang:counter32;
+      description
+        "Number of times that a link experienced restoration
+         start.";
+    }
+    leaf restoration-successes {
+      type yang:counter32;
+      description
+        "Number of times that a link experienced restoration
+         success.";
+    }
+    leaf restoration-reversion-failures {
+      type yang:counter32;
+      description
+        "Number of times that a link experienced restoration
+         reversion failure.";
+    }
+    leaf restoration-reversion-starts {
+      type yang:counter32;
+      description
+        "Number of times that a link experienced restoration
+         reversion start.";
+    }
+    leaf restoration-reversion-successes {
+      type yang:counter32;
+      description
+        "Number of times that a link experienced restoration
+         reversion success.";
+    }
+  }
+  // statistics-per-link
+
+  grouping statistics-per-node {
+    description
+      "Statistics attributes per TE node.";
+    leaf discontinuity-time {
+      type yang:date-and-time;
+      description
+        "The time of the most recent occasion at which any one or
+         more of this interface's counters suffered a
+         discontinuity.  If no such discontinuities have occurred
+         since the last re-initialization of the local management
+         subsystem, then this node contains the time the local
+         management subsystem re-initialized itself.";
+    }
+    container node {
+      description
+        "Contains statistics attributes at the TE node level.";
+      leaf disables {
+        type yang:counter32;
+        description
+          "Number of times that a node was disabled.";
+      }
+      leaf enables {
+        type yang:counter32;
+        description
+          "Number of times that a node was enabled.";
+      }
+      leaf maintenance-sets {
+        type yang:counter32;
+        description
+          "Number of times that a node was put in maintenance.";
+      }
+      leaf maintenance-clears {
+        type yang:counter32;
+        description
+          "Number of times that a node was taken out of
+           maintenance.";
+      }
+      leaf modifies {
+        type yang:counter32;
+        description
+          "Number of times that a node was modified.";
+      }
+    }
+    // node
+    container connectivity-matrix-entry {
+      description
+        "Contains statistics attributes at the level of a
+         connectivity matrix entry.";
+      leaf creates {
+        type yang:counter32;
+        description
+          "Number of times that a connectivity matrix entry was
+           created.";
+        reference
+          "RFC 6241: Network Configuration Protocol (NETCONF),
+                     Section 7.2, 'create' operation";
+      }
+      leaf deletes {
+        type yang:counter32;
+        description
+          "Number of times that a connectivity matrix entry was
+           deleted.";
+        reference
+          "RFC 6241: Network Configuration Protocol (NETCONF),
+                     Section 7.2, 'delete' operation";
+      }
+      leaf disables {
+        type yang:counter32;
+        description
+          "Number of times that a connectivity matrix entry was
+           disabled.";
+      }
+      leaf enables {
+        type yang:counter32;
+        description
+          "Number of times that a connectivity matrix entry was
+           enabled.";
+      }
+      leaf modifies {
+        type yang:counter32;
+        description
+          "Number of times that a connectivity matrix entry was
+           modified.";
+      }
+    }
+    // connectivity-matrix-entry
+  }
+  // statistics-per-node
+
+  grouping statistics-per-ttp {
+    description
+      "Statistics attributes per TE TTP (Tunnel Termination Point).";
+    leaf discontinuity-time {
+      type yang:date-and-time;
+      description
+        "The time of the most recent occasion at which any one or
+         more of this interface's counters suffered a
+         discontinuity.  If no such discontinuities have occurred
+         since the last re-initialization of the local management
+         subsystem, then this node contains the time the local
+         management subsystem re-initialized itself.";
+    }
+    container tunnel-termination-point {
+      description
+        "Contains statistics attributes at the TE TTP level.";
+      /* Administrative attributes */
+      leaf disables {
+        type yang:counter32;
+        description
+          "Number of times that a TTP was disabled.";
+      }
+      leaf enables {
+        type yang:counter32;
+        description
+          "Number of times that a TTP was enabled.";
+      }
+      leaf maintenance-clears {
+        type yang:counter32;
+        description
+          "Number of times that a TTP was taken out of maintenance.";
+      }
+      leaf maintenance-sets {
+        type yang:counter32;
+        description
+          "Number of times that a TTP was put in maintenance.";
+      }
+      leaf modifies {
+        type yang:counter32;
+        description
+          "Number of times that a TTP was modified.";
+      }
+      /* Operational attributes */
+      leaf downs {
+        type yang:counter32;
+        description
+          "Number of times that a TTP was set to an operational state
+           of 'down'.";
+      }
+      leaf ups {
+        type yang:counter32;
+        description
+          "Number of times that a TTP was set to an operational state
+           of 'up'.";
+      }
+      leaf in-service-clears {
+        type yang:counter32;
+        description
+          "Number of times that a TTP was taken out of service
+           (TE tunnel was released).";
+      }
+      leaf in-service-sets {
+        type yang:counter32;
+        description
+          "Number of times that a TTP was put in service by a TE
+           tunnel (TE tunnel was set up).";
+      }
+    }
+    // tunnel-termination-point
+    container local-link-connectivity {
+      description
+        "Contains statistics attributes at the TE LLCL (Local Link
+         Connectivity List) level.";
+      leaf creates {
+        type yang:counter32;
+        description
+          "Number of times that an LLCL entry was created.";
+        reference
+          "RFC 6241: Network Configuration Protocol (NETCONF),
+                     Section 7.2, 'create' operation";
+      }
+      leaf deletes {
+        type yang:counter32;
+        description
+          "Number of times that an LLCL entry was deleted.";
+        reference
+          "RFC 6241: Network Configuration Protocol (NETCONF),
+                     Section 7.2, 'delete' operation";
+      }
+      leaf disables {
+        type yang:counter32;
+        description
+          "Number of times that an LLCL entry was disabled.";
+      }
+      leaf enables {
+        type yang:counter32;
+        description
+          "Number of times that an LLCL entry was enabled.";
+      }
+      leaf modifies {
+        type yang:counter32;
+        description
+          "Number of times that an LLCL entry was modified.";
+      }
+    }
+    // local-link-connectivity
+  }
+  // statistics-per-ttp
+
+  grouping te-link-augment {
+    description
+      "Augmentation for a TE link.";
+    uses te-link-config;
+    uses te-link-state-derived;
+    container statistics {
+      config false;
+      description
+        "Statistics data.";
+      uses statistics-per-link;
+    }
+  }
+  // te-link-augment
+
+  grouping te-link-config {
+    description
+      "TE link configuration grouping.";
+    choice bundle-stack-level {
+      description
+        "The TE link can be partitioned into bundled links or
+         component links.";
+      case bundle {
+        container bundled-links {
+          description
+            "A set of bundled links.";
+          reference
+            "RFC 4201: Link Bundling in MPLS Traffic
+             Engineering (TE)";
+          list bundled-link {
+            key "sequence";
+            description
+              "Specifies a bundled interface that is
+               further partitioned.";
+            leaf sequence {
+              type uint32;
+              description
+                "Identifies the sequence in the bundle.";
+            }
+          }
+        }
+      }
+      case component {
+        container component-links {
+          description
+            "A set of component links.";
+          list component-link {
+            key "sequence";
+            description
+              "Specifies a component interface that is
+               sufficient to unambiguously identify the
+               appropriate resources.";
+            leaf sequence {
+              type uint32;
+              description
+                "Identifies the sequence in the bundle.";
+            }
+            leaf src-interface-ref {
+              type string;
+              description
+                "Reference to a component link interface on the
+                 source node.";
+            }
+            leaf des-interface-ref {
+              type string;
+              description
+                "Reference to a component link interface on the
+                 destination node.";
+            }
+          }
+        }
+      }
+    }
+    // bundle-stack-level
+    leaf-list te-link-template {
+      if-feature "template";
+      type leafref {
+        path "../../../../te/templates/link-template/name";
+      }
+      description
+        "The reference to a TE link template.";
+    }
+    uses te-link-config-attributes;
+  }
+  // te-link-config
+
+  grouping te-link-config-attributes {
+    description
+      "Link configuration attributes in a TE topology.";
+    container te-link-attributes {
+      description
+        "Link attributes in a TE topology.";
+      leaf access-type {
+        type te-types:te-link-access-type;
+        description
+          "Link access type, which can be point-to-point or
+           multi-access.";
+      }
+      container external-domain {
+        description
+          "For an inter-domain link, specifies the attributes of
+           the remote end of the link, to facilitate the signaling at
+           the local end.";
+        uses nw:network-ref;
+        leaf remote-te-node-id {
+          type te-types:te-node-id;
+          description
+            "Remote TE node identifier, used together with
+             'remote-te-link-tp-id' to identify the remote Link
+             Termination Point (LTP) in a different domain.";
+        }
+        leaf remote-te-link-tp-id {
+          type te-types:te-tp-id;
+          description
+            "Remote TE LTP identifier, used together with
+             'remote-te-node-id' to identify the remote LTP in a
+             different domain.";
+        }
+      }
+      leaf is-abstract {
+        type empty;
+        description
+          "Present if the link is abstract.";
+      }
+      leaf name {
+        type string;
+        description
+          "Link name.";
+      }
+      container underlay {
+        if-feature "te-topology-hierarchy";
+        description
+          "Attributes of the TE link underlay.";
+        reference
+          "RFC 4206: Label Switched Paths (LSP) Hierarchy with
+           Generalized Multi-Protocol Label Switching (GMPLS)
+           Traffic Engineering (TE)";
+        uses te-link-underlay-attributes;
+      }
+      leaf admin-status {
+        type te-types:te-admin-status;
+        description
+          "The administrative state of the link.";
+      }
+      uses te-link-info-attributes;
+    }
+    // te-link-attributes
+  }
+  // te-link-config-attributes
+
+  grouping te-link-info-attributes {
+    description
+      "Advertised TE information attributes.";
+    leaf link-index {
+      type uint64;
+      description
+        "The link identifier.  If OSPF is used, this object
+         represents an ospfLsdbID.  If IS-IS is used, this object
+         represents an isisLSPID.  If a locally configured link is
+         used, this object represents a unique value, which is
+         locally defined in a router.";
+    }
+    leaf administrative-group {
+      type te-types:admin-groups;
+      description
+        "Administrative group or color of the link.
+         This attribute covers both administrative groups (defined
+         in RFCs 3630 and 5305) and Extended Administrative Groups
+         (defined in RFC 7308).";
+      reference
+        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+         Version 2
+         RFC 5305: IS-IS Extensions for Traffic Engineering
+         RFC 7308: Extended Administrative Groups in MPLS Traffic
+         Engineering (MPLS-TE)";
+    }
+    uses interface-switching-capability-list;
+    uses te-types:label-set-info;
+    leaf link-protection-type {
+      type identityref {
+        base te-types:link-protection-type;
+      }
+      description
+        "Link Protection Type desired for this link.";
+      reference
+        "RFC 4202: Routing Extensions in Support of
+         Generalized Multi-Protocol Label Switching (GMPLS)";
+    }
+    container max-link-bandwidth {
+      uses te-types:te-bandwidth;
+      description
+        "Maximum bandwidth that can be seen on this link in this
+         direction.  Units are in bytes per second.";
+      reference
+        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+         Version 2
+         RFC 5305: IS-IS Extensions for Traffic Engineering";
+    }
+    container max-resv-link-bandwidth {
+      uses te-types:te-bandwidth;
+      description
+        "Maximum amount of bandwidth that can be reserved in this
+         direction in this link.  Units are in bytes per second.";
+      reference
+        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+         Version 2
+         RFC 5305: IS-IS Extensions for Traffic Engineering";
+    }
+    list unreserved-bandwidth {
+      key "priority";
+      max-elements 8;
+      description
+        "Unreserved bandwidth for priority levels 0-7.  Units are in
+         bytes per second.";
+      reference
+        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+         Version 2
+         RFC 5305: IS-IS Extensions for Traffic Engineering";
+      leaf priority {
+        type uint8 {
+          range "0..7";
+        }
+        description
+          "Priority.";
+      }
+      uses te-types:te-bandwidth;
+    }
+    leaf te-default-metric {
+      type uint32;
+      description
+        "Traffic Engineering metric.";
+      reference
+        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+         Version 2
+         RFC 5305: IS-IS Extensions for Traffic Engineering";
+    }
+    leaf te-delay-metric {
+      type uint32;
+      description
+        "Traffic Engineering delay metric.";
+      reference
+        "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
+    }
+    leaf te-igp-metric {
+      type uint32;
+      description
+        "IGP metric used for Traffic Engineering.";
+      reference
+        "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
+         second MPLS Traffic Engineering (TE) Metric";
+    }
+    container te-srlgs {
+      description
+        "Contains a list of SRLGs.";
+      leaf-list value {
+        type te-types:srlg;
+        description
+          "SRLG value.";
+        reference
+          "RFC 4202: Routing Extensions in Support of
+           Generalized Multi-Protocol Label Switching (GMPLS)";
+      }
+    }
+    container te-nsrlgs {
+      if-feature "nsrlg";
+      description
+        "Contains a list of NSRLGs (Non-Shared Risk Link Groups).
+         When an abstract TE link is configured, this list specifies
+         the request that underlay TE paths need to be mutually
+         disjoint with other TE links in the same groups.";
+      leaf-list id {
+        type uint32;
+        description
+          "NSRLG ID, uniquely configured within a topology.";
+        reference
+          "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+           Generalized Multi-Protocol Label Switching (GMPLS)
+           Recovery";
+      }
+    }
+  }
+  // te-link-info-attributes
+
+  grouping te-link-iscd-attributes {
+    description
+      "TE link ISCD attributes.";
+    reference
+      "RFC 4203: OSPF Extensions in Support of Generalized
+       Multi-Protocol Label Switching (GMPLS), Section 1.4";
+    list max-lsp-bandwidth {
+      key "priority";
+      max-elements 8;
+      description
+        "Maximum Label Switched Path (LSP) bandwidth at
+         priorities 0-7.";
+      leaf priority {
+        type uint8 {
+          range "0..7";
+        }
+        description
+          "Priority.";
+      }
+      uses te-types:te-bandwidth;
+    }
+  }
+  // te-link-iscd-attributes
+
+  grouping te-link-state-derived {
+    description
+      "Link state attributes in a TE topology.";
+    leaf oper-status {
+      type te-types:te-oper-status;
+      config false;
+      description
+        "The current operational state of the link.";
+    }
+    leaf is-transitional {
+      type empty;
+      config false;
+      description
+        "Present if the link is transitional; used as an
+         alternative approach in lieu of 'inter-layer-lock-id'
+         for path computation in a TE topology covering multiple
+         layers or multiple regions.";
+      reference
+        "RFC 5212: Requirements for GMPLS-Based Multi-Region and
+         Multi-Layer Networks (MRN/MLN)
+         RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+         for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+    }
+    uses information-source-per-link-attributes;
+    list information-source-entry {
+      key "information-source information-source-instance";
+      config false;
+      description
+        "A list of information sources learned, including the source
+         that is used.";
+      uses information-source-per-link-attributes;
+      uses te-link-info-attributes;
+    }
+    container recovery {
+      config false;
+      description
+        "Status of the recovery process.";
+      leaf restoration-status {
+        type te-types:te-recovery-status;
+        description
+          "Restoration status.";
+      }
+      leaf protection-status {
+        type te-types:te-recovery-status;
+        description
+          "Protection status.";
+      }
+    }
+    container underlay {
+      if-feature "te-topology-hierarchy";
+      config false;
+      description
+        "State attributes for the TE link underlay.";
+      leaf dynamic {
+        type boolean;
+        description
+          "'true' if the underlay is dynamically created.";
+      }
+      leaf committed {
+        type boolean;
+        description
+          "'true' if the underlay is committed.";
+      }
+    }
+  }
+  // te-link-state-derived
+
+  grouping te-link-underlay-attributes {
+    description
+      "Attributes for the TE link underlay.";
+    reference
+      "RFC 4206: Label Switched Paths (LSP) Hierarchy with
+       Generalized Multi-Protocol Label Switching (GMPLS)
+       Traffic Engineering (TE)";
+    leaf enabled {
+      type boolean;
+      description
+        "'true' if the underlay is enabled.
+         'false' if the underlay is disabled.";
+    }
+    container primary-path {
+      description
+        "The service path on the underlay topology that
+         supports this link.";
+      uses nw:network-ref;
+      list path-element {
+        key "path-element-id";
+        description
+          "A list of path elements describing the service path.";
+        leaf path-element-id {
+          type uint32;
+          description
+            "To identify the element in a path.";
+        }
+        uses te-path-element;
+      }
+    }
+    // primary-path
+    list backup-path {
+      key "index";
+      description
+        "A list of backup service paths on the underlay topology that
+         protect the underlay primary path.  If the primary path is
+         not protected, the list contains zero elements.  If the
+         primary path is protected, the list contains one or more
+         elements.";
+      leaf index {
+        type uint32;
+        description
+          "A sequence number to identify a backup path.";
+      }
+      uses nw:network-ref;
+      list path-element {
+        key "path-element-id";
+        description
+          "A list of path elements describing the backup service
+           path.";
+        leaf path-element-id {
+          type uint32;
+          description
+            "To identify the element in a path.";
+        }
+        uses te-path-element;
+      }
+    }
+    // backup-path
+    leaf protection-type {
+      type identityref {
+        base te-types:lsp-protection-type;
+      }
+      description
+        "Underlay protection type desired for this link.";
+    }
+    container tunnel-termination-points {
+      description
+        "Underlay TTPs desired for this link.";
+      leaf source {
+        type binary;
+        description
+          "Source TTP identifier.";
+      }
+      leaf destination {
+        type binary;
+        description
+          "Destination TTP identifier.";
+      }
+    }
+    container tunnels {
+      description
+        "Underlay TE tunnels supporting this TE link.";
+      leaf sharing {
+        type boolean;
+        default "true";
+        description
+          "'true' if the underlay tunnel can be shared with other
+           TE links;
+           'false' if the underlay tunnel is dedicated to this
+           TE link.
+           This leaf is the default option for all TE tunnels
+           and may be overridden by the per-TE-tunnel value.";
+      }
+      list tunnel {
+        key "tunnel-name";
+        description
+          "Zero, one, or more underlay TE tunnels that support this
+           TE link.";
+        leaf tunnel-name {
+          type string;
+          description
+            "A tunnel name uniquely identifies an underlay TE tunnel,
+             used together with the 'source-node' value for this
+             link.";
+          reference
+            "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+        }
+        leaf sharing {
+          type boolean;
+          description
+            "'true' if the underlay tunnel can be shared with other
+             TE links;
+             'false' if the underlay tunnel is dedicated to this
+             TE link.";
+        }
+      }
+      // tunnel
+    }
+    // tunnels
+  }
+  // te-link-underlay-attributes
+
+  grouping te-node-augment {
+    description
+      "Augmentation for a TE node.";
+    uses te-node-config;
+    uses te-node-state-derived;
+    container statistics {
+      config false;
+      description
+        "Statistics data.";
+      uses statistics-per-node;
+    }
+    list tunnel-termination-point {
+      key "tunnel-tp-id";
+      description
+        "A termination point can terminate a tunnel.";
+      leaf tunnel-tp-id {
+        type binary;
+        description
+          "TTP identifier.";
+      }
+      uses te-node-tunnel-termination-point-config;
+      leaf oper-status {
+        type te-types:te-oper-status;
+        config false;
+        description
+          "The current operational state of the TTP.";
+      }
+      uses geolocation-container;
+      container statistics {
+        config false;
+        description
+          "Statistics data.";
+        uses statistics-per-ttp;
+      }
+      // Relationship to other TTPs
+      list supporting-tunnel-termination-point {
+        key "node-ref tunnel-tp-ref";
+        description
+          "Identifies the TTPs on which this TTP depends.";
+        leaf node-ref {
+          type inet:uri;
+          description
+            "This leaf identifies the node in which the supporting
+             TTP is present.
+             This node is either the supporting node or a node in
+             an underlay topology.";
+        }
+        leaf tunnel-tp-ref {
+          type binary;
+          description
+            "Reference to a TTP that is in either the supporting node
+             or a node in an underlay topology.";
+        }
+      }
+      // supporting-tunnel-termination-point
+    }
+    // tunnel-termination-point
+  }
+  // te-node-augment
+
+  grouping te-node-config {
+    description
+      "TE node configuration grouping.";
+    leaf-list te-node-template {
+      if-feature "template";
+      type leafref {
+        path "../../../../te/templates/node-template/name";
+      }
+      description
+        "The reference to a TE node template.";
+    }
+    uses te-node-config-attributes;
+  }
+  // te-node-config
+
+  grouping te-node-config-attributes {
+    description
+      "Configuration node attributes in a TE topology.";
+    container te-node-attributes {
+      description
+        "Contains node attributes in a TE topology.";
+      leaf admin-status {
+        type te-types:te-admin-status;
+        description
+          "The administrative state of the link.";
+      }
+      uses te-node-connectivity-matrices;
+      uses te-node-info-attributes;
+    }
+  }
+  // te-node-config-attributes
+
+  grouping te-node-config-attributes-template {
+    description
+      "Configuration node attributes for a template in a TE
+       topology.";
+    container te-node-attributes {
+      description
+        "Contains node attributes in a TE topology.";
+      leaf admin-status {
+        type te-types:te-admin-status;
+        description
+          "The administrative state of the link.";
+      }
+      uses te-node-info-attributes;
+    }
+  }
+  // te-node-config-attributes-template
+
+  grouping te-node-connectivity-matrices {
+    description
+      "Connectivity matrix on a TE node.";
+    container connectivity-matrices {
+      description
+        "Contains a connectivity matrix on a TE node.";
+      leaf number-of-entries {
+        type uint16;
+        description
+          "The number of connectivity matrix entries.
+           If this number is specified in the configuration request,
+           the number is the requested number of entries, which may
+           not all be listed in the list;
+           if this number is reported in the state data,
+           the number is the current number of operational entries.";
+      }
+      uses te-types:label-set-info;
+      uses connectivity-matrix-entry-path-attributes;
+      list connectivity-matrix {
+        key "id";
+        description
+          "Represents a node's switching limitations, i.e.,
+           limitations in the interconnecting network TE links
+           across the node.";
+        reference
+          "RFC 7579: General Network Element Constraint Encoding
+           for GMPLS-Controlled Networks";
+        leaf id {
+          type uint32;
+          description
+            "Identifies the connectivity matrix entry.";
+        }
+      }
+      // connectivity-matrix
+    }
+    // connectivity-matrices
+  }
+  // te-node-connectivity-matrices
+
+  grouping te-node-connectivity-matrix-attributes {
+    description
+      "Termination point references of a connectivity matrix entry.";
+    container from {
+      description
+        "Reference to a source LTP.";
+      leaf tp-ref {
+        type leafref {
+          path "../../../../../../nt:termination-point/nt:tp-id";
+        }
+        description
+          "Relative reference to a termination point.";
+      }
+      uses te-types:label-set-info;
+    }
+    container to {
+      description
+        "Reference to a destination LTP.";
+      leaf tp-ref {
+        type leafref {
+          path "../../../../../../nt:termination-point/nt:tp-id";
+        }
+        description
+          "Relative reference to a termination point.";
+      }
+      uses te-types:label-set-info;
+    }
+    uses connectivity-matrix-entry-path-attributes;
+  }
+  // te-node-connectivity-matrix-attributes
+
+  grouping te-node-info-attributes {
+    description
+      "Advertised TE information attributes.";
+    leaf domain-id {
+      type uint32;
+      description
+        "Identifies the domain to which this node belongs.
+         This attribute is used to support inter-domain links.";
+      reference
+        "RFC 5152: A Per-Domain Path Computation Method for
+         Establishing Inter-Domain Traffic Engineering (TE)
+         Label Switched Paths (LSPs)
+         RFC 5316: ISIS Extensions in Support of Inter-Autonomous
+         System (AS) MPLS and GMPLS Traffic Engineering
+         RFC 5392: OSPF Extensions in Support of Inter-Autonomous
+         System (AS) MPLS and GMPLS Traffic Engineering";
+    }
+    leaf is-abstract {
+      type empty;
+      description
+        "Present if the node is abstract; not present if the node
+         is actual.";
+    }
+    leaf name {
+      type string;
+      description
+        "Node name.";
+    }
+    leaf-list signaling-address {
+      type inet:ip-address;
+      description
+        "The node's signaling address.";
+    }
+    container underlay-topology {
+      if-feature "te-topology-hierarchy";
+      description
+        "When an abstract node encapsulates a topology, the
+         attributes in this container point to said topology.";
+      uses nw:network-ref;
+    }
+  }
+  // te-node-info-attributes
+
+  grouping te-node-state-derived {
+    description
+      "Node state attributes in a TE topology.";
+    leaf oper-status {
+      type te-types:te-oper-status;
+      config false;
+      description
+        "The current operational state of the node.";
+    }
+    uses geolocation-container;
+    leaf is-multi-access-dr {
+      type empty;
+      config false;
+      description
+        "The presence of this attribute indicates that this TE node
+         is a pseudonode elected as a designated router.";
+      reference
+        "RFC 1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
+         Environments
+         RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+         Version 2";
+    }
+    uses information-source-per-node-attributes;
+    list information-source-entry {
+      key "information-source information-source-instance";
+      config false;
+      description
+        "A list of information sources learned, including the source
+         that is used.";
+      uses information-source-per-node-attributes;
+      uses te-node-connectivity-matrices;
+      uses te-node-info-attributes;
+    }
+  }
+  // te-node-state-derived
+
+  grouping te-node-tunnel-termination-point-config {
+    description
+      "Termination capability of a TTP on a TE node.";
+    uses te-node-tunnel-termination-point-config-attributes;
+    container local-link-connectivities {
+      description
+        "Contains an LLCL for a TTP on a TE node.";
+      leaf number-of-entries {
+        type uint16;
+        description
+          "The number of LLCL entries.
+           If this number is specified in the configuration request,
+           the number is the requested number of entries, which may
+           not all be listed in the list;
+           if this number is reported in the state data,
+           the number is the current number of operational entries.";
+      }
+      uses te-types:label-set-info;
+      uses connectivity-matrix-entry-path-attributes;
+    }
+  }
+  // te-node-tunnel-termination-point-config
+
+  grouping te-node-tunnel-termination-point-config-attributes {
+    description
+      "Configuration attributes of a TTP on a TE node.";
+    leaf admin-status {
+      type te-types:te-admin-status;
+      description
+        "The administrative state of the TTP.";
+    }
+    leaf name {
+      type string;
+      description
+        "A descriptive name for the TTP.";
+    }
+    leaf switching-capability {
+      type identityref {
+        base te-types:switching-capabilities;
+      }
+      description
+        "Switching capability for this interface.";
+    }
+    leaf encoding {
+      type identityref {
+        base te-types:lsp-encoding-types;
+      }
+      description
+        "Encoding supported by this interface.";
+    }
+    leaf-list inter-layer-lock-id {
+      type uint32;
+      description
+        "Inter-layer lock ID, used for path computation in a TE
+         topology covering multiple layers or multiple regions.";
+      reference
+        "RFC 5212: Requirements for GMPLS-Based Multi-Region and
+         Multi-Layer Networks (MRN/MLN)
+         RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+         for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+    }
+    leaf protection-type {
+      type identityref {
+        base te-types:lsp-protection-type;
+      }
+      description
+        "The protection type that this TTP is capable of.";
+    }
+    container client-layer-adaptation {
+      description
+        "Contains capability information to support a client-layer
+         adaptation in a multi-layer topology.";
+      list switching-capability {
+        key "switching-capability encoding";
+        description
+          "List of supported switching capabilities.";
+        reference
+          "RFC 4202: Routing Extensions in Support of
+           Generalized Multi-Protocol Label Switching (GMPLS)
+           RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+           for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+        leaf switching-capability {
+          type identityref {
+            base te-types:switching-capabilities;
+          }
+          description
+            "Switching capability for the client-layer adaptation.";
+        }
+        leaf encoding {
+          type identityref {
+            base te-types:lsp-encoding-types;
+          }
+          description
+            "Encoding supported by the client-layer adaptation.";
+        }
+        uses te-types:te-bandwidth;
+      }
+    }
+  }
+  // te-node-tunnel-termination-point-config-attributes
+
+  grouping te-node-tunnel-termination-point-llc-list {
+    description
+      "LLCL of a TTP on a TE node.";
+    list local-link-connectivity {
+      key "link-tp-ref";
+      description
+        "The termination capabilities between the TTP and the LTP.
+         This capability information can be used to compute
+         the tunnel path.
+         The Interface Adjustment Capability Descriptors (IACDs)
+         (defined in RFC 6001) on each LTP can be derived from
+         this list.";
+      reference
+        "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+         for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+      leaf link-tp-ref {
+        type leafref {
+          path "../../../../../nt:termination-point/nt:tp-id";
+        }
+        description
+          "LTP.";
+      }
+      uses te-types:label-set-info;
+      uses connectivity-matrix-entry-path-attributes;
+    }
+  }
+  // te-node-tunnel-termination-point-llc-list
+
+  grouping te-path-element {
+    description
+      "A group of attributes defining an element in a TE path,
+       such as a TE node, TE link, TE atomic resource, or label.";
+    uses te-types:explicit-route-hop;
+  }
+  // te-path-element
+
+  grouping te-termination-point-augment {
+    description
+      "Augmentation for a TE termination point.";
+    leaf te-tp-id {
+      type te-types:te-tp-id;
+      description
+        "An identifier that uniquely identifies a TE termination
+         point.";
+    }
+    container te {
+      must '../te-tp-id';
+      presence "TE support";
+      description
+        "Indicates TE support.";
+      uses te-termination-point-config;
+      leaf oper-status {
+        type te-types:te-oper-status;
+        config false;
+        description
+          "The current operational state of the LTP.";
+      }
+      uses geolocation-container;
+    }
+  }
+  // te-termination-point-augment
+
+  grouping te-termination-point-config {
+    description
+      "TE termination point configuration grouping.";
+    leaf admin-status {
+      type te-types:te-admin-status;
+      description
+        "The administrative state of the LTP.";
+    }
+    leaf name {
+      type string;
+      description
+        "A descriptive name for the LTP.";
+    }
+    uses interface-switching-capability-list;
+    leaf inter-domain-plug-id {
+      type binary;
+      description
+        "A network-wide unique number that identifies on the
+         network a connection that supports a given inter-domain
+         TE link.  This is a more flexible alternative to specifying
+         'remote-te-node-id' and 'remote-te-link-tp-id' on a TE link
+         when the provider either does not know 'remote-te-node-id'
+         and 'remote-te-link-tp-id' or needs to give the client the
+         flexibility to mix and match multiple topologies.";
+    }
+    leaf-list inter-layer-lock-id {
+      type uint32;
+      description
+        "Inter-layer lock ID, used for path computation in a TE
+         topology covering multiple layers or multiple regions.";
+      reference
+        "RFC 5212: Requirements for GMPLS-Based Multi-Region and
+         Multi-Layer Networks (MRN/MLN)
+         RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+         for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+    }
+  }
+  // te-termination-point-config
+
+  grouping te-topologies-augment {
+    description
+      "Augmentation for TE topologies.";
+    container te {
+      presence "TE support";
+      description
+        "Indicates TE support.";
+      container templates {
+        description
+          "Configuration parameters for templates used for a TE
+           topology.";
+        list node-template {
+          if-feature "template";
+          key "name";
+          leaf name {
+            type te-types:te-template-name;
+            description
+              "The name to identify a TE node template.";
+          }
+          description
+            "The list of TE node templates used to define sharable
+             and reusable TE node attributes.";
+          uses template-attributes;
+          uses te-node-config-attributes-template;
+        }
+        // node-template
+        list link-template {
+          if-feature "template";
+          key "name";
+          leaf name {
+            type te-types:te-template-name;
+            description
+              "The name to identify a TE link template.";
+          }
+          description
+            "The list of TE link templates used to define sharable
+             and reusable TE link attributes.";
+          uses template-attributes;
+          uses te-link-config-attributes;
+        }
+        // link-template
+      }
+      // templates
+    }
+    // te
+  }
+  // te-topologies-augment
+
+  grouping te-topology-augment {
+    description
+      "Augmentation for a TE topology.";
+    uses te-types:te-topology-identifier;
+    container te {
+      must '../te-topology-identifier/provider-id'
+         + ' and ../te-topology-identifier/client-id'
+         + ' and ../te-topology-identifier/topology-id';
+      presence "TE support";
+      description
+        "Indicates TE support.";
+      uses te-topology-config;
+      uses geolocation-container;
+    }
+  }
+  // te-topology-augment
+
+  grouping te-topology-config {
+    description
+      "TE topology configuration grouping.";
+    leaf name {
+      type string;
+      description
+        "Name of the TE topology.  This attribute is optional and can
+         be specified by the operator to describe the TE topology,
+         which can be useful when 'network-id' (RFC 8345) is not
+         descriptive and not modifiable because of being generated
+         by the system.";
+      reference
+        "RFC 8345: A YANG Data Model for Network Topologies";
+    }
+    leaf preference {
+      type uint8 {
+        range "1..255";
+      }
+      description
+        "Specifies a preference for this topology.  A lower number
+         indicates a higher preference.";
+    }
+    leaf optimization-criterion {
+      type identityref {
+        base te-types:objective-function-type;
+      }
+      description
+        "Optimization criterion applied to this topology.";
+      reference
+        "RFC 3272: Overview and Principles of Internet Traffic
+         Engineering";
+    }
+    list nsrlg {
+      if-feature "nsrlg";
+      key "id";
+      description
+        "List of NSRLGs (Non-Shared Risk Link Groups).";
+      reference
+        "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+         Generalized Multi-Protocol Label Switching (GMPLS)
+         Recovery";
+      leaf id {
+        type uint32;
+        description
+          "Identifies the NSRLG entry.";
+      }
+      leaf disjointness {
+        type te-types:te-path-disjointness;
+        description
+          "The type of resource disjointness.";
+      }
+    }
+    // nsrlg
+  }
+  // te-topology-config
+
+  grouping template-attributes {
+    description
+      "Common attributes for all templates.";
+    leaf priority {
+      type uint16;
+      description
+        "The preference value for resolving conflicts between
+         different templates.  When two or more templates specify
+         values for one configuration attribute, the value from the
+         template with the highest priority is used.
+         A lower number indicates a higher priority.  The highest
+         priority is 0.";
+    }
+    leaf reference-change-policy {
+      type enumeration {
+        enum no-action {
+          description
+            "When an attribute changes in this template, the
+             configuration node referring to this template does
+             not take any action.";
+        }
+        enum not-allowed {
+          description
+            "When any configuration object has a reference to this
+             template, changing this template is not allowed.";
+        }
+        enum cascade {
+          description
+            "When an attribute changes in this template, the
+             configuration object referring to this template applies
+             the new attribute value to the corresponding
+             configuration.";
+        }
+      }
+      description
+        "This attribute specifies the action taken for a
+         configuration node that has a reference to this template.";
+    }
+  }
+  // template-attributes
+
+  /*
+   * Data nodes
+   */
+
+  augment "/nw:networks/nw:network/nw:network-types" {
+    description
+      "Introduces a new network type for a TE topology.";
+    container te-topology {
+      presence "Indicates a TE topology";
+      description
+        "Its presence identifies the TE topology type.";
+    }
+  }
+
+  augment "/nw:networks" {
+    description
+      "Augmentation parameters for TE topologies.";
+    uses te-topologies-augment;
+  }
+
+  augment "/nw:networks/nw:network" {
+    when 'nw:network-types/tet:te-topology' {
+      description
+        "Augmentation parameters apply only for networks with a
+         TE topology type.";
+    }
+    description
+      "Configuration parameters for a TE topology.";
+    uses te-topology-augment;
+  }
+
+  augment "/nw:networks/nw:network/nw:node" {
+    when '../nw:network-types/tet:te-topology' {
+      description
+        "Augmentation parameters apply only for networks with a
+         TE topology type.";
+    }
+    description
+      "Configuration parameters for TE at the node level.";
+    leaf te-node-id {
+      type te-types:te-node-id;
+      description
+        "The identifier of a node in the TE topology.
+         A node is specific to a topology to which it belongs.";
+    }
+    container te {
+      must '../te-node-id' {
+        description
+          "'te-node-id' is mandatory.";
+      }
+      must 'count(../nw:supporting-node)<=1' {
+        description
+          "For a node in a TE topology, there cannot be more
+           than one supporting node.  If multiple nodes are
+           abstracted, the 'underlay-topology' field is used.";
+      }
+      presence "TE support";
+      description
+        "Indicates TE support.";
+      uses te-node-augment;
+    }
+  }
+
+  augment "/nw:networks/nw:network/nt:link" {
+    when '../nw:network-types/tet:te-topology' {
+      description
+        "Augmentation parameters apply only for networks with a
+         TE topology type.";
+    }
+    description
+      "Configuration parameters for TE at the link level.";
+    container te {
+      must 'count(../nt:supporting-link)<=1' {
+        description
+          "For a link in a TE topology, there cannot be more
+           than one supporting link.  If one or more link paths are
+           abstracted, the underlay is used.";
+      }
+      presence "TE support";
+      description
+        "Indicates TE support.";
+      uses te-link-augment;
+    }
+  }
+
+  augment "/nw:networks/nw:network/nw:node/"
+        + "nt:termination-point" {
+    when '../../nw:network-types/tet:te-topology' {
+      description
+        "Augmentation parameters apply only for networks with a
+         TE topology type.";
+    }
+    description
+      "Configuration parameters for TE at the termination point
+       level.";
+    uses te-termination-point-augment;
+  }
+
+  augment "/nw:networks/nw:network/nt:link/te/bundle-stack-level/"
+        + "bundle/bundled-links/bundled-link" {
+    when '../../../../nw:network-types/tet:te-topology' {
+      description
+        "Augmentation parameters apply only for networks with a
+         TE topology type.";
+    }
+    description
+      "Augmentation for a TE bundled link.";
+    leaf src-tp-ref {
+      type leafref {
+        path "../../../../../nw:node[nw:node-id = "
+           + "current()/../../../../nt:source/"
+           + "nt:source-node]/"
+           + "nt:termination-point/nt:tp-id";
+        require-instance true;
+      }
+      description
+        "Reference to another TE termination point on the
+         same source node.";
+    }
+    leaf des-tp-ref {
+      type leafref {
+        path "../../../../../nw:node[nw:node-id = "
+           + "current()/../../../../nt:destination/"
+           + "nt:dest-node]/"
+           + "nt:termination-point/nt:tp-id";
+        require-instance true;
+      }
+      description
+        "Reference to another TE termination point on the
+         same destination node.";
+    }
+  }
+
+  augment "/nw:networks/nw:network/nw:node/te/"
+        + "information-source-entry/connectivity-matrices/"
+        + "connectivity-matrix" {
+    when '../../../../../nw:network-types/tet:te-topology' {
+      description
+        "Augmentation parameters apply only for networks with a
+         TE topology type.";
+    }
+    description
+      "Augmentation for the TE node connectivity matrix.";
+    uses te-node-connectivity-matrix-attributes;
+  }
+
+  augment "/nw:networks/nw:network/nw:node/te/te-node-attributes/"
+        + "connectivity-matrices/connectivity-matrix" {
+    when '../../../../../nw:network-types/tet:te-topology' {
+      description
+        "Augmentation parameters apply only for networks with a
+         TE topology type.";
+    }
+    description
+      "Augmentation for the TE node connectivity matrix.";
+    uses te-node-connectivity-matrix-attributes;
+  }
+
+  augment "/nw:networks/nw:network/nw:node/te/"
+        + "tunnel-termination-point/local-link-connectivities" {
+    when '../../../../nw:network-types/tet:te-topology' {
+      description
+        "Augmentation parameters apply only for networks with a
+         TE topology type.";
+    }
+    description
+      "Augmentation for TE node TTP LLCs (Local Link
+       Connectivities).";
+    uses te-node-tunnel-termination-point-llc-list;
+  }
+}
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-types@2020-06-10.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-types@2020-06-10.yang
new file mode 100644
index 000000000..6fc0544de
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-types@2020-06-10.yang
@@ -0,0 +1,3379 @@
+module ietf-te-types {
+  yang-version 1.1;
+  namespace "urn:ietf:params:xml:ns:yang:ietf-te-types";
+  prefix te-types;
+
+  import ietf-inet-types {
+    prefix inet;
+    reference
+      "RFC 6991: Common YANG Data Types";
+  }
+  import ietf-yang-types {
+    prefix yang;
+    reference
+      "RFC 6991: Common YANG Data Types";
+  }
+  import ietf-routing-types {
+    prefix rt-types;
+    reference
+      "RFC 8294: Common YANG Data Types for the Routing Area";
+  }
+
+  organization
+    "IETF Traffic Engineering Architecture and Signaling (TEAS)
+     Working Group";
+  contact
+    "WG Web:   <https://datatracker.ietf.org/wg/teas/>
+     WG List:  <mailto:teas@ietf.org>
+
+     Editor:   Tarek Saad
+               <mailto:tsaad@juniper.net>
+
+     Editor:   Rakesh Gandhi
+               <mailto:rgandhi@cisco.com>
+
+     Editor:   Vishnu Pavan Beeram
+               <mailto:vbeeram@juniper.net>
+
+     Editor:   Xufeng Liu
+               <mailto:xufeng.liu.ietf@gmail.com>
+
+     Editor:   Igor Bryskin
+               <mailto:i_bryskin@yahoo.com>";
+  description
+    "This YANG module contains a collection of generally useful
+     YANG data type definitions specific to TE.  The model fully
+     conforms to the Network Management Datastore Architecture
+     (NMDA).
+
+     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
+     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
+     'MAY', and 'OPTIONAL' in this document are to be interpreted as
+     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
+     they appear in all capitals, as shown here.
+
+     Copyright (c) 2020 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
+     (https://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of RFC 8776; see the
+     RFC itself for full legal notices.";
+
+  revision 2020-06-10 {
+    description
+      "Latest revision of TE types.";
+    reference
+      "RFC 8776: Common YANG Data Types for Traffic Engineering";
+  }
+
+  /**
+   * Typedefs
+   */
+
+  typedef admin-group {
+    type yang:hex-string {
+      /* 01:02:03:04 */
+      length "1..11";
+    }
+    description
+      "Administrative group / resource class / color representation
+       in 'hex-string' type.
+       The most significant byte in the hex-string is the farthest
+       to the left in the byte sequence.  Leading zero bytes in the
+       configured value may be omitted for brevity.";
+    reference
+      "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+       Version 2
+       RFC 5305: IS-IS Extensions for Traffic Engineering
+       RFC 7308: Extended Administrative Groups in MPLS Traffic
+       Engineering (MPLS-TE)";
+  }
+
+  typedef admin-groups {
+    type union {
+      type admin-group;
+      type extended-admin-group;
+    }
+    description
+      "Derived types for TE administrative groups.";
+  }
+
+  typedef extended-admin-group {
+    type yang:hex-string;
+    description
+      "Extended administrative group / resource class / color
+       representation in 'hex-string' type.
+       The most significant byte in the hex-string is the farthest
+       to the left in the byte sequence.  Leading zero bytes in the
+       configured value may be omitted for brevity.";
+    reference
+      "RFC 7308: Extended Administrative Groups in MPLS Traffic
+       Engineering (MPLS-TE)";
+  }
+
+  typedef path-attribute-flags {
+    type union {
+      type identityref {
+        base session-attributes-flags;
+      }
+      type identityref {
+        base lsp-attributes-flags;
+      }
+    }
+    description
+      "Path attributes flags type.";
+  }
+
+  typedef performance-metrics-normality {
+    type enumeration {
+      enum unknown {
+        value 0;
+        description
+          "Unknown.";
+      }
+      enum normal {
+        value 1;
+        description
+          "Normal.  Indicates that the anomalous bit is not set.";
+      }
+      enum abnormal {
+        value 2;
+        description
+          "Abnormal.  Indicates that the anomalous bit is set.";
+      }
+    }
+    description
+      "Indicates whether a performance metric is normal (anomalous
+       bit not set), abnormal (anomalous bit set), or unknown.";
+    reference
+      "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+       RFC 7823: Performance-Based Path Selection for Explicitly
+       Routed Label Switched Paths (LSPs) Using TE Metric
+       Extensions
+       RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
+  }
+
+  typedef srlg {
+    type uint32;
+    description
+      "SRLG type.";
+    reference
+      "RFC 4203: OSPF Extensions in Support of Generalized
+       Multi-Protocol Label Switching (GMPLS)
+       RFC 5307: IS-IS Extensions in Support of Generalized
+       Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  typedef te-common-status {
+    type enumeration {
+      enum up {
+        description
+          "Enabled.";
+      }
+      enum down {
+        description
+          "Disabled.";
+      }
+      enum testing {
+        description
+          "In some test mode.";
+      }
+      enum preparing-maintenance {
+        description
+          "The resource is disabled in the control plane to prepare
+           for a graceful shutdown for maintenance purposes.";
+        reference
+          "RFC 5817: Graceful Shutdown in MPLS and Generalized MPLS
+           Traffic Engineering Networks";
+      }
+      enum maintenance {
+        description
+          "The resource is disabled in the data plane for maintenance
+           purposes.";
+      }
+      enum unknown {
+        description
+          "Status is unknown.";
+      }
+    }
+    description
+      "Defines a type representing the common states of a TE
+       resource.";
+  }
+
+  typedef te-bandwidth {
+    type string {
+      pattern '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
+            + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?'
+            + '[pP](\+)?(12[0-7]|'
+            + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+'
+            + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
+            + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?'
+            + '[pP](\+)?(12[0-7]|'
+            + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*';
+    }
+    description
+      "This is the generic bandwidth type.  It is a string containing
+       a list of numbers separated by commas, where each of these
+       numbers can be non-negative decimal, hex integer, or
+       hex float:
+
+       (dec | hex | float)[*(','(dec | hex | float))]
+
+       For the packet-switching type, the string encoding follows
+       the type 'bandwidth-ieee-float32' as defined in RFC 8294
+       (e.g., 0x1p10), where the units are in bytes per second.
+
+       For the Optical Transport Network (OTN) switching type,
+       a list of integers can be used, such as '0,2,3,1', indicating
+       two ODU0s and one ODU3.  ('ODU' stands for 'Optical Data
+       Unit'.)  For Dense Wavelength Division Multiplexing (DWDM),
+       a list of pairs of slot numbers and widths can be used,
+       such as '0,2,3,3', indicating a frequency slot 0 with
+       slot width 2 and a frequency slot 3 with slot width 3.
+       Canonically, the string is represented as all lowercase and in
+       hex, where the prefix '0x' precedes the hex number.";
+    reference
+      "RFC 8294: Common YANG Data Types for the Routing Area
+       ITU-T Recommendation G.709: Interfaces for the
+       optical transport network";
+  }
+
+  typedef te-ds-class {
+    type uint8 {
+      range "0..7";
+    }
+    description
+      "The Differentiated Services Class-Type of traffic.";
+    reference
+      "RFC 4124: Protocol Extensions for Support of Diffserv-aware
+       MPLS Traffic Engineering, Section 4.3.1";
+  }
+
+  typedef te-global-id {
+    type uint32;
+    description
+      "An identifier to uniquely identify an operator, which can be
+       either a provider or a client.
+       The definition of this type is taken from RFCs 6370 and 5003.
+       This attribute type is used solely to provide a globally
+       unique context for TE topologies.";
+    reference
+      "RFC 5003: Attachment Individual Identifier (AII) Types for
+       Aggregation
+       RFC 6370: MPLS Transport Profile (MPLS-TP) Identifiers";
+  }
+
+  typedef te-hop-type {
+    type enumeration {
+      enum loose {
+        description
+          "A loose hop in an explicit path.";
+      }
+      enum strict {
+        description
+          "A strict hop in an explicit path.";
+      }
+    }
+    description
+      "Enumerated type for specifying loose or strict paths.";
+    reference
+      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+       Section 4.3.3";
+  }
+
+  typedef te-link-access-type {
+    type enumeration {
+      enum point-to-point {
+        description
+          "The link is point-to-point.";
+      }
+      enum multi-access {
+        description
+          "The link is multi-access, including broadcast and NBMA.";
+      }
+    }
+    description
+      "Defines a type representing the access type of a TE link.";
+    reference
+      "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+       Version 2";
+  }
+
+  typedef te-label-direction {
+    type enumeration {
+      enum forward {
+        description
+          "Label allocated for the forward LSP direction.";
+      }
+      enum reverse {
+        description
+          "Label allocated for the reverse LSP direction.";
+      }
+    }
+    description
+      "Enumerated type for specifying the forward or reverse
+       label.";
+  }
+
+  typedef te-link-direction {
+    type enumeration {
+      enum incoming {
+        description
+          "The explicit route represents an incoming link on
+           a node.";
+      }
+      enum outgoing {
+        description
+          "The explicit route represents an outgoing link on
+           a node.";
+      }
+    }
+    description
+      "Enumerated type for specifying the direction of a link on
+       a node.";
+  }
+
+  typedef te-metric {
+    type uint32;
+    description
+      "TE metric.";
+    reference
+      "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
+       second MPLS Traffic Engineering (TE) Metric";
+  }
+
+  typedef te-node-id {
+    type yang:dotted-quad;
+    description
+      "A type representing the identifier for a node in a TE
+       topology.
+       The identifier is represented as 4 octets in dotted-quad
+       notation.
+       This attribute MAY be mapped to the Router Address TLV
+       described in Section 2.4.1 of RFC 3630, the TE Router ID
+       described in Section 3 of RFC 6827, the Traffic Engineering
+       Router ID TLV described in Section 4.3 of RFC 5305, or the
+       TE Router ID TLV described in Section 3.2.1 of RFC 6119.
+       The reachability of such a TE node MAY be achieved by a
+       mechanism such as that described in Section 6.2 of RFC 6827.";
+    reference
+      "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+       Version 2, Section 2.4.1
+       RFC 5305: IS-IS Extensions for Traffic Engineering,
+       Section 4.3
+       RFC 6119: IPv6 Traffic Engineering in IS-IS, Section 3.2.1
+       RFC 6827: Automatically Switched Optical Network (ASON)
+       Routing for OSPFv2 Protocols, Section 3";
+  }
+
+  typedef te-oper-status {
+    type te-common-status;
+    description
+      "Defines a type representing the operational status of
+       a TE resource.";
+  }
+
+  typedef te-admin-status {
+    type te-common-status;
+    description
+      "Defines a type representing the administrative status of
+       a TE resource.";
+  }
+
+  typedef te-path-disjointness {
+    type bits {
+      bit node {
+        position 0;
+        description
+          "Node disjoint.";
+      }
+      bit link {
+        position 1;
+        description
+          "Link disjoint.";
+      }
+      bit srlg {
+        position 2;
+        description
+          "SRLG (Shared Risk Link Group) disjoint.";
+      }
+    }
+    description
+      "Type of the resource disjointness for a TE tunnel path.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+  }
+
+  typedef te-recovery-status {
+    type enumeration {
+      enum normal {
+        description
+          "Both the recovery span and the working span are fully
+           allocated and active, data traffic is being
+           transported over (or selected from) the working
+           span, and no trigger events are reported.";
+      }
+      enum recovery-started {
+        description
+          "The recovery action has been started but not completed.";
+      }
+      enum recovery-succeeded {
+        description
+          "The recovery action has succeeded.  The working span has
+           reported a failure/degrade condition, and the user traffic
+           is being transported (or selected) on the recovery span.";
+      }
+      enum recovery-failed {
+        description
+          "The recovery action has failed.";
+      }
+      enum reversion-started {
+        description
+          "The reversion has started.";
+      }
+      enum reversion-succeeded {
+        description
+          "The reversion action has succeeded.";
+      }
+      enum reversion-failed {
+        description
+          "The reversion has failed.";
+      }
+      enum recovery-unavailable {
+        description
+          "The recovery is unavailable, as a result of either an
+           operator's lockout command or a failure condition
+           detected on the recovery span.";
+      }
+      enum recovery-admin {
+        description
+          "The operator has issued a command to switch the user
+           traffic to the recovery span.";
+      }
+      enum wait-to-restore {
+        description
+          "The recovery domain is recovering from a failure/degrade
+           condition on the working span that is being controlled by
+           the Wait-to-Restore (WTR) timer.";
+      }
+    }
+    description
+      "Defines the status of a recovery action.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)
+       RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection";
+  }
+
+  typedef te-template-name {
+    type string {
+      pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
+    }
+    description
+      "A type for the name of a TE node template or TE link
+       template.";
+  }
+
+  typedef te-topology-event-type {
+    type enumeration {
+      enum add {
+        value 0;
+        description
+          "A TE node or TE link has been added.";
+      }
+      enum remove {
+        value 1;
+        description
+          "A TE node or TE link has been removed.";
+      }
+      enum update {
+        value 2;
+        description
+          "A TE node or TE link has been updated.";
+      }
+    }
+    description
+      "TE event type for notifications.";
+  }
+
+  typedef te-topology-id {
+    type union {
+      type string {
+        length "0";
+        // empty string
+      }
+      type string {
+        pattern '([a-zA-Z0-9\-_.]+:)*'
+              + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
+      }
+    }
+    description
+      "An identifier for a topology.
+       It is optional to have one or more prefixes at the beginning,
+       separated by colons.  The prefixes can be 'network-types' as
+       defined in the 'ietf-network' module in RFC 8345, to help the
+       user better understand the topology before further inquiry
+       is made.";
+    reference
+      "RFC 8345: A YANG Data Model for Network Topologies";
+  }
+
+  typedef te-tp-id {
+    type union {
+      type uint32;
+      // Unnumbered
+      type inet:ip-address;
+      // IPv4 or IPv6 address
+    }
+    description
+      "An identifier for a TE link endpoint on a node.
+       This attribute is mapped to a local or remote link identifier
+       as defined in RFCs 3630 and 5305.";
+    reference
+      "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+       Version 2
+       RFC 5305: IS-IS Extensions for Traffic Engineering";
+  }
+
+  /* TE features */
+
+  feature p2mp-te {
+    description
+      "Indicates support for Point-to-Multipoint TE (P2MP-TE).";
+    reference
+      "RFC 4875: Extensions to Resource Reservation Protocol -
+       Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE
+       Label Switched Paths (LSPs)";
+  }
+
+  feature frr-te {
+    description
+      "Indicates support for TE Fast Reroute (FRR).";
+    reference
+      "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels";
+  }
+
+  feature extended-admin-groups {
+    description
+      "Indicates support for TE link extended administrative
+       groups.";
+    reference
+      "RFC 7308: Extended Administrative Groups in MPLS Traffic
+       Engineering (MPLS-TE)";
+  }
+
+  feature named-path-affinities {
+    description
+      "Indicates support for named path affinities.";
+  }
+
+  feature named-extended-admin-groups {
+    description
+      "Indicates support for named extended administrative groups.";
+  }
+
+  feature named-srlg-groups {
+    description
+      "Indicates support for named SRLG groups.";
+  }
+
+  feature named-path-constraints {
+    description
+      "Indicates support for named path constraints.";
+  }
+
+  feature path-optimization-metric {
+    description
+      "Indicates support for path optimization metrics.";
+  }
+
+  feature path-optimization-objective-function {
+    description
+      "Indicates support for path optimization objective functions.";
+  }
+
+  /*
+   * Identities
+   */
+
+  identity session-attributes-flags {
+    description
+      "Base identity for the RSVP-TE session attributes flags.";
+  }
+
+  identity local-protection-desired {
+    base session-attributes-flags;
+    description
+      "Local protection is desired.";
+    reference
+      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+       Section 4.7.1";
+  }
+
+  identity se-style-desired {
+    base session-attributes-flags;
+    description
+      "Shared explicit style, to allow the LSP to be established
+       and share resources with the old LSP.";
+    reference
+      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+  }
+
+  identity local-recording-desired {
+    base session-attributes-flags;
+    description
+      "Label recording is desired.";
+    reference
+      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+       Section 4.7.1";
+  }
+
+  identity bandwidth-protection-desired {
+    base session-attributes-flags;
+    description
+      "Requests FRR bandwidth protection on LSRs, if present.";
+    reference
+      "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels";
+  }
+
+  identity node-protection-desired {
+    base session-attributes-flags;
+    description
+      "Requests FRR node protection on LSRs, if present.";
+    reference
+      "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels";
+  }
+
+  identity path-reevaluation-request {
+    base session-attributes-flags;
+    description
+      "This flag indicates that a path re-evaluation (of the
+       current path in use) is requested.  Note that this does
+       not trigger any LSP reroutes but instead just signals a
+       request to evaluate whether a preferable path exists.";
+    reference
+      "RFC 4736: Reoptimization of Multiprotocol Label Switching
+       (MPLS) Traffic Engineering (TE) Loosely Routed Label Switched
+       Path (LSP)";
+  }
+
+  identity soft-preemption-desired {
+    base session-attributes-flags;
+    description
+      "Soft preemption of LSP resources is desired.";
+    reference
+      "RFC 5712: MPLS Traffic Engineering Soft Preemption";
+  }
+
+  identity lsp-attributes-flags {
+    description
+      "Base identity for LSP attributes flags.";
+  }
+
+  identity end-to-end-rerouting-desired {
+    base lsp-attributes-flags;
+    description
+      "Indicates end-to-end rerouting behavior for an LSP
+       undergoing establishment.  This MAY also be used to
+       specify the behavior of end-to-end LSP recovery for
+       established LSPs.";
+    reference
+      "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS
+       RSVP-TE
+       RFC 5420: Encoding of Attributes for MPLS LSP Establishment
+       Using Resource Reservation Protocol Traffic Engineering
+       (RSVP-TE)
+       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+       Route Object (ERO)";
+  }
+
+  identity boundary-rerouting-desired {
+    base lsp-attributes-flags;
+    description
+      "Indicates boundary rerouting behavior for an LSP undergoing
+       establishment.  This MAY also be used to specify
+       segment-based LSP recovery through nested crankback for
+       established LSPs.  The boundary Area Border Router (ABR) /
+       Autonomous System Border Router (ASBR) can decide to forward
+       the PathErr message upstream to either an upstream boundary
+       ABR/ASBR or the ingress LSR.  Alternatively, it can try to
+       select another egress boundary LSR.";
+    reference
+      "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS
+       RSVP-TE
+       RFC 5420: Encoding of Attributes for MPLS LSP Establishment
+       Using Resource Reservation Protocol Traffic Engineering
+       (RSVP-TE)
+       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+       Route Object (ERO)";
+  }
+
+  identity segment-based-rerouting-desired {
+    base lsp-attributes-flags;
+    description
+      "Indicates segment-based rerouting behavior for an LSP
+       undergoing establishment.  This MAY also be used to specify
+       segment-based LSP recovery for established LSPs.";
+    reference
+      "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS
+       RSVP-TE
+       RFC 5420: Encoding of Attributes for MPLS LSP Establishment
+       Using Resource Reservation Protocol Traffic Engineering
+       (RSVP-TE)
+       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+       Route Object (ERO)";
+  }
+
+  identity lsp-integrity-required {
+    base lsp-attributes-flags;
+    description
+      "Indicates that LSP integrity is required.";
+    reference
+      "RFC 4875: Extensions to Resource Reservation Protocol -
+       Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE
+       Label Switched Paths (LSPs)
+       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+       Route Object (ERO)";
+  }
+
+  identity contiguous-lsp-desired {
+    base lsp-attributes-flags;
+    description
+      "Indicates that a contiguous LSP is desired.";
+    reference
+      "RFC 5151: Inter-Domain MPLS and GMPLS Traffic Engineering --
+       Resource Reservation Protocol-Traffic Engineering (RSVP-TE)
+       Extensions
+       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+       Route Object (ERO)";
+  }
+
+  identity lsp-stitching-desired {
+    base lsp-attributes-flags;
+    description
+      "Indicates that LSP stitching is desired.";
+    reference
+      "RFC 5150: Label Switched Path Stitching with Generalized
+       Multiprotocol Label Switching Traffic Engineering (GMPLS TE)
+       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+       Route Object (ERO)";
+  }
+
+  identity pre-planned-lsp-flag {
+    base lsp-attributes-flags;
+    description
+      "Indicates that the LSP MUST be provisioned in the
+       control plane only.";
+    reference
+      "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions for
+       Multi-Layer and Multi-Region Networks (MLN/MRN)
+       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+       Route Object (ERO)";
+  }
+
+  identity non-php-behavior-flag {
+    base lsp-attributes-flags;
+    description
+      "Indicates that non-PHP (non-Penultimate Hop Popping) behavior
+       for the LSP is desired.";
+    reference
+      "RFC 6511: Non-Penultimate Hop Popping Behavior and Out-of-Band
+       Mapping for RSVP-TE Label Switched Paths
+       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+       Route Object (ERO)";
+  }
+
+  identity oob-mapping-flag {
+    base lsp-attributes-flags;
+    description
+      "Indicates that signaling of the egress binding information is
+       out of band (e.g., via the Border Gateway Protocol (BGP)).";
+    reference
+      "RFC 6511: Non-Penultimate Hop Popping Behavior and Out-of-Band
+       Mapping for RSVP-TE Label Switched Paths
+       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+       Route Object (ERO)";
+  }
+
+  identity entropy-label-capability {
+    base lsp-attributes-flags;
+    description
+      "Indicates entropy label capability.";
+    reference
+      "RFC 6790: The Use of Entropy Labels in MPLS Forwarding
+       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+       Route Object (ERO)";
+  }
+
+  identity oam-mep-entity-desired {
+    base lsp-attributes-flags;
+    description
+      "OAM Maintenance Entity Group End Point (MEP) entities
+       desired.";
+    reference
+      "RFC 7260: GMPLS RSVP-TE Extensions for Operations,
+       Administration, and Maintenance (OAM) Configuration";
+  }
+
+  identity oam-mip-entity-desired {
+    base lsp-attributes-flags;
+    description
+      "OAM Maintenance Entity Group Intermediate Points (MIP)
+       entities desired.";
+    reference
+      "RFC 7260: GMPLS RSVP-TE Extensions for Operations,
+       Administration, and Maintenance (OAM) Configuration";
+  }
+
+  identity srlg-collection-desired {
+    base lsp-attributes-flags;
+    description
+      "SRLG collection desired.";
+    reference
+      "RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+       Route Object (ERO)
+       RFC 8001: RSVP-TE Extensions for Collecting Shared Risk
+       Link Group (SRLG) Information";
+  }
+
+  identity loopback-desired {
+    base lsp-attributes-flags;
+    description
+      "This flag indicates that a particular node on the LSP is
+       required to enter loopback mode.  This can also be
+       used to specify the loopback state of the node.";
+    reference
+      "RFC 7571: GMPLS RSVP-TE Extensions for Lock Instruct and
+       Loopback";
+  }
+
+  identity p2mp-te-tree-eval-request {
+    base lsp-attributes-flags;
+    description
+      "P2MP-TE tree re-evaluation request.";
+    reference
+      "RFC 8149: RSVP Extensions for Reoptimization of Loosely Routed
+       Point-to-Multipoint Traffic Engineering Label Switched Paths
+       (LSPs)";
+  }
+
+  identity rtm-set-desired {
+    base lsp-attributes-flags;
+    description
+      "Residence Time Measurement (RTM) attribute flag requested.";
+    reference
+      "RFC 8169: Residence Time Measurement in MPLS Networks";
+  }
+
+  identity link-protection-type {
+    description
+      "Base identity for the link protection type.";
+  }
+
+  identity link-protection-unprotected {
+    base link-protection-type;
+    description
+      "Unprotected link type.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+  }
+
+  identity link-protection-extra-traffic {
+    base link-protection-type;
+    description
+      "Extra-Traffic protected link type.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity link-protection-shared {
+    base link-protection-type;
+    description
+      "Shared protected link type.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+  }
+
+  identity link-protection-1-for-1 {
+    base link-protection-type;
+    description
+      "One-for-one (1:1) protected link type.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+  }
+
+  identity link-protection-1-plus-1 {
+    base link-protection-type;
+    description
+      "One-plus-one (1+1) protected link type.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+  }
+
+  identity link-protection-enhanced {
+    base link-protection-type;
+    description
+      "A compound link protection type derived from the underlay
+       TE tunnel protection configuration supporting the TE link.";
+  }
+
+  identity association-type {
+    description
+      "Base identity for the tunnel association.";
+  }
+
+  identity association-type-recovery {
+    base association-type;
+    description
+      "Association type for recovery, used to associate LSPs of the
+       same tunnel for recovery.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery
+       RFC 6780: RSVP ASSOCIATION Object Extensions";
+  }
+
+  identity association-type-resource-sharing {
+    base association-type;
+    description
+      "Association type for resource sharing, used to enable
+       resource sharing during make-before-break.";
+    reference
+      "RFC 4873: GMPLS Segment Recovery
+       RFC 6780: RSVP ASSOCIATION Object Extensions";
+  }
+
+  identity association-type-double-sided-bidir {
+    base association-type;
+    description
+      "Association type for double-sided bidirectional LSPs,
+       used to associate two LSPs of two tunnels that are
+       independently configured on either endpoint.";
+    reference
+      "RFC 7551: RSVP-TE Extensions for Associated Bidirectional
+       Label Switched Paths (LSPs)";
+  }
+
+  identity association-type-single-sided-bidir {
+    base association-type;
+    description
+      "Association type for single-sided bidirectional LSPs,
+       used to associate two LSPs of two tunnels, where one
+       tunnel is configured on one side/endpoint and the other
+       tunnel is dynamically created on the other endpoint.";
+    reference
+      "RFC 6780: RSVP ASSOCIATION Object Extensions
+       RFC 7551: RSVP-TE Extensions for Associated Bidirectional
+       Label Switched Paths (LSPs)";
+  }
+
+  identity objective-function-type {
+    description
+      "Base objective function type.";
+  }
+
+  identity of-minimize-cost-path {
+    base objective-function-type;
+    description
+      "Objective function for minimizing path cost.";
+    reference
+      "RFC 5541: Encoding of Objective Functions in the Path
+       Computation Element Communication Protocol (PCEP)";
+  }
+
+  identity of-minimize-load-path {
+    base objective-function-type;
+    description
+      "Objective function for minimizing the load on one or more
+       paths.";
+    reference
+      "RFC 5541: Encoding of Objective Functions in the Path
+       Computation Element Communication Protocol (PCEP)";
+  }
+
+  identity of-maximize-residual-bandwidth {
+    base objective-function-type;
+    description
+      "Objective function for maximizing residual bandwidth.";
+    reference
+      "RFC 5541: Encoding of Objective Functions in the Path
+       Computation Element Communication Protocol (PCEP)";
+  }
+
+  identity of-minimize-agg-bandwidth-consumption {
+    base objective-function-type;
+    description
+      "Objective function for minimizing aggregate bandwidth
+       consumption.";
+    reference
+      "RFC 5541: Encoding of Objective Functions in the Path
+       Computation Element Communication Protocol (PCEP)";
+  }
+
+  identity of-minimize-load-most-loaded-link {
+    base objective-function-type;
+    description
+      "Objective function for minimizing the load on the link that
+       is carrying the highest load.";
+    reference
+      "RFC 5541: Encoding of Objective Functions in the Path
+       Computation Element Communication Protocol (PCEP)";
+  }
+
+  identity of-minimize-cost-path-set {
+    base objective-function-type;
+    description
+      "Objective function for minimizing the cost on a path set.";
+    reference
+      "RFC 5541: Encoding of Objective Functions in the Path
+       Computation Element Communication Protocol (PCEP)";
+  }
+
+  identity path-computation-method {
+    description
+      "Base identity for supported path computation mechanisms.";
+  }
+
+  identity path-locally-computed {
+    base path-computation-method;
+    description
+      "Indicates a constrained-path LSP in which the
+       path is computed by the local LER.";
+    reference
+      "RFC 3272: Overview and Principles of Internet Traffic
+       Engineering, Section 5.4";
+  }
+
+  identity path-externally-queried {
+    base path-computation-method;
+    description
+      "Constrained-path LSP in which the path is obtained by
+       querying an external source, such as a PCE server.
+       In the case that an LSP is defined to be externally queried,
+       it may also have associated explicit definitions (provided
+       to the external source to aid computation).  The path that is
+       returned by the external source may require further local
+       computation on the device.";
+    reference
+      "RFC 3272: Overview and Principles of Internet Traffic
+       Engineering
+       RFC 4657: Path Computation Element (PCE) Communication
+       Protocol Generic Requirements";
+  }
+
+  identity path-explicitly-defined {
+    base path-computation-method;
+    description
+      "Constrained-path LSP in which the path is
+       explicitly specified as a collection of strict and/or loose
+       hops.";
+    reference
+      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
+       RFC 3272: Overview and Principles of Internet Traffic
+       Engineering";
+  }
+
+  identity lsp-metric-type {
+    description
+      "Base identity for the LSP metric specification types.";
+  }
+
+  identity lsp-metric-relative {
+    base lsp-metric-type;
+    description
+      "The metric specified for the LSPs to which this identity
+       refers is specified as a value relative to the IGP metric
+       cost to the LSP's tail end.";
+    reference
+      "RFC 4657: Path Computation Element (PCE) Communication
+       Protocol Generic Requirements";
+  }
+
+  identity lsp-metric-absolute {
+    base lsp-metric-type;
+    description
+      "The metric specified for the LSPs to which this identity
+       refers is specified as an absolute value.";
+    reference
+      "RFC 4657: Path Computation Element (PCE) Communication
+       Protocol Generic Requirements";
+  }
+
+  identity lsp-metric-inherited {
+    base lsp-metric-type;
+    description
+      "The metric for the LSPs to which this identity refers is
+       not specified explicitly; rather, it is directly inherited
+       from the IGP cost.";
+    reference
+      "RFC 4657: Path Computation Element (PCE) Communication
+       Protocol Generic Requirements";
+  }
+
+  identity te-tunnel-type {
+    description
+      "Base identity from which specific tunnel types are derived.";
+  }
+
+  identity te-tunnel-p2p {
+    base te-tunnel-type;
+    description
+      "TE Point-to-Point (P2P) tunnel type.";
+    reference
+      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+  }
+
+  identity te-tunnel-p2mp {
+    base te-tunnel-type;
+    description
+      "TE P2MP tunnel type.";
+    reference
+      "RFC 4875: Extensions to Resource Reservation Protocol -
+       Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE
+       Label Switched Paths (LSPs)";
+  }
+
+  identity tunnel-action-type {
+    description
+      "Base identity from which specific tunnel action types
+       are derived.";
+  }
+
+  identity tunnel-action-resetup {
+    base tunnel-action-type;
+    description
+      "TE tunnel action that tears down the tunnel's current LSP
+       (if any) and attempts to re-establish a new LSP.";
+  }
+
+  identity tunnel-action-reoptimize {
+    base tunnel-action-type;
+    description
+      "TE tunnel action that reoptimizes the placement of the
+       tunnel LSP(s).";
+  }
+
+  identity tunnel-action-switchpath {
+    base tunnel-action-type;
+    description
+      "TE tunnel action that switches the tunnel's LSP to use the
+       specified path.";
+  }
+
+  identity te-action-result {
+    description
+      "Base identity from which specific TE action results
+       are derived.";
+  }
+
+  identity te-action-success {
+    base te-action-result;
+    description
+      "TE action was successful.";
+  }
+
+  identity te-action-fail {
+    base te-action-result;
+    description
+      "TE action failed.";
+  }
+
+  identity tunnel-action-inprogress {
+    base te-action-result;
+    description
+      "TE action is in progress.";
+  }
+
+  identity tunnel-admin-state-type {
+    description
+      "Base identity for TE tunnel administrative states.";
+  }
+
+  identity tunnel-admin-state-up {
+    base tunnel-admin-state-type;
+    description
+      "Tunnel's administrative state is up.";
+  }
+
+  identity tunnel-admin-state-down {
+    base tunnel-admin-state-type;
+    description
+      "Tunnel's administrative state is down.";
+  }
+
+  identity tunnel-state-type {
+    description
+      "Base identity for TE tunnel states.";
+  }
+
+  identity tunnel-state-up {
+    base tunnel-state-type;
+    description
+      "Tunnel's state is up.";
+  }
+
+  identity tunnel-state-down {
+    base tunnel-state-type;
+    description
+      "Tunnel's state is down.";
+  }
+
+  identity lsp-state-type {
+    description
+      "Base identity for TE LSP states.";
+  }
+
+  identity lsp-path-computing {
+    base lsp-state-type;
+    description
+      "State path computation is in progress.";
+  }
+
+  identity lsp-path-computation-ok {
+    base lsp-state-type;
+    description
+      "State path computation was successful.";
+  }
+
+  identity lsp-path-computation-failed {
+    base lsp-state-type;
+    description
+      "State path computation failed.";
+  }
+
+  identity lsp-state-setting-up {
+    base lsp-state-type;
+    description
+      "State is being set up.";
+  }
+
+  identity lsp-state-setup-ok {
+    base lsp-state-type;
+    description
+      "State setup was successful.";
+  }
+
+  identity lsp-state-setup-failed {
+    base lsp-state-type;
+    description
+      "State setup failed.";
+  }
+
+  identity lsp-state-up {
+    base lsp-state-type;
+    description
+      "State is up.";
+  }
+
+  identity lsp-state-tearing-down {
+    base lsp-state-type;
+    description
+      "State is being torn down.";
+  }
+
+  identity lsp-state-down {
+    base lsp-state-type;
+    description
+      "State is down.";
+  }
+
+  identity path-invalidation-action-type {
+    description
+      "Base identity for TE path invalidation action types.";
+  }
+
+  identity path-invalidation-action-drop {
+    base path-invalidation-action-type;
+    description
+      "Upon invalidation of the TE tunnel path, the tunnel remains
+       valid, but any packet mapped over the tunnel is dropped.";
+    reference
+      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+       Section 2.5";
+  }
+
+  identity path-invalidation-action-teardown {
+    base path-invalidation-action-type;
+    description
+      "TE path invalidation action teardown.";
+    reference
+      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+       Section 2.5";
+  }
+
+  identity lsp-restoration-type {
+    description
+      "Base identity from which LSP restoration types are derived.";
+  }
+
+  identity lsp-restoration-restore-any {
+    base lsp-restoration-type;
+    description
+      "Any LSP affected by a failure is restored.";
+  }
+
+  identity lsp-restoration-restore-all {
+    base lsp-restoration-type;
+    description
+      "Affected LSPs are restored after all LSPs of the tunnel are
+       broken.";
+  }
+
+  identity restoration-scheme-type {
+    description
+      "Base identity for LSP restoration schemes.";
+  }
+
+  identity restoration-scheme-preconfigured {
+    base restoration-scheme-type;
+    description
+      "Restoration LSP is preconfigured prior to the failure.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity restoration-scheme-precomputed {
+    base restoration-scheme-type;
+    description
+      "Restoration LSP is precomputed prior to the failure.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity restoration-scheme-presignaled {
+    base restoration-scheme-type;
+    description
+      "Restoration LSP is presignaled prior to the failure.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity lsp-protection-type {
+    description
+      "Base identity from which LSP protection types are derived.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+  }
+
+  identity lsp-protection-unprotected {
+    base lsp-protection-type;
+    description
+      "'Unprotected' LSP protection type.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+  }
+
+  identity lsp-protection-reroute-extra {
+    base lsp-protection-type;
+    description
+      "'(Full) Rerouting' LSP protection type.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+  }
+
+  identity lsp-protection-reroute {
+    base lsp-protection-type;
+    description
+      "'Rerouting without Extra-Traffic' LSP protection type.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+  }
+
+  identity lsp-protection-1-for-n {
+    base lsp-protection-type;
+    description
+      "'1:N Protection with Extra-Traffic' LSP protection type.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+  }
+
+  identity lsp-protection-1-for-1 {
+    base lsp-protection-type;
+    description
+      "LSP protection '1:1 Protection Type'.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+  }
+
+  identity lsp-protection-unidir-1-plus-1 {
+    base lsp-protection-type;
+    description
+      "'1+1 Unidirectional Protection' LSP protection type.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+  }
+
+  identity lsp-protection-bidir-1-plus-1 {
+    base lsp-protection-type;
+    description
+      "'1+1 Bidirectional Protection' LSP protection type.";
+    reference
+      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+  }
+
+  identity lsp-protection-extra-traffic {
+    base lsp-protection-type;
+    description
+      "Extra-Traffic LSP protection type.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity lsp-protection-state {
+    description
+      "Base identity of protection states for reporting purposes.";
+  }
+
+  identity normal {
+    base lsp-protection-state;
+    description
+      "Normal state.";
+  }
+
+  identity signal-fail-of-protection {
+    base lsp-protection-state;
+    description
+      "The protection transport entity has a signal fail condition
+       that is of higher priority than the forced switchover
+       command.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity lockout-of-protection {
+    base lsp-protection-state;
+    description
+      "A Loss of Protection (LoP) command is active.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity forced-switch {
+    base lsp-protection-state;
+    description
+      "A forced switchover command is active.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity signal-fail {
+    base lsp-protection-state;
+    description
+      "There is a signal fail condition on either the working path
+       or the protection path.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity signal-degrade {
+    base lsp-protection-state;
+    description
+      "There is a signal degrade condition on either the working
+       path or the protection path.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity manual-switch {
+    base lsp-protection-state;
+    description
+      "A manual switchover command is active.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity wait-to-restore {
+    base lsp-protection-state;
+    description
+      "A WTR timer is running.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity do-not-revert {
+    base lsp-protection-state;
+    description
+      "A Do Not Revert (DNR) condition is active because of
+       non-revertive behavior.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity failure-of-protocol {
+    base lsp-protection-state;
+    description
+      "LSP protection is not working because of a protocol failure
+       condition.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity protection-external-commands {
+    description
+      "Base identity from which protection-related external commands
+       used for troubleshooting purposes are derived.";
+  }
+
+  identity action-freeze {
+    base protection-external-commands;
+    description
+      "A temporary configuration action initiated by an operator
+       command that prevents any switchover action from being taken
+       and, as such, freezes the current state.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity clear-freeze {
+    base protection-external-commands;
+    description
+      "An action that clears the active freeze state.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity action-lockout-of-normal {
+    base protection-external-commands;
+    description
+      "A temporary configuration action initiated by an operator
+       command to ensure that the normal traffic is not allowed
+       to use the protection transport entity.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity clear-lockout-of-normal {
+    base protection-external-commands;
+    description
+      "An action that clears the active lockout of the
+       normal state.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity action-lockout-of-protection {
+    base protection-external-commands;
+    description
+      "A temporary configuration action initiated by an operator
+       command to ensure that the protection transport entity is
+       temporarily not available to transport a traffic signal
+       (either normal or Extra-Traffic).";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity action-forced-switch {
+    base protection-external-commands;
+    description
+      "A switchover action initiated by an operator command to switch
+       the Extra-Traffic signal, the normal traffic signal, or the
+       null signal to the protection transport entity, unless a
+       switchover command of equal or higher priority is in effect.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity action-manual-switch {
+    base protection-external-commands;
+    description
+      "A switchover action initiated by an operator command to switch
+       the Extra-Traffic signal, the normal traffic signal, or
+       the null signal to the protection transport entity, unless
+       a fault condition exists on other transport entities or a
+       switchover command of equal or higher priority is in effect.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity action-exercise {
+    base protection-external-commands;
+    description
+      "An action that starts testing whether or not APS communication
+       is operating correctly.  It is of lower priority than any
+       other state or command.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity clear {
+    base protection-external-commands;
+    description
+      "An action that clears the active near-end lockout of a
+       protection, forced switchover, manual switchover, WTR state,
+       or exercise command.";
+    reference
+      "RFC 4427: Recovery (Protection and Restoration) Terminology
+       for Generalized Multi-Protocol Label Switching (GMPLS)";
+  }
+
+  identity switching-capabilities {
+    description
+      "Base identity for interface switching capabilities.";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity switching-psc1 {
+    base switching-capabilities;
+    description
+      "Packet-Switch Capable-1 (PSC-1).";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity switching-evpl {
+    base switching-capabilities;
+    description
+      "Ethernet Virtual Private Line (EVPL).";
+    reference
+      "RFC 6004: Generalized MPLS (GMPLS) Support for Metro Ethernet
+       Forum and G.8011 Ethernet Service Switching";
+  }
+
+  identity switching-l2sc {
+    base switching-capabilities;
+    description
+      "Layer-2 Switch Capable (L2SC).";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity switching-tdm {
+    base switching-capabilities;
+    description
+      "Time-Division-Multiplex Capable (TDM).";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity switching-otn {
+    base switching-capabilities;
+    description
+      "OTN-TDM capable.";
+    reference
+      "RFC 7138: Traffic Engineering Extensions to OSPF for GMPLS
+       Control of Evolving G.709 Optical Transport Networks";
+  }
+
+  identity switching-dcsc {
+    base switching-capabilities;
+    description
+      "Data Channel Switching Capable (DCSC).";
+    reference
+      "RFC 6002: Generalized MPLS (GMPLS) Data Channel
+       Switching Capable (DCSC) and Channel Set Label Extensions";
+  }
+
+  identity switching-lsc {
+    base switching-capabilities;
+    description
+      "Lambda-Switch Capable (LSC).";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity switching-fsc {
+    base switching-capabilities;
+    description
+      "Fiber-Switch Capable (FSC).";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity lsp-encoding-types {
+    description
+      "Base identity for encoding types.";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity lsp-encoding-packet {
+    base lsp-encoding-types;
+    description
+      "Packet LSP encoding.";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity lsp-encoding-ethernet {
+    base lsp-encoding-types;
+    description
+      "Ethernet LSP encoding.";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity lsp-encoding-pdh {
+    base lsp-encoding-types;
+    description
+      "ANSI/ETSI PDH LSP encoding.";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity lsp-encoding-sdh {
+    base lsp-encoding-types;
+    description
+      "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding.";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity lsp-encoding-digital-wrapper {
+    base lsp-encoding-types;
+    description
+      "Digital Wrapper LSP encoding.";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity lsp-encoding-lambda {
+    base lsp-encoding-types;
+    description
+      "Lambda (photonic) LSP encoding.";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity lsp-encoding-fiber {
+    base lsp-encoding-types;
+    description
+      "Fiber LSP encoding.";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity lsp-encoding-fiber-channel {
+    base lsp-encoding-types;
+    description
+      "FiberChannel LSP encoding.";
+    reference
+      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Functional Description";
+  }
+
+  identity lsp-encoding-oduk {
+    base lsp-encoding-types;
+    description
+      "G.709 ODUk (Digital Path) LSP encoding.";
+    reference
+      "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Extensions for G.709 Optical Transport Networks
+       Control";
+  }
+
+  identity lsp-encoding-optical-channel {
+    base lsp-encoding-types;
+    description
+      "G.709 Optical Channel LSP encoding.";
+    reference
+      "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS)
+       Signaling Extensions for G.709 Optical Transport Networks
+       Control";
+  }
+
+  identity lsp-encoding-line {
+    base lsp-encoding-types;
+    description
+      "Line (e.g., 8B/10B) LSP encoding.";
+    reference
+      "RFC 6004: Generalized MPLS (GMPLS) Support for Metro
+       Ethernet Forum and G.8011 Ethernet Service Switching";
+  }
+
+  identity path-signaling-type {
+    description
+      "Base identity from which specific LSP path setup types
+       are derived.";
+  }
+
+  identity path-setup-static {
+    base path-signaling-type;
+    description
+      "Static LSP provisioning path setup.";
+  }
+
+  identity path-setup-rsvp {
+    base path-signaling-type;
+    description
+      "RSVP-TE signaling path setup.";
+    reference
+      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+  }
+
+  identity path-setup-sr {
+    base path-signaling-type;
+    description
+      "Segment-routing path setup.";
+  }
+
+  identity path-scope-type {
+    description
+      "Base identity from which specific path scope types are
+       derived.";
+  }
+
+  identity path-scope-segment {
+    base path-scope-type;
+    description
+      "Path scope segment.";
+    reference
+      "RFC 4873: GMPLS Segment Recovery";
+  }
+
+  identity path-scope-end-to-end {
+    base path-scope-type;
+    description
+      "Path scope end to end.";
+    reference
+      "RFC 4873: GMPLS Segment Recovery";
+  }
+
+  identity route-usage-type {
+    description
+      "Base identity for route usage.";
+  }
+
+  identity route-include-object {
+    base route-usage-type;
+    description
+      "'Include route' object.";
+  }
+
+  identity route-exclude-object {
+    base route-usage-type;
+    description
+      "'Exclude route' object.";
+    reference
+      "RFC 4874: Exclude Routes - Extension to Resource ReserVation
+       Protocol-Traffic Engineering (RSVP-TE)";
+  }
+
+  identity route-exclude-srlg {
+    base route-usage-type;
+    description
+      "Excludes SRLGs.";
+    reference
+      "RFC 4874: Exclude Routes - Extension to Resource ReserVation
+       Protocol-Traffic Engineering (RSVP-TE)";
+  }
+
+  identity path-metric-type {
+    description
+      "Base identity for the path metric type.";
+  }
+
+  identity path-metric-te {
+    base path-metric-type;
+    description
+      "TE path metric.";
+    reference
+      "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
+       second MPLS Traffic Engineering (TE) Metric";
+  }
+
+  identity path-metric-igp {
+    base path-metric-type;
+    description
+      "IGP path metric.";
+    reference
+      "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
+       second MPLS Traffic Engineering (TE) Metric";
+  }
+
+  identity path-metric-hop {
+    base path-metric-type;
+    description
+      "Hop path metric.";
+  }
+
+  identity path-metric-delay-average {
+    base path-metric-type;
+    description
+      "Average unidirectional link delay.";
+    reference
+      "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
+  }
+
+  identity path-metric-delay-minimum {
+    base path-metric-type;
+    description
+      "Minimum unidirectional link delay.";
+    reference
+      "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
+  }
+
+  identity path-metric-residual-bandwidth {
+    base path-metric-type;
+    description
+      "Unidirectional Residual Bandwidth, which is defined to be
+       Maximum Bandwidth (RFC 3630) minus the bandwidth currently
+       allocated to LSPs.";
+    reference
+      "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+       Version 2
+       RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
+  }
+
+  identity path-metric-optimize-includes {
+    base path-metric-type;
+    description
+      "A metric that optimizes the number of included resources
+       specified in a set.";
+  }
+
+  identity path-metric-optimize-excludes {
+    base path-metric-type;
+    description
+      "A metric that optimizes to a maximum the number of excluded
+       resources specified in a set.";
+  }
+
+  identity path-tiebreaker-type {
+    description
+      "Base identity for the path tiebreaker type.";
+  }
+
+  identity path-tiebreaker-minfill {
+    base path-tiebreaker-type;
+    description
+      "Min-Fill LSP path placement.";
+  }
+
+  identity path-tiebreaker-maxfill {
+    base path-tiebreaker-type;
+    description
+      "Max-Fill LSP path placement.";
+  }
+
+  identity path-tiebreaker-random {
+    base path-tiebreaker-type;
+    description
+      "Random LSP path placement.";
+  }
+
+  identity resource-affinities-type {
+    description
+      "Base identity for resource class affinities.";
+    reference
+      "RFC 2702: Requirements for Traffic Engineering Over MPLS";
+  }
+
+  identity resource-aff-include-all {
+    base resource-affinities-type;
+    description
+      "The set of attribute filters associated with a
+       tunnel, all of which must be present for a link
+       to be acceptable.";
+    reference
+      "RFC 2702: Requirements for Traffic Engineering Over MPLS
+       RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+  }
+
+  identity resource-aff-include-any {
+    base resource-affinities-type;
+    description
+      "The set of attribute filters associated with a
+       tunnel, any of which must be present for a link
+       to be acceptable.";
+    reference
+      "RFC 2702: Requirements for Traffic Engineering Over MPLS
+       RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+  }
+
+  identity resource-aff-exclude-any {
+    base resource-affinities-type;
+    description
+      "The set of attribute filters associated with a
+       tunnel, any of which renders a link unacceptable.";
+    reference
+      "RFC 2702: Requirements for Traffic Engineering Over MPLS
+       RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+  }
+
+  identity te-optimization-criterion {
+    description
+      "Base identity for the TE optimization criteria.";
+    reference
+      "RFC 3272: Overview and Principles of Internet Traffic
+       Engineering";
+  }
+
+  identity not-optimized {
+    base te-optimization-criterion;
+    description
+      "Optimization is not applied.";
+  }
+
+  identity cost {
+    base te-optimization-criterion;
+    description
+      "Optimized on cost.";
+    reference
+      "RFC 5541: Encoding of Objective Functions in the Path
+       Computation Element Communication Protocol (PCEP)";
+  }
+
+  identity delay {
+    base te-optimization-criterion;
+    description
+      "Optimized on delay.";
+    reference
+      "RFC 5541: Encoding of Objective Functions in the Path
+       Computation Element Communication Protocol (PCEP)";
+  }
+
+  identity path-computation-srlg-type {
+    description
+      "Base identity for SRLG path computation.";
+  }
+
+  identity srlg-ignore {
+    base path-computation-srlg-type;
+    description
+      "Ignores SRLGs in the path computation.";
+  }
+
+  identity srlg-strict {
+    base path-computation-srlg-type;
+    description
+      "Includes a strict SRLG check in the path computation.";
+  }
+
+  identity srlg-preferred {
+    base path-computation-srlg-type;
+    description
+      "Includes a preferred SRLG check in the path computation.";
+  }
+
+  identity srlg-weighted {
+    base path-computation-srlg-type;
+    description
+      "Includes a weighted SRLG check in the path computation.";
+  }
+
+  /**
+   * TE bandwidth groupings
+   **/
+
+  grouping te-bandwidth {
+    description
+      "This grouping defines the generic TE bandwidth.
+       For some known data-plane technologies, specific modeling
+       structures are specified.  The string-encoded 'te-bandwidth'
+       type is used for unspecified technologies.
+       The modeling structure can be augmented later for other
+       technologies.";
+    container te-bandwidth {
+      description
+        "Container that specifies TE bandwidth.  The choices
+         can be augmented for specific data-plane technologies.";
+      choice technology {
+        default "generic";
+        description
+          "Data-plane technology type.";
+        case generic {
+          leaf generic {
+            type te-bandwidth;
+            description
+              "Bandwidth specified in a generic format.";
+          }
+        }
+      }
+    }
+  }
+
+  /**
+   * TE label groupings
+   **/
+
+  grouping te-label {
+    description
+      "This grouping defines the generic TE label.
+       The modeling structure can be augmented for each technology.
+       For unspecified technologies, 'rt-types:generalized-label'
+       is used.";
+    container te-label {
+      description
+        "Container that specifies the TE label.  The choices can
+         be augmented for specific data-plane technologies.";
+      choice technology {
+        default "generic";
+        description
+          "Data-plane technology type.";
+        case generic {
+          leaf generic {
+            type rt-types:generalized-label;
+            description
+              "TE label specified in a generic format.";
+          }
+        }
+      }
+      leaf direction {
+        type te-label-direction;
+        default "forward";
+        description
+          "Label direction.";
+      }
+    }
+  }
+
+  grouping te-topology-identifier {
+    description
+      "Augmentation for a TE topology.";
+    container te-topology-identifier {
+      description
+        "TE topology identifier container.";
+      leaf provider-id {
+        type te-global-id;
+        default "0";
+        description
+          "An identifier to uniquely identify a provider.
+           If omitted, it assumes that the topology provider ID
+           value = 0 (the default).";
+      }
+      leaf client-id {
+        type te-global-id;
+        default "0";
+        description
+          "An identifier to uniquely identify a client.
+           If omitted, it assumes that the topology client ID
+           value = 0 (the default).";
+      }
+      leaf topology-id {
+        type te-topology-id;
+        default "";
+        description
+          "When the datastore contains several topologies,
+           'topology-id' distinguishes between them.  If omitted,
+           the default (empty) string for this leaf is assumed.";
+      }
+    }
+  }
+
+  /**
+   * TE performance metrics groupings
+   **/
+
+  grouping performance-metrics-one-way-delay-loss {
+    description
+      "Performance Metrics (PM) information in real time that can
+       be applicable to links or connections.  PM defined in this
+       grouping are applicable to generic TE PM as well as packet TE
+       PM.";
+    reference
+      "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+       RFC 7823: Performance-Based Path Selection for Explicitly
+       Routed Label Switched Paths (LSPs) Using TE Metric
+       Extensions
+       RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
+    leaf one-way-delay {
+      type uint32 {
+        range "0..16777215";
+      }
+      description
+        "One-way delay or latency in microseconds.";
+    }
+    leaf one-way-delay-normality {
+      type te-types:performance-metrics-normality;
+      description
+        "One-way delay normality.";
+    }
+  }
+
+  grouping performance-metrics-two-way-delay-loss {
+    description
+      "PM information in real time that can be applicable to links or
+       connections.  PM defined in this grouping are applicable to
+       generic TE PM as well as packet TE PM.";
+    reference
+      "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+       RFC 7823: Performance-Based Path Selection for Explicitly
+       Routed Label Switched Paths (LSPs) Using TE Metric
+       Extensions
+       RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
+    leaf two-way-delay {
+      type uint32 {
+        range "0..16777215";
+      }
+      description
+        "Two-way delay or latency in microseconds.";
+    }
+    leaf two-way-delay-normality {
+      type te-types:performance-metrics-normality;
+      description
+        "Two-way delay normality.";
+    }
+  }
+
+  grouping performance-metrics-one-way-bandwidth {
+    description
+      "PM information in real time that can be applicable to links.
+       PM defined in this grouping are applicable to generic TE PM
+       as well as packet TE PM.";
+    reference
+      "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+       RFC 7823: Performance-Based Path Selection for Explicitly
+       Routed Label Switched Paths (LSPs) Using TE Metric
+       Extensions
+       RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
+    leaf one-way-residual-bandwidth {
+      type rt-types:bandwidth-ieee-float32;
+      units "bytes per second";
+      default "0x0p0";
+      description
+        "Residual bandwidth that subtracts tunnel reservations from
+         Maximum Bandwidth (or link capacity) (RFC 3630) and
+         provides an aggregated remainder across QoS classes.";
+      reference
+        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+         Version 2";
+    }
+    leaf one-way-residual-bandwidth-normality {
+      type te-types:performance-metrics-normality;
+      default "normal";
+      description
+        "Residual bandwidth normality.";
+    }
+    leaf one-way-available-bandwidth {
+      type rt-types:bandwidth-ieee-float32;
+      units "bytes per second";
+      default "0x0p0";
+      description
+        "Available bandwidth that is defined to be residual
+         bandwidth minus the measured bandwidth used for the
+         actual forwarding of non-RSVP-TE LSP packets.  For a
+         bundled link, available bandwidth is defined to be the
+         sum of the component link available bandwidths.";
+    }
+    leaf one-way-available-bandwidth-normality {
+      type te-types:performance-metrics-normality;
+      default "normal";
+      description
+        "Available bandwidth normality.";
+    }
+    leaf one-way-utilized-bandwidth {
+      type rt-types:bandwidth-ieee-float32;
+      units "bytes per second";
+      default "0x0p0";
+      description
+        "Bandwidth utilization that represents the actual
+         utilization of the link (i.e., as measured in the router).
+         For a bundled link, bandwidth utilization is defined to
+         be the sum of the component link bandwidth utilizations.";
+    }
+    leaf one-way-utilized-bandwidth-normality {
+      type te-types:performance-metrics-normality;
+      default "normal";
+      description
+        "Bandwidth utilization normality.";
+    }
+  }
+
+  grouping one-way-performance-metrics {
+    description
+      "One-way PM throttle grouping.";
+    leaf one-way-delay {
+      type uint32 {
+        range "0..16777215";
+      }
+      default "0";
+      description
+        "One-way delay or latency in microseconds.";
+    }
+    leaf one-way-residual-bandwidth {
+      type rt-types:bandwidth-ieee-float32;
+      units "bytes per second";
+      default "0x0p0";
+      description
+        "Residual bandwidth that subtracts tunnel reservations from
+         Maximum Bandwidth (or link capacity) (RFC 3630) and
+         provides an aggregated remainder across QoS classes.";
+      reference
+        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+         Version 2";
+    }
+    leaf one-way-available-bandwidth {
+      type rt-types:bandwidth-ieee-float32;
+      units "bytes per second";
+      default "0x0p0";
+      description
+        "Available bandwidth that is defined to be residual
+         bandwidth minus the measured bandwidth used for the
+         actual forwarding of non-RSVP-TE LSP packets.  For a
+         bundled link, available bandwidth is defined to be the
+         sum of the component link available bandwidths.";
+    }
+    leaf one-way-utilized-bandwidth {
+      type rt-types:bandwidth-ieee-float32;
+      units "bytes per second";
+      default "0x0p0";
+      description
+        "Bandwidth utilization that represents the actual
+         utilization of the link (i.e., as measured in the router).
+         For a bundled link, bandwidth utilization is defined to
+         be the sum of the component link bandwidth utilizations.";
+    }
+  }
+
+  grouping two-way-performance-metrics {
+    description
+      "Two-way PM throttle grouping.";
+    leaf two-way-delay {
+      type uint32 {
+        range "0..16777215";
+      }
+      default "0";
+      description
+        "Two-way delay or latency in microseconds.";
+    }
+  }
+
+  grouping performance-metrics-thresholds {
+    description
+      "Grouping for configurable thresholds for measured
+       attributes.";
+    uses one-way-performance-metrics;
+    uses two-way-performance-metrics;
+  }
+
+  grouping performance-metrics-attributes {
+    description
+      "Contains PM attributes.";
+    container performance-metrics-one-way {
+      description
+        "One-way link performance information in real time.";
+      reference
+        "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+         RFC 7823: Performance-Based Path Selection for Explicitly
+         Routed Label Switched Paths (LSPs) Using TE Metric
+         Extensions
+         RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
+      uses performance-metrics-one-way-delay-loss;
+      uses performance-metrics-one-way-bandwidth;
+    }
+    container performance-metrics-two-way {
+      description
+        "Two-way link performance information in real time.";
+      reference
+        "RFC 6374: Packet Loss and Delay Measurement for MPLS
+         Networks";
+      uses performance-metrics-two-way-delay-loss;
+    }
+  }
+
+  grouping performance-metrics-throttle-container {
+    description
+      "Controls PM throttling.";
+    container throttle {
+      must 'suppression-interval >= measure-interval' {
+        error-message "'suppression-interval' cannot be less than "
+                    + "'measure-interval'.";
+        description
+          "Constraint on 'suppression-interval' and
+           'measure-interval'.";
+      }
+      description
+        "Link performance information in real time.";
+      reference
+        "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+         RFC 7823: Performance-Based Path Selection for Explicitly
+         Routed Label Switched Paths (LSPs) Using TE Metric
+         Extensions
+         RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
+      leaf one-way-delay-offset {
+        type uint32 {
+          range "0..16777215";
+        }
+        default "0";
+        description
+          "Offset value to be added to the measured delay value.";
+      }
+      leaf measure-interval {
+        type uint32;
+        default "30";
+        description
+          "Interval, in seconds, to measure the extended metric
+           values.";
+      }
+      leaf advertisement-interval {
+        type uint32;
+        default "0";
+        description
+          "Interval, in seconds, to advertise the extended metric
+           values.";
+      }
+      leaf suppression-interval {
+        type uint32 {
+          range "1..max";
+        }
+        default "120";
+        description
+          "Interval, in seconds, to suppress advertisement of the
+           extended metric values.";
+        reference
+          "RFC 8570: IS-IS Traffic Engineering (TE) Metric
+           Extensions, Section 6";
+      }
+      container threshold-out {
+        uses performance-metrics-thresholds;
+        description
+          "If the measured parameter falls outside an upper bound
+           for all but the minimum-delay metric (or a lower bound
+           for the minimum-delay metric only) and the advertised
+           value is not already outside that bound, an 'anomalous'
+           announcement (anomalous bit set) will be triggered.";
+      }
+      container threshold-in {
+        uses performance-metrics-thresholds;
+        description
+          "If the measured parameter falls inside an upper bound
+           for all but the minimum-delay metric (or a lower bound
+           for the minimum-delay metric only) and the advertised
+           value is not already inside that bound, a 'normal'
+           announcement (anomalous bit cleared) will be triggered.";
+      }
+      container threshold-accelerated-advertisement {
+        description
+          "When the difference between the last advertised value and
+           the current measured value exceeds this threshold, an
+           'anomalous' announcement (anomalous bit set) will be
+           triggered.";
+        uses performance-metrics-thresholds;
+      }
+    }
+  }
+
+  /**
+   * TE tunnel generic groupings
+   **/
+
+  grouping explicit-route-hop {
+    description
+      "The explicit route entry grouping.";
+    choice type {
+      description
+        "The explicit route entry type.";
+      case numbered-node-hop {
+        container numbered-node-hop {
+          leaf node-id {
+            type te-node-id;
+            mandatory true;
+            description
+              "The identifier of a node in the TE topology.";
+          }
+          leaf hop-type {
+            type te-hop-type;
+            default "strict";
+            description
+              "Strict or loose hop.";
+          }
+          description
+            "Numbered node route hop.";
+          reference
+            "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+             Section 4.3, EXPLICIT_ROUTE in RSVP-TE
+             RFC 3477: Signalling Unnumbered Links in Resource
+             ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
+        }
+      }
+      case numbered-link-hop {
+        container numbered-link-hop {
+          leaf link-tp-id {
+            type te-tp-id;
+            mandatory true;
+            description
+              "TE Link Termination Point (LTP) identifier.";
+          }
+          leaf hop-type {
+            type te-hop-type;
+            default "strict";
+            description
+              "Strict or loose hop.";
+          }
+          leaf direction {
+            type te-link-direction;
+            default "outgoing";
+            description
+              "Link route object direction.";
+          }
+          description
+            "Numbered link explicit route hop.";
+          reference
+            "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+             Section 4.3, EXPLICIT_ROUTE in RSVP-TE
+             RFC 3477: Signalling Unnumbered Links in Resource
+             ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
+        }
+      }
+      case unnumbered-link-hop {
+        container unnumbered-link-hop {
+          leaf link-tp-id {
+            type te-tp-id;
+            mandatory true;
+            description
+              "TE LTP identifier.  The combination of the TE link ID
+               and the TE node ID is used to identify an unnumbered
+               TE link.";
+          }
+          leaf node-id {
+            type te-node-id;
+            mandatory true;
+            description
+              "The identifier of a node in the TE topology.";
+          }
+          leaf hop-type {
+            type te-hop-type;
+            default "strict";
+            description
+              "Strict or loose hop.";
+          }
+          leaf direction {
+            type te-link-direction;
+            default "outgoing";
+            description
+              "Link route object direction.";
+          }
+          description
+            "Unnumbered link explicit route hop.";
+          reference
+            "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+             Section 4.3, EXPLICIT_ROUTE in RSVP-TE
+             RFC 3477: Signalling Unnumbered Links in Resource
+             ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
+        }
+      }
+      case as-number {
+        container as-number-hop {
+          leaf as-number {
+            type inet:as-number;
+            mandatory true;
+            description
+              "The Autonomous System (AS) number.";
+          }
+          leaf hop-type {
+            type te-hop-type;
+            default "strict";
+            description
+              "Strict or loose hop.";
+          }
+          description
+            "AS explicit route hop.";
+        }
+      }
+      case label {
+        container label-hop {
+          description
+            "Label hop type.";
+          uses te-label;
+        }
+        description
+          "The label explicit route hop type.";
+      }
+    }
+  }
+
+  grouping record-route-state {
+    description
+      "The Record Route grouping.";
+    leaf index {
+      type uint32;
+      description
+        "Record Route hop index.  The index is used to
+         identify an entry in the list.  The order of entries
+         is defined by the user without relying on key values.";
+    }
+    choice type {
+      description
+        "The Record Route entry type.";
+      case numbered-node-hop {
+        container numbered-node-hop {
+          description
+            "Numbered node route hop container.";
+          leaf node-id {
+            type te-node-id;
+            mandatory true;
+            description
+              "The identifier of a node in the TE topology.";
+          }
+          leaf-list flags {
+            type path-attribute-flags;
+            description
+              "Path attributes flags.";
+            reference
+              "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
+               RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
+               Tunnels
+               RFC 4561: Definition of a Record Route Object (RRO)
+               Node-Id Sub-Object";
+          }
+        }
+        description
+          "Numbered node route hop.";
+      }
+      case numbered-link-hop {
+        container numbered-link-hop {
+          description
+            "Numbered link route hop container.";
+          leaf link-tp-id {
+            type te-tp-id;
+            mandatory true;
+            description
+              "Numbered TE LTP identifier.";
+          }
+          leaf-list flags {
+            type path-attribute-flags;
+            description
+              "Path attributes flags.";
+            reference
+              "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
+               RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
+               Tunnels
+               RFC 4561: Definition of a Record Route Object (RRO)
+               Node-Id Sub-Object";
+          }
+        }
+        description
+          "Numbered link route hop.";
+      }
+      case unnumbered-link-hop {
+        container unnumbered-link-hop {
+          leaf link-tp-id {
+            type te-tp-id;
+            mandatory true;
+            description
+              "TE LTP identifier.  The combination of the TE link ID
+               and the TE node ID is used to identify an unnumbered
+               TE link.";
+          }
+          leaf node-id {
+            type te-node-id;
+            description
+              "The identifier of a node in the TE topology.";
+          }
+          leaf-list flags {
+            type path-attribute-flags;
+            description
+              "Path attributes flags.";
+            reference
+              "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
+               RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
+               Tunnels
+               RFC 4561: Definition of a Record Route Object (RRO)
+               Node-Id Sub-Object";
+          }
+          description
+            "Unnumbered link Record Route hop.";
+          reference
+            "RFC 3477: Signalling Unnumbered Links in Resource
+             ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
+        }
+        description
+          "Unnumbered link route hop.";
+      }
+      case label {
+        container label-hop {
+          description
+            "Label route hop type.";
+          uses te-label;
+          leaf-list flags {
+            type path-attribute-flags;
+            description
+              "Path attributes flags.";
+            reference
+              "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
+               RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
+               Tunnels
+               RFC 4561: Definition of a Record Route Object (RRO)
+               Node-Id Sub-Object";
+          }
+        }
+        description
+          "The label Record Route entry types.";
+      }
+    }
+  }
+
+  grouping label-restriction-info {
+    description
+      "Label set item information.";
+    leaf restriction {
+      type enumeration {
+        enum inclusive {
+          description
+            "The label or label range is inclusive.";
+        }
+        enum exclusive {
+          description
+            "The label or label range is exclusive.";
+        }
+      }
+      default "inclusive";
+      description
+        "Indicates whether the list item is inclusive or exclusive.";
+    }
+    leaf index {
+      type uint32;
+      description
+        "The index of the label restriction list entry.";
+    }
+    container label-start {
+      must "(not(../label-end/te-label/direction) and"
+         + " not(te-label/direction))"
+         + " or "
+         + "(../label-end/te-label/direction = te-label/direction)"
+         + " or "
+         + "(not(te-label/direction) and"
+         + " (../label-end/te-label/direction = 'forward'))"
+         + " or "
+         + "(not(../label-end/te-label/direction) and"
+         + " (te-label/direction = 'forward'))" {
+        error-message "'label-start' and 'label-end' must have the "
+                    + "same direction.";
+      }
+      description
+        "This is the starting label if a label range is specified.
+         This is the label value if a single label is specified,
+         in which case the 'label-end' attribute is not set.";
+      uses te-label;
+    }
+    container label-end {
+      must "(not(../label-start/te-label/direction) and"
+         + " not(te-label/direction))"
+         + " or "
+         + "(../label-start/te-label/direction = te-label/direction)"
+         + " or "
+         + "(not(te-label/direction) and"
+         + " (../label-start/te-label/direction = 'forward'))"
+         + " or "
+         + "(not(../label-start/te-label/direction) and"
+         + " (te-label/direction = 'forward'))" {
+        error-message "'label-start' and 'label-end' must have the "
+                    + "same direction.";
+      }
+      description
+        "This is the ending label if a label range is specified.
+         This attribute is not set if a single label is specified.";
+      uses te-label;
+    }
+    container label-step {
+      description
+        "The step increment between labels in the label range.
+         The label start/end values will have to be consistent
+         with the sign of label step.  For example,
+         'label-start' < 'label-end' enforces 'label-step' > 0
+         'label-start' > 'label-end' enforces 'label-step' < 0.";
+      choice technology {
+        default "generic";
+        description
+          "Data-plane technology type.";
+        case generic {
+          leaf generic {
+            type int32;
+            default "1";
+            description
+              "Label range step.";
+          }
+        }
+      }
+    }
+    leaf range-bitmap {
+      type yang:hex-string;
+      description
+        "When there are gaps between 'label-start' and 'label-end',
+         this attribute is used to specify the positions
+         of the used labels.  This is represented in big endian as
+         'hex-string'.
+         The most significant byte in the hex-string is the farthest
+         to the left in the byte sequence.  Leading zero bytes in the
+         configured value may be omitted for brevity.
+         Each bit position in the 'range-bitmap' 'hex-string' maps
+         to a label in the range derived from 'label-start'.
+
+         For example, assuming that 'label-start' = 16000 and
+         'range-bitmap' = 0x01000001, then:
+
+         - bit position (0) is set, and the corresponding mapped
+           label from the range is 16000 + (0 * 'label-step') or
+           16000 for default 'label-step' = 1.
+         - bit position (24) is set, and the corresponding mapped
+           label from the range is 16000 + (24 * 'label-step') or
+           16024 for default 'label-step' = 1.";
+    }
+  }
+
+  grouping label-set-info {
+    description
+      "Grouping for the list of label restrictions specifying what
+       labels may or may not be used.";
+    container label-restrictions {
+      description
+        "The label restrictions container.";
+      list label-restriction {
+        key "index";
+        description
+          "The absence of the label restrictions container implies
+           that all labels are acceptable; otherwise, only restricted
+           labels are available.";
+        reference
+          "RFC 7579: General Network Element Constraint Encoding
+           for GMPLS-Controlled Networks";
+        uses label-restriction-info;
+      }
+    }
+  }
+
+  grouping optimization-metric-entry {
+    description
+      "Optimization metrics configuration grouping.";
+    leaf metric-type {
+      type identityref {
+        base path-metric-type;
+      }
+      description
+        "Identifies the 'metric-type' that the path computation
+         process uses for optimization.";
+    }
+    leaf weight {
+      type uint8;
+      default "1";
+      description
+        "TE path metric normalization weight.";
+    }
+    container explicit-route-exclude-objects {
+      when "../metric-type = "
+         + "'te-types:path-metric-optimize-excludes'";
+      description
+        "Container for the 'exclude route' object list.";
+      uses path-route-exclude-objects;
+    }
+    container explicit-route-include-objects {
+      when "../metric-type = "
+         + "'te-types:path-metric-optimize-includes'";
+      description
+        "Container for the 'include route' object list.";
+      uses path-route-include-objects;
+    }
+  }
+
+  grouping common-constraints {
+    description
+      "Common constraints grouping that can be set on
+       a constraint set or directly on the tunnel.";
+    uses te-bandwidth {
+      description
+        "A requested bandwidth to use for path computation.";
+    }
+    leaf link-protection {
+      type identityref {
+        base link-protection-type;
+      }
+      default "te-types:link-protection-unprotected";
+      description
+        "Link protection type required for the links included
+         in the computed path.";
+      reference
+        "RFC 4202: Routing Extensions in Support of
+         Generalized Multi-Protocol Label Switching (GMPLS)";
+    }
+    leaf setup-priority {
+      type uint8 {
+        range "0..7";
+      }
+      default "7";
+      description
+        "TE LSP requested setup priority.";
+      reference
+        "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+    }
+    leaf hold-priority {
+      type uint8 {
+        range "0..7";
+      }
+      default "7";
+      description
+        "TE LSP requested hold priority.";
+      reference
+        "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+    }
+    leaf signaling-type {
+      type identityref {
+        base path-signaling-type;
+      }
+      default "te-types:path-setup-rsvp";
+      description
+        "TE tunnel path signaling type.";
+    }
+  }
+
+  grouping tunnel-constraints {
+    description
+      "Tunnel constraints grouping that can be set on
+       a constraint set or directly on the tunnel.";
+    uses te-topology-identifier;
+    uses common-constraints;
+  }
+
+  grouping path-constraints-route-objects {
+    description
+      "List of route entries to be included or excluded when
+       performing the path computation.";
+    container explicit-route-objects-always {
+      description
+        "Container for the 'exclude route' object list.";
+      list route-object-exclude-always {
+        key "index";
+        ordered-by user;
+        description
+          "List of route objects to always exclude from the path
+           computation.";
+        leaf index {
+          type uint32;
+          description
+            "Explicit Route Object index.  The index is used to
+             identify an entry in the list.  The order of entries
+             is defined by the user without relying on key values.";
+        }
+        uses explicit-route-hop;
+      }
+      list route-object-include-exclude {
+        key "index";
+        ordered-by user;
+        description
+          "List of route objects to include or exclude in the path
+           computation.";
+        leaf explicit-route-usage {
+          type identityref {
+            base route-usage-type;
+          }
+          default "te-types:route-include-object";
+          description
+            "Indicates whether to include or exclude the
+             route object.  The default is to include it.";
+        }
+        leaf index {
+          type uint32;
+          description
+            "Route object include-exclude index.  The index is used
+             to identify an entry in the list.  The order of entries
+             is defined by the user without relying on key values.";
+        }
+        uses explicit-route-hop {
+          augment "type" {
+            case srlg {
+              container srlg {
+                description
+                  "SRLG container.";
+                leaf srlg {
+                  type uint32;
+                  description
+                    "SRLG value.";
+                }
+              }
+              description
+                "An SRLG value to be included or excluded.";
+            }
+            description
+              "Augmentation for a generic explicit route for SRLG
+               exclusion.";
+          }
+        }
+      }
+    }
+  }
+
+  grouping path-route-include-objects {
+    description
+      "List of route objects to be included when performing
+       the path computation.";
+    list route-object-include-object {
+      key "index";
+      ordered-by user;
+      description
+        "List of Explicit Route Objects to be included in the
+         path computation.";
+      leaf index {
+        type uint32;
+        description
+          "Route object entry index.  The index is used to
+           identify an entry in the list.  The order of entries
+           is defined by the user without relying on key values.";
+      }
+      uses explicit-route-hop;
+    }
+  }
+
+  grouping path-route-exclude-objects {
+    description
+      "List of route objects to be excluded when performing
+       the path computation.";
+    list route-object-exclude-object {
+      key "index";
+      ordered-by user;
+      description
+        "List of Explicit Route Objects to be excluded in the
+         path computation.";
+      leaf index {
+        type uint32;
+        description
+          "Route object entry index.  The index is used to
+           identify an entry in the list.  The order of entries
+           is defined by the user without relying on key values.";
+      }
+      uses explicit-route-hop {
+        augment "type" {
+          case srlg {
+            container srlg {
+              description
+                "SRLG container.";
+              leaf srlg {
+                type uint32;
+                description
+                  "SRLG value.";
+              }
+            }
+            description
+              "An SRLG value to be included or excluded.";
+          }
+          description
+            "Augmentation for a generic explicit route for SRLG
+             exclusion.";
+        }
+      }
+    }
+  }
+
+  grouping generic-path-metric-bounds {
+    description
+      "TE path metric bounds grouping.";
+    container path-metric-bounds {
+      description
+        "TE path metric bounds container.";
+      list path-metric-bound {
+        key "metric-type";
+        description
+          "List of TE path metric bounds.";
+        leaf metric-type {
+          type identityref {
+            base path-metric-type;
+          }
+          description
+            "Identifies an entry in the list of 'metric-type' items
+             bound for the TE path.";
+        }
+        leaf upper-bound {
+          type uint64;
+          default "0";
+          description
+            "Upper bound on the end-to-end TE path metric.  A zero
+             indicates an unbounded upper limit for the specific
+             'metric-type'.";
+        }
+      }
+    }
+  }
+
+  grouping generic-path-optimization {
+    description
+      "TE generic path optimization grouping.";
+    container optimizations {
+      description
+        "The objective function container that includes
+         attributes to impose when computing a TE path.";
+      choice algorithm {
+        description
+          "Optimizations algorithm.";
+        case metric {
+          if-feature "path-optimization-metric";
+          /* Optimize by metric */
+          list optimization-metric {
+            key "metric-type";
+            description
+              "TE path metric type.";
+            uses optimization-metric-entry;
+          }
+          /* Tiebreakers */
+          container tiebreakers {
+            description
+              "Container for the list of tiebreakers.";
+            list tiebreaker {
+              key "tiebreaker-type";
+              description
+                "The list of tiebreaker criteria to apply on an
+                 equally favored set of paths, in order to pick
+                 the best.";
+              leaf tiebreaker-type {
+                type identityref {
+                  base path-metric-type;
+                }
+                description
+                  "Identifies an entry in the list of tiebreakers.";
+              }
+            }
+          }
+        }
+        case objective-function {
+          if-feature "path-optimization-objective-function";
+          /* Objective functions */
+          container objective-function {
+            description
+              "The objective function container that includes
+               attributes to impose when computing a TE path.";
+            leaf objective-function-type {
+              type identityref {
+                base objective-function-type;
+              }
+              default "te-types:of-minimize-cost-path";
+              description
+                "Objective function entry.";
+            }
+          }
+        }
+      }
+    }
+  }
+
+  grouping generic-path-affinities {
+    description
+      "Path affinities grouping.";
+    container path-affinities-values {
+      description
+        "Path affinities represented as values.";
+      list path-affinities-value {
+        key "usage";
+        description
+          "List of named affinity constraints.";
+        leaf usage {
+          type identityref {
+            base resource-affinities-type;
+          }
+          description
+            "Identifies an entry in the list of value affinity
+             constraints.";
+        }
+        leaf value {
+          type admin-groups;
+          default "";
+          description
+            "The affinity value.  The default is empty.";
+        }
+      }
+    }
+    container path-affinity-names {
+      description
+        "Path affinities represented as names.";
+      list path-affinity-name {
+        key "usage";
+        description
+          "List of named affinity constraints.";
+        leaf usage {
+          type identityref {
+            base resource-affinities-type;
+          }
+          description
+            "Identifies an entry in the list of named affinity
+             constraints.";
+        }
+        list affinity-name {
+          key "name";
+          leaf name {
+            type string;
+            description
+              "Identifies a named affinity entry.";
+          }
+          description
+            "List of named affinities.";
+        }
+      }
+    }
+  }
+
+  grouping generic-path-srlgs {
+    description
+      "Path SRLG grouping.";
+    container path-srlgs-lists {
+      description
+        "Path SRLG properties container.";
+      list path-srlgs-list {
+        key "usage";
+        description
+          "List of SRLG values to be included or excluded.";
+        leaf usage {
+          type identityref {
+            base route-usage-type;
+          }
+          description
+            "Identifies an entry in a list of SRLGs to either
+             include or exclude.";
+        }
+        leaf-list values {
+          type srlg;
+          description
+            "List of SRLG values.";
+        }
+      }
+    }
+    container path-srlgs-names {
+      description
+        "Container for the list of named SRLGs.";
+      list path-srlgs-name {
+        key "usage";
+        description
+          "List of named SRLGs to be included or excluded.";
+        leaf usage {
+          type identityref {
+            base route-usage-type;
+          }
+          description
+            "Identifies an entry in a list of named SRLGs to either
+             include or exclude.";
+        }
+        leaf-list names {
+          type string;
+          description
+            "List of named SRLGs.";
+        }
+      }
+    }
+  }
+
+  grouping generic-path-disjointness {
+    description
+      "Path disjointness grouping.";
+    leaf disjointness {
+      type te-path-disjointness;
+      description
+        "The type of resource disjointness.
+         When configured for a primary path, the disjointness level
+         applies to all secondary LSPs.  When configured for a
+         secondary path, the disjointness level overrides the level
+         configured for the primary path.";
+    }
+  }
+
+  grouping common-path-constraints-attributes {
+    description
+      "Common path constraints configuration grouping.";
+    uses common-constraints;
+    uses generic-path-metric-bounds;
+    uses generic-path-affinities;
+    uses generic-path-srlgs;
+  }
+
+  grouping generic-path-constraints {
+    description
+      "Global named path constraints configuration grouping.";
+    container path-constraints {
+      description
+        "TE named path constraints container.";
+      uses common-path-constraints-attributes;
+      uses generic-path-disjointness;
+    }
+  }
+
+  grouping generic-path-properties {
+    description
+      "TE generic path properties grouping.";
+    container path-properties {
+      config false;
+      description
+        "The TE path properties.";
+      list path-metric {
+        key "metric-type";
+        description
+          "TE path metric type.";
+        leaf metric-type {
+          type identityref {
+            base path-metric-type;
+          }
+          description
+            "TE path metric type.";
+        }
+        leaf accumulative-value {
+          type uint64;
+          description
+            "TE path metric accumulative value.";
+        }
+      }
+      uses generic-path-affinities;
+      uses generic-path-srlgs;
+      container path-route-objects {
+        description
+          "Container for the list of route objects either returned by
+           the computation engine or actually used by an LSP.";
+        list path-route-object {
+          key "index";
+          ordered-by user;
+          description
+            "List of route objects either returned by the computation
+             engine or actually used by an LSP.";
+          leaf index {
+            type uint32;
+            description
+              "Route object entry index.  The index is used to
+               identify an entry in the list.  The order of entries
+               is defined by the user without relying on key
+               values.";
+          }
+          uses explicit-route-hop;
+        }
+      }
+    }
+  }
+}
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-service@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-service@2023-10-23.yang
new file mode 100644
index 000000000..f0157bcc8
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-service@2023-10-23.yang
@@ -0,0 +1,325 @@
+   module ietf-trans-client-service {
+     /* TODO: FIXME */
+       yang-version 1.1;
+
+     namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-service";
+     prefix "clntsvc";
+
+     import ietf-network {
+       prefix "nw";
+       reference "RFC8345 - A YANG Data Model for Network Topologies";
+     }
+
+     import ietf-network-topology {
+       prefix "nt";
+       reference "RFC8345 - A YANG Data Model for Network Topologies";
+     }
+
+     import ietf-te-types {
+       prefix "te-types";
+       reference "RFC 8776 - Traffic Engineering Common YANG Types";
+     }
+
+     import ietf-layer1-types {
+       prefix "layer1-types";
+       reference "RFC ZZZZ - A YANG Data Model for Layer 1 Types";
+     }
+
+     import ietf-yang-types {
+       prefix "yang";
+       reference "RFC 6991 - Common YANG Data Types";
+     }
+
+    import ietf-trans-client-svc-types {
+      prefix "clntsvc-types";
+      reference "RFC XXXX - A YANG Data Model for
+                 Transport Network Client Signals";
+    }
+
+     organization
+       "Internet Engineering Task Force (IETF) CCAMP WG";
+     contact
+       "
+         ID-draft editor:
+           Haomian Zheng (zhenghaomian@huawei.com);
+           Aihua Guo (aihuaguo.ietf@gmail.com);
+           Italo Busi (italo.busi@huawei.com);
+           Anton Snitser (antons@sedonasys.com);
+           Francesco Lazzeri (francesco.lazzeri@ericsson.com);
+           Yunbin Xu (xuyunbin@caict.ac.cn);
+           Yang Zhao (zhaoyangyjy@chinamobile.com);
+           Xufeng Liu (Xufeng_Liu@jabil.com);
+           Giuseppe Fioccola (giuseppe.fioccola@huawei.com);
+           Chaode Yu (yuchaode@huawei.com);
+       ";
+
+     description
+       "This module defines a YANG data model for describing
+        transport network client services. The model fully conforms
+        to the Network Management Datastore Architecture (NMDA).
+
+        Copyright (c) 2021 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
+        (https://trustee.ietf.org/license-info).
+        This version of this YANG module is part of RFC XXXX; see
+        the RFC itself for full legal notices.";
+     revision 2023-10-23 {
+       description
+         "version -04 as a WG document";
+       reference
+         "draft-ietf-ccamp-client-signal-yang";
+     }
+
+     /*
+      * Groupings
+      */
+     grouping client-svc-access-parameters {
+       description
+         "Transport network client signals access parameters";
+
+       leaf access-node-id {
+         type te-types:te-node-id;
+         description
+           "The identifier of the access node in the TE topology.";
+       }
+
+       leaf access-node-uri {
+         type nw:node-id;
+         description
+           "The identifier of the access node in the network.";
+       }
+
+       leaf access-ltp-id {
+         type te-types:te-tp-id;
+         description
+           "The TE link termination point identifier in TE topology, used
+           together with access-node-id to identify the access LTP.";
+       }
+
+       leaf access-ltp-uri {
+         type nt:tp-id;
+         description
+           "The link termination point identifier in network topology,
+           used together with access-node-uri to identify the access LTP";
+       }
+
+       leaf client-signal {
+         type identityref {
+           base layer1-types:client-signal;
+         }
+         description
+           "Identify the client signal type associated with this port";
+       }
+
+     }
+
+     grouping pm-state-grouping {
+       leaf latency {
+         description "latency value of the E2E client signal service";
+         type uint32;
+         units microsecond;
+       }
+     }
+
+     grouping error-info-grouping {
+       leaf error-code {
+         description "error code";
+         type uint16;
+       }
+
+       leaf error-description {
+         description "detail message of error";
+         type string;
+       }
+
+       leaf error-timestamp {
+         description "the date and time error is happened";
+         type yang:date-and-time;
+       }
+     }
+
+     grouping alarm-shreshold-grouping {
+       leaf latency-threshold {
+         description "a threshold for the E2E client signal service's
+         latency. Once the latency value exceed this threshold, an alarm
+         should be triggered.";
+         type uint32;
+         units microsecond;
+       }
+     }
+
+     grouping client-svc-tunnel-parameters {
+       description
+         "Transport network client signals tunnel parameters";
+
+       leaf tunnel-name {
+         type string;
+         description
+           "TE tunnel instance name.";
+       }
+     }
+
+     grouping  client-svc-instance-config {
+       description
+         "Configuration parameters for client services.";
+       leaf client-svc-name {
+         type string;
+         description
+           "Identifier of the p2p transport network client signals.";
+       }
+
+       leaf client-svc-title {
+         type string;
+         description
+           "Name of the p2p transport network client signals.";
+       }
+
+       leaf user-label {
+         type string;
+         description
+           "Alias of the p2p transport network client signals.";
+       }
+
+       leaf client-svc-descr {
+         type string;
+         description
+           "Description of the transport network client signals.";
+       }
+
+       leaf client-svc-customer {
+         type string;
+         description
+           "Customer of the transport network client signals.";
+       }
+
+       container resilience {
+         description "Place holder for resilience functionalities";
+       }
+
+       uses te-types:te-topology-identifier;
+
+       leaf admin-status {
+         type identityref {
+           base te-types:tunnel-admin-state-type;
+         }
+         default te-types:tunnel-admin-state-up;
+         description "Client signals administrative state.";
+       }
+
+       container src-access-ports {
+         description
+           "Source access port of a client signal.";
+         uses client-svc-access-parameters;
+       }
+       container dst-access-ports {
+         description
+           "Destination access port of a client signal.";
+         uses client-svc-access-parameters;
+       }
+
+       container pm-state {
+         config false;
+         description "PM data of E2E client signal";
+         uses pm-state-grouping;
+       }
+
+       container error-info {
+         config false;
+         description "error messages of configuration";
+         uses error-info-grouping;
+       }
+
+       container alarm-shreshold {
+         description "threshold configuration for the E2E client signal";
+         uses alarm-shreshold-grouping;
+       }
+
+       leaf direction {
+         type identityref {
+           base clntsvc-types:direction;
+         }
+         description "Uni-dir or Bi-dir for the client signal.";
+       }
+
+       list svc-tunnels {
+         key tunnel-name;
+         description
+           "List of the TE Tunnels supporting the client signal.";
+         uses client-svc-tunnel-parameters;
+       }
+     }
+
+     grouping  client-svc-instance-state {
+       description
+         "State parameters for client services.";
+       leaf operational-state {
+         type identityref {
+               base te-types:tunnel-state-type;
+         }
+         config false;
+         description "Client signal operational state.";
+       }
+       leaf provisioning-state {
+         type identityref {
+               base te-types:lsp-state-type;
+         }
+         config false;
+         description "Client signal provisioning state.";
+       }
+       leaf creation-time {
+         type yang:date-and-time;
+         config false;
+         description "The time of the client signal be created.";
+       }
+       leaf last-updated-time {
+         type yang:date-and-time;
+         config false;
+         description "The time of the client signal's latest update.";
+       }
+       leaf created-by {
+         type string;
+         config false;
+         description
+           "The client signal is created by whom,
+            can be a system or staff ID.";
+       }
+       leaf last-updated-by {
+         type string;
+         config false;
+         description
+           "The client signal is last updated by whom,
+            can be a system or staff ID.";
+       }
+       leaf owned-by {
+         type string;
+         config false;
+         description
+           "The client signal is owned by whom,
+            can be a system ID.";
+       }
+     }
+
+     /*
+      * Data nodes
+      */
+
+     container client-svc {
+       description
+         "Transport client services.";
+
+       list client-svc-instances {
+         key client-svc-name;
+         description
+           "The list of p2p transport client service instances";
+
+             uses client-svc-instance-config;
+             uses client-svc-instance-state;
+       }
+     }
+   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-svc-types@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-svc-types@2023-10-23.yang
new file mode 100644
index 000000000..60db5633a
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-svc-types@2023-10-23.yang
@@ -0,0 +1,63 @@
+   module ietf-trans-client-svc-types {
+     namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-svc-types";
+     prefix "clntsvc-types";
+
+     organization
+        "Internet Engineering Task Force (IETF) CCAMP WG";
+      contact
+        "
+          ID-draft editor:
+            Haomian Zheng (zhenghaomian@huawei.com);
+            Aihua Guo (aihuaguo.ietf@gmail.com);
+            Italo Busi (italo.busi@huawei.com);
+            Anton Snitser (antons@sedonasys.com);
+            Francesco Lazzeri (francesco.lazzeri@ericsson.com);
+            Yunbin Xu (xuyunbin@caict.ac.cn);
+            Yang Zhao (zhaoyangyjy@chinamobile.com);
+            Xufeng Liu (Xufeng_Liu@jabil.com);
+            Giuseppe Fioccola (giuseppe.fioccola@huawei.com);
+            Chaode Yu (yuchaode@huawei.com);
+        ";
+
+      description
+        "This module defines a YANG data model for describing
+         transport network client types. The model fully conforms
+         to the Network Management Datastore Architecture (NMDA).
+
+         Copyright (c) 2019 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
+         (https://trustee.ietf.org/license-info).
+         This version of this YANG module is part of RFC XXXX; see
+         the RFC itself for full legal notices.";
+
+      revision 2023-10-23 {
+        description
+          "version -01 as a WG document";
+        reference
+          "draft-ietf-ccamp-client-signal-yang";
+      }
+
+     identity direction {
+       description
+         "Direction information of Client Signal.";
+     }
+
+     identity bidirectional {
+       base direction;
+       description
+         "Client Signal is bi-directional.";
+     }
+
+     identity unidirectional {
+       base direction;
+       description
+         "Client Signal is uni-directional.";
+     }
+
+   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-yang-types@2013-07-15.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-yang-types@2013-07-15.yang
new file mode 100644
index 000000000..956562a7b
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-yang-types@2013-07-15.yang
@@ -0,0 +1,475 @@
+   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.";
+     }
+   }
-- 
GitLab


From 2d34beced539bce930eb5f22479461e425ac0878 Mon Sep 17 00:00:00 2001
From: armingol <pablo.armingolrobles@telefonica.com>
Date: Wed, 21 Aug 2024 14:22:22 +0200
Subject: [PATCH 02/14] L3 unicast topology NBI

---
 .../ietf_network_new/NetworkTypeEnum.py       |   23 -
 .../nbi_plugins/ietf_network_new/Networks.py  |   12 +-
 .../ietf_network_new/YangHandler.py           |  207 +-
 .../yang/ietf-eth-te-topology@2023-09-28.yang | 2275 -----------
 .../ietf-eth-tran-service@2023-10-23.yang     | 1004 -----
 .../yang/ietf-eth-tran-types@2023-10-23.yang  |  457 ---
 .../ietf-l3-unicast-topology@2018-02-26.yang  |  359 ++
 .../yang/ietf-layer1-types@2022-10-14.yang    | 1414 -------
 .../yang/ietf-otn-topology@2023-07-06.yang    | 2405 ------------
 .../yang/ietf-te-packet-types@2020-06-10.yang |  475 ---
 .../yang/ietf-te-topology@2020-08-06.yang     | 1952 ----------
 .../yang/ietf-te-types@2020-06-10.yang        | 3379 -----------------
 .../ietf-trans-client-service@2023-10-23.yang |  325 --
 ...etf-trans-client-svc-types@2023-10-23.yang |   63 -
 .../nbi_plugins/tfs_api/__init__.py           |    3 +
 src/webui/service/templates/main/debug.html   |    1 +
 16 files changed, 432 insertions(+), 13922 deletions(-)
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NetworkTypeEnum.py
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-te-topology@2023-09-28.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-service@2023-10-23.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-types@2023-10-23.yang
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-l3-unicast-topology@2018-02-26.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-layer1-types@2022-10-14.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-otn-topology@2023-07-06.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-packet-types@2020-06-10.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-topology@2020-08-06.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-types@2020-06-10.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-service@2023-10-23.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-svc-types@2023-10-23.yang

diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NetworkTypeEnum.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NetworkTypeEnum.py
deleted file mode 100644
index 96fe4dff1..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NetworkTypeEnum.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
-#
-# 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.
-
-from enum import Enum
-from typing import Optional
-
-class NetworkTypeEnum(Enum):
-    TE_OTN_TOPOLOGY      = 'otn'
-    TE_ETH_TRAN_TOPOLOGY = 'eth-tran'
-
-def get_network_topology_type(topology_id : str) -> Optional[NetworkTypeEnum]:
-    return NetworkTypeEnum._value2member_map_.get(topology_id)
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
index 4a11eaf08..260fa5e04 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
@@ -22,13 +22,11 @@ from context.client.ContextClient import ContextClient
 from nbi.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH
 from nbi.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR
 from .YangHandler import YangHandler
-from .ManualFixes import manual_fixes
 
 LOGGER = logging.getLogger(__name__)
 
 TE_TOPOLOGY_NAMES = [
     'providerId-10-clientId-0-topologyId-1',
-    'providerId-10-clientId-0-topologyId-2'
 ]
 
 class Networks(Resource):
@@ -38,13 +36,8 @@ class Networks(Resource):
         topology_id = ''
         try:
             context_client = ContextClient()
-            #target = get_slice_by_uuid(context_client, vpn_id, rw_copy=True)
-            #if target is None:
-            #    raise Exception('VPN({:s}) not found in database'.format(str(vpn_id)))
-
             topology_details = get_topology_details(
-                context_client, DEFAULT_TOPOLOGY_NAME, context_uuid=DEFAULT_CONTEXT_NAME, #rw_copy=True
-            )
+                context_client, DEFAULT_TOPOLOGY_NAME)
             if topology_details is None:
                 MSG = 'Topology({:s}/{:s}) not found'
                 raise Exception(MSG.format(DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME))
@@ -55,11 +48,8 @@ class Networks(Resource):
                 network_reply = yang_handler.compose_network(te_topology_name, topology_details)
                 network_list_reply.append(network_reply)
 
-            # TODO: improve these workarounds to enhance performance
             yang_handler.destroy()
             response = jsonify(network_list_reply)
-            # Workaround; pyangbind does not allow to set otn_topology / eth-tran-topology
-            manual_fixes(response)
 
             response.status_code = HTTP_OK
         except Exception as e: # pylint: disable=broad-except
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
index 50db6d33b..0472a2e34 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
@@ -12,184 +12,113 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import json, libyang, logging, os, re
+import json
+import libyang, logging, os
 from typing import Any
-from common.DeviceTypes import DeviceTypeEnum
-from common.proto.context_pb2 import TopologyDetails, Device, Link, EndPoint
+from common.proto.context_pb2 import TopologyDetails, Device, Link
 from .NameMapping import NameMappings
-from .NetworkTypeEnum import NetworkTypeEnum, get_network_topology_type
-
+from context.client.ContextClient import ContextClient
+from common.tools.object_factory.Device import json_device_id
+from common.proto.context_pb2 import  DeviceId 
 LOGGER = logging.getLogger(__name__)
 
 YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang')
 YANG_MODULES = [
     'ietf-network',
-    'ietf-network-topology'
+    'ietf-network-topology', 
+    'ietf-l3-unicast-topology'
 ]
 
-MAPPINGS_TE_NODE_NAME = {
-    '10.0.10.1'  : 'OA',
-    '10.0.20.1'  : 'P',
-    '10.0.30.1'  : 'OE',
-    '10.0.40.1'  : 'P',
-
-    '128.32.10.1': 'ONT1',
-    '128.32.20.1': 'ONT2',
-    '128.32.33.5': 'OLT',
-}
-
-IGNORE_ENDPOINT_NAMES = {'mgmt', 'eth1'}
-
-IGNORE_DEVICE_TYPES = {
-    DeviceTypeEnum.CLIENT.value,
-    DeviceTypeEnum.DATACENTER.value,
-    DeviceTypeEnum.EMULATED_CLIENT.value,
-    DeviceTypeEnum.EMULATED_DATACENTER.value,
-    DeviceTypeEnum.EMULATED_IP_SDN_CONTROLLER,
-    DeviceTypeEnum.EMULATED_MICROWAVE_RADIO_SYSTEM.value,
-    DeviceTypeEnum.EMULATED_OPEN_LINE_SYSTEM.value,
-    DeviceTypeEnum.EMULATED_XR_CONSTELLATION.value,
-    DeviceTypeEnum.IP_SDN_CONTROLLER,
-    DeviceTypeEnum.MICROWAVE_RADIO_SYSTEM.value,
-    DeviceTypeEnum.NETWORK.value,
-    DeviceTypeEnum.OPEN_LINE_SYSTEM.value,
-    DeviceTypeEnum.XR_CONSTELLATION.value,
-}
-
-IGNORE_DEVICE_NAMES = {
-    NetworkTypeEnum.TE_OTN_TOPOLOGY: {
-        'nce-t', '128.32.10.1', '128.32.33.5', '128.32.20.5', '128.32.20.1', '128.32.10.5',
-    },
-    NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY: {
-        'nce-t',
-    },
-}
-
-TE_TOPOLOGY_NAME = 'Huawei-Network'
-
 class YangHandler:
     def __init__(self) -> None:
         self._yang_context = libyang.Context(YANG_DIR)
         for yang_module_name in YANG_MODULES:
             LOGGER.info('Loading module: {:s}'.format(str(yang_module_name)))
             self._yang_context.load_module(yang_module_name).feature_enable_all()
-
+    
+    def get_endpoint_name(self, device: str) -> None:
+        context_client = ContextClient()
+        device = context_client.GetDevice(DeviceId(**json_device_id(device)))
+            
     def compose_network(self, te_topology_name : str, topology_details : TopologyDetails) -> None:
         networks = self._yang_context.create_data_path('/ietf-network:networks')
-        
         network = networks.create_path('network[network-id="{:s}"]'.format(te_topology_name))
-        
         network.create_path('network-id', te_topology_name)
        
-        network_types = network.create_path('network-types') #augmentation, mirar RFC8346
-        network_types.create_path('ietf-l3-unicast-topology:l3-unicast-topology') #no se si es asi
-        network.create_path('supporting-network', ) #lista de networks-id, NO SE COMO VERLO
-        attributes = network.create_path('ietf-l3-unicast-topology:l3-topology-attributes')
-        #NO SE QUE ATRIBUTOS, CASO ESPECIAL OSPF?
-        attributes.create_path('name',)
-        attributes.create_path('flag',)
+        network_types = network.create_path('network-types') 
+        network_types.create_path('ietf-l3-unicast-topology:l3-unicast-topology') 
 
-        ''' NO SEEEEEE SI HACE FALTA
-        # TODO: resolve setting of otn_topology/eth_tran_topology network type; not working in bindings.
-        # See "../ManualFixes.py".
-        topology_id = ietf_network_obj.te_topology_identifier.topology_id
-        topology_id = {
-            '1': NetworkTypeEnum.TE_OTN_TOPOLOGY.value,
-            '2': NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY.value,
-        }.get(topology_id, topology_id)
-        network_type = get_network_topology_type(topology_id)
-        if network_type == NetworkTypeEnum.TE_OTN_TOPOLOGY:
-            #ietf_network_obj.network_types.te_topology.otn_topology._set_present()
-            pass
-        elif network_type == NetworkTypeEnum.TE_ETH_TRAN_TOPOLOGY:
-            #ietf_network_obj.network_types.te_topology.eth_tran_topology._set_present()
-            pass
-        else:
-            raise Exception('Unsupported TopologyId({:s})'.format(str(topology_id)))
-        '''
         name_mappings = NameMappings()
  
-        ignore_device_uuids = set()
-        
-
-        for device in topology_details.devices:
-            device_uuid = device.device_id.device_uuid.uuid
-
-            device_type = device.device_type
-            if device_type in IGNORE_DEVICE_TYPES:
-                ignore_device_uuids.add(device_uuid)
-                continue
-
-            device_name = device.name
-            if device_name in IGNORE_DEVICE_NAMES.get(network_type, set()): #NETWORK_TYPE?
-                ignore_device_uuids.add(device_uuid)
-                continue
-
+        for device in topology_details.devices: 
             self.compose_node(device, name_mappings, network)
 
         for link in topology_details.links:
-            link_device_uuids = {
-                endpoint_id.device_id.device_uuid.uuid
-                for endpoint_id in link.link_endpoint_ids
-            }
-            if len(ignore_device_uuids.intersection(link_device_uuids)) > 0:
-                continue
-            link_name = link.name
-
-            self.compose_link(link_name, link, name_mappings, network)
-    
+            self.compose_link(link, name_mappings, network)
+        return json.loads(networks.print_mem('json'))
 
-    def compose_node(self, device : Device, name_mappings : NameMappings, network : Any
-    ) -> None:
-        device_name = device.name
-
-        name_mappings.store_device_name(device)
-
-        node = network.create_path('node[node-id="{:s}"]'.format(device_name))
-        node.create_path('node-id', device_name)
-        #supporting node (nw-ref, node-ref)?
-        node_attributes = node.create_path('ietf-l3-unicast-topology:l3-node-attributes')
-        #no se que va en cada atributo
-        node_attributes.create_path('name',)
-        node_attributes.create_path('flag',)
-        node_attributes.create_path('router-id',)
-        prefix = node_attributes.create_path('prefix[prefix="{:s}"]'.format())
-        prefix.create_path('prefix',)
-        prefix.create_path('metric',)
-        prefix.create_path('flag',)
+    def compose_node(self, dev: Device, name_mappings: NameMappings, network: Any) -> None:                                     
+            device_name = dev.name
+            name_mappings.store_device_name(dev)
 
+            node = network.create_path(f'node[node-id="{device_name}"]')
+            node.create_path('node-id', device_name)
+            node_attributes = node.create_path('ietf-l3-unicast-topology:l3-node-attributes')
+            node_attributes.create_path('name', device_name)
 
-        for endpoint in device.device_endpoints:
-            endpoint_name = endpoint.name
-            if endpoint_name in IGNORE_ENDPOINT_NAMES: continue
+            context_client = ContextClient()
+            device = context_client.GetDevice(DeviceId(**json_device_id(device_name)))
             
-            tp = node.create_path('ietf-network-topology:termination-point[tp-id="{:s}"]'.format(endpoint_name))
-            tp.create_path('tp-id', endpoint_name)
-            #supporting termination point?
-            tp_attributes = tp.create_path('ietf-l3-unicast-topology:l3-termination-point-attributes')
-            tp_attributes.create_path('termination-point-type',endpoint.endpoint_type) 
-
-    def compose_link(self, link_name : Any, link_specs : Link, name_mappings : NameMappings, network : Any
+            for endpoint in device.device_endpoints:
+                name_mappings.store_endpoint_name(dev,endpoint)
+
+            for config in device.device_config.config_rules:
+                if config.WhichOneof('config_rule') != 'custom' or '/interface[' not in config.custom.resource_key:
+                    continue
+                
+                for endpoint in device.device_endpoints:
+                    endpoint_name = endpoint.name
+                    if f'/interface[{endpoint_name}]' in config.custom.resource_key or f'/interface[{endpoint_name}.' in config.custom.resource_key:
+                        interface_name = config.custom.resource_key.split('interface[')[1].split(']')[0]
+                        
+                        ip_addresses = []
+                        resource_value = json.loads(config.custom.resource_value)
+                        if 'address_ip' in resource_value:
+                            ip_addresses.append(resource_value['address_ip'])
+                        if 'address_ipv6' in resource_value:
+                            ip_addresses.append(resource_value['address_ipv6'])
+                        
+                        if ip_addresses:
+                            tp = node.create_path(f'ietf-network-topology:termination-point[tp-id="{interface_name}"]')
+                            tp.create_path('tp-id', interface_name)
+                            tp_attributes = tp.create_path('ietf-l3-unicast-topology:l3-termination-point-attributes')
+                            
+                            for ip in ip_addresses:
+                                tp_attributes.create_path('ip-address', ip)
+                            tp_attributes.create_path('interface-name', endpoint_name)
+
+    def compose_link(self, link_specs : Link, name_mappings : NameMappings, network : Any
     ) -> None:
+        link_name = link_specs.name
         links = network.create_path('ietf-network-topology:link[link-id="{:s}"]'.format(link_name))
         links.create_path('link-id', link_name)
         src_endpoint_id = link_specs.link_endpoint_ids[0]
+        LOGGER.info('SRC: {:s}'.format(str(src_endpoint_id)))
 
         source = links.create_path('source')
-        source.create_path('source_node', name_mappings.get_device_name(src_endpoint_id.device_id))
-        source.create_path('source_tp', name_mappings.get_endpoint_name(src_endpoint_id))
+        source.create_path('source-node', name_mappings.get_device_name(src_endpoint_id.device_id))
+        source.create_path('source-tp', name_mappings.get_endpoint_name(src_endpoint_id))
 
         dst_endpoint_id = link_specs.link_endpoint_ids[-1]
+        LOGGER.info('DST: {:s}'.format(str(dst_endpoint_id)))
 
         destination = links.create_path('destination')
-        destination.create_path('dest_node', name_mappings.get_device_name(dst_endpoint_id.device_id))
-        destination.create_path('dest_tp', name_mappings.get_endpoint_name(dst_endpoint_id))
+        destination.create_path('dest-node', name_mappings.get_device_name(dst_endpoint_id.device_id))
+        destination.create_path('dest-tp', name_mappings.get_endpoint_name(dst_endpoint_id))
     
-        #supporting-link???
-
-        link_attributes = links.create_path('ietf-l3-unicast-topology:l3-link-attributes')
-        #no se que atributos poner
-        link_attributes.create_path('name',)
-        link_attributes.create_path('flag',)
-        link_attributes.create_path('metric',)
+        # link_attributes = links.create_path('ietf-l3-unicast-topology:l3-link-attributes')
+        # link_attributes.create_path('name', link_name)
 
+    def destroy(self) -> None:
+        self._yang_context.destroy()
+        
\ No newline at end of file
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-te-topology@2023-09-28.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-te-topology@2023-09-28.yang
deleted file mode 100644
index b182f7f5a..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-te-topology@2023-09-28.yang
+++ /dev/null
@@ -1,2275 +0,0 @@
-   module ietf-eth-te-topology {
-     yang-version 1.1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-eth-te-topology";
-     prefix "etht";
-
-     import ietf-network {
-       prefix "nw";
-       reference
-         "RFC 8345: A YANG Data Model for Network Topologies";
-     }
-
-     import ietf-network-topology {
-       prefix "nt";
-       reference
-         "RFC 8345: A YANG Data Model for Network Topologies";
-     }
-
-     import ietf-te-topology {
-       prefix "tet";
-       reference
-         "RFC 8795: YANG Data Model for Traffic Engineering
-          (TE) Topologies";
-     }
-
-     import ietf-yang-types {
-       prefix "yang";
-       reference
-        "RFC 6991: Common YANG Data Types";
-     }
-
-     import ietf-eth-tran-types {
-       prefix "etht-types";
-       reference
-        "RFC YYYY: A YANG Data Model for Transport Network Client
-        Signals";
-     }
-     // RFC Ed.: replace YYYY with actual RFC number, update date
-     // information and remove this note
-
-     organization
-       "IETF CCAMP Working Group";
-     contact
-       "WG Web: <https://datatracker.ietf.org/wg/ccamp/>
-        WG List: <mailto:ccamp@ietf.org>
-
-        Editor: Haomian Zheng
-          <mailto:zhenghaomian@huawei.com>
-
-        Editor: Italo Busi
-          <mailto:italo.busi@huawei.com>
-
-        Editor: Aihua Guo
-          <mailto:aihuaguo.ietf@gmail.com>
-
-        Editor: Yunbin Xu
-          <mailto:xuyunbin@caict.ac.cn>
-
-        Editor: Yang Zhao
-          <mailto:zhaoyangyjy@chinamobile.com>
-
-        Editor: Xufeng Liu
-          <mailto:xufeng.liu.ietf@gmail.com>";
-
-     description
-       "This module defines a YANG data model for describing
-        layer-2 Ethernet transport topologies. The model fully
-        conforms to the Network Management Datastore
-        Architecture (NMDA).
-
-        Copyright (c) 2023 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 Revised BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (https://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of RFC XXXX; see
-        the RFC itself for full legal notices.
-
-        The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
-        NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
-        'MAY', and 'OPTIONAL' in this document are to be interpreted as
-        described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
-        they appear in all capitals, as shown here.";
-
-     revision 2023-09-28 {
-       description
-         "Initial Revision";
-       reference
-         "RFC XXXX: A YANG Data Model for Ethernet TE Topology";
-       // RFC Ed.: replace XXXX with actual RFC number, update date
-       // information and remove this note
-     }
-
-     /*
-      * Groupings
-      */
-
-     grouping label-range-info {
-       description
-         "Ethernet technology-specific label range related
-         information with a presence container indicating that the
-         label range is an Ethernet technology-specific label range.
-
-         This grouping SHOULD be used together with the
-         eth-label and eth-label-step groupings to provide Ethernet
-         technology-specific label information to the models which
-         use the label-restriction-info grouping defined in the module
-         ietf-te-types.";
-
-       container ethernet-label-range {
-         presence
-           "Indicates the label range is an Ethernet label range.
-
-           This container must not be present if there are other
-           presence containers or attributes indicating another type
-           of label range.";
-         description
-           "Ethernet-specific label range related information.";
-
-         uses etht-types:eth-label-restriction;
-       }
-     }
-
-     grouping eth-tran-topology-type {
-       description
-         "Identifies the Ethernet Transport topology type";
-
-       container eth-tran-topology {
-         presence "indicates a topology type of
-                   Ethernet Transport Network.";
-         description "Eth transport topology type";
-       }
-     }
-
-     grouping ltp-bandwidth-profiles {
-       description
-         "A grouping which represents the bandwidth profile(s)
-         for the ETH LTP.";
-
-       choice direction {
-         description
-           "Whether the bandwidth profiles are symmetrical or
-            asymmetrical";
-         case symmetrical {
-           description
-             "The same bandwidth profile is used to describe the ingress
-              and the egress bandwidth profile.";
-
-           container ingress-egress-bandwidth-profile {
-             description
-               "The bandwith profile used in the ingress and egress
-                direction.";
-             uses etht-types:etht-bandwidth-profiles;
-           }
-         }
-         case asymmetrical {
-           description
-             "Different ingress and egress bandwidth profiles
-              can be specified.";
-           container ingress-bandwidth-profile {
-             description
-               "The bandwidth profile used in the ingress direction.";
-             uses etht-types:etht-bandwidth-profiles;
-           }
-           container egress-bandwidth-profile {
-             description
-               "The bandwidth profile used in the egress direction.";
-             uses etht-types:etht-bandwidth-profiles;
-           }
-         }
-       }
-     }
-     grouping eth-ltp-attributes {
-       description
-         "Ethernet transport Link Termination Point (LTP) attributes";
-
-       leaf ltp-mac-address {
-         type yang:mac-address;
-         description
-           "The MAC address of the Ethernet LTP.";
-       }
-       leaf port-vlan-id {
-         type etht-types:vlanid;
-         description
-           "The Port VLAN ID of the Ethernet LTP.";
-         reference
-           "IEEE 802.1Q: Virtual Bridged Local Area Networks";
-       }
-       leaf maximum-frame-size {
-         type uint16 {
-           range "64 .. 65535";
-         }
-         description
-           "Maximum frame size";
-         reference
-           "IEEE 802.1Q: Virtual Bridged Local Area Networks";
-       }
-         uses ltp-bandwidth-profiles;
-     }
-
-     grouping svc-vlan-classification {
-       description
-         "Grouping defining the capabilities for VLAN classification.";
-
-       leaf-list supported-tag-types {
-         type etht-types:eth-tag-classify;
-         description
-           "List of VLAN tag types that can be used for the VLAN
-            classification. In case VLAN classification is not
-            supported, the list is empty.";
-       }
-       leaf vlan-bundling {
-         type boolean;
-         description
-           "In case VLAN classification is supported, indicates whether
-           VLAN bundling classification is also supported.";
-         reference
-           "MEF 10.3: Ethernet Services Attributes Phase 3";
-       }
-       leaf vlan-range {
-         type etht-types:vid-range-type;
-         description
-           "In case VLAN classification is supported, indicates the
-           of available VLAN ID values.";
-       }
-     }
-
-     grouping svc-vlan-push {
-       description
-         "Grouping defining the capabilities for VLAN push or swap
-          operations.";
-
-       leaf-list supported-tag-types {
-         type etht-types:eth-tag-type;
-         description
-           "List of VLAN tag types that can be used to push or swap a
-            VLAN tag. In case VLAN push/swap is not supported, the list
-            is empty.";
-         reference
-           "IEEE 802.1Q: Virtual Bridged Local Area Networks";
-       }
-       leaf vlan-range {
-         type etht-types:vid-range-type;
-         description
-           "In case VLAN push/swap operation is supported, the range
-           of available VLAN ID values.";
-       }
-     }
-
-     grouping eth-svc-attributes {
-       description
-         "Ethernet Link Termination Point (LTP) service attributes.";
-
-       container supported-classification {
-         description
-           "Service classification capability supported by the
-           Ethernet Link Termination Point (LTP).";
-
-         leaf port-classification {
-           type boolean;
-           description
-             "Indicates that the ETH LTP support port-based service
-             classification.";
-         }
-         container vlan-classification {
-           description
-             "Service classification capabilities based on the VLAN
-              tag(s) supported by the ETH LTP.";
-           leaf vlan-tag-classification {
-             type boolean;
-             description
-               "Indicates that the ETH LTP supports VLAN service
-               classification.";
-           }
-           container outer-tag {
-             description
-               "Service classification capabilities based on the outer
-                VLAN tag, supported by the ETH LTP.";
-             uses svc-vlan-classification;
-           }
-           container second-tag {
-             description
-               "Service classification capabilities based on the second
-                VLAN tag, supported by the ETH LTP.";
-             leaf second-tag-classification {
-               type boolean;
-               must ". = 'false' or "
-                  + "../../vlan-tag-classification = 'true'" {
-                 description
-                   "VLAN service classification based on the second
-                   VLAN tag can be supported only when VLAN service
-                   classification";
-               }
-               description
-                 "Indicates that the ETH LTP support  VLAN service
-                  classification based on the second VLAN tag.";
-             }
-             uses svc-vlan-classification;
-           }
-         }
-       }
-
-       container supported-vlan-operations {
-         description
-           "Reports the VLAN operations supported by the ETH LTP.";
-
-         leaf asymmetrical-operations {
-           type boolean;
-           description
-             "Indicates whether the ETH LTP supports also asymmetrical
-              VLAN operations.It is assumed that symmetrical VLAN
-              operations are alwyas supported.";
-         }
-         leaf transparent-vlan-operations {
-           type boolean;
-           description
-             "Indicates that the ETH LTP supports transparent
-             operations.";
-         }
-         container vlan-pop {
-           description
-             "Indicates VLAN pop or swap operations capabilities.";
-
-           leaf vlan-pop-operations {
-             type boolean;
-             description
-               "Indicates that the ETH LTP supports VLAN pop or
-                swap operations.";
-           }
-           leaf max-pop-tags {
-             type uint8 {
-               range "1..2";
-             }
-             description
-               "Indicates the maximum number of tags that can be
-                popped/swapped.";
-           }
-         }
-         container vlan-push {
-           description
-             "Indicates VLAN push or swap operations capabilities.";
-
-           leaf vlan-push-operation {
-             type boolean;
-             description
-               "Indicates that the ETH LTP supports VLAN push or
-                swap operations.";
-           }
-           container outer-tag {
-             description
-               "Indicates the supported VLAN operation capabilities
-                on the outer VLAN tag.";
-             uses svc-vlan-push;
-           }
-           container second-tag {
-             description
-               "Indicates the supported VLAN operation capabilities
-                on the second VLAN tag.";
-             leaf push-second-tag {
-               type boolean;
-               description
-                 "Indicates that the ETH LTP supports VLAN push or swap
-                  operations for the second VLAN tag.";
-             }
-             uses svc-vlan-push;
-           }
-         }
-       }
-     }
-
-     /*
-      * Data nodes
-      */
-
-     augment "/nw:networks/nw:network/nw:network-types/"
-           + "tet:te-topology" {
-       description
-         "Augment network types to include ETH transport newtork";
-
-       uses eth-tran-topology-type;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te"
-           + "/tet:te-node-attributes" {
-       when "../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description "Augment only for Ethernet transport network.";
-       }
-       description "Augment TE node attributes.";
-       container eth-node {
-         presence "The TE node is an Ethernet node.";
-         description
-           "Presence container used only to indicate that the TE node
-           is an Ethernet node.";
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link" {
-       when "../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description "Augment only for Ethernet transport network.";
-       }
-       description "Augment link configuration";
-
-       container eth-svc {
-         presence
-           "When present, indicates that the Link supports Ethernet
-           client signals.";
-         description
-           "Presence container used only to indicate that the link
-           supports Ethernet client signals.";
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/nt:termination-point" {
-       when "../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description "Augment only for Ethernet transport network.";
-       }
-       description
-         "Augment ETH LTP attributes";
-
-       container eth-svc {
-         presence
-           "When present, indicates that the Link Termination Point
-           (LTP) supports Ethernet client signals.";
-         description
-           "ETH LTP Service attributes.";
-
-         uses eth-svc-attributes;
-       }
-       container eth-link-tp {
-         description
-           "Attributes of the Ethernet Link Termination Point (LTP).";
-         uses eth-ltp-attributes;
-       }
-     }
-
-     /*
-      * Augment TE bandwidth
-      */
-
-     augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
-           + "tet:te/"
-           + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
-           + "tet:te-bandwidth/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment maximum LSP TE bandwidth for the link termination
-          point (LTP).";
-       case eth {
-         uses etht-types:eth-bandwidth;
-       }
-     }
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE bandwidth path constraints of the TE node
-          connectivity matrices.";
-       case eth {
-         uses etht-types:eth-bandwidth;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE bandwidth path constraints of the
-          connectivity matrix entry.";
-       case eth {
-         uses etht-types:eth-bandwidth;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE bandwidth path constraints of the TE node
-          connectivity matrices information source.";
-       case eth {
-         uses etht-types:eth-bandwidth;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE bandwidth path constraints of the
-          connectivity matrix entry information source";
-       case eth {
-         uses etht-types:eth-bandwidth;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:client-layer-adaptation/tet:switching-capability/"
-           + "tet:te-bandwidth/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment client TE bandwidth of the tunnel termination point
-          (TTP)";
-       case eth {
-         uses etht-types:eth-bandwidth;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/tet:path-constraints/"
-           + "tet:te-bandwidth/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE bandwidth path constraints for the TTP
-          Local Link Connectivities.";
-       case eth {
-         uses etht-types:eth-bandwidth;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/tet:path-constraints/"
-           + "tet:te-bandwidth/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE bandwidth path constraints for the TTP
-          Local Link Connectivity entry.";
-       case eth {
-         uses etht-types:eth-bandwidth;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
-           + "tet:te-bandwidth/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment maximum LSP TE bandwidth for the TE link.";
-       case eth {
-         uses etht-types:eth-bandwidth;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:max-link-bandwidth/"
-           + "tet:te-bandwidth" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment maximum TE bandwidth for the TE link";
-       uses etht-types:eth-bandwidth;
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:max-resv-link-bandwidth/"
-           + "tet:te-bandwidth" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment maximum reservable TE bandwidth for the TE link";
-       uses etht-types:eth-bandwidth;
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:unreserved-bandwidth/"
-           + "tet:te-bandwidth" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment unreserved TE bandwidth for the TE Link";
-       uses etht-types:eth-bandwidth;
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:interface-switching-capability/"
-           + "tet:max-lsp-bandwidth/"
-           + "tet:te-bandwidth/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment maximum LSP TE bandwidth for the TE link
-          information source";
-       case eth {
-         uses etht-types:eth-bandwidth;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:max-link-bandwidth/"
-           + "tet:te-bandwidth" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment maximum TE bandwidth for the TE link
-          information source";
-       uses etht-types:eth-bandwidth;
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:max-resv-link-bandwidth/"
-           + "tet:te-bandwidth" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment maximum reservable TE bandwidth for the TE link
-          information-source";
-       uses etht-types:eth-bandwidth;
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:unreserved-bandwidth/"
-           + "tet:te-bandwidth" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment unreserved TE bandwidth of the TE link
-          information source";
-       uses etht-types:eth-bandwidth;
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:interface-switching-capability/"
-           + "tet:max-lsp-bandwidth/"
-           + "tet:te-bandwidth/tet:technology" {
-       description
-         "Augment maximum LSP TE bandwidth of the TE link
-          template";
-       case eth {
-         uses etht-types:eth-bandwidth;
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:max-link-bandwidth/"
-           + "tet:te-bandwidth" {
-       description
-         "Augment maximum TE bandwidth the TE link template";
-       uses etht-types:eth-bandwidth;
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:max-resv-link-bandwidth/"
-           + "tet:te-bandwidth" {
-       description
-         "Augment maximum reservable TE bandwidth for the TE link
-          template.";
-       uses etht-types:eth-bandwidth;
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:unreserved-bandwidth/"
-           + "tet:te-bandwidth" {
-       description
-         "Augment unreserved TE bandwidth the TE link template";
-       uses etht-types:eth-bandwidth;
-     }
-
-     /*
-      * Augment TE label range information
-      */
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE label range information for the TE node
-          connectivity matrices.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:from/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE label range information for the source LTP
-          of the connectivity matrix entry.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:to/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE label range information for the destination LTP
-          of the connectivity matrix entry.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:connectivity-matrices/tet:label-restrictions/"
-           + "tet:label-restriction" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE label range information for the TE node
-          connectivity matrices information source.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:from/tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE label range information for the source LTP
-          of the connectivity matrix entry information source.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:to/tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE label range information for the destination LTP
-          of the connectivity matrix entry information source.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE label range information for the TTP
-          Local Link Connectivities.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE label range information for the TTP
-          Local Link Connectivity entry.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE label range information for the TE link.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-           Ethernet topology type.";
-       }
-       description
-         "Augment TE label range information for the TE link
-          information source.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       description
-         "Augment TE label range information for the TE link template.";
-       uses label-range-info;
-     }
-
-     /*
-      * Augment TE label.
-      */
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range start for the TE node
-          connectivity matrices";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:label-restrictions/"
-           + "tet:label-restriction/tet:label-end/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range end for the TE node
-          connectivity matrices";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:label-restrictions/"
-           + "tet:label-restriction/tet:label-step/"
-           + "tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range step for the TE node
-          connectivity matrices";
-       case eth {
-         uses etht-types:eth-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:underlay/tet:primary-path/tet:path-element/"
-           + "tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path of the
-          TE node connectivity matrices";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:underlay/tet:backup-path/tet:path-element/"
-           + "tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path of the
-          TE node connectivity matrices";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-exclude-objects/"
-           + "tet:route-object-exclude-object/"
-           + "tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects excluded
-          by the path computation of the TE node connectivity
-          matrices";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-include-objects/"
-           + "tet:route-object-include-object/"
-           + "tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects included
-          by the path computation of the TE node connectivity
-          matrices";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:path-properties/tet:path-route-objects/"
-           + "tet:path-route-object/tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the computed path route objects
-          of the TE node connectivity matrices";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:from/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range start for the source LTP
-          of the connectivity matrix entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:from/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range end for the source LTP
-          of the connectivity matrix entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:from/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/"
-           + "tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range step for the source LTP
-          of the connectivity matrix entry.";
-       case eth {
-         uses etht-types:eth-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:to/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range start for the destination LTP
-          of the connectivity matrix entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:to/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range end for the destination LTP
-          of the connectivity matrix entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:to/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/"
-           + "tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range step for the destination LTP
-          of the connectivity matrix entry.";
-       case eth {
-         uses etht-types:eth-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:underlay/tet:primary-path/tet:path-element/"
-           + "tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path
-          of the connectivity matrix entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:underlay/tet:backup-path/tet:path-element/"
-           + "tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path
-          of the connectivity matrix entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:optimizations/"
-           + "tet:algorithm/tet:metric/tet:optimization-metric/"
-           + "tet:explicit-route-exclude-objects/"
-           + "tet:route-object-exclude-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects excluded
-          by the path computation of the connectivity matrix entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:optimizations/"
-           + "tet:algorithm/tet:metric/tet:optimization-metric/"
-           + "tet:explicit-route-include-objects/"
-           + "tet:route-object-include-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects included
-          by the path computation of the connectivity matrix entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:path-properties/tet:path-route-objects/"
-           + "tet:path-route-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the computed path route objects
-          of the connectivity matrix entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:connectivity-matrices/tet:label-restrictions/"
-           + "tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range start for the TE node connectivity
-          matrices information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:connectivity-matrices/tet:label-restrictions/"
-           + "tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range end for the TE node connectivity
-          matrices information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:connectivity-matrices/tet:label-restrictions/"
-           + "tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       when "../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range step for the TE node connectivity
-          matrices information source.";
-       case eth {
-         uses etht-types:eth-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path
-          of the TE node connectivity matrices of the information
-          source entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path
-          of the TE node connectivity matrices of the information
-          source entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-exclude-objects/"
-           + "tet:route-object-exclude-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects excluded
-          by the path computation of the TE node connectivity matrices
-          information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-include-objects/"
-           + "tet:route-object-include-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects included
-          by the path computation of the TE node connectivity matrices
-          information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:path-properties/tet:path-route-objects/"
-           + "tet:path-route-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the computed path route objects
-          of the TE node connectivity matrices information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:from/tet:label-restrictions/"
-           + "tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range start for the source LTP
-          of the connectivity matrix entry information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:from/tet:label-restrictions/"
-           + "tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range end for the source LTP
-          of the connectivity matrix entry information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:from/tet:label-restrictions/"
-           + "tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range step for the source LTP
-          of the connectivity matrix entry information source.";
-       case eth {
-         uses etht-types:eth-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:to/tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range start for the destination LTP
-          of the connectivity matrix entry information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:to/tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range end for the destination LTP
-          of the connectivity matrix entry information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:to/tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range step for the destination LTP
-          of the connectivity matrix entry information source.";
-       case eth {
-         uses etht-types:eth-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path
-          of the connectivity matrix entry information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path
-          of the connectivity matrix entry information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-exclude-objects/"
-           + "tet:route-object-exclude-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects excluded
-          by the path computation of the connectivity matrix entry
-          information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-include-objects/"
-           + "tet:route-object-include-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects included
-          by the path computation of the connectivity matrix entry
-          information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:path-properties/tet:path-route-objects/"
-           + "tet:path-route-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the computed path route objects
-          of the connectivity matrix entry information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-         + "tet:tunnel-termination-point/"
-         + "tet:local-link-connectivities/"
-         + "tet:label-restrictions/tet:label-restriction/"
-         + "tet:label-start/"
-         + "tet:te-label/tet:technology" {
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range start for the TTP
-          Local Link Connectivities.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/"
-           + "tet:te-label/tet:technology"{
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range end for the TTP
-          Local Link Connectivities.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/"
-           + "tet:technology"{
-       when "../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range step for the TTP
-          Local Link Connectivities.";
-       case eth {
-         uses etht-types:eth-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path
-          of the TTP Local Link Connectivities.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path
-          of the TTP Local Link Connectivities.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-exclude-objects/"
-           + "tet:route-object-exclude-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects excluded
-          by the path computation of the TTP Local Link
-          Connectivities.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-include-objects/"
-           + "tet:route-object-include-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects included
-          by the path computation of the TTP Local Link
-          Connectivities.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:path-properties/tet:path-route-objects/"
-           + "tet:path-route-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the computed path route objects
-          of the TTP Local Link Connectivities.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range start for the TTP
-          Local Link Connectivity entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range end for the TTP
-          Local Link Connectivity entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range step for the TTP
-          Local Link Connectivity entry.";
-       case eth {
-         uses etht-types:eth-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path
-          of the TTP Local Link Connectivity entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path
-          of the TTP Local Link Connectivity entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-exclude-objects/"
-           + "tet:route-object-exclude-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects excluded
-          by the path computation of the TTP Local Link
-          Connectivity entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-include-objects/"
-           + "tet:route-object-include-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects included
-          by the path computation of the TTP Local Link
-          Connectivity entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:path-properties/tet:path-route-objects/"
-           + "tet:path-route-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the computed path route objects
-          of the TTP Local Link Connectivity entry.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path
-          of the TE link.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path
-          of the TE link.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range start for the TE link.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range end for the TE link.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range step for the TE link.";
-       case eth {
-         uses etht-types:eth-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range start for the TE link
-          information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range end for the TE link
-          information source.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "etht:eth-tran-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            Ethernet topology type.";
-       }
-       description
-         "Augment TE label range step for the TE link
-          information source.";
-       case eth {
-         uses etht-types:eth-label-step;
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       description
-         "Augment TE label hop for the underlay primary path
-          of the TE link template.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       description
-         "Augment TE label hop for the underlay backup path
-          of the TE link template.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       description
-         "Augment TE label range start for the TE link template.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       description
-         "Augment TE label range end for the TE link template.";
-       case eth {
-         uses etht-types:eth-label;
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       description
-         "Augment TE label range step for the TE link template.";
-       case eth {
-         uses etht-types:eth-label-step;
-       }
-     }
-
-   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-service@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-service@2023-10-23.yang
deleted file mode 100644
index 222066adf..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-service@2023-10-23.yang
+++ /dev/null
@@ -1,1004 +0,0 @@
-   module ietf-eth-tran-service {
-     yang-version 1.1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-service";
-
-     prefix "ethtsvc";
-     import ietf-yang-types {
-       prefix "yang";
-       reference "RFC 6991 - Common YANG Data Types";
-     }
-
-     import ietf-network {
-       prefix "nw";
-       reference "RFC8345 - A YANG Data Model for Network Topologies";
-     }
-
-     import ietf-network-topology {
-       prefix "nt";
-       reference "RFC8345 - A YANG Data Model for Network Topologies";
-     }
-
-     import ietf-te-types {
-       prefix "te-types";
-       reference "RFC 8776 - Traffic Engineering Common YANG Types";
-     }
-
-     import ietf-eth-tran-types {
-       prefix "etht-types";
-       reference "RFC XXXX - A YANG Data Model for Transport
-                  Network Client Signals";
-     }
-
-     import ietf-routing-types {
-       prefix "rt-types";
-       reference "RFC 8294 - Common YANG Data Types for the
-                  Routing Area";
-
-     }
-
-     import ietf-te {
-       prefix "te";
-       reference "RFC YYYY - A YANG Data Model for Traffic
-                  Engineering Tunnels and Interfaces";
-     }
-
-     organization
-       "Internet Engineering Task Force (IETF) CCAMP WG";
-     contact
-       "
-         WG List: <mailto:ccamp@ietf.org>
-
-         ID-draft editor:
-           Haomian Zheng (zhenghaomian@huawei.com);
-           Italo Busi (italo.busi@huawei.com);
-           Aihua Guo (aihuaguo.ietf@gmail.com);
-           Anton Snitser (antons@sedonasys.com);0
-           Francesco Lazzeri (francesco.lazzeri@ericsson.com);
-           Yunbin Xu (xuyunbin@caict.ac.cn);
-           Yang Zhao (zhaoyangyjy@chinamobile.com);
-           Xufeng Liu (xufeng.liu.ietf@gmail.com);
-           Giuseppe Fioccola (giuseppe.fioccola@huawei.com);
-           Chaode Yu (yuchaode@huawei.com)
-       ";
-
-     description
-       "This module defines a YANG data model for describing
-        the Ethernet services. The model fully conforms to the
-        Network Management Datastore Architecture (NMDA).
-
-        Copyright (c) 2021 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
-        (https://trustee.ietf.org/license-info).
-        This version of this YANG module is part of RFC XXXX; see
-        the RFC itself for full legal notices.";
-
-     revision 2023-10-23 {
-       description
-         "version -04 as an WG document";
-       reference
-         "draft-ietf-ccamp-client-signal-yang";
-     }
-
-     /*
-      * Groupings
-      */
-
-     grouping vlan-classification {
-       description
-         "A grouping which represents classification
-         on an 802.1Q VLAN tag.";
-
-       leaf tag-type {
-         type etht-types:eth-tag-classify;
-         description
-           "The tag type used for VLAN classification.";
-       }
-       choice individual-bundling-vlan {
-         description
-           "VLAN based classification can be individual
-            or bundling.";
-
-         case individual-vlan {
-           leaf vlan-value {
-             type etht-types:vlanid;
-             description
-               "VLAN ID value.";
-           }
-         }
-
-         case vlan-bundling {
-           leaf vlan-range {
-             type etht-types:vid-range-type;
-             description
-               "List of VLAN ID values.";
-           }
-         }
-       }
-     }
-
-     grouping vlan-write {
-       description
-         "A grouping which represents push/pop operations
-          of an 802.1Q VLAN tag.";
-
-       leaf tag-type {
-         type etht-types:eth-tag-type;
-         description
-           "The VLAN tag type to push/swap.";
-       }
-       leaf vlan-value {
-         type etht-types:vlanid;
-         description
-           "The VLAN ID value to push/swap.";
-       }
-   /*
-    * To be added: this attribute is used when:
-    * a) the ETH service has only one CoS (as in current version)
-    * b) as a default when a mapping between a given CoS value
-    *    and the PCP value is not defined (in future versions)
-    */
-       leaf default-pcp {
-         type uint8 {
-           range "0..7";
-         }
-         description
-           "The default Priority Code Point (PCP) value to push/swap";
-       }
-     }
-
-     grouping vlan-operations {
-       description
-         "A grouping which represents VLAN operations.";
-
-         leaf pop-tags {
-         type uint8 {
-           range "1..2";
-         }
-         description
-           "The number of VLAN tags to pop (or swap if used in
-            conjunction with push-tags)";
-       }
-       container push-tags {
-         description
-           "The VLAN tags to push (or swap if used in
-            conjunction with pop-tags)";
-
-         container outer-tag {
-           presence
-             "Indicates existence of the outermost VLAN tag to
-              push/swap";
-
-           description
-             "The outermost VLAN tag to push/swap.";
-
-           uses vlan-write;
-         }
-         container second-tag {
-         must
-           '../outer-tag/tag-type = "etht-types:s-vlan-tag-type" and ' +
-           'tag-type = "etht-types:c-vlan-tag-type"'
-           {
-
-             error-message
-               "
-                 When pushing/swapping two tags, the outermost tag must
-                 be specified and of S-VLAN type and the second
-                 outermost tag must be of C-VLAN tag type.
-               ";
-             description
-               "
-                 For IEEE 802.1Q interoperability, when pushing/swapping
-                 two tags, it is required that the outermost tag exists
-                 and is an S-VLAN, and the second outermost tag is a
-                 C-VLAN.
-               ";
-           }
-
-           presence
-             "Indicates existence of a second outermost VLAN tag to
-              push/swap";
-
-           description
-             "The second outermost VLAN tag to push/swap.";
-           uses vlan-write;
-         }
-       }
-     }
-
-     grouping named-or-value-bandwidth-profile {
-       description
-         "A grouping to configure a bandwdith profile either by
-          referencing a named bandwidth profile or by
-          configuring the values of the bandwidth profile attributes.";
-       choice style {
-         description
-           "Whether the bandwidth profile is named or defined by value";
-
-         case named {
-           description
-             "Named bandwidth profile.";
-           leaf bandwidth-profile-name {
-             type leafref {
-                path "/ethtsvc:etht-svc/ethtsvc:globals/"
-                + "ethtsvc:named-bandwidth-profiles/"
-                + "ethtsvc:bandwidth-profile-name";
-                }
-             description
-               "Name of the bandwidth profile.";
-           }
-         }
-         case value {
-           description
-             "Bandwidth profile configured by value.";
-           uses etht-types:etht-bandwidth-profiles;
-         }
-       }
-     }
-
-     grouping bandwidth-profiles {
-       description
-         "A grouping which represent bandwidth profile configuration.";
-
-       choice direction {
-         description
-           "Whether the bandwidth profiles are symmetrical or
-            asymmetrical";
-         case symmetrical {
-           description
-             "The same bandwidth profile is used to describe both
-              the ingress and the egress bandwidth profile.";
-           container ingress-egress-bandwidth-profile {
-             description
-               "The bandwdith profile used in both directions.";
-             uses named-or-value-bandwidth-profile;
-           }
-         }
-         case asymmetrical {
-           description
-             "Ingress and egress bandwidth profiles can be specified.";
-           container ingress-bandwidth-profile {
-             description
-               "The bandwdith profile used in the ingress direction.";
-             uses named-or-value-bandwidth-profile;
-           }
-           container egress-bandwidth-profile {
-             description
-               "The bandwdith profile used in the egress direction.";
-             uses named-or-value-bandwidth-profile;
-           }
-         }
-       }
-     }
-
-     grouping etht-svc-access-parameters {
-       description
-         "ETH services access parameters";
-
-       leaf access-node-id {
-         type te-types:te-node-id;
-         description
-           "The identifier of the access node in
-            the ETH TE topology.";
-       }
-
-       leaf access-node-uri {
-         type nw:node-id;
-         description
-           "The identifier of the access node in the network.";
-       }
-
-       leaf access-ltp-id {
-         type te-types:te-tp-id;
-         description
-           "The TE link termination point identifier, used
-            together with access-node-id to identify the
-            access LTP.";
-       }
-
-       leaf access-ltp-uri {
-         type nt:tp-id;
-         description
-           "The link termination point identifier in network topology,
-           used together with access-node-uri to identify the
-           access LTP.";
-       }
-
-       leaf access-role {
-         type identityref {
-           base etht-types:access-role;
-         }
-         description
-           "Indicate the role of access, e.g., working or protection. ";
-       }
-
-       container pm-config {
-         uses pm-config-grouping;
-         description
-         "This grouping is used to set the threshold value for
-         performance monitoring. ";
-       }
-
-       container state {
-         config false;
-         description
-         "The state is used to monitor the status of service. ";
-         leaf operational-state {
-           type identityref {
-             base te-types:tunnel-state-type;
-           }
-           description
-           "Indicating the operational state of client signal. ";
-         }
-         leaf provisioning-state {
-           type identityref {
-             base te-types:lsp-state-type;
-           }
-           description
-           "Indicating the provisional state of client signal,
-           especially when there is a change, i.e., revise, create. ";
-         }
-       }
-
-       leaf performance {
-         type identityref {
-           base etht-types:performance;
-         }
-         config false;
-         description
-           "Performance Monitoring for the service. ";
-       }
-
-     }
-
-     grouping etht-svc-tunnel-parameters {
-       description
-         "ETH services tunnel parameters.";
-       choice technology {
-         description
-           "Service multiplexing is optional and flexible.";
-
-         case native-ethernet {
-           /*
-            placeholder to support proprietary multiplexing
-            (for further discussion)
-           */
-           list eth-tunnels {
-             key name;
-             description
-               "ETH Tunnel list in native Ethernet scenario.";
-             uses tunnels-grouping;
-           }
-         }
-
-         case frame-base {
-           list otn-tunnels {
-             key name;
-             description
-               "OTN Tunnel list in Frame-based scenario.";
-             uses tunnels-grouping;
-           }
-         }
-
-         case mpls-tp {
-           container pw {
-             description
-               "Pseudowire information for Ethernet over MPLS-TP.";
-             uses pw-segment-grouping;
-           }
-         }
-       }
-
-   /*
-    * Open issue: can we constraints it to be used only with mp services?
-    */
-       leaf src-split-horizon-group {
-         type string;
-         description
-         "Identify a split horizon group at the Tunnel source TTP";
-       }
-       leaf dst-split-horizon-group {
-         type string;
-         description
-         "Identify a split horizon group at the Tunnel destination TTP";
-       }
-     }
-
-     grouping  etht-svc-pm-threshold-config {
-       description
-         "Configuraiton parameters for Ethernet service PM thresholds.";
-
-       leaf sending-rate-high {
-         type uint64;
-         description
-           "High threshold of packet sending rate in kbps.";
-       }
-       leaf sending-rate-low {
-         type uint64;
-         description
-           "Low threshold of packet sending rate in kbps.";
-       }
-       leaf receiving-rate-high {
-         type uint64;
-         description
-           "High threshold of packet receiving rate in kbps.";
-       }
-       leaf receiving-rate-low {
-         type uint64;
-         description
-           "Low threshold of packet receiving rate in kbps.";
-       }
-     }
-
-     grouping  etht-svc-pm-stats {
-       description
-         "Ethernet service PM statistics.";
-
-       leaf sending-rate-too-high {
-         type uint32;
-         description
-           "Counter that indicates the number of times the
-           sending rate is above the high threshold";
-       }
-       leaf sending-rate-too-low {
-         type uint32;
-         description
-           "Counter that indicates the number of times the
-           sending rate is below the low threshold";
-       }
-       leaf receiving-rate-too-high {
-         type uint32;
-         description
-           "Counter that indicates the number of times the
-           receiving rate is above the high threshold";
-       }
-       leaf receiving-rate-too-low {
-         type uint32;
-         description
-           "Counter that indicates the number of times the
-           receiving rate is below the low threshold";
-       }
-     }
-
-     grouping  etht-svc-instance-config {
-       description
-         "Configuraiton parameters for Ethernet services.";
-
-       leaf etht-svc-name {
-         type string;
-         description
-           "Name of the ETH service.";
-       }
-
-       leaf etht-svc-title {
-         type string;
-         description
-           "The Identifier of the ETH service.";
-       }
-
-       leaf user-label {
-         type string;
-         description
-           "Alias of the ETH service.";
-       }
-
-       leaf etht-svc-descr {
-         type string;
-         description
-           "Description of the ETH service.";
-       }
-
-       leaf etht-svc-customer {
-         type string;
-         description
-           "Customer of the ETH service.";
-       }
-
-        leaf etht-svc-type {
-         type etht-types:service-type;
-         description
-           "Type of ETH service (p2p, mp2mp or rmp).";
-         /* Add default as p2p */
-       }
-
-        leaf etht-svc-lifecycle {
-         type etht-types:lifecycle-status;
-         description
-           "Lifecycle state of ETH service.";
-         /* Add default as installed  */
-       }
-       uses te-types:te-topology-identifier;
-
-       uses resilience-grouping;
-       list etht-svc-end-points {
-         key etht-svc-end-point-name;
-         description
-           "The logical end point for the ETH service. ";
-         uses etht-svc-end-point-grouping;
-       }
-
-       container alarm-shreshold {
-         description "threshold configuration for the E2E client signal";
-         uses alarm-shreshold-grouping;
-       }
-
-       container underlay {
-         description
-           "The unterlay tunnel information that carrying the
-           ETH service. ";
-         uses etht-svc-tunnel-parameters;
-       }
-
-       leaf admin-status {
-         type identityref {
-           base te-types:tunnel-admin-state-type;
-         }
-         default te-types:tunnel-admin-state-up;
-         description "ETH service administrative state.";
-       }
-     }
-
-     grouping  etht-svc-instance-state {
-       description
-         "State parameters for Ethernet services.";
-
-       leaf operational-state {
-       type identityref {
-           base te-types:tunnel-state-type;
-         }
-         default te-types:tunnel-state-up;
-       description "ETH service operational state.";
-       }
-       leaf provisioning-state {
-         type identityref {
-           base te-types:lsp-state-type;
-         }
-         description "ETH service provisioning state.";
-       }
-       leaf creation-time {
-         type yang:date-and-time;
-         description
-           "Time of ETH service creation.";
-       }
-       leaf last-updated-time {
-         type yang:date-and-time;
-         description
-           "Time of ETH service last update.";
-       }
-
-       leaf created-by {
-          type string;
-          description
-            "The client signal is created by whom,
-             can be a system or staff ID.";
-        }
-        leaf last-updated-by {
-          type string;
-          description
-            "The client signal is last updated by whom,
-             can be a system or staff ID.";
-        }
-        leaf owned-by {
-          type string;
-          description
-            "The client signal is last updated by whom,
-             can be a system ID.";
-        }
-        container pm-state {
-          description
-            "PM data of E2E Ethernet service";
-          uses pm-state-grouping;
-        }
-        container error-info {
-          description "error messages of configuration";
-          uses error-info-grouping;
-        }
-     }
-
-     grouping pm-state-grouping {
-       leaf latency {
-         description
-           "latency value of the E2E Ethernet service";
-         type uint32;
-         units microsecond;
-       }
-     }
-
-     grouping error-info-grouping {
-       leaf error-code {
-         description "error code";
-         type uint16;
-       }
-
-       leaf error-description {
-         description "detail message of error";
-         type string;
-       }
-
-       leaf error-timestamp {
-         description "the date and time error is happened";
-         type yang:date-and-time;
-       }
-     }
-
-     grouping alarm-shreshold-grouping {
-       leaf latency-threshold {
-         description "a threshold for the E2E client signal service's
-         latency. Once the latency value exceed this threshold, an alarm
-         should be triggered.";
-         type uint32;
-         units microsecond;
-       }
-     }
-
-     /*
-      * Data nodes
-      */
-
-     container etht-svc {
-       description
-         "ETH services.";
-
-       container globals {
-         description
-           "Globals Ethernet configuration data container";
-         list named-bandwidth-profiles {
-           key bandwidth-profile-name;
-           description
-             "List of named bandwidth profiles used by
-              Ethernet services.";
-
-           leaf bandwidth-profile-name {
-             type string;
-             description
-               "Name of the bandwidth profile.";
-           }
-           uses etht-types:etht-bandwidth-profiles;
-         }
-       }
-       list etht-svc-instances {
-         key etht-svc-name;
-         description
-           "The list of p2p ETH service instances";
-
-         uses etht-svc-instance-config;
-
-         container state {
-           config false;
-           description
-             "Ethernet Service states.";
-
-           uses etht-svc-instance-state;
-         }
-       }
-     }
-
-     grouping resilience-grouping {
-       description
-         "Grouping for resilience configuration. ";
-       container resilience {
-       description
-         "To configure the data plane protection parameters,
-         currently a placeholder only, future candidate attributes
-         include, Revert, WTR, Hold-off Timer, ...";
-         uses te:protection-restoration-properties;
-       }
-     }
-
-     grouping etht-svc-end-point-grouping {
-       description
-         "Grouping for the end point configuration.";
-       leaf etht-svc-end-point-name {
-         type string;
-         description
-         "The name of the logical end point of ETH service. ";
-       }
-
-       leaf etht-svc-end-point-id {
-         type string;
-         description
-         "The identifier of the logical end point of ETH service.";
-       }
-
-       leaf etht-svc-end-point-descr {
-         type string;
-         description
-         "The description of the logical end point of ETH service. ";
-       }
-
-       leaf topology-role {
-         type identityref {
-           base etht-types:topology-role;
-         }
-         description
-         "Indicating the underlay topology role,
-         e.g., hub,spoke, any-to-any ";
-       }
-
-       container resilience {
-         description
-         "Placeholder for resilience configuration, for future study. ";
-       }
-
-       list etht-svc-access-points {
-         key access-point-id;
-         min-elements "1";
-   /*
-     Open Issue:
-       Is it possible to limit the max-elements only for p2p services?
-         max-elements "2";
-   */
-         description
-           "List of the ETH trasport services access point instances.";
-
-         leaf access-point-id {
-           type string;
-           description
-             "ID of the service access point instance";
-         }
-         uses etht-svc-access-parameters;
-       }
-
-       leaf service-classification-type {
-         type identityref {
-           base etht-types:service-classification-type;
-         }
-         description
-           "Service classification type.";
-       }
-
-       choice service-classification {
-         description
-           "Access classification can be port-based or
-            VLAN based.";
-         case port-classification {
-           /* no additional information */
-         }
-
-         case vlan-classification {
-           container outer-tag {
-             presence "The outermost VLAN tag exists";
-             description
-               "Classifies traffic using the outermost VLAN tag.";
-
-             uses vlan-classification;
-           }
-           container second-tag {
-             must
-               '../outer-tag/tag-type = "etht-types:classify-s-vlan" and ' +
-               'tag-type = "etht-types:classify-c-vlan"'
-             {
-               error-message
-                 "
-                   When matching two tags, the outermost tag must be
-                   specified and of S-VLAN type and the second
-                   outermost tag must be of C-VLAN tag type.
-                 ";
-               description
-                 "
-                   For IEEE 802.1Q interoperability, when matching two
-                   tags, it is required that the outermost tag exists
-                   and is an S-VLAN, and the second outermost tag is a
-                   C-VLAN.
-                 ";
-             }
-             presence "The second outermost VLAN tag exists";
-
-             description
-               "Classifies traffic using the second outermost VLAN tag.";
-
-             uses vlan-classification;
-           }
-         }
-       }
-
-   /*
-    * Open issue: can we constraints it to be used only with mp services?
-    */
-       leaf split-horizon-group {
-         type string;
-         description "Identify a split horizon group";
-       }
-       uses bandwidth-profiles;
-
-       container vlan-operations {
-         description
-           "Configuration of VLAN operations.";
-         choice direction {
-           description
-             "Whether the VLAN operations are symmetrical or
-              asymmetrical";
-           case symmetrical {
-             container symmetrical-operation {
-               uses vlan-operations;
-               description
-                 "Symmetrical operations.
-                  Expressed in the ingress direction, but
-                  the reverse operation is applied to egress traffic";
-             }
-           }
-           case asymmetrical {
-             container asymmetrical-operation {
-               description "Asymmetrical operations";
-               container ingress {
-                 uses vlan-operations;
-                 description "Ingress operations";
-               }
-               container egress {
-                 uses vlan-operations;
-                 description "Egress operations";
-               }
-             }
-           }
-         }
-       }
-     }
-
-     grouping pm-config-grouping {
-       description
-         "Grouping used for Performance Monitoring Configuration. ";
-       leaf pm-enable {
-         type boolean;
-         description
-         "Whether to enable the performance monitoring.";
-       }
-
-       leaf sending-rate-high {
-         type uint64;
-         description
-         "The upperbound of sending rate.";
-       }
-
-       leaf sending-rate-low {
-         type uint64;
-         description
-         "The lowerbound of sending rate.";
-       }
-
-       leaf receiving-rate-high {
-         type uint64;
-         description
-         "The upperbound of receiving rate.";
-       }
-
-       leaf receiving-rate-low {
-         type uint64;
-         description
-         "The lowerbound of receiving rate.";
-       }
-     }
-
-     grouping pw-segment-grouping {
-       description
-         "Grouping used for PW configuration. ";
-       leaf pw-id {
-         type string;
-         description
-         "The Identifier information of pseudowire. ";
-       }
-
-       leaf pw-name {
-         type string;
-         description
-         "The name information of pseudowire.";
-       }
-
-       leaf transmit-label {
-         type rt-types:mpls-label;
-         description
-         "Transmit label information in PW. ";
-       }
-
-       leaf receive-label {
-         type rt-types:mpls-label;
-         description
-         "Receive label information in PW. ";
-       }
-       leaf encapsulation-type {
-         type identityref {
-           base etht-types:encapsulation-type;
-         }
-         description
-           "The encapsulation type, raw or tag. ";
-       }
-
-       leaf oper-status {
-         type identityref {
-           base te-types:tunnel-state-type;
-         }
-         config false;
-         description
-           "The operational state of the PW segment. ";
-       }
-
-       container ingress-bandwidth-profile {
-         description
-           "Bandwidth Profile for ingress. ";
-         uses pw-segment-named-or-value-bandwidth-profile;
-       }
-
-       list pw-paths {
-         key path-id;
-         description
-           "A list of pw paths. ";
-
-         leaf path-id {
-           type uint8;
-           description
-             "The identifier of pw paths. ";
-
-         }
-
-         list tp-tunnels {
-           key name;
-           description
-             "Names of TP Tunnel underlay";
-           leaf name {
-             type string;
-             description
-               "Names of TP Tunnel underlay";
-             }
-         }
-       }
-
-     }
-     grouping pw-segment-named-or-value-bandwidth-profile {
-       description
-         "A grouping to configure a bandwdith profile either by
-          referencing a named bandwidth profile or by
-          configuring the values of the bandwidth profile attributes.";
-       choice style {
-         description
-           "Whether the bandwidth profile is named or defined by value";
-         case named {
-           description
-             "Named bandwidth profile.";
-           leaf bandwidth-profile-name {
-             type leafref {
-               path "/ethtsvc:etht-svc/ethtsvc:globals/"
-               + "ethtsvc:named-bandwidth-profiles/"
-               + "ethtsvc:bandwidth-profile-name";
-             }
-             description
-               "Name of the bandwidth profile.";
-           }
-         }
-         case value {
-           description
-             "Bandwidth profile configured by value.";
-           uses etht-types:pw-segement-bandwidth-profile-grouping;
-         }
-       }
-     }
-
-     grouping tunnels-grouping {
-       description
-         "A group of tunnels. ";
-       leaf name {
-         type leafref {
-           path "/te:te/te:tunnels/te:tunnel/te:name";
-           require-instance false;
-         }
-         description "Dependency tunnel name";
-       }
-       leaf encoding {
-         type identityref {
-           base te-types:lsp-encoding-types;
-         }
-         description "LSP encoding type";
-         reference "RFC3945";
-       }
-       leaf switching-type {
-         type identityref {
-           base te-types:switching-capabilities;
-         }
-         description "LSP switching type";
-         reference "RFC3945";
-       }
-     }
-   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-types@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-types@2023-10-23.yang
deleted file mode 100644
index f46908b34..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-eth-tran-types@2023-10-23.yang
+++ /dev/null
@@ -1,457 +0,0 @@
- module ietf-eth-tran-types {
-     yang-version 1.1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-types";
-
-     prefix "etht-types";
-
-     organization
-       "Internet Engineering Task Force (IETF) CCAMP WG";
-     contact
-       "
-         WG List: <mailto:ccamp@ietf.org>
-
-         ID-draft editor:
-           Haomian Zheng (zhenghaomian@huawei.com);
-           Italo Busi (italo.busi@huawei.com);
-           Aihua Guo (aihuaguo.ietf@gmail.com);
-           Anton Snitser (antons@sedonasys.com);
-           Francesco Lazzeri (francesco.lazzeri@ericsson.com);
-           Yunbin Xu (xuyunbin@caict.ac.cn);
-           Yang Zhao (zhaoyangyjy@chinamobile.com);
-           Xufeng Liu (xufeng.liu.ietf@gmail.com);
-           Giuseppe Fioccola (giuseppe.fioccola@huawei.com);
-           Chaode Yu (yuchaode@huawei.com)
-       ";
-
-     description
-       "This module defines the ETH types.
-        The model fully conforms to the Network Management
-        Datastore Architecture (NMDA).
-
-        Copyright (c) 2019 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
-        (https://trustee.ietf.org/license-info).
-        This version of this YANG module is part of RFC XXXX; see
-        the RFC itself for full legal notices.";
-
-     revision 2023-10-23 {
-       description
-         "version -05 as a WG draft";
-       reference
-         "draft-ietf-ccamp-client-signal-yang";
-     }
-
-     /*
-      * Identities
-      */
-
-     identity eth-vlan-tag-type {
-       description
-         "ETH VLAN tag type.";
-     }
-
-     identity c-vlan-tag-type {
-       base eth-vlan-tag-type;
-       description
-         "802.1Q Customer VLAN";
-     }
-
-     identity s-vlan-tag-type {
-       base eth-vlan-tag-type;
-       description
-         "802.1Q Service VLAN (QinQ)";
-     }
-
-     identity service-classification-type {
-       description
-         "Service classification.";
-     }
-
-     identity port-classification {
-       base service-classification-type;
-       description
-         "Port classification.";
-     }
-     identity vlan-classification {
-       base service-classification-type;
-       description
-         "VLAN classification.";
-     }
-
-     identity eth-vlan-tag-classify {
-       description
-         "VLAN tag classification.";
-     }
-
-     identity classify-c-vlan {
-       base eth-vlan-tag-classify;
-       description
-         "Classify 802.1Q Customer VLAN tag.
-          Only C-tag type is accepted";
-     }
-
-     identity classify-s-vlan {
-       base eth-vlan-tag-classify;
-       description
-         "Classify 802.1Q Service VLAN (QinQ) tag.
-          Only S-tag type is accepted";
-     }
-
-     identity classify-s-or-c-vlan {
-       base eth-vlan-tag-classify;
-       description
-         "Classify S-VLAN or C-VLAN tag-classify.
-          Either tag is accepted";
-     }
-
-     identity bandwidth-profile-type-ir {
-       description
-         "Bandwidth Profile Types";
-     }
-
-     identity mef-10-bwp {
-       base bandwidth-profile-type-ir;
-       description
-         "MEF 10 Bandwidth Profile";
-     }
-
-     identity rfc-2697-bwp {
-       base bandwidth-profile-type-ir;
-       description
-         "RFC 2697 Bandwidth Profile";
-     }
-     identity rfc-2698-bwp {
-       base bandwidth-profile-type-ir;
-       description
-         "RFC 2698 Bandwidth Profile";
-     }
-
-     identity rfc-4115-bwp {
-       base bandwidth-profile-type-ir;
-       description
-         "RFC 4115 Bandwidth Profile";
-     }
-
-     identity service-type-ir {
-       description
-         "Type of Ethernet service.";
-     }
-
-     identity p2p-svc {
-       base service-type-ir;
-       description
-         "Ethernet point-to-point service (EPL, EVPL).";
-     }
-
-     identity rmp-svc {
-       base service-type-ir;
-       description
-         "Ethernet rooted-multitpoint service (E-TREE, EP-TREE).";
-     }
-
-     identity mp2mp-svc {
-       base service-type-ir;
-       description
-         "Ethernet multipoint-to-multitpoint service (E-LAN, EP-LAN).";
-     }
-
-     identity lifecycle-status-ir {
-       description
-         "Lifecycle Status.";
-     }
-
-     identity installed {
-       base lifecycle-status-ir;
-       description
-         "Installed.";
-     }
-
-     identity planned {
-       base lifecycle-status-ir;
-       description
-         "Planned.";
-     }
-
-     identity pending-removal {
-       base lifecycle-status-ir;
-       description
-         "Pending Removal.";
-     }
-
-     /*
-      * Type Definitions
-      */
-
-     typedef eth-tag-type {
-       type identityref {
-         base eth-vlan-tag-type;
-       }
-       description
-         "Identifies a specific ETH VLAN tag type.";
-     }
-
-     typedef eth-tag-classify {
-       type identityref {
-         base eth-vlan-tag-classify;
-       }
-       description
-         "Identifies a specific VLAN tag classification.";
-     }
-
-     typedef vlanid {
-       type uint16 {
-         range "1..4094";
-       }
-       description
-         "The 12-bit VLAN-ID used in the VLAN Tag header.";
-     }
-
-     typedef vid-range-type {
-       type string {
-         pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" +
-                 "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)";
-       }
-       description
-         "A list of VLAN Ids, or non overlapping VLAN ranges, in
-          ascending order, between 1 and 4094.
-          This type is used to match an ordered list of VLAN Ids, or
-          contiguous ranges of VLAN Ids. Valid VLAN Ids must be in the
-          range 1 to 4094, and included in the list in non overlapping
-          ascending order.
-
-          For example: 1,10-100,50,500-1000";
-     }
-
-     typedef bandwidth-profile-type {
-       type identityref {
-         base bandwidth-profile-type-ir;
-       }
-       description
-         "Identifies a specific Bandwidth Profile type.";
-     }
-
-     typedef service-type {
-       type identityref {
-         base service-type-ir;
-       }
-       description
-         "Identifies the type of Ethernet service.";
-     }
-
-     typedef lifecycle-status {
-       type identityref {
-         base lifecycle-status-ir;
-       }
-       description
-         "Identifies the lLifecycle Status .";
-     }
-
-     /*
-      * Grouping Definitions
-      */
-
-     grouping etht-bandwidth-profiles {
-       description
-         "Bandwidth profile configuration paramters.";
-
-       leaf bandwidth-profile-type {
-         type etht-types:bandwidth-profile-type;
-         description
-           "The type of bandwidth profile.";
-       }
-       leaf CIR {
-         type uint64;
-         description
-           "Committed Information Rate in Kbps";
-       }
-       leaf CBS {
-         type uint64;
-         description
-           "Committed Burst Size in in KBytes";
-       }
-       leaf EIR {
-         type uint64;
-         /* Need to indicate that EIR is not supported by RFC 2697
-
-         must
-           '../bw-profile-type = "mef-10-bwp" or ' +
-           '../bw-profile-type = "rfc-2698-bwp" or ' +
-           '../bw-profile-type = "rfc-4115-bwp"'
-
-         must
-           '../bw-profile-type != "rfc-2697-bwp"'
-         */
-         description
-           "Excess Information Rate in Kbps
-            In case of RFC 2698, PIR = CIR + EIR";
-       }
-       leaf EBS {
-         type uint64;
-         description
-           "Excess Burst Size in KBytes.
-             In case of RFC 2698, PBS = CBS + EBS";
-       }
-       leaf color-aware {
-         type boolean;
-         description
-           "Indicates weather the color-mode is
-           color-aware or color-blind.";
-       }
-       leaf coupling-flag {
-         type boolean;
-         /* Need to indicate that Coupling Flag is defined only for MEF 10
-
-         must
-           '../bw-profile-type = "mef-10-bwp"'
-         */
-         description
-           "Coupling Flag.";
-       }
-     }
-
-     identity topology-role {
-       description
-         "The role of underlay topology: e.g., hub, spoke,
-         any-to-any.";
-     }
-
-     identity resilience {
-       description
-       "Placeholder for resilience information in data plane,
-       for future study. ";
-     }
-
-     identity access-role {
-       description
-       "Indicating whether the access is a working or protection access.";
-     }
-
-     identity root-primary {
-       base access-role;
-       description
-         "Designates the primary root UNI of an E-Tree service, and may also
-              designates the UNI access role of E-LINE and E-LAN service.";
-     }
-
-     identity root-backup {
-       base access-role;
-       description
-         "Designates the backup root UNI of an E-Tree service.";
-     }
-
-     identity leaf-access {
-       base access-role;
-       description
-         "Designates the leaf UNI of an E-Tree service.";
-     }
-
-     identity leaf-edge {
-       base access-role;
-       description "";
-     }
-
-     identity performance {
-       description
-       "Placeholder for performance information, for future study.";
-     }
-
-     identity encapsulation-type {
-       description
-       "Indicating how the service is encapsulated (to PW), e.g, raw or tag. ";
-     }
-     grouping pw-segement-bandwidth-profile-grouping {
-       description
-         "bandwidth profile grouping for PW segment. ";
-       leaf bandwidth-profile-type {
-         type etht-types:bandwidth-profile-type;
-         description
-           "The type of bandwidth profile.";
-       }
-       leaf CIR {
-         type uint64;
-         description
-           "Committed Information Rate in Kbps";
-       }
-       leaf CBS {
-         type uint64;
-         description
-           "Committed Burst Size in in KBytes";
-       }
-       leaf EIR {
-         type uint64;
-         /* Need to indicate that EIR is not supported by RFC 2697
-
-         must
-           '../bw-profile-type = "mef-10-bwp" or ' +
-           '../bw-profile-type = "rfc-2698-bwp" or ' +
-           '../bw-profile-type = "rfc-4115-bwp"'
-
-         must
-           '../bw-profile-type != "rfc-2697-bwp"'
-         */
-         description
-           "Excess Information Rate in Kbps
-            In case of RFC 2698, PIR = CIR + EIR";
-       }
-       leaf EBS {
-         type uint64;
-         description
-           "Excess Burst Size in KBytes.
-             In case of RFC 2698, PBS = CBS + EBS";
-       }
-     }
-         grouping eth-bandwidth {
-         description
-           "Available bandwith for ethernet.";
-         leaf eth-bandwidth {
-           type uint64{
-             range "0..10000000000";
-           }
-           units "Kbps";
-           description
-             "Available bandwith value expressed in kilobits per second";
-         }
-       }
-
-       grouping eth-label-restriction {
-         description
-           "Label Restriction for ethernet.";
-         leaf tag-type {
-           type etht-types:eth-tag-type;
-           description "VLAN tag type.";
-         }
-         leaf priority {
-           type uint8;
-           description "priority.";
-         }
-       }
-       grouping eth-label {
-         description
-           "Label for ethernet.";
-         leaf vlanid {
-           type etht-types:vlanid;
-             description
-               "VLAN tag id.";
-         }
-       }
-
-       grouping eth-label-step {
-         description "Label step for Ethernet VLAN";
-         leaf eth-step {
-           type uint16 {
-             range "1..4095";
-         }
-         default 1;
-         description
-           "Label step which represent possible increments for
-            an Ethernet VLAN tag.";
-         reference
-           "IEEE 802.1ad: Provider Bridges.";
-       }
-     }
-   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-l3-unicast-topology@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-l3-unicast-topology@2018-02-26.yang
new file mode 100644
index 000000000..39fcebd76
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-l3-unicast-topology@2018-02-26.yang
@@ -0,0 +1,359 @@
+module ietf-l3-unicast-topology {
+  yang-version 1.1;
+  namespace
+    "urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology";
+  prefix "l3t";
+  import ietf-network {
+    prefix "nw";
+  }
+  import ietf-network-topology {
+    prefix "nt";
+  }
+  import ietf-inet-types {
+    prefix "inet";
+  }
+  import ietf-routing-types {
+    prefix "rt-types";
+  }
+  organization
+    "IETF I2RS (Interface to the Routing System) Working Group";
+  contact
+    "WG Web:    <https://datatracker.ietf.org/wg/i2rs/>
+     WG List:   <mailto:i2rs@ietf.org>
+     Editor:    Alexander Clemm
+                <mailto:ludwig@clemm.org>
+     Editor:    Jan Medved
+                <mailto:jmedved@cisco.com>
+     Editor:    Robert Varga
+                <mailto:robert.varga@pantheon.tech>
+     Editor:    Xufeng Liu
+                <mailto:xufeng.liu.ietf@gmail.com>
+     Editor:    Nitin Bahadur
+                <mailto:nitin_bahadur@yahoo.com>
+     Editor:    Hariharan Ananthakrishnan
+                <mailto:hari@packetdesign.com>";
+  description
+    "This module defines a model for Layer 3 Unicast
+     topologies.
+
+     Copyright (c) 2018 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
+     (https://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of
+     RFC 8346; see the RFC itself for full legal notices.";
+  revision "2018-02-26" {
+    description
+      "Initial revision.";
+    reference
+      "RFC 8346: A YANG Data Model for Layer 3 Topologies";
+  }
+
+  identity flag-identity {
+    description "Base type for flags";
+  }
+
+  typedef l3-event-type {
+    type enumeration {
+      enum "add" {
+        description
+          "A Layer 3 node, link, prefix, or termination point has
+          been added";
+      }
+      enum "remove" {
+        description
+          "A Layer 3 node, link, prefix, or termination point has
+          been removed";
+      }
+      enum "update" {
+        description
+          "A Layer 3 node, link, prefix, or termination point has
+          been updated";
+      }
+    }
+    description "Layer 3 event type for notifications";
+  }
+
+  typedef prefix-flag-type {
+    type identityref {
+      base "flag-identity";
+    }
+    description "Prefix flag attributes";
+  }
+
+  typedef node-flag-type {
+    type identityref {
+      base "flag-identity";
+    }
+    description "Node flag attributes";
+  }
+
+  typedef link-flag-type {
+    type identityref {
+      base "flag-identity";
+    }
+    description "Link flag attributes";
+  }
+
+  typedef l3-flag-type {
+    type identityref {
+      base "flag-identity";
+    }
+    description "L3 flag attributes";
+  }
+
+  grouping l3-prefix-attributes {
+    description
+      "L3 prefix attributes";
+    leaf prefix {
+      type inet:ip-prefix;
+      description
+        "IP prefix value";
+    }
+    leaf metric {
+      type uint32;
+      description
+        "Prefix metric";
+    }
+    leaf-list flag {
+      type prefix-flag-type;
+      description
+        "Prefix flags";
+    }
+  }
+  grouping l3-unicast-topology-type {
+    description "Identifies the topology type to be L3 Unicast.";
+    container l3-unicast-topology {
+      presence "indicates L3 Unicast topology";
+      description
+        "The presence of the container node indicates L3 Unicast
+        topology";
+    }
+  }
+  grouping l3-topology-attributes {
+    description "Topology scope attributes";
+    container l3-topology-attributes {
+      description "Contains topology attributes";
+      leaf name {
+        type string;
+        description
+          "Name of the topology";
+      }
+      leaf-list flag {
+        type l3-flag-type;
+        description
+          "Topology flags";
+      }
+    }
+  }
+  grouping l3-node-attributes {
+    description "L3 node scope attributes";
+    container l3-node-attributes {
+      description
+        "Contains node attributes";
+      leaf name {
+        type inet:domain-name;
+        description
+          "Node name";
+      }
+      leaf-list flag {
+        type node-flag-type;
+        description
+          "Node flags";
+      }
+      leaf-list router-id {
+        type rt-types:router-id;
+        description
+          "Router-id for the node";
+      }
+      list prefix {
+        key "prefix";
+        description
+          "A list of prefixes along with their attributes";
+        uses l3-prefix-attributes;
+      }
+    }
+  }
+  grouping l3-link-attributes {
+    description
+      "L3 link scope attributes";
+    container l3-link-attributes {
+      description
+        "Contains link attributes";
+      leaf name {
+        type string;
+        description
+          "Link Name";
+      }
+      leaf-list flag {
+        type link-flag-type;
+        description
+          "Link flags";
+      }
+      leaf metric1 {
+        type uint64;
+        description
+            "Link Metric 1";
+      }
+      leaf metric2 {
+        type uint64;
+        description
+            "Link Metric 2";
+      }
+    }
+  }
+  grouping l3-termination-point-attributes {
+    description "L3 termination point scope attributes";
+    container l3-termination-point-attributes {
+      description
+        "Contains termination point attributes";
+      choice termination-point-type {
+        description
+          "Indicates the termination point type";
+        case ip {
+          leaf-list ip-address {
+            type inet:ip-address;
+            description
+              "IPv4 or IPv6 address.";
+          }
+        }
+        case unnumbered {
+          leaf unnumbered-id {
+            type uint32;
+            description
+              "Unnumbered interface identifier.
+               The identifier will correspond to the ifIndex value
+               of the interface, i.e., the ifIndex value of the
+               ifEntry that represents the interface in
+               implementations where the Interfaces Group MIB
+               (RFC 2863) is supported.";
+            reference
+              "RFC 2863: The Interfaces Group MIB";
+          }
+        }
+        case interface-name {
+          leaf interface-name {
+            type string;
+            description
+              "Name of the interface.  The name can (but does not
+               have to) correspond to an interface reference of a
+               containing node's interface, i.e., the path name of a
+               corresponding interface data node on the containing
+               node reminiscent of data type interface-ref defined
+               in RFC 8343. It should be noted that data type
+               interface-ref of RFC 8343 cannot be used directly,
+
+               as this data type is used to reference an interface
+               in a datastore of a single node in the network, not
+               to uniquely reference interfaces across a network.";
+            reference
+              "RFC 8343: A YANG Data Model for Interface Management";
+          }
+        }
+      }
+    }
+  }
+  augment "/nw:networks/nw:network/nw:network-types" {
+    description
+      "Introduces new network type for L3 Unicast topology";
+    uses l3-unicast-topology-type;
+  }
+  augment "/nw:networks/nw:network" {
+    when "nw:network-types/l3t:l3-unicast-topology" {
+      description
+        "Augmentation parameters apply only for networks with
+        L3 Unicast topology";
+    }
+    description
+        "L3 Unicast for the network as a whole";
+    uses l3-topology-attributes;
+  }
+  augment "/nw:networks/nw:network/nw:node" {
+    when "../nw:network-types/l3t:l3-unicast-topology" {
+      description
+        "Augmentation parameters apply only for networks with
+        L3 Unicast topology";
+    }
+    description
+        "L3 Unicast node-level attributes ";
+    uses l3-node-attributes;
+  }
+  augment "/nw:networks/nw:network/nt:link" {
+    when "../nw:network-types/l3t:l3-unicast-topology" {
+      description
+        "Augmentation parameters apply only for networks with
+        L3 Unicast topology";
+    }
+    description
+      "Augments topology link attributes";
+    uses l3-link-attributes;
+  }
+  augment "/nw:networks/nw:network/nw:node/"
+         +"nt:termination-point" {
+    when "../../nw:network-types/l3t:l3-unicast-topology" {
+      description
+        "Augmentation parameters apply only for networks with
+        L3 Unicast topology";
+    }
+    description "Augments topology termination point configuration";
+    uses l3-termination-point-attributes;
+  }
+  notification l3-node-event {
+    description
+      "Notification event for L3 node";
+    leaf l3-event-type {
+      type l3-event-type;
+      description
+        "Event type";
+    }
+    uses nw:node-ref;
+    uses l3-unicast-topology-type;
+    uses l3-node-attributes;
+  }
+  notification l3-link-event {
+    description
+      "Notification event for L3 link";
+    leaf l3-event-type {
+      type l3-event-type;
+      description
+        "Event type";
+    }
+    uses nt:link-ref;
+    uses l3-unicast-topology-type;
+    uses l3-link-attributes;
+  }
+  notification l3-prefix-event {
+    description
+      "Notification event for L3 prefix";
+    leaf l3-event-type {
+      type l3-event-type;
+      description
+        "Event type";
+    }
+    uses nw:node-ref;
+    uses l3-unicast-topology-type;
+    container prefix {
+      description
+        "Contains L3 prefix attributes";
+      uses l3-prefix-attributes;
+    }
+  }
+  notification termination-point-event {
+    description
+      "Notification event for L3 termination point";
+    leaf l3-event-type {
+      type l3-event-type;
+      description
+        "Event type";
+    }
+    uses nt:tp-ref;
+    uses l3-unicast-topology-type;
+    uses l3-termination-point-attributes;
+  }
+}
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-layer1-types@2022-10-14.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-layer1-types@2022-10-14.yang
deleted file mode 100644
index 188336931..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-layer1-types@2022-10-14.yang
+++ /dev/null
@@ -1,1414 +0,0 @@
-   module ietf-layer1-types {
-     yang-version 1.1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-layer1-types";
-     prefix "l1-types";
-
-     import ietf-routing-types {
-       prefix rt-types;
-       reference
-         "RFC 8294: Common YANG Data Types for the Routing Area";
-     }
-
-     organization
-       "IETF CCAMP Working Group";
-     contact
-       "WG Web: <https://datatracker.ietf.org/wg/ccamp/>
-        WG List: <mailto:ccamp@ietf.org>
-
-        Editor: Haomian Zheng
-                <mailto:zhenghaomian@huawei.com>
-
-        Editor: Italo Busi
-                <mailto:Italo.Busi@huawei.com>";
-
-     description
-       "This module defines Layer 1 types. The model fully conforms
-        to the Network Management Datastore Architecture (NMDA).
-
-        Copyright (c) 2022 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 Revised BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (https://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of RFC XXXX; see
-        the RFC itself for full legal notices.
-
-       The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
-       NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
-       'MAY', and 'OPTIONAL' in this document are to be interpreted as
-       described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
-
-
-
-
-       they appear in all capitals, as shown here.";
-
-     revision "2022-10-14" {
-       description
-         "Initial Version";
-       reference
-         "RFC XXXX: A YANG Data Model for Layer 1 Types";
-       // RFC Editor: replace XXXX with actual RFC number, update date
-       // information and remove this note
-     }
-
-     /*
-      * Identities
-      */
-
-     identity tributary-slot-granularity {
-       description
-         "Tributary Slot Granularity (TSG)";
-       reference
-         "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity tsg-1.25G {
-       base tributary-slot-granularity;
-       description
-         "1.25G tributary slot granularity";
-     }
-
-     identity tsg-2.5G {
-       base tributary-slot-granularity;
-       description
-         "2.5G tributary slot granularity";
-     }
-
-     identity tsg-5G {
-       base tributary-slot-granularity;
-       description
-         "5G tributary slot granularity";
-     }
-
-     identity odu-type {
-       description
-         "Base identity from which specific Optical Data Unit (ODU)
-         type is derived.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-
-
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity ODU0 {
-       base odu-type;
-       description
-         "ODU0 type (1.24Gb/s).";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity ODU1 {
-       base odu-type;
-       description
-         "ODU1 type (2.49Gb/s).";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity ODU2 {
-       base odu-type;
-       description
-         "ODU2 type (10.03Gb/s).";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity ODU2e {
-       base odu-type;
-       description
-         "ODU2e type (10.39Gb/s).";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-
-
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity ODU3 {
-       base odu-type;
-       description
-         "ODU3 type (40.31Gb/s).";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity ODU4 {
-       base odu-type;
-       description
-         "ODU4 type (104.79Gb/s).";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity ODUflex {
-       base odu-type;
-       description
-         "ODUflex type (flexible bit rate, not resizable).
-
-          It could be used for any type of ODUflex, including
-          ODUflex(CBR), ODUflex(GFP), ODUflex(GFP,n,k), ODUflex(IMP,s),
-          ODUflex(IMP) and ODUflex(FlexE-aware).";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity ODUflex-resizable {
-       base odu-type;
-       description
-         "ODUflex protocol (flexible bit rate, resizable).
-
-
-
-
-          It could be used only for ODUflex(GFP,n,k).";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity protocol {
-       description
-         "Base identity from which specific protocol is derived.";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity Ethernet {
-       base protocol;
-       description
-         "Ethernet protocol.";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity Fibre-Channel {
-       base protocol;
-       description
-         "Fibre-Channel (FC) protocol.";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity SDH {
-       base protocol;
-       description
-         "SDH protocol.";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity SONET {
-       base protocol;
-       description
-         "SONET protocol.";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-
-
-
-     identity client-signal {
-       description
-         "Base identity from which specific Constant Bit Rate (CBR)
-         client signal is derived";
-     }
-
-     identity coding-func {
-       description
-         "Base identity from which specific coding function
-          is derived.";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity ETH-1Gb {
-       base client-signal;
-       description
-         "Client signal type of 1GbE";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity ETH-10Gb-LAN {
-       base client-signal;
-       description
-         "Client signal type of ETH-10Gb-LAN (10.3 Gb/s)";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-          IEEE 802.3-2018, Clause 49: IEEE Standard for Ethernet";
-     }
-
-     identity ETH-10Gb-WAN {
-       base client-signal;
-       description
-         "Client signal type of ETH-10Gb-WAN (9.95 Gb/s)";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-
-
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-          IEEE 802.3-2018, Clause 50: IEEE Standard for Ethernet";
-     }
-
-     identity ETH-40Gb {
-       base client-signal;
-       description
-         "Client signal type of 40GbE";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity ETH-100Gb {
-       base client-signal;
-       description
-         "Client signal type of 100GbE";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity STM-1 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of STM-1;
-          STM-1 G.707 (N=1) coding function.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity STM-4 {
-       base client-signal;
-
-
-
-
-       base coding-func;
-       description
-         "Client signal type of STM-4;
-          STM-4 G.707 (N=4) coding function.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity STM-16 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of STM-16;
-          STM-16 G.707 (N=16) coding function.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity STM-64 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of STM-64;
-          STM-64 G.707 (N=64) coding function.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity STM-256 {
-       base client-signal;
-
-
-
-
-       base coding-func;
-       description
-         "Client signal type of STM-256;
-          STM-256 G.707 (N=256) coding function.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity OC-3 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of OC3;
-          OC-3 GR-253-CORE (N=3) coding function.";
-       reference
-         "ANSI T1.105-1995: Synchronous Optical Network (SONET)
-          Basic Description including Multiplex Structure, Rates,
-          and Formats
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity OC-12 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of OC12;
-          OC-12 GR-253-CORE (N=12) coding function.";
-       reference
-         "ANSI T1.105-1995: Synchronous Optical Network (SONET)
-          Basic Description including Multiplex Structure, Rates,
-          and Formats
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity OC-48 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of OC48;
-          OC-48 GR-253-CORE (N=48) coding function.";
-
-
-
-
-       reference
-         "ANSI T1.105-1995: Synchronous Optical Network (SONET)
-          Basic Description including Multiplex Structure, Rates,
-          and Formats
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity OC-192 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of OC192;
-          OC-192 GR-253-CORE (N=192) coding function.";
-       reference
-         "ANSI T1.105-1995: Synchronous Optical Network (SONET)
-          Basic Description including Multiplex Structure, Rates,
-          and Formats
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity OC-768 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of OC768;
-          OC-768 GR-253-CORE (N=768) coding function.";
-       reference
-         "ANSI T1.105-1995: Synchronous Optical Network (SONET)
-          Basic Description including Multiplex Structure, Rates,
-          and Formats
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity FC-100 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of Fibre Channel FC-100;
-          FC-100 FC-FS-2 (1.0625 Gb/s) coding function.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-
-
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity FC-200 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of Fibre Channel FC-200;
-          FC-200 FC-FS-2 (2.125 Gb/s) coding function.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity FC-400 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of Fibre Channel FC-400;
-          FC-400 FC-FS-2 (4.250 Gb/s) coding function.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity FC-800 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of Fibre Channel FC-800;
-          FC-800 FC-FS-2 (8.500 Gb/s) coding function.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-
-
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity FC-1200 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of Fibre Channel FC-1200;
-          FC-1200 FC-10GFC (10.51875 Gb/s) coding function.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity FC-1600 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of Fibre Channel FC-1600;
-          FC-1600 FC-FS-3 (14.025 Gb/s) coding function.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity FC-3200 {
-       base client-signal;
-       base coding-func;
-       description
-         "Client signal type of Fibre Channel FC-3200;
-          FC-3200 FC-FS-4 (28.05 Gb/s) coding function.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)
-
-
-
-
-          MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity FICON-4G {
-       base client-signal;
-       description
-         "Client signal type of Fibre Connection 4G";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity FICON-8G {
-       base client-signal;
-       description
-         "Client signal type of Fibre Connection 8G";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks
-
-          ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-          Transport Network (OTN)";
-     }
-
-     identity ETH-1000X {
-       base coding-func;
-       description
-         "1000BASE-X PCS clause 36 coding function.";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity ETH-10GW {
-       base coding-func;
-       description
-         "10GBASE-W (WAN PHY) PCS clause 49 and WIS clause 50
-          coding function.";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity ETH-10GR {
-       base coding-func;
-       description
-         "10GBASE-R (LAN PHY) PCS clause 49 coding function.";
-
-
-
-
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity ETH-40GR {
-       base coding-func;
-       description
-         "40GBASE-R PCS clause 82 coding function.";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity ETH-100GR {
-       base coding-func;
-       description
-         "100GBASE-R PCS clause 82 coding function.";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity optical-interface-func {
-       description
-         "Base identity from which optical-interface-function
-          is derived.";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity SX-PMD-1000 {
-       base optical-interface-func;
-       description
-         "SX-PMD-clause-38 Optical Interface function for
-         1000BASE-X PCS-36";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity LX-PMD-1000 {
-       base optical-interface-func;
-       description
-         "LX-PMD-clause-38 Optical Interface function for
-          1000BASE-X PCS-36";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity LX10-PMD-1000 {
-       base optical-interface-func;
-
-
-
-
-       description
-         "LX10-PMD-clause-59 Optical Interface function for
-          1000BASE-X PCS-36";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity BX10-PMD-1000 {
-       base optical-interface-func;
-       description
-         "BX10-PMD-clause-59 Optical Interface function for
-          1000BASE-X PCS-36";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity LW-PMD-10G {
-       base optical-interface-func;
-       description
-         "LW-PMD-clause-52 Optical Interface function for
-          10GBASE-W PCS-49-WIS-50";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity EW-PMD-10G {
-       base optical-interface-func;
-       description
-         "EW-PMD-clause-52 Optical Interface function for
-          10GBASE-W PCS-49-WIS-50";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity LR-PMD-10G {
-       base optical-interface-func;
-       description
-         "LR-PMD-clause-52 Optical Interface function for
-          10GBASE-R PCS-49";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity ER-PMD-10G {
-       base optical-interface-func;
-       description
-         "ER-PMD-clause-52 Optical Interface function for
-          10GBASE-R PCS-49";
-
-
-
-
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity LR4-PMD-40G {
-       base optical-interface-func;
-       description
-         "LR4-PMD-clause-87 Optical Interface function for
-          40GBASE-R PCS-82";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity ER4-PMD-40G {
-       base optical-interface-func;
-       description
-         "ER4-PMD-clause-87 Optical Interface function for
-          40GBASE-R PCS-82";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity FR-PMD-40G {
-       base optical-interface-func;
-       description
-         "FR-PMD-clause-89 Optical Interface function for
-          40GBASE-R PCS-82";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity LR4-PMD-100G {
-       base optical-interface-func;
-       description
-         "LR4-PMD-clause-88 Optical Interface function for
-          100GBASE-R PCS-82";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-     identity ER4-PMD-100G {
-       base optical-interface-func;
-       description
-         "ER4-PMD-clause-88 Optical Interface function for
-          100GBASE-R PCS-82";
-       reference
-         "MEF63: Subscriber Layer 1 Service Attributes";
-     }
-
-
-
-
-     /*
-      * Typedefs
-      */
-
-     typedef otn-tpn {
-       type uint16 {
-         range "1..4095";
-       }
-       description
-         "Tributary Port Number (TPN) for OTN. ";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks.";
-     }
-
-     typedef otn-ts {
-       type uint16 {
-         range "1..4095";
-       }
-       description
-         "Tributary Slot (TS) for OTN.";
-       reference
-         "RFC7139: GMPLS Signaling Extensions for Control of Evolving
-          G.709 Optical Transport Networks.";
-     }
-
-     typedef otn-label-range-type {
-       type enumeration {
-         enum trib-slot {
-           description
-             "Defines a range of OTN tributary slots (TS).";
-         }
-         enum trib-port {
-           description
-             "Defines a range of OTN tributary ports (TPN).";
-         }
-       }
-       description
-         "Defines the type of OTN label range: TS or TPN. ";
-     }
-
-     typedef gfp-k {
-       type enumeration {
-         enum 2 {
-           description
-             "The ODU2.ts rate (1,249,177.230 kbit/s) is used
-              to compute the rate of an ODUflex(GFP,n,2). ";
-         }
-
-
-
-
-         enum 3 {
-           description
-             "The ODU3.ts rate (1,254,470.354 kbit/s) is used
-              to compute the rate of an ODUflex(GFP,n,3). ";
-         }
-         enum 4 {
-           description
-             "The ODU4.ts rate (1,301,467.133 kbit/s) is used
-              to compute the rate of an ODUflex(GFP,n,4). ";
-         }
-       }
-       description
-         "The ODUk.ts used to compute the rate of an ODUflex(GFP,n,k)";
-       reference
-         "ITU-T G.709 v6.0 (06/2020), Table 7-8 and L.7: Interfaces for
-          the Optical Transport Network (OTN)";
-     }
-
-     typedef flexe-client-rate {
-       type union {
-         type uint16;
-         type enumeration {
-           enum "10G" {
-             description
-               "Represents a 10G FlexE Client signal (s=2)";
-           }
-           enum "40G" {
-             description
-               "Represents a 40G FlexE Client signal (s=8)";
-           }
-         }
-       }
-       description
-         "The FlexE Client signal rate (s x 5,156,250.000 kbit/s)
-          used to compute the rate of an ODUflex(IMP, s).
-          Valid values for s are s=2 (10G), s=4 (40G) and
-          s=5 x n (n x 25G).
-          In the first two cases an enumeration value
-          (either 10G or 40G) is used, while in the latter case
-          the value of n is used";
-       reference
-         "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the
-          Optical Transport Network (OTN)";
-     }
-
-     typedef odtu-flex-type {
-       type enumeration {
-         enum "2" {
-
-
-
-
-           description
-             "The ODTU2.ts ODTU type.";
-         }
-         enum "3" {
-           description
-             "The ODTU3.ts ODTU type.";
-         }
-         enum "4" {
-           description
-             "The ODTU4.ts ODTU type.";
-         }
-         enum "Cn" {
-           description
-             "The ODTUCn.ts ODTU type.";
-         }
-       }
-       description
-         "The type of Optical Data Tributary Unit (ODTU),
-         whose nominal bitrate is used to compute the number of
-         Tributary Slots (TS) required by an ODUflex LSP, according to
-         the (19-1a) and (20-1a) formulas defined in G.709.";
-       reference
-         "ITU-T G.709 v6.0 (06/2020), Table 7-7, clause 19.6 and
-         clause 20.5: Interfaces for the Optical Transport
-         Network (OTN)";
-     }
-
-     typedef bandwidth-scientific-notation {
-       type string {
-         pattern
-           '0(\.0?)?([eE](\+)?0?)?|'
-         + '[1-9](\.[0-9]{0,6})?[eE](\+)?(9[0-6]|[1-8][0-9]|0?[0-9])?';
-       }
-       units "bps";
-       description
-         "Bandwidth values, expressed using the scientific notation
-         in bits per second.
-
-         The encoding format is the external decimal-significant
-         character sequences specified in IEEE 754 and ISO/IEC C99
-         for 32-bit decimal floating-point numbers:
-         (-1)**(S) * 10**(Exponent) * (Significant),
-         where Significant uses 7 digits.
-
-         An implementation for this representation MAY use decimal32
-         or binary32. The range of the Exponent is from -95 to +96
-         for decimal32, and from -38 to +38 for binary32.
-         As a bandwidth value, the format is restricted to be
-
-
-
-
-         normalized, non-negative, and non-fraction:
-         n.dddddde{+}dd, N.DDDDDDE{+}DD, 0e0 or 0E0,
-         where 'd' and 'D' are decimal digits; 'n' and 'N' are
-         non-zero decimal digits; 'e' and 'E' indicate a power of ten.
-         Some examples are 0e0, 1e10, and 9.953e9.";
-       reference
-         "IEEE Std 754-2008: IEEE Standard for Floating-Point
-         Arithmetic.
-         ISO/IEC C99: Information technology - Programming
-         Languages - C.";
-     }
-
-     /*
-      * Groupings
-      */
-
-     grouping otn-link-bandwidth {
-       description
-         "Bandwidth attributes for OTN links";
-       container otn {
-         description
-           "Bandwidth attributes for OTN links";
-         list odulist {
-           key "odu-type";
-           description
-             "OTN bandwidth definition";
-           leaf odu-type {
-             type identityref {
-               base odu-type;
-             }
-             description "ODU type";
-           }
-           leaf number {
-             type uint16;
-             description "Number of ODUs";
-           }
-           leaf ts-number {
-             when 'derived-from-or-self(../odu-type,"ODUflex") or
-                   derived-from-or-self(../odu-type,
-                   "ODUflex-resizable")' {
-               description
-                 "Applicable when odu-type is ODUflex or
-                 ODUflex-resizable";
-             }
-             type uint16 {
-               range "1..4095";
-             }
-             description
-
-
-
-
-               "The number of Tributary Slots (TS) that
-               could be used by all the ODUflex LSPs.";
-           }
-         }
-       }
-     }
-
-     grouping otn-path-bandwidth {
-       description
-         "Bandwidth attributes for OTN paths.";
-       container otn {
-         description
-           "Bandwidth attributes for OTN paths.";
-         leaf odu-type {
-           type identityref {
-             base odu-type;
-           }
-           description "ODU type";
-         }
-         choice oduflex-type {
-           when 'derived-from-or-self(./odu-type,"ODUflex") or
-                 derived-from-or-self(./odu-type,
-                 "ODUflex-resizable")' {
-             description
-               "Applicable when odu-type is ODUflex or
-                ODUflex-resizable";
-           }
-           description
-             "Types of ODUflex used to compute the ODUflex
-              nominal bit rate.";
-           reference
-             "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the
-              Optical Transport Network (OTN)";
-           case generic {
-             leaf nominal-bit-rate {
-               type union {
-                 type l1-types:bandwidth-scientific-notation;
-                 type rt-types:bandwidth-ieee-float32;
-               }
-               mandatory true;
-               description
-                 "Nominal ODUflex bit rate.";
-             }
-           }
-           case cbr {
-             leaf client-type {
-               type identityref {
-                 base client-signal;
-
-
-
-
-               }
-               mandatory true;
-               description
-                 "The type of Constant Bit Rate (CBR) client signal
-                 of an ODUflex(CBR).";
-             }
-           }
-           case gfp-n-k {
-             leaf gfp-n {
-               type uint8 {
-                 range "1..80";
-               }
-               mandatory true;
-               description
-                 "The value of n for an ODUflex(GFP,n,k).";
-               reference
-                 "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7:
-                  Interfaces for the Optical Transport Network (OTN)";
-             }
-             leaf gfp-k {
-               type gfp-k;
-               description
-                 "The value of k for an ODUflex(GFP,n,k).
-
-                  If omitted, it is calculated from the value of gfp-n
-                  as described in Table 7-8 of G.709";
-               reference
-                 "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7:
-                  Interfaces for the Optical Transport Network (OTN)";
-             }
-           }
-           case flexe-client {
-             leaf flexe-client {
-               type flexe-client-rate;
-               mandatory true;
-               description
-                 "The rate of the FlexE-client for an ODUflex(IMP,s).";
-             }
-           }
-           case flexe-aware {
-             leaf flexe-aware-n {
-               type uint16;
-               mandatory true;
-               description
-                 "The rate of FlexE-aware client signal
-                  for ODUflex(FlexE-aware)";
-             }
-           }
-
-
-
-
-           case packet {
-             leaf opuflex-payload-rate {
-               type union {
-                 type l1-types:bandwidth-scientific-notation;
-                 type rt-types:bandwidth-ieee-float32;
-               }
-               mandatory true;
-               description
-                 "Either the GFP-F encapsulated packet client nominal
-                  bit rate for an ODUflex(GFP) or the 64b/66b encoded
-                  packet client nominal bit rate for an ODUflex(IMP).";
-             }
-           }
-         }
-       }
-     }
-
-     grouping otn-max-path-bandwidth {
-       description
-         "Maximum bandwidth attributes for OTN paths.";
-       container otn {
-         description
-           "Maximum bandwidth attributes for OTN paths.";
-         leaf odu-type {
-           type identityref {
-             base odu-type;
-           }
-           description "ODU type";
-         }
-         leaf max-ts-number {
-           when 'derived-from-or-self(../odu-type,"ODUflex") or
-                 derived-from-or-self(../odu-type,
-                 "ODUflex-resizable")' {
-             description
-               "Applicable when odu-type is ODUflex or
-                ODUflex-resizable";
-           }
-           type uint16 {
-             range "1..4095";
-           }
-           description
-             "The maximum number of Tributary Slots (TS) that could be
-             used  by an ODUflex LSP.";
-         }
-       }
-     }
-
-     grouping otn-label-range-info {
-
-
-
-
-       description
-         "Label range information for OTN.
-
-          This grouping SHOULD be used together with the
-          otn-label-start-end and otn-label-step groupings to provide
-          OTN technology-specific label information to the models which
-          use the label-restriction-info grouping defined in the module
-          ietf-te-types.";
-       container otn-label-range {
-         description
-           "Label range information for OTN.";
-         leaf range-type {
-           type otn-label-range-type;
-           description "The type of range (e.g., TPN or TS)
-             to which the label range applies";
-         }
-         leaf tsg {
-           type identityref {
-             base tributary-slot-granularity;
-           }
-           description
-             "Tributary slot granularity (TSG) to which the label range
-             applies.
-
-             This leaf MUST be present when the range-type is TS.
-
-             This leaf MAY be omitted when mapping an ODUk over an OTUk
-             Link. In this case the range-type is tpn, with only one
-             entry (ODUk), and the tpn range has only one value (1).";
-           reference
-             "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-             Transport Network (OTN)";
-         }
-         leaf-list odu-type-list {
-           type identityref {
-             base odu-type;
-           }
-           description
-             "List of ODU types to which the label range applies.
-
-             An Empty odu-type-list means that the label range
-             applies to all the supported ODU types.";
-         }
-         leaf priority {
-           type uint8 {
-             range 0..7;
-           }
-           description
-
-
-
-
-             "Priority in Interface Switching Capability
-             Descriptor (ISCD).";
-           reference
-             "RFC4203: OSPF Extensions in Support of Generalized
-             Multi-Protocol Label Switching (GMPLS)";
-         }
-       }
-     }
-
-     grouping otn-label-start-end {
-       description
-         "The OTN label-start or label-end used to specify an OTN label
-          range.
-
-          This grouping is dependent on the range-type defined in the
-          otn-label-range-info grouping.
-
-          This grouping SHOULD be used together with the
-          otn-label-range-info and otn-label-step groupings to provide
-          OTN technology-specific label information to the models which
-          use the label-restriction-info grouping defined in the module
-          ietf-te-types.";
-       container otn {
-         description
-           "Label start or label end for OTN.";
-         choice range-type {
-           description
-             "OTN label range type, either TPN range or TS range";
-           case trib-port {
-             leaf tpn {
-               when "../../../../otn-label-range/range-type =
-                     'trib-port'" {
-                 description
-                   "Valid only when range-type represented by
-                   trib-port";
-               }
-               type otn-tpn;
-               description
-                 "Tributary Port Number (TPN).";
-               reference
-                 "RFC7139: GMPLS Signaling Extensions for Control of
-                 Evolving G.709 Optical Transport Networks.";
-             }
-           }
-           case trib-slot {
-             leaf ts {
-               when "../../../../otn-label-range/range-type =
-                     'trib-slot'" {
-
-
-
-
-                 description
-                   "Valid only when range-type represented by
-                   trib-slot";
-               }
-               type otn-ts;
-               description
-                 "Tributary Slot (TS) number.";
-               reference
-                 "RFC7139: GMPLS Signaling Extensions for Control of
-                 Evolving G.709 Optical Transport Networks";
-             }
-           }
-         }
-       }
-     }
-
-     grouping otn-label-hop {
-       description "OTN Label";
-       reference
-         "RFC7139, section 6: GMPLS Signaling Extensions for Control of
-          Evolving G.709 Optical Transport Networks";
-       container otn {
-         description
-           "Label hop for OTN.";
-         leaf tpn {
-           type otn-tpn;
-           description
-             "Tributary Port Number (TPN).";
-           reference
-             "RFC7139: GMPLS Signaling Extensions for Control of
-             Evolving G.709 Optical Transport Networks.";
-         }
-         leaf tsg {
-           type identityref {
-             base tributary-slot-granularity;
-           }
-           description "Tributary Slot Granularity (TSG).";
-           reference
-             "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-             Transport Network (OTN)";
-         }
-         leaf ts-list {
-           type string {
-               pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?"
-                     + "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)";
-             }
-           description
-             "A list of available Tributary Slots (TS) ranging
-
-
-
-
-             between 1 and 4095. If multiple values or
-             ranges are given, they all MUST be disjoint
-             and MUST be in ascending order.
-             For example 1-20,25,50-1000.";
-           reference
-             "RFC 7139: GMPLS Signaling Extensions for Control
-             of Evolving G.709 Optical Transport Networks";
-         }
-       }
-     }
-
-     grouping otn-label-step {
-       description
-         "Label step for OTN.
-
-          This grouping is dependent on the range-type defined in the
-          otn-label-range-info grouping.
-
-          This grouping SHOULD be used together with the
-          otn-label-range-info and otn-label-start-end groupings to
-          provide OTN technology-specific label information to the
-          models which use the label-restriction-info grouping defined
-          in the module ietf-te-types.";
-       container otn {
-         description
-           "Label step for OTN";
-         choice range-type {
-           description
-             "OTN label range type, either TPN range or TS range";
-           case trib-port {
-             leaf tpn {
-               when "../../../otn-label-range/range-type =
-                     'trib-port'" {
-                 description
-                   "Valid only when range-type represented by
-                   trib-port";
-               }
-               type otn-tpn;
-               description
-                 "Label step which represents possible increments for
-                 Tributary Port Number (TPN).";
-               reference
-                 "RFC7139: GMPLS Signaling Extensions for Control of
-                 Evolving G.709 Optical Transport Networks.";
-             }
-           }
-           case trib-slot {
-             leaf ts {
-
-
-
-
-               when "../../../otn-label-range/range-type =
-                     'trib-slot'" {
-                 description
-                   "Valid only when range-type represented by
-                   trib-slot";
-               }
-               type otn-ts;
-               description
-                 "Label step which represents possible increments for
-                 Tributary Slot (TS) number.";
-               reference
-                 "RFC7139: GMPLS Signaling Extensions for Control of
-                 Evolving G.709 Optical Transport Networks.";
-             }
-           }
-         }
-       }
-     }
-   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-otn-topology@2023-07-06.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-otn-topology@2023-07-06.yang
deleted file mode 100644
index 587612e8e..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-otn-topology@2023-07-06.yang
+++ /dev/null
@@ -1,2405 +0,0 @@
-   module ietf-otn-topology {
-     yang-version 1.1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-otn-topology";
-     prefix "otnt";
-
-     import ietf-network {
-       prefix "nw";
-       reference "RFC 8345: A YANG Data Model for Network Topologies";
-     }
-
-     import ietf-network-topology {
-       prefix "nt";
-       reference "RFC 8345: A YANG Data Model for Network Topologies";
-     }
-
-     import ietf-te-topology {
-       prefix "tet";
-       reference
-         "RFC 8795: YANG Data Model for Traffic Engineering
-          (TE) Topologies";
-     }
-
-     import ietf-layer1-types {
-       prefix "l1-types";
-       reference
-         "I-D.ietf-ccamp-layer1-types: A YANG Data Model
-          for Layer 1 Types";
-     }
-
-     organization
-       "IETF CCAMP Working Group";
-     contact
-       "WG Web: <https://datatracker.ietf.org/wg/ccamp/>
-        WG List: <mailto:ccamp@ietf.org>
-
-        Editor: Haomian Zheng
-                <mailto:zhenghaomian@huawei.com>
-
-        Editor: Italo Busi
-                <mailto:italo.busi@huawei.com>
-
-        Editor: Xufeng Liu
-                <mailto:xufeng.liu.ietf@gmail.com>
-
-        Editor: Sergio Belotti
-                <mailto:sergio.belotti@nokia.com>
-
-
-
-
-        Editor: Oscar Gonzalez de Dios
-                <mailto:oscar.gonzalezdedios@telefonica.com>";
-
-     description
-       "This module defines a protocol independent Layer 1/ODU topology
-        data model. The model fully conforms
-        to the Network Management Datastore Architecture (NMDA).
-
-        Copyright (c) 2023 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 Revised BSD License
-        set forth in Section 4.c of the IETF Trust's Legal Provisions
-        Relating to IETF Documents
-        (https://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of RFC XXXX; see
-        the RFC itself for full legal notices.
-
-        The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
-        NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
-        'MAY', and 'OPTIONAL' in this document are to be interpreted as
-        described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
-        they appear in all capitals, as shown here.";
-
-     revision 2023-07-06 {
-       description
-         "Initial Revision";
-       reference
-         "RFC XXXX: A YANG Data Model for Optical Transport Network
-         Topology";
-       // RFC Ed.: replace XXXX with actual RFC number, update date
-       // information and remove this note
-     }
-
-     /*
-      * Groupings
-      */
-
-     grouping label-range-info {
-       description
-         "OTN technology-specific label range related information with
-         a presence container indicating that the label range is an
-         OTN technology-specific label range.
-
-         This grouping SHOULD be used together with the
-
-
-
-
-         otn-label-start-end and otn-label-step groupings to provide
-         OTN technology-specific label information to the models which
-         use the label-restriction-info grouping defined in the module
-         ietf-te-types.";
-       uses l1-types:otn-label-range-info {
-         refine otn-label-range {
-           presence
-             "Indicates the label range is an OTN label range.
-
-             This container MUST NOT be present if there are other
-             presence containers or attributes indicating another type
-             of label range.";
-         }
-       }
-     }
-
-    /*
-     * Data nodes
-     */
-
-     augment "/nw:networks/nw:network/nw:network-types/"
-           + "tet:te-topology" {
-       container otn-topology {
-         presence "indicates a topology type of Optical Transport
-                   Network (OTN)-electrical layer.";
-         description "OTN topology type";
-       }
-       description "augment network types to include OTN newtork";
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te"
-           + "/tet:te-node-attributes" {
-       when "../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description "Augment only for OTN network.";
-       }
-       description "Augment TE node attributes.";
-       container otn-node {
-         presence "The TE node is an OTN node.";
-         description
-           "Introduce new TE node type for OTN node.";
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes" {
-       when "../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-
-
-
-
-         description "Augment only for OTN network.";
-       }
-       description "Augment link configuration";
-
-       container otn-link {
-         description
-           "Attributes of the OTN Link.";
-         leaf odtu-flex-type {
-           type l1-types:odtu-flex-type;
-           description
-             "The type of Optical Data Tributary Unit (ODTU)
-             whose nominal bitrate is used to compute the number of
-             Tributary Slots (TS) required by the ODUflex LSPs set up
-             on this OTN Link.";
-         }
-         leaf tsg {
-           type identityref {
-             base l1-types:tributary-slot-granularity;
-           }
-           description "Tributary slot granularity.";
-           reference
-             "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
-             Transport Network (OTN)";
-         }
-         leaf distance {
-           type uint32;
-           description "distance in the unit of kilometers";
-         }
-       }
-       container client-svc {
-         presence
-           "When present, indicates that the Link supports Costant
-           Bit Rate (CBR) client signals.";
-         description
-           "Attributes of the Link supporting CBR client signals.";
-         leaf-list supported-client-signal {
-           type identityref {
-             base l1-types:client-signal;
-           }
-           min-elements 1;
-           description
-             "List of client signal types supported by the Link.";
-         }
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
-           + "tet:te" {
-
-
-
-
-       when "../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description "Augment only for OTN network";
-       }
-       description "OTN TP attributes config in ODU topology.";
-
-       container otn-ltp {
-         description
-           "Attributes of the OTN Link Termination Point (LTP).";
-         leaf odtu-flex-type {
-           type l1-types:odtu-flex-type;
-           description
-             "The type of Optical Data Tributary Unit (ODTU)
-             whose nominal bitrate is used to compute the number of
-             Tributary Slots (TS) required by the ODUflex LSPs set up
-             on this OTN Link Termination Point (LTP).";
-         }
-       }
-       container client-svc {
-         presence
-           "When present, indicates that the Link Termination Point
-           (LTP) supports Costant Bit Rate (CBR) client signals.";
-         description
-           "OTN LTP Service attributes.";
-         leaf-list supported-client-signal {
-           type identityref {
-             base l1-types:client-signal;
-           }
-           description
-             "List of client signal types supported by the LTP.";
-         }
-       }
-     }
-
-     /*
-      * Augment TE bandwidth
-      */
-
-     augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
-           + "tet:te/"
-           + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
-           + "tet:te-bandwidth/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-
-
-
-
-       description
-         "Augment maximum LSP TE bandwidth for the link termination
-          point (LTP).";
-       case otn {
-         uses l1-types:otn-max-path-bandwidth {
-           description
-             "The odtu-flex-type attribute of the OTN Link Termination
-             Point (LTP) is used to compute the number of Tributary
-             Slots (TS) required by the ODUflex LSPs set up on this
-             OTN LTP.";
-         }
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE bandwidth path constraints of the TE node
-          connectivity matrices.";
-       case otn {
-         uses l1-types:otn-link-bandwidth {
-           augment otn {
-             description
-               "Augment OTN link bandwidth information.";
-             leaf odtu-flex-type {
-               type l1-types:odtu-flex-type;
-               description
-                 "The type of Optical Data Tributary Unit (ODTU)
-                 whose nominal bitrate is used to compute the number of
-                 Tributary Slots (TS) required by the ODUflex LSPs
-                 set up along the underlay paths of these OTN
-                 connectivity matrices.";
-             }
-           }
-         }
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-
-
-
-
-           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE bandwidth path constraints of the
-          connectivity matrix entry.";
-       case otn {
-         uses l1-types:otn-link-bandwidth {
-           augment otn {
-             description
-               "Augment OTN link bandwidth information.";
-             leaf odtu-flex-type {
-               type l1-types:odtu-flex-type;
-               description
-                 "The type of Optical Data Tributary Unit (ODTU)
-                 whose nominal bitrate is used to compute the number of
-                 Tributary Slots (TS) required by the ODUflex LSPs
-                 set up along the underlay path of this OTN
-                 connectivity matrix entry.";
-             }
-           }
-         }
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE bandwidth path constraints of the TE node
-          connectivity matrices information source.";
-       case otn {
-         uses l1-types:otn-link-bandwidth {
-           augment otn {
-             description
-               "Augment OTN link bandwidth information.";
-             leaf odtu-flex-type {
-               type l1-types:odtu-flex-type;
-
-
-
-
-               description
-                 "The type of Optical Data Tributary Unit (ODTU)
-                 whose nominal bitrate is used to compute the number of
-                 Tributary Slots (TS) required by the ODUflex LSPs
-                 set up along the underlay paths of these OTN
-                 connectivity matrices.";
-             }
-           }
-         }
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE bandwidth path constraints of the
-          connectivity matrix entry information source";
-       case otn {
-         uses l1-types:otn-link-bandwidth {
-           augment otn {
-             description
-               "Augment OTN link bandwidth information.";
-             leaf odtu-flex-type {
-               type l1-types:odtu-flex-type;
-               description
-                 "The type of Optical Data Tributary Unit (ODTU)
-                 whose nominal bitrate is used to compute the number of
-                 Tributary Slots (TS) required by the ODUflex LSPs
-                 set up along the underlay path of this OTN
-                 connectivity matrix entry.";
-             }
-           }
-         }
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:client-layer-adaptation/tet:switching-capability/"
-           + "tet:te-bandwidth/tet:technology" {
-
-
-
-
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment client TE bandwidth of the tunnel termination point
-          (TTP)";
-       case otn {
-         uses l1-types:otn-link-bandwidth {
-           augment otn {
-             description
-               "Augment OTN link bandwidth information.";
-             leaf odtu-flex-type {
-               type l1-types:odtu-flex-type;
-               description
-                 "The type of Optical Data Tributary Unit (ODTU)
-                 whose nominal bitrate is used to compute the number of
-                 Tributary Slots (TS) required by the ODUflex LSPs
-                 terminated on this OTN Tunnel Termination Point
-                 (TTP).";
-             }
-           }
-         }
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/tet:path-constraints/"
-           + "tet:te-bandwidth/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE bandwidth path constraints for the TTP
-          Local Link Connectivities.";
-       case otn {
-         uses l1-types:otn-link-bandwidth {
-           augment otn {
-             description
-               "Augment OTN link bandwidth information.";
-             leaf odtu-flex-type {
-               type l1-types:odtu-flex-type;
-
-
-
-
-               description
-                 "The type of Optical Data Tributary Unit (ODTU)
-                 whose nominal bitrate is used to compute the number of
-                 Tributary Slots (TS) required by the ODUflex LSPs
-                 set up along the underlay paths of these OTN Local
-                 Link Connectivities.";
-             }
-           }
-         }
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/tet:path-constraints/"
-           + "tet:te-bandwidth/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE bandwidth path constraints for the TTP
-          Local Link Connectivity entry.";
-       case otn {
-         uses l1-types:otn-link-bandwidth {
-           augment otn {
-             description
-               "Augment OTN link bandwidth information.";
-             leaf odtu-flex-type {
-               type l1-types:odtu-flex-type;
-               description
-                 "The type of Optical Data Tributary Unit (ODTU)
-                 whose nominal bitrate is used to compute the number of
-                 Tributary Slots (TS) required by the ODUflex LSPs
-                 set up along the underlay path of this OTN Local
-                 Link Connectivyt entry.";
-             }
-           }
-         }
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
-
-
-
-
-           + "tet:te-bandwidth/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment maximum LSP TE bandwidth for the TE link.";
-       case otn {
-         uses l1-types:otn-max-path-bandwidth {
-           description
-             "The odtu-flex-type attribute of the OTN Link is used
-             to compute the number of Tributary Slots (TS) required
-             by the ODUflex LSPs set up on this OTN Link.";
-         }
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:max-link-bandwidth/"
-           + "tet:te-bandwidth" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment maximum TE bandwidth for the TE link";
-       uses l1-types:otn-link-bandwidth {
-         description
-           "The odtu-flex-type attribute of the OTN Link is used
-           to compute the number of Tributary Slots (TS) required
-           by the ODUflex LSPs set up on this OTN Link.";
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:max-resv-link-bandwidth/"
-           + "tet:te-bandwidth" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-
-
-
-
-       }
-       description
-         "Augment maximum reservable TE bandwidth for the TE link";
-       uses l1-types:otn-link-bandwidth {
-         description
-           "The odtu-flex-type attribute of the OTN Link is used
-           to compute the number of Tributary Slots (TS) required
-           by the ODUflex LSPs set up on this OTN Link.";
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:unreserved-bandwidth/"
-           + "tet:te-bandwidth" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment unreserved TE bandwidth for the TE Link";
-       uses l1-types:otn-link-bandwidth {
-         description
-           "The odtu-flex-type attribute of the OTN Link is used
-           to compute the number of Tributary Slots (TS) required
-           by the ODUflex LSPs set up on this OTN Link.";
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:interface-switching-capability/"
-           + "tet:max-lsp-bandwidth/"
-           + "tet:te-bandwidth/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment maximum LSP TE bandwidth for the TE link
-          information source";
-       case otn {
-         uses l1-types:otn-max-path-bandwidth {
-           description
-
-
-
-
-             "The odtu-flex-type attribute of the OTN Link is used
-             to compute the number of Tributary Slots (TS) required
-             by the ODUflex LSPs set up on this OTN Link.";
-         }
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:max-link-bandwidth/"
-           + "tet:te-bandwidth" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment maximum TE bandwidth for the TE link
-          information source";
-       uses l1-types:otn-link-bandwidth {
-         description
-           "The odtu-flex-type attribute of the OTN Link is used
-           to compute the number of Tributary Slots (TS) required
-           by the ODUflex LSPs set up on this OTN Link.";
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:max-resv-link-bandwidth/"
-           + "tet:te-bandwidth" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment maximum reservable TE bandwidth for the TE link
-          information-source";
-       uses l1-types:otn-link-bandwidth {
-         description
-           "The odtu-flex-type attribute of the OTN Link is used
-           to compute the number of Tributary Slots (TS) required
-           by the ODUflex LSPs set up on this OTN Link.";
-       }
-     }
-
-
-
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:unreserved-bandwidth/"
-           + "tet:te-bandwidth" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment unreserved TE bandwidth of the TE link
-          information source";
-       uses l1-types:otn-link-bandwidth {
-         description
-           "The odtu-flex-type attribute of the OTN Link is used
-           to compute the number of Tributary Slots (TS) required
-           by the ODUflex LSPs set up on this OTN Link.";
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:interface-switching-capability/"
-           + "tet:max-lsp-bandwidth/"
-           + "tet:te-bandwidth/tet:technology" {
-       description
-         "Augment maximum LSP TE bandwidth of the TE link
-          template";
-       case otn {
-         uses l1-types:otn-max-path-bandwidth {
-           description
-             "The odtu-flex-type attribute of the OTN Link is used
-             to compute the number of Tributary Slots (TS) required
-             by the ODUflex LSPs set up on the OTN Link that uses this
-             Link Template.";
-         }
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:max-link-bandwidth/"
-           + "tet:te-bandwidth" {
-       description
-         "Augment maximum TE bandwidth the TE link template";
-       uses l1-types:otn-link-bandwidth {
-         description
-
-
-
-
-           "The odtu-flex-type attribute of the OTN Link is used
-           to compute the number of Tributary Slots (TS) required
-           by the ODUflex LSPs set up on the OTN Link that uses this
-           Link Template.";
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:max-resv-link-bandwidth/"
-           + "tet:te-bandwidth" {
-       description
-         "Augment maximum reservable TE bandwidth for the TE link
-          template.";
-       uses l1-types:otn-link-bandwidth {
-         description
-           "The odtu-flex-type attribute of the OTN Link is used
-           to compute the number of Tributary Slots (TS) required
-           by the ODUflex LSPs set up on the OTN Link that uses this
-           Link Template.";
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:unreserved-bandwidth/"
-           + "tet:te-bandwidth" {
-       description
-         "Augment unreserved TE bandwidth the TE link template";
-       uses l1-types:otn-link-bandwidth {
-         description
-           "The odtu-flex-type attribute of the OTN Link is used
-           to compute the number of Tributary Slots (TS) required
-           by the ODUflex LSPs set up on the OTN Link that uses this
-           Link Template.";
-       }
-     }
-
-     /*
-      * Augment TE label range information
-      */
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-
-
-
-
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range information for the TE node
-          connectivity matrices.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:from/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range information for the source LTP
-          of the connectivity matrix entry.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:to/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range information for the destination LTP
-          of the connectivity matrix entry.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:connectivity-matrices/tet:label-restrictions/"
-           + "tet:label-restriction" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-
-
-
-
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range information for the TE node
-          connectivity matrices information source.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:from/tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range information for the source LTP
-          of the connectivity matrix entry information source.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:to/tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range information for the destination LTP
-          of the connectivity matrix entry information source.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-
-
-
-
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range information for the TTP
-          Local Link Connectivities.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range information for the TTP
-          Local Link Connectivity entry.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range information for the TE link.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       when "../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-
-
-
-
-       }
-       description
-         "Augment TE label range information for the TE link
-          information source.";
-       uses label-range-info;
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction" {
-       description
-         "Augment TE label range information for the TE link template.";
-       uses label-range-info;
-     }
-
-     /*
-      * Augment TE label
-      */
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range start for the TE node
-          connectivity matrices";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:label-restrictions/"
-           + "tet:label-restriction/tet:label-end/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-
-
-
-
-       }
-       description
-         "Augment TE label range end for the TE node
-          connectivity matrices";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:label-restrictions/"
-           + "tet:label-restriction/tet:label-step/"
-           + "tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range step for the TE node
-          connectivity matrices";
-       case otn {
-         uses l1-types:otn-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:underlay/tet:primary-path/tet:path-element/"
-           + "tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path of the
-          TE node connectivity matrices";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-
-
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:underlay/tet:backup-path/tet:path-element/"
-           + "tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path of the
-          TE node connectivity matrices";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-exclude-objects/"
-           + "tet:route-object-exclude-object/"
-           + "tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects excluded
-          by the path computation of the TE node connectivity
-          matrices";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-
-
-
-
-           + "tet:explicit-route-include-objects/"
-           + "tet:route-object-include-object/"
-           + "tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects included
-          by the path computation of the TE node connectivity
-          matrices";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:path-properties/tet:path-route-objects/"
-           + "tet:path-route-object/tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the computed path route objects
-          of the TE node connectivity matrices";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:from/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-
-
-
-
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range start for the source LTP
-          of the connectivity matrix entry.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:from/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range end for the source LTP
-          of the connectivity matrix entry.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:from/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/"
-           + "tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-
-
-
-
-         "Augment TE label range step for the source LTP
-          of the connectivity matrix entry.";
-       case otn {
-         uses l1-types:otn-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:to/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range start for the destination LTP
-          of the connectivity matrix entry.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:to/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range end for the destination LTP
-          of the connectivity matrix entry.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-
-
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:to/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/"
-           + "tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range step for the destination LTP
-          of the connectivity matrix entry.";
-       case otn {
-         uses l1-types:otn-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:underlay/tet:primary-path/tet:path-element/"
-           + "tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path
-          of the connectivity matrix entry.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:underlay/tet:backup-path/tet:path-element/"
-           + "tet:type/tet:label/tet:label-hop/"
-           + "tet:te-label/tet:technology" {
-
-
-
-
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path
-          of the connectivity matrix entry.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:optimizations/"
-           + "tet:algorithm/tet:metric/tet:optimization-metric/"
-           + "tet:explicit-route-exclude-objects/"
-           + "tet:route-object-exclude-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects excluded
-          by the path computation of the connectivity matrix entry.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/tet:optimizations/"
-           + "tet:algorithm/tet:metric/tet:optimization-metric/"
-           + "tet:explicit-route-include-objects/"
-           + "tet:route-object-include-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-
-
-
-
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects included
-          by the path computation of the connectivity matrix entry.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:te-node-attributes/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:path-properties/tet:path-route-objects/"
-           + "tet:path-route-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the computed path route objects
-          of the connectivity matrix entry.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:connectivity-matrices/tet:label-restrictions/"
-           + "tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range start for the TE node connectivity
-          matrices information source.";
-       case otn {
-
-
-
-
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:connectivity-matrices/tet:label-restrictions/"
-           + "tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range end for the TE node connectivity
-          matrices information source.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:connectivity-matrices/tet:label-restrictions/"
-           + "tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       when "../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range step for the TE node connectivity
-          matrices information source.";
-       case otn {
-         uses l1-types:otn-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-
-
-
-
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path
-          of the TE node connectivity matrices of the information
-          source entry.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path
-          of the TE node connectivity matrices of the information
-          source entry.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-exclude-objects/"
-           + "tet:route-object-exclude-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-
-
-
-
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects excluded
-          by the path computation of the TE node connectivity matrices
-          information source.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-include-objects/"
-           + "tet:route-object-include-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects included
-          by the path computation of the TE node connectivity matrices
-          information source.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:path-properties/tet:path-route-objects/"
-           + "tet:path-route-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the computed path route objects
-
-
-
-
-          of the TE node connectivity matrices information source.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:from/tet:label-restrictions/"
-           + "tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range start for the source LTP
-          of the connectivity matrix entry information source.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:from/tet:label-restrictions/"
-           + "tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range end for the source LTP
-          of the connectivity matrix entry information source.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-
-
-
-
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:from/tet:label-restrictions/"
-           + "tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range step for the source LTP
-          of the connectivity matrix entry information source.";
-       case otn {
-         uses l1-types:otn-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:to/tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range start for the destination LTP
-          of the connectivity matrix entry information source.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:to/tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-
-
-
-
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range end for the destination LTP
-          of the connectivity matrix entry information source.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:to/tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range step for the destination LTP
-          of the connectivity matrix entry information source.";
-       case otn {
-         uses l1-types:otn-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path
-          of the connectivity matrix entry information source.";
-       case otn {
-
-
-
-
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path
-          of the connectivity matrix entry information source.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-exclude-objects/"
-           + "tet:route-object-exclude-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects excluded
-          by the path computation of the connectivity matrix entry
-          information source.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-
-
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-include-objects/"
-           + "tet:route-object-include-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects included
-          by the path computation of the connectivity matrix entry
-          information source.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:information-source-entry/tet:connectivity-matrices/"
-           + "tet:connectivity-matrix/"
-           + "tet:path-properties/tet:path-route-objects/"
-           + "tet:path-route-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the computed path route objects
-          of the connectivity matrix entry information source.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-         + "tet:tunnel-termination-point/"
-         + "tet:local-link-connectivities/"
-
-
-
-
-         + "tet:label-restrictions/tet:label-restriction/"
-         + "tet:label-start/"
-         + "tet:te-label/tet:technology" {
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range start for the TTP
-          Local Link Connectivities.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/"
-           + "tet:te-label/tet:technology"{
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range end for the TTP
-          Local Link Connectivities.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/"
-           + "tet:technology"{
-       when "../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-
-
-
-
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range step for the TTP
-          Local Link Connectivities.";
-       case otn {
-         uses l1-types:otn-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path
-          of the TTP Local Link Connectivities.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path
-          of the TTP Local Link Connectivities.";
-       case otn {
-
-
-
-
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-exclude-objects/"
-           + "tet:route-object-exclude-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects excluded
-          by the path computation of the TTP Local Link
-          Connectivities.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-include-objects/"
-           + "tet:route-object-include-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects included
-          by the path computation of the TTP Local Link
-          Connectivities.";
-       case otn {
-
-
-
-
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:path-properties/tet:path-route-objects/"
-           + "tet:path-route-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the computed path route objects
-          of the TTP Local Link Connectivities.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range start for the TTP
-          Local Link Connectivity entry.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-
-
-
-
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       when "../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range end for the TTP
-          Local Link Connectivity entry.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range step for the TTP
-          Local Link Connectivity entry.";
-       case otn {
-         uses l1-types:otn-label-step;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-
-
-
-
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path
-          of the TTP Local Link Connectivity entry.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path
-          of the TTP Local Link Connectivity entry.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-exclude-objects/"
-           + "tet:route-object-exclude-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-
-
-
-
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects excluded
-          by the path computation of the TTP Local Link
-          Connectivity entry.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:optimizations/tet:algorithm/tet:metric/"
-           + "tet:optimization-metric/"
-           + "tet:explicit-route-include-objects/"
-           + "tet:route-object-include-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the explicit route objects included
-          by the path computation of the TTP Local Link
-          Connectivity entry.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nw:node/tet:te/"
-           + "tet:tunnel-termination-point/"
-           + "tet:local-link-connectivities/"
-           + "tet:local-link-connectivity/"
-           + "tet:path-properties/tet:path-route-objects/"
-           + "tet:path-route-object/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-
-
-
-
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the computed path route objects
-          of the TTP Local Link Connectivity entry.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay primary path
-          of the TE link.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       when "../../../../../../../../"
-          + "nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label hop for the underlay backup path
-          of the TE link.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-
-
-
-
-           + "tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range start for the TE link.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range end for the TE link.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range step for the TE link.";
-       case otn {
-         uses l1-types:otn-label-step;
-       }
-
-
-
-
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range start for the TE link
-          information source.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       when "../../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-       description
-         "Augment TE label range end for the TE link
-          information source.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/nw:network/nt:link/tet:te/"
-           + "tet:information-source-entry/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       when "../../../../../../nw:network-types/tet:te-topology/"
-          + "otnt:otn-topology" {
-         description
-           "Augmentation parameters apply only for networks with
-            OTN topology type.";
-       }
-
-
-
-
-       description
-         "Augment TE label range step for the TE link
-          information source.";
-       case otn {
-         uses l1-types:otn-label-step;
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       description
-         "Augment TE label hop for the underlay primary path
-          of the TE link template.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
-           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
-       description
-         "Augment TE label hop for the underlay backup path
-          of the TE link template.";
-       case otn {
-         uses l1-types:otn-label-hop;
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-start/tet:te-label/tet:technology" {
-       description
-         "Augment TE label range start for the TE link template.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-end/tet:te-label/tet:technology" {
-       description
-
-
-
-
-         "Augment TE label range end for the TE link template.";
-       case otn {
-         uses l1-types:otn-label-start-end;
-       }
-     }
-
-     augment "/nw:networks/tet:te/tet:templates/"
-           + "tet:link-template/tet:te-link-attributes/"
-           + "tet:label-restrictions/tet:label-restriction/"
-           + "tet:label-step/tet:technology" {
-       description
-         "Augment TE label range step for the TE link template.";
-       case otn {
-         uses l1-types:otn-label-step;
-       }
-     }
-   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-packet-types@2020-06-10.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-packet-types@2020-06-10.yang
deleted file mode 100644
index 8e7d4aafa..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-packet-types@2020-06-10.yang
+++ /dev/null
@@ -1,475 +0,0 @@
-module ietf-te-packet-types {
-  yang-version 1.1;
-  namespace "urn:ietf:params:xml:ns:yang:ietf-te-packet-types";
-  prefix te-packet-types;
-
-  /* Import TE generic types */
-
-  import ietf-te-types {
-    prefix te-types;
-    reference
-      "RFC 8776: Common YANG Data Types for Traffic Engineering";
-  }
-
-  organization
-    "IETF Traffic Engineering Architecture and Signaling (TEAS)
-     Working Group";
-  contact
-    "WG Web:   <https://datatracker.ietf.org/wg/teas/>
-     WG List:  <mailto:teas@ietf.org>
-
-     Editor:   Tarek Saad
-               <mailto:tsaad@juniper.net>
-
-     Editor:   Rakesh Gandhi
-               <mailto:rgandhi@cisco.com>
-
-     Editor:   Vishnu Pavan Beeram
-               <mailto:vbeeram@juniper.net>
-
-     Editor:   Xufeng Liu
-               <mailto:xufeng.liu.ietf@gmail.com>
-
-     Editor:   Igor Bryskin
-               <mailto:i_bryskin@yahoo.com>";
-  description
-    "This YANG module contains a collection of generally useful YANG
-     data type definitions specific to MPLS TE.  The model fully
-     conforms to the Network Management Datastore Architecture
-     (NMDA).
-
-     Copyright (c) 2020 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
-     (https://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 8776; see the
-     RFC itself for full legal notices.";
-
-  revision 2020-06-10 {
-    description
-      "Latest revision of TE MPLS types.";
-    reference
-      "RFC 8776: Common YANG Data Types for Traffic Engineering";
-  }
-
-  /**
-   * Typedefs
-   */
-
-  typedef te-bandwidth-requested-type {
-    type enumeration {
-      enum specified {
-        description
-          "Bandwidth is explicitly specified.";
-      }
-      enum auto {
-        description
-          "Bandwidth is automatically computed.";
-      }
-    }
-    description
-      "Enumerated type for specifying whether bandwidth is
-       explicitly specified or automatically computed.";
-  }
-
-  typedef te-class-type {
-    type uint8;
-    description
-      "Diffserv-TE Class-Type.  Defines a set of Traffic Trunks
-       crossing a link that is governed by a specific set of
-       bandwidth constraints.  Class-Type is used for the purposes
-       of link bandwidth allocation, constraint-based routing, and
-       admission control.";
-    reference
-      "RFC 4124: Protocol Extensions for Support of Diffserv-aware
-       MPLS Traffic Engineering";
-  }
-
-  typedef bc-type {
-    type uint8 {
-      range "0..7";
-    }
-    description
-      "Diffserv-TE bandwidth constraints as defined in RFC 4124.";
-    reference
-      "RFC 4124: Protocol Extensions for Support of Diffserv-aware
-       MPLS Traffic Engineering";
-  }
-
-  typedef bandwidth-kbps {
-    type uint64;
-    units "Kbps";
-    description
-      "Bandwidth values, expressed in kilobits per second.";
-  }
-
-  typedef bandwidth-mbps {
-    type uint64;
-    units "Mbps";
-    description
-      "Bandwidth values, expressed in megabits per second.";
-  }
-
-  typedef bandwidth-gbps {
-    type uint64;
-    units "Gbps";
-    description
-      "Bandwidth values, expressed in gigabits per second.";
-  }
-
-  identity backup-protection-type {
-    description
-      "Base identity for the backup protection type.";
-  }
-
-  identity backup-protection-link {
-    base backup-protection-type;
-    description
-      "Backup provides link protection only.";
-  }
-
-  identity backup-protection-node-link {
-    base backup-protection-type;
-    description
-      "Backup offers node (preferred) or link protection.";
-  }
-
-  identity bc-model-type {
-    description
-      "Base identity for the Diffserv-TE Bandwidth Constraints
-       Model type.";
-    reference
-      "RFC 4124: Protocol Extensions for Support of Diffserv-aware
-       MPLS Traffic Engineering";
-  }
-
-  identity bc-model-rdm {
-    base bc-model-type;
-    description
-      "Russian Dolls Bandwidth Constraints Model type.";
-    reference
-      "RFC 4127: Russian Dolls Bandwidth Constraints Model for
-                 Diffserv-aware MPLS Traffic Engineering";
-  }
-
-  identity bc-model-mam {
-    base bc-model-type;
-    description
-      "Maximum Allocation Bandwidth Constraints Model type.";
-    reference
-      "RFC 4125: Maximum Allocation Bandwidth Constraints Model for
-                 Diffserv-aware MPLS Traffic Engineering";
-  }
-
-  identity bc-model-mar {
-    base bc-model-type;
-    description
-      "Maximum Allocation with Reservation Bandwidth Constraints
-       Model type.";
-    reference
-      "RFC 4126: Max Allocation with Reservation Bandwidth
-       Constraints Model for Diffserv-aware MPLS Traffic Engineering
-       & Performance Comparisons";
-  }
-
-  grouping performance-metrics-attributes-packet {
-    description
-      "Contains PM attributes.";
-    uses te-types:performance-metrics-attributes {
-      augment "performance-metrics-one-way" {
-        leaf one-way-min-delay {
-          type uint32 {
-            range "0..16777215";
-          }
-          description
-            "One-way minimum delay or latency in microseconds.";
-        }
-        leaf one-way-min-delay-normality {
-          type te-types:performance-metrics-normality;
-          default "normal";
-          description
-            "One-way minimum delay or latency normality.";
-        }
-        leaf one-way-max-delay {
-          type uint32 {
-            range "0..16777215";
-          }
-          description
-            "One-way maximum delay or latency in microseconds.";
-        }
-        leaf one-way-max-delay-normality {
-          type te-types:performance-metrics-normality;
-          default "normal";
-          description
-            "One-way maximum delay or latency normality.";
-        }
-        leaf one-way-delay-variation {
-          type uint32 {
-            range "0..16777215";
-          }
-          description
-            "One-way delay variation in microseconds.";
-          reference
-            "RFC 5481: Packet Delay Variation Applicability
-             Statement, Section 4.2";
-        }
-        leaf one-way-delay-variation-normality {
-          type te-types:performance-metrics-normality;
-          default "normal";
-          description
-            "One-way delay variation normality.";
-          reference
-            "RFC 7471: OSPF Traffic Engineering (TE) Metric
-             Extensions
-             RFC 7823: Performance-Based Path Selection for
-             Explicitly Routed Label Switched Paths (LSPs) Using
-             TE Metric Extensions
-             RFC 8570: IS-IS Traffic Engineering (TE) Metric
-             Extensions";
-        }
-        leaf one-way-packet-loss {
-          type decimal64 {
-            fraction-digits 6;
-            range "0..50.331642";
-          }
-          description
-            "One-way packet loss as a percentage of the total traffic
-             sent over a configurable interval.  The finest precision
-             is 0.000003%, where the maximum is 50.331642%.";
-          reference
-            "RFC 8570: IS-IS Traffic Engineering (TE) Metric
-             Extensions, Section 4.4";
-        }
-        leaf one-way-packet-loss-normality {
-          type te-types:performance-metrics-normality;
-          default "normal";
-          description
-            "Packet loss normality.";
-          reference
-            "RFC 7471: OSPF Traffic Engineering (TE) Metric
-             Extensions
-             RFC 7823: Performance-Based Path Selection for
-             Explicitly Routed Label Switched Paths (LSPs) Using
-             TE Metric Extensions
-             RFC 8570: IS-IS Traffic Engineering (TE) Metric
-             Extensions";
-        }
-        description
-          "PM one-way packet-specific augmentation for a generic PM
-           grouping.";
-      }
-      augment "performance-metrics-two-way" {
-        leaf two-way-min-delay {
-          type uint32 {
-            range "0..16777215";
-          }
-          default "0";
-          description
-            "Two-way minimum delay or latency in microseconds.";
-        }
-        leaf two-way-min-delay-normality {
-          type te-types:performance-metrics-normality;
-          default "normal";
-          description
-            "Two-way minimum delay or latency normality.";
-          reference
-            "RFC 7471: OSPF Traffic Engineering (TE) Metric
-             Extensions
-             RFC 7823: Performance-Based Path Selection for
-             Explicitly Routed Label Switched Paths (LSPs) Using
-             TE Metric Extensions
-             RFC 8570: IS-IS Traffic Engineering (TE) Metric
-             Extensions";
-        }
-        leaf two-way-max-delay {
-          type uint32 {
-            range "0..16777215";
-          }
-          default "0";
-          description
-            "Two-way maximum delay or latency in microseconds.";
-        }
-        leaf two-way-max-delay-normality {
-          type te-types:performance-metrics-normality;
-          default "normal";
-          description
-            "Two-way maximum delay or latency normality.";
-          reference
-            "RFC 7471: OSPF Traffic Engineering (TE) Metric
-             Extensions
-             RFC 7823: Performance-Based Path Selection for
-             Explicitly Routed Label Switched Paths (LSPs) Using
-             TE Metric Extensions
-             RFC 8570: IS-IS Traffic Engineering (TE) Metric
-             Extensions";
-        }
-        leaf two-way-delay-variation {
-          type uint32 {
-            range "0..16777215";
-          }
-          default "0";
-          description
-            "Two-way delay variation in microseconds.";
-          reference
-            "RFC 5481: Packet Delay Variation Applicability
-             Statement, Section 4.2";
-        }
-        leaf two-way-delay-variation-normality {
-          type te-types:performance-metrics-normality;
-          default "normal";
-          description
-            "Two-way delay variation normality.";
-          reference
-            "RFC 7471: OSPF Traffic Engineering (TE) Metric
-             Extensions
-             RFC 7823: Performance-Based Path Selection for
-             Explicitly Routed Label Switched Paths (LSPs) Using
-             TE Metric Extensions
-             RFC 8570: IS-IS Traffic Engineering (TE) Metric
-             Extensions";
-        }
-        leaf two-way-packet-loss {
-          type decimal64 {
-            fraction-digits 6;
-            range "0..50.331642";
-          }
-          default "0";
-          description
-            "Two-way packet loss as a percentage of the total traffic
-             sent over a configurable interval.  The finest precision
-             is 0.000003%.";
-        }
-        leaf two-way-packet-loss-normality {
-          type te-types:performance-metrics-normality;
-          default "normal";
-          description
-            "Two-way packet loss normality.";
-        }
-        description
-          "PM two-way packet-specific augmentation for a generic PM
-           grouping.";
-        reference
-          "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
-           RFC 7823: Performance-Based Path Selection for
-           Explicitly Routed Label Switched Paths (LSPs) Using
-           TE Metric Extensions
-           RFC 8570: IS-IS Traffic Engineering (TE) Metric
-           Extensions";
-      }
-    }
-  }
-
-  grouping one-way-performance-metrics-packet {
-    description
-      "One-way packet PM throttle grouping.";
-    leaf one-way-min-delay {
-      type uint32 {
-        range "0..16777215";
-      }
-      default "0";
-      description
-        "One-way minimum delay or latency in microseconds.";
-    }
-    leaf one-way-max-delay {
-      type uint32 {
-        range "0..16777215";
-      }
-      default "0";
-      description
-        "One-way maximum delay or latency in microseconds.";
-    }
-    leaf one-way-delay-variation {
-      type uint32 {
-        range "0..16777215";
-      }
-      default "0";
-      description
-        "One-way delay variation in microseconds.";
-    }
-    leaf one-way-packet-loss {
-      type decimal64 {
-        fraction-digits 6;
-        range "0..50.331642";
-      }
-      default "0";
-      description
-        "One-way packet loss as a percentage of the total traffic
-         sent over a configurable interval.  The finest precision is
-         0.000003%.";
-    }
-  }
-
-  grouping two-way-performance-metrics-packet {
-    description
-      "Two-way packet PM throttle grouping.";
-    leaf two-way-min-delay {
-      type uint32 {
-        range "0..16777215";
-      }
-      default "0";
-      description
-        "Two-way minimum delay or latency in microseconds.";
-    }
-    leaf two-way-max-delay {
-      type uint32 {
-        range "0..16777215";
-      }
-      default "0";
-      description
-        "Two-way maximum delay or latency in microseconds.";
-    }
-    leaf two-way-delay-variation {
-      type uint32 {
-        range "0..16777215";
-      }
-      default "0";
-      description
-        "Two-way delay variation in microseconds.";
-    }
-    leaf two-way-packet-loss {
-      type decimal64 {
-        fraction-digits 6;
-        range "0..50.331642";
-      }
-      default "0";
-      description
-        "Two-way packet loss as a percentage of the total traffic
-         sent over a configurable interval.  The finest precision is
-         0.000003%.";
-    }
-  }
-
-  grouping performance-metrics-throttle-container-packet {
-    description
-      "Packet PM threshold grouping.";
-    uses te-types:performance-metrics-throttle-container {
-      augment "throttle/threshold-out" {
-        uses one-way-performance-metrics-packet;
-        uses two-way-performance-metrics-packet;
-        description
-          "PM threshold-out packet augmentation for a
-           generic grouping.";
-      }
-      augment "throttle/threshold-in" {
-        uses one-way-performance-metrics-packet;
-        uses two-way-performance-metrics-packet;
-        description
-          "PM threshold-in packet augmentation for a
-           generic grouping.";
-      }
-      augment "throttle/threshold-accelerated-advertisement" {
-        uses one-way-performance-metrics-packet;
-        uses two-way-performance-metrics-packet;
-        description
-          "PM accelerated advertisement packet augmentation for a
-           generic grouping.";
-      }
-    }
-  }
-}
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-topology@2020-08-06.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-topology@2020-08-06.yang
deleted file mode 100644
index 6d76a77b2..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-topology@2020-08-06.yang
+++ /dev/null
@@ -1,1952 +0,0 @@
-module ietf-te-topology {
-  yang-version 1.1;
-  namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology";
-  prefix tet;
-
-  import ietf-yang-types {
-    prefix yang;
-    reference
-      "RFC 6991: Common YANG Data Types";
-  }
-  import ietf-inet-types {
-    prefix inet;
-    reference
-      "RFC 6991: Common YANG Data Types";
-  }
-  import ietf-te-types {
-    prefix te-types;
-    reference
-      "RFC 8776: Common YANG Data Types for Traffic Engineering";
-  }
-  import ietf-network {
-    prefix nw;
-    reference
-      "RFC 8345: A YANG Data Model for Network Topologies";
-  }
-  import ietf-network-topology {
-    prefix nt;
-    reference
-      "RFC 8345: A YANG Data Model for Network Topologies";
-  }
-
-  organization
-    "IETF Traffic Engineering Architecture and Signaling (TEAS)
-     Working Group";
-  contact
-    "WG Web:   <https://datatracker.ietf.org/wg/teas/>
-     WG List:  <mailto:teas@ietf.org>
-
-     Editor:   Xufeng Liu
-               <mailto:xufeng.liu.ietf@gmail.com>
-
-     Editor:   Igor Bryskin
-               <mailto:i_bryskin@yahoo.com>
-
-     Editor:   Vishnu Pavan Beeram
-               <mailto:vbeeram@juniper.net>
-
-     Editor:   Tarek Saad
-               <mailto:tsaad@juniper.net>
-
-     Editor:   Himanshu Shah
-               <mailto:hshah@ciena.com>
-
-     Editor:   Oscar Gonzalez de Dios
-               <mailto:oscar.gonzalezdedios@telefonica.com>";
-  description
-    "This YANG module defines a TE topology model for representing,
-     retrieving, and manipulating technology-agnostic TE topologies.
-
-     Copyright (c) 2020 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
-     (https://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 8795; see the
-     RFC itself for full legal notices.";
-
-  revision 2020-08-06 {
-    description
-      "Initial revision.";
-    reference
-      "RFC 8795: YANG Data Model for Traffic Engineering (TE)
-       Topologies";
-  }
-
-  /*
-   * Features
-   */
-
-  feature nsrlg {
-    description
-      "This feature indicates that the system supports NSRLGs
-       (Non-Shared Risk Link Groups).";
-  }
-
-  feature te-topology-hierarchy {
-    description
-      "This feature indicates that the system allows an underlay
-       and/or overlay TE topology hierarchy.";
-  }
-
-  feature template {
-    description
-      "This feature indicates that the system supports
-       template configuration.";
-  }
-
-  /*
-   * Typedefs
-   */
-
-  typedef geographic-coordinate-degree {
-    type decimal64 {
-      fraction-digits 8;
-    }
-    description
-      "Decimal degree (DD) used to express latitude and longitude
-       geographic coordinates.";
-  }
-  // geographic-coordinate-degree
-
-  typedef te-info-source {
-    type enumeration {
-      enum unknown {
-        description
-          "The source is unknown.";
-      }
-      enum locally-configured {
-        description
-          "Configured entity.";
-      }
-      enum ospfv2 {
-        description
-          "OSPFv2.";
-      }
-      enum ospfv3 {
-        description
-          "OSPFv3.";
-      }
-      enum isis {
-        description
-          "IS-IS.";
-      }
-      enum bgp-ls {
-        description
-          "BGP-LS.";
-        reference
-          "RFC 7752: North-Bound Distribution of Link-State and
-           Traffic Engineering (TE) Information Using BGP";
-      }
-      enum system-processed {
-        description
-          "System-processed entity.";
-      }
-      enum other {
-        description
-          "Other source.";
-      }
-    }
-    description
-      "Describes the type of source that has provided the
-       related information, and the source's credibility.";
-  }
-  // te-info-source
-
-  /*
-   * Groupings
-   */
-
-  grouping connectivity-matrix-entry-path-attributes {
-    description
-      "Attributes of a connectivity matrix entry.";
-    leaf is-allowed {
-      type boolean;
-      description
-        "'true' - switching is allowed;
-         'false' - switching is disallowed.";
-    }
-    container underlay {
-      if-feature "te-topology-hierarchy";
-      description
-        "Attributes of the TE link underlay.";
-      reference
-        "RFC 4206: Label Switched Paths (LSP) Hierarchy with
-         Generalized Multi-Protocol Label Switching (GMPLS)
-         Traffic Engineering (TE)";
-      uses te-link-underlay-attributes;
-    }
-    uses te-types:generic-path-constraints;
-    uses te-types:generic-path-optimization;
-    uses te-types:generic-path-properties;
-  }
-  // connectivity-matrix-entry-path-attributes
-
-  grouping geolocation-container {
-    description
-      "Contains a GPS location.";
-    container geolocation {
-      config false;
-      description
-        "Contains a GPS location.";
-      leaf altitude {
-        type int64;
-        units "millimeters";
-        description
-          "Distance above sea level.";
-      }
-      leaf latitude {
-        type geographic-coordinate-degree {
-          range "-90..90";
-        }
-        description
-          "Relative position north or south on the Earth's surface.";
-      }
-      leaf longitude {
-        type geographic-coordinate-degree {
-          range "-180..180";
-        }
-        description
-          "Angular distance east or west on the Earth's surface.";
-      }
-    }
-    // geolocation
-  }
-  // geolocation-container
-
-  grouping information-source-state-attributes {
-    description
-      "The attributes identifying the source that has provided the
-       related information, and the source's credibility.";
-    leaf credibility-preference {
-      type uint16;
-      description
-        "The preference value for calculating the Traffic
-         Engineering database credibility value used for
-         tie-break selection between different information-source
-         values.  A higher value is preferable.";
-    }
-    leaf logical-network-element {
-      type string;
-      description
-        "When applicable, this is the name of a logical network
-         element from which the information is learned.";
-    }
-    leaf network-instance {
-      type string;
-      description
-        "When applicable, this is the name of a network instance
-         from which the information is learned.";
-    }
-  }
-  // information-source-state-attributes
-
-  grouping information-source-per-link-attributes {
-    description
-      "Per-node container of the attributes identifying the source
-       that has provided the related information, and the source's
-       credibility.";
-    leaf information-source {
-      type te-info-source;
-      config false;
-      description
-        "Indicates the type of information source.";
-    }
-    leaf information-source-instance {
-      type string;
-      config false;
-      description
-        "The name indicating the instance of the information
-         source.";
-    }
-    container information-source-state {
-      config false;
-      description
-        "Contains state attributes related to the information
-         source.";
-      uses information-source-state-attributes;
-      container topology {
-        description
-          "When the information is processed by the system,
-           the attributes in this container indicate which topology
-           is used to generate the result information.";
-        uses nt:link-ref;
-      }
-    }
-  }
-  // information-source-per-link-attributes
-
-  grouping information-source-per-node-attributes {
-    description
-      "Per-node container of the attributes identifying the source
-       that has provided the related information, and the source's
-       credibility.";
-    leaf information-source {
-      type te-info-source;
-      config false;
-      description
-        "Indicates the type of information source.";
-    }
-    leaf information-source-instance {
-      type string;
-      config false;
-      description
-        "The name indicating the instance of the information
-         source.";
-    }
-    container information-source-state {
-      config false;
-      description
-        "Contains state attributes related to the information
-         source.";
-      uses information-source-state-attributes;
-      container topology {
-        description
-          "When the information is processed by the system,
-           the attributes in this container indicate which topology
-           is used to generate the result information.";
-        uses nw:node-ref;
-      }
-    }
-  }
-  // information-source-per-node-attributes
-
-  grouping interface-switching-capability-list {
-    description
-      "List of Interface Switching Capability Descriptors (ISCDs).";
-    list interface-switching-capability {
-      key "switching-capability encoding";
-      description
-        "List of ISCDs for this link.";
-      reference
-        "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-         Signaling Functional Description
-         RFC 4203: OSPF Extensions in Support of Generalized
-         Multi-Protocol Label Switching (GMPLS)";
-      leaf switching-capability {
-        type identityref {
-          base te-types:switching-capabilities;
-        }
-        description
-          "Switching capability for this interface.";
-      }
-      leaf encoding {
-        type identityref {
-          base te-types:lsp-encoding-types;
-        }
-        description
-          "Encoding supported by this interface.";
-      }
-      uses te-link-iscd-attributes;
-    }
-    // interface-switching-capability
-  }
-  // interface-switching-capability-list
-
-  grouping statistics-per-link {
-    description
-      "Statistics attributes per TE link.";
-    leaf discontinuity-time {
-      type yang:date-and-time;
-      description
-        "The time of the most recent occasion at which any one or
-         more of this interface's counters suffered a
-         discontinuity.  If no such discontinuities have occurred
-         since the last re-initialization of the local management
-         subsystem, then this node contains the time the local
-         management subsystem re-initialized itself.";
-    }
-    /* Administrative attributes */
-    leaf disables {
-      type yang:counter32;
-      description
-        "Number of times that a link was disabled.";
-    }
-    leaf enables {
-      type yang:counter32;
-      description
-        "Number of times that a link was enabled.";
-    }
-    leaf maintenance-clears {
-      type yang:counter32;
-      description
-        "Number of times that a link was taken out of maintenance.";
-    }
-    leaf maintenance-sets {
-      type yang:counter32;
-      description
-        "Number of times that a link was put in maintenance.";
-    }
-    leaf modifies {
-      type yang:counter32;
-      description
-        "Number of times that a link was modified.";
-    }
-    /* Operational attributes */
-    leaf downs {
-      type yang:counter32;
-      description
-        "Number of times that a link was set to an operational state
-         of 'down'.";
-    }
-    leaf ups {
-      type yang:counter32;
-      description
-        "Number of times that a link was set to an operational state
-         of 'up'.";
-    }
-    /* Recovery attributes */
-    leaf fault-clears {
-      type yang:counter32;
-      description
-        "Number of times that a link experienced a fault-clear
-         event.";
-    }
-    leaf fault-detects {
-      type yang:counter32;
-      description
-        "Number of times that a link experienced fault detection.";
-    }
-    leaf protection-switches {
-      type yang:counter32;
-      description
-        "Number of times that a link experienced protection
-         switchover.";
-    }
-    leaf protection-reverts {
-      type yang:counter32;
-      description
-        "Number of times that a link experienced protection
-         reversion.";
-    }
-    leaf restoration-failures {
-      type yang:counter32;
-      description
-        "Number of times that a link experienced restoration
-         failure.";
-    }
-    leaf restoration-starts {
-      type yang:counter32;
-      description
-        "Number of times that a link experienced restoration
-         start.";
-    }
-    leaf restoration-successes {
-      type yang:counter32;
-      description
-        "Number of times that a link experienced restoration
-         success.";
-    }
-    leaf restoration-reversion-failures {
-      type yang:counter32;
-      description
-        "Number of times that a link experienced restoration
-         reversion failure.";
-    }
-    leaf restoration-reversion-starts {
-      type yang:counter32;
-      description
-        "Number of times that a link experienced restoration
-         reversion start.";
-    }
-    leaf restoration-reversion-successes {
-      type yang:counter32;
-      description
-        "Number of times that a link experienced restoration
-         reversion success.";
-    }
-  }
-  // statistics-per-link
-
-  grouping statistics-per-node {
-    description
-      "Statistics attributes per TE node.";
-    leaf discontinuity-time {
-      type yang:date-and-time;
-      description
-        "The time of the most recent occasion at which any one or
-         more of this interface's counters suffered a
-         discontinuity.  If no such discontinuities have occurred
-         since the last re-initialization of the local management
-         subsystem, then this node contains the time the local
-         management subsystem re-initialized itself.";
-    }
-    container node {
-      description
-        "Contains statistics attributes at the TE node level.";
-      leaf disables {
-        type yang:counter32;
-        description
-          "Number of times that a node was disabled.";
-      }
-      leaf enables {
-        type yang:counter32;
-        description
-          "Number of times that a node was enabled.";
-      }
-      leaf maintenance-sets {
-        type yang:counter32;
-        description
-          "Number of times that a node was put in maintenance.";
-      }
-      leaf maintenance-clears {
-        type yang:counter32;
-        description
-          "Number of times that a node was taken out of
-           maintenance.";
-      }
-      leaf modifies {
-        type yang:counter32;
-        description
-          "Number of times that a node was modified.";
-      }
-    }
-    // node
-    container connectivity-matrix-entry {
-      description
-        "Contains statistics attributes at the level of a
-         connectivity matrix entry.";
-      leaf creates {
-        type yang:counter32;
-        description
-          "Number of times that a connectivity matrix entry was
-           created.";
-        reference
-          "RFC 6241: Network Configuration Protocol (NETCONF),
-                     Section 7.2, 'create' operation";
-      }
-      leaf deletes {
-        type yang:counter32;
-        description
-          "Number of times that a connectivity matrix entry was
-           deleted.";
-        reference
-          "RFC 6241: Network Configuration Protocol (NETCONF),
-                     Section 7.2, 'delete' operation";
-      }
-      leaf disables {
-        type yang:counter32;
-        description
-          "Number of times that a connectivity matrix entry was
-           disabled.";
-      }
-      leaf enables {
-        type yang:counter32;
-        description
-          "Number of times that a connectivity matrix entry was
-           enabled.";
-      }
-      leaf modifies {
-        type yang:counter32;
-        description
-          "Number of times that a connectivity matrix entry was
-           modified.";
-      }
-    }
-    // connectivity-matrix-entry
-  }
-  // statistics-per-node
-
-  grouping statistics-per-ttp {
-    description
-      "Statistics attributes per TE TTP (Tunnel Termination Point).";
-    leaf discontinuity-time {
-      type yang:date-and-time;
-      description
-        "The time of the most recent occasion at which any one or
-         more of this interface's counters suffered a
-         discontinuity.  If no such discontinuities have occurred
-         since the last re-initialization of the local management
-         subsystem, then this node contains the time the local
-         management subsystem re-initialized itself.";
-    }
-    container tunnel-termination-point {
-      description
-        "Contains statistics attributes at the TE TTP level.";
-      /* Administrative attributes */
-      leaf disables {
-        type yang:counter32;
-        description
-          "Number of times that a TTP was disabled.";
-      }
-      leaf enables {
-        type yang:counter32;
-        description
-          "Number of times that a TTP was enabled.";
-      }
-      leaf maintenance-clears {
-        type yang:counter32;
-        description
-          "Number of times that a TTP was taken out of maintenance.";
-      }
-      leaf maintenance-sets {
-        type yang:counter32;
-        description
-          "Number of times that a TTP was put in maintenance.";
-      }
-      leaf modifies {
-        type yang:counter32;
-        description
-          "Number of times that a TTP was modified.";
-      }
-      /* Operational attributes */
-      leaf downs {
-        type yang:counter32;
-        description
-          "Number of times that a TTP was set to an operational state
-           of 'down'.";
-      }
-      leaf ups {
-        type yang:counter32;
-        description
-          "Number of times that a TTP was set to an operational state
-           of 'up'.";
-      }
-      leaf in-service-clears {
-        type yang:counter32;
-        description
-          "Number of times that a TTP was taken out of service
-           (TE tunnel was released).";
-      }
-      leaf in-service-sets {
-        type yang:counter32;
-        description
-          "Number of times that a TTP was put in service by a TE
-           tunnel (TE tunnel was set up).";
-      }
-    }
-    // tunnel-termination-point
-    container local-link-connectivity {
-      description
-        "Contains statistics attributes at the TE LLCL (Local Link
-         Connectivity List) level.";
-      leaf creates {
-        type yang:counter32;
-        description
-          "Number of times that an LLCL entry was created.";
-        reference
-          "RFC 6241: Network Configuration Protocol (NETCONF),
-                     Section 7.2, 'create' operation";
-      }
-      leaf deletes {
-        type yang:counter32;
-        description
-          "Number of times that an LLCL entry was deleted.";
-        reference
-          "RFC 6241: Network Configuration Protocol (NETCONF),
-                     Section 7.2, 'delete' operation";
-      }
-      leaf disables {
-        type yang:counter32;
-        description
-          "Number of times that an LLCL entry was disabled.";
-      }
-      leaf enables {
-        type yang:counter32;
-        description
-          "Number of times that an LLCL entry was enabled.";
-      }
-      leaf modifies {
-        type yang:counter32;
-        description
-          "Number of times that an LLCL entry was modified.";
-      }
-    }
-    // local-link-connectivity
-  }
-  // statistics-per-ttp
-
-  grouping te-link-augment {
-    description
-      "Augmentation for a TE link.";
-    uses te-link-config;
-    uses te-link-state-derived;
-    container statistics {
-      config false;
-      description
-        "Statistics data.";
-      uses statistics-per-link;
-    }
-  }
-  // te-link-augment
-
-  grouping te-link-config {
-    description
-      "TE link configuration grouping.";
-    choice bundle-stack-level {
-      description
-        "The TE link can be partitioned into bundled links or
-         component links.";
-      case bundle {
-        container bundled-links {
-          description
-            "A set of bundled links.";
-          reference
-            "RFC 4201: Link Bundling in MPLS Traffic
-             Engineering (TE)";
-          list bundled-link {
-            key "sequence";
-            description
-              "Specifies a bundled interface that is
-               further partitioned.";
-            leaf sequence {
-              type uint32;
-              description
-                "Identifies the sequence in the bundle.";
-            }
-          }
-        }
-      }
-      case component {
-        container component-links {
-          description
-            "A set of component links.";
-          list component-link {
-            key "sequence";
-            description
-              "Specifies a component interface that is
-               sufficient to unambiguously identify the
-               appropriate resources.";
-            leaf sequence {
-              type uint32;
-              description
-                "Identifies the sequence in the bundle.";
-            }
-            leaf src-interface-ref {
-              type string;
-              description
-                "Reference to a component link interface on the
-                 source node.";
-            }
-            leaf des-interface-ref {
-              type string;
-              description
-                "Reference to a component link interface on the
-                 destination node.";
-            }
-          }
-        }
-      }
-    }
-    // bundle-stack-level
-    leaf-list te-link-template {
-      if-feature "template";
-      type leafref {
-        path "../../../../te/templates/link-template/name";
-      }
-      description
-        "The reference to a TE link template.";
-    }
-    uses te-link-config-attributes;
-  }
-  // te-link-config
-
-  grouping te-link-config-attributes {
-    description
-      "Link configuration attributes in a TE topology.";
-    container te-link-attributes {
-      description
-        "Link attributes in a TE topology.";
-      leaf access-type {
-        type te-types:te-link-access-type;
-        description
-          "Link access type, which can be point-to-point or
-           multi-access.";
-      }
-      container external-domain {
-        description
-          "For an inter-domain link, specifies the attributes of
-           the remote end of the link, to facilitate the signaling at
-           the local end.";
-        uses nw:network-ref;
-        leaf remote-te-node-id {
-          type te-types:te-node-id;
-          description
-            "Remote TE node identifier, used together with
-             'remote-te-link-tp-id' to identify the remote Link
-             Termination Point (LTP) in a different domain.";
-        }
-        leaf remote-te-link-tp-id {
-          type te-types:te-tp-id;
-          description
-            "Remote TE LTP identifier, used together with
-             'remote-te-node-id' to identify the remote LTP in a
-             different domain.";
-        }
-      }
-      leaf is-abstract {
-        type empty;
-        description
-          "Present if the link is abstract.";
-      }
-      leaf name {
-        type string;
-        description
-          "Link name.";
-      }
-      container underlay {
-        if-feature "te-topology-hierarchy";
-        description
-          "Attributes of the TE link underlay.";
-        reference
-          "RFC 4206: Label Switched Paths (LSP) Hierarchy with
-           Generalized Multi-Protocol Label Switching (GMPLS)
-           Traffic Engineering (TE)";
-        uses te-link-underlay-attributes;
-      }
-      leaf admin-status {
-        type te-types:te-admin-status;
-        description
-          "The administrative state of the link.";
-      }
-      uses te-link-info-attributes;
-    }
-    // te-link-attributes
-  }
-  // te-link-config-attributes
-
-  grouping te-link-info-attributes {
-    description
-      "Advertised TE information attributes.";
-    leaf link-index {
-      type uint64;
-      description
-        "The link identifier.  If OSPF is used, this object
-         represents an ospfLsdbID.  If IS-IS is used, this object
-         represents an isisLSPID.  If a locally configured link is
-         used, this object represents a unique value, which is
-         locally defined in a router.";
-    }
-    leaf administrative-group {
-      type te-types:admin-groups;
-      description
-        "Administrative group or color of the link.
-         This attribute covers both administrative groups (defined
-         in RFCs 3630 and 5305) and Extended Administrative Groups
-         (defined in RFC 7308).";
-      reference
-        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
-         Version 2
-         RFC 5305: IS-IS Extensions for Traffic Engineering
-         RFC 7308: Extended Administrative Groups in MPLS Traffic
-         Engineering (MPLS-TE)";
-    }
-    uses interface-switching-capability-list;
-    uses te-types:label-set-info;
-    leaf link-protection-type {
-      type identityref {
-        base te-types:link-protection-type;
-      }
-      description
-        "Link Protection Type desired for this link.";
-      reference
-        "RFC 4202: Routing Extensions in Support of
-         Generalized Multi-Protocol Label Switching (GMPLS)";
-    }
-    container max-link-bandwidth {
-      uses te-types:te-bandwidth;
-      description
-        "Maximum bandwidth that can be seen on this link in this
-         direction.  Units are in bytes per second.";
-      reference
-        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
-         Version 2
-         RFC 5305: IS-IS Extensions for Traffic Engineering";
-    }
-    container max-resv-link-bandwidth {
-      uses te-types:te-bandwidth;
-      description
-        "Maximum amount of bandwidth that can be reserved in this
-         direction in this link.  Units are in bytes per second.";
-      reference
-        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
-         Version 2
-         RFC 5305: IS-IS Extensions for Traffic Engineering";
-    }
-    list unreserved-bandwidth {
-      key "priority";
-      max-elements 8;
-      description
-        "Unreserved bandwidth for priority levels 0-7.  Units are in
-         bytes per second.";
-      reference
-        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
-         Version 2
-         RFC 5305: IS-IS Extensions for Traffic Engineering";
-      leaf priority {
-        type uint8 {
-          range "0..7";
-        }
-        description
-          "Priority.";
-      }
-      uses te-types:te-bandwidth;
-    }
-    leaf te-default-metric {
-      type uint32;
-      description
-        "Traffic Engineering metric.";
-      reference
-        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
-         Version 2
-         RFC 5305: IS-IS Extensions for Traffic Engineering";
-    }
-    leaf te-delay-metric {
-      type uint32;
-      description
-        "Traffic Engineering delay metric.";
-      reference
-        "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
-    }
-    leaf te-igp-metric {
-      type uint32;
-      description
-        "IGP metric used for Traffic Engineering.";
-      reference
-        "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
-         second MPLS Traffic Engineering (TE) Metric";
-    }
-    container te-srlgs {
-      description
-        "Contains a list of SRLGs.";
-      leaf-list value {
-        type te-types:srlg;
-        description
-          "SRLG value.";
-        reference
-          "RFC 4202: Routing Extensions in Support of
-           Generalized Multi-Protocol Label Switching (GMPLS)";
-      }
-    }
-    container te-nsrlgs {
-      if-feature "nsrlg";
-      description
-        "Contains a list of NSRLGs (Non-Shared Risk Link Groups).
-         When an abstract TE link is configured, this list specifies
-         the request that underlay TE paths need to be mutually
-         disjoint with other TE links in the same groups.";
-      leaf-list id {
-        type uint32;
-        description
-          "NSRLG ID, uniquely configured within a topology.";
-        reference
-          "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-           Generalized Multi-Protocol Label Switching (GMPLS)
-           Recovery";
-      }
-    }
-  }
-  // te-link-info-attributes
-
-  grouping te-link-iscd-attributes {
-    description
-      "TE link ISCD attributes.";
-    reference
-      "RFC 4203: OSPF Extensions in Support of Generalized
-       Multi-Protocol Label Switching (GMPLS), Section 1.4";
-    list max-lsp-bandwidth {
-      key "priority";
-      max-elements 8;
-      description
-        "Maximum Label Switched Path (LSP) bandwidth at
-         priorities 0-7.";
-      leaf priority {
-        type uint8 {
-          range "0..7";
-        }
-        description
-          "Priority.";
-      }
-      uses te-types:te-bandwidth;
-    }
-  }
-  // te-link-iscd-attributes
-
-  grouping te-link-state-derived {
-    description
-      "Link state attributes in a TE topology.";
-    leaf oper-status {
-      type te-types:te-oper-status;
-      config false;
-      description
-        "The current operational state of the link.";
-    }
-    leaf is-transitional {
-      type empty;
-      config false;
-      description
-        "Present if the link is transitional; used as an
-         alternative approach in lieu of 'inter-layer-lock-id'
-         for path computation in a TE topology covering multiple
-         layers or multiple regions.";
-      reference
-        "RFC 5212: Requirements for GMPLS-Based Multi-Region and
-         Multi-Layer Networks (MRN/MLN)
-         RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
-         for Multi-Layer and Multi-Region Networks (MLN/MRN)";
-    }
-    uses information-source-per-link-attributes;
-    list information-source-entry {
-      key "information-source information-source-instance";
-      config false;
-      description
-        "A list of information sources learned, including the source
-         that is used.";
-      uses information-source-per-link-attributes;
-      uses te-link-info-attributes;
-    }
-    container recovery {
-      config false;
-      description
-        "Status of the recovery process.";
-      leaf restoration-status {
-        type te-types:te-recovery-status;
-        description
-          "Restoration status.";
-      }
-      leaf protection-status {
-        type te-types:te-recovery-status;
-        description
-          "Protection status.";
-      }
-    }
-    container underlay {
-      if-feature "te-topology-hierarchy";
-      config false;
-      description
-        "State attributes for the TE link underlay.";
-      leaf dynamic {
-        type boolean;
-        description
-          "'true' if the underlay is dynamically created.";
-      }
-      leaf committed {
-        type boolean;
-        description
-          "'true' if the underlay is committed.";
-      }
-    }
-  }
-  // te-link-state-derived
-
-  grouping te-link-underlay-attributes {
-    description
-      "Attributes for the TE link underlay.";
-    reference
-      "RFC 4206: Label Switched Paths (LSP) Hierarchy with
-       Generalized Multi-Protocol Label Switching (GMPLS)
-       Traffic Engineering (TE)";
-    leaf enabled {
-      type boolean;
-      description
-        "'true' if the underlay is enabled.
-         'false' if the underlay is disabled.";
-    }
-    container primary-path {
-      description
-        "The service path on the underlay topology that
-         supports this link.";
-      uses nw:network-ref;
-      list path-element {
-        key "path-element-id";
-        description
-          "A list of path elements describing the service path.";
-        leaf path-element-id {
-          type uint32;
-          description
-            "To identify the element in a path.";
-        }
-        uses te-path-element;
-      }
-    }
-    // primary-path
-    list backup-path {
-      key "index";
-      description
-        "A list of backup service paths on the underlay topology that
-         protect the underlay primary path.  If the primary path is
-         not protected, the list contains zero elements.  If the
-         primary path is protected, the list contains one or more
-         elements.";
-      leaf index {
-        type uint32;
-        description
-          "A sequence number to identify a backup path.";
-      }
-      uses nw:network-ref;
-      list path-element {
-        key "path-element-id";
-        description
-          "A list of path elements describing the backup service
-           path.";
-        leaf path-element-id {
-          type uint32;
-          description
-            "To identify the element in a path.";
-        }
-        uses te-path-element;
-      }
-    }
-    // backup-path
-    leaf protection-type {
-      type identityref {
-        base te-types:lsp-protection-type;
-      }
-      description
-        "Underlay protection type desired for this link.";
-    }
-    container tunnel-termination-points {
-      description
-        "Underlay TTPs desired for this link.";
-      leaf source {
-        type binary;
-        description
-          "Source TTP identifier.";
-      }
-      leaf destination {
-        type binary;
-        description
-          "Destination TTP identifier.";
-      }
-    }
-    container tunnels {
-      description
-        "Underlay TE tunnels supporting this TE link.";
-      leaf sharing {
-        type boolean;
-        default "true";
-        description
-          "'true' if the underlay tunnel can be shared with other
-           TE links;
-           'false' if the underlay tunnel is dedicated to this
-           TE link.
-           This leaf is the default option for all TE tunnels
-           and may be overridden by the per-TE-tunnel value.";
-      }
-      list tunnel {
-        key "tunnel-name";
-        description
-          "Zero, one, or more underlay TE tunnels that support this
-           TE link.";
-        leaf tunnel-name {
-          type string;
-          description
-            "A tunnel name uniquely identifies an underlay TE tunnel,
-             used together with the 'source-node' value for this
-             link.";
-          reference
-            "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
-        }
-        leaf sharing {
-          type boolean;
-          description
-            "'true' if the underlay tunnel can be shared with other
-             TE links;
-             'false' if the underlay tunnel is dedicated to this
-             TE link.";
-        }
-      }
-      // tunnel
-    }
-    // tunnels
-  }
-  // te-link-underlay-attributes
-
-  grouping te-node-augment {
-    description
-      "Augmentation for a TE node.";
-    uses te-node-config;
-    uses te-node-state-derived;
-    container statistics {
-      config false;
-      description
-        "Statistics data.";
-      uses statistics-per-node;
-    }
-    list tunnel-termination-point {
-      key "tunnel-tp-id";
-      description
-        "A termination point can terminate a tunnel.";
-      leaf tunnel-tp-id {
-        type binary;
-        description
-          "TTP identifier.";
-      }
-      uses te-node-tunnel-termination-point-config;
-      leaf oper-status {
-        type te-types:te-oper-status;
-        config false;
-        description
-          "The current operational state of the TTP.";
-      }
-      uses geolocation-container;
-      container statistics {
-        config false;
-        description
-          "Statistics data.";
-        uses statistics-per-ttp;
-      }
-      // Relationship to other TTPs
-      list supporting-tunnel-termination-point {
-        key "node-ref tunnel-tp-ref";
-        description
-          "Identifies the TTPs on which this TTP depends.";
-        leaf node-ref {
-          type inet:uri;
-          description
-            "This leaf identifies the node in which the supporting
-             TTP is present.
-             This node is either the supporting node or a node in
-             an underlay topology.";
-        }
-        leaf tunnel-tp-ref {
-          type binary;
-          description
-            "Reference to a TTP that is in either the supporting node
-             or a node in an underlay topology.";
-        }
-      }
-      // supporting-tunnel-termination-point
-    }
-    // tunnel-termination-point
-  }
-  // te-node-augment
-
-  grouping te-node-config {
-    description
-      "TE node configuration grouping.";
-    leaf-list te-node-template {
-      if-feature "template";
-      type leafref {
-        path "../../../../te/templates/node-template/name";
-      }
-      description
-        "The reference to a TE node template.";
-    }
-    uses te-node-config-attributes;
-  }
-  // te-node-config
-
-  grouping te-node-config-attributes {
-    description
-      "Configuration node attributes in a TE topology.";
-    container te-node-attributes {
-      description
-        "Contains node attributes in a TE topology.";
-      leaf admin-status {
-        type te-types:te-admin-status;
-        description
-          "The administrative state of the link.";
-      }
-      uses te-node-connectivity-matrices;
-      uses te-node-info-attributes;
-    }
-  }
-  // te-node-config-attributes
-
-  grouping te-node-config-attributes-template {
-    description
-      "Configuration node attributes for a template in a TE
-       topology.";
-    container te-node-attributes {
-      description
-        "Contains node attributes in a TE topology.";
-      leaf admin-status {
-        type te-types:te-admin-status;
-        description
-          "The administrative state of the link.";
-      }
-      uses te-node-info-attributes;
-    }
-  }
-  // te-node-config-attributes-template
-
-  grouping te-node-connectivity-matrices {
-    description
-      "Connectivity matrix on a TE node.";
-    container connectivity-matrices {
-      description
-        "Contains a connectivity matrix on a TE node.";
-      leaf number-of-entries {
-        type uint16;
-        description
-          "The number of connectivity matrix entries.
-           If this number is specified in the configuration request,
-           the number is the requested number of entries, which may
-           not all be listed in the list;
-           if this number is reported in the state data,
-           the number is the current number of operational entries.";
-      }
-      uses te-types:label-set-info;
-      uses connectivity-matrix-entry-path-attributes;
-      list connectivity-matrix {
-        key "id";
-        description
-          "Represents a node's switching limitations, i.e.,
-           limitations in the interconnecting network TE links
-           across the node.";
-        reference
-          "RFC 7579: General Network Element Constraint Encoding
-           for GMPLS-Controlled Networks";
-        leaf id {
-          type uint32;
-          description
-            "Identifies the connectivity matrix entry.";
-        }
-      }
-      // connectivity-matrix
-    }
-    // connectivity-matrices
-  }
-  // te-node-connectivity-matrices
-
-  grouping te-node-connectivity-matrix-attributes {
-    description
-      "Termination point references of a connectivity matrix entry.";
-    container from {
-      description
-        "Reference to a source LTP.";
-      leaf tp-ref {
-        type leafref {
-          path "../../../../../../nt:termination-point/nt:tp-id";
-        }
-        description
-          "Relative reference to a termination point.";
-      }
-      uses te-types:label-set-info;
-    }
-    container to {
-      description
-        "Reference to a destination LTP.";
-      leaf tp-ref {
-        type leafref {
-          path "../../../../../../nt:termination-point/nt:tp-id";
-        }
-        description
-          "Relative reference to a termination point.";
-      }
-      uses te-types:label-set-info;
-    }
-    uses connectivity-matrix-entry-path-attributes;
-  }
-  // te-node-connectivity-matrix-attributes
-
-  grouping te-node-info-attributes {
-    description
-      "Advertised TE information attributes.";
-    leaf domain-id {
-      type uint32;
-      description
-        "Identifies the domain to which this node belongs.
-         This attribute is used to support inter-domain links.";
-      reference
-        "RFC 5152: A Per-Domain Path Computation Method for
-         Establishing Inter-Domain Traffic Engineering (TE)
-         Label Switched Paths (LSPs)
-         RFC 5316: ISIS Extensions in Support of Inter-Autonomous
-         System (AS) MPLS and GMPLS Traffic Engineering
-         RFC 5392: OSPF Extensions in Support of Inter-Autonomous
-         System (AS) MPLS and GMPLS Traffic Engineering";
-    }
-    leaf is-abstract {
-      type empty;
-      description
-        "Present if the node is abstract; not present if the node
-         is actual.";
-    }
-    leaf name {
-      type string;
-      description
-        "Node name.";
-    }
-    leaf-list signaling-address {
-      type inet:ip-address;
-      description
-        "The node's signaling address.";
-    }
-    container underlay-topology {
-      if-feature "te-topology-hierarchy";
-      description
-        "When an abstract node encapsulates a topology, the
-         attributes in this container point to said topology.";
-      uses nw:network-ref;
-    }
-  }
-  // te-node-info-attributes
-
-  grouping te-node-state-derived {
-    description
-      "Node state attributes in a TE topology.";
-    leaf oper-status {
-      type te-types:te-oper-status;
-      config false;
-      description
-        "The current operational state of the node.";
-    }
-    uses geolocation-container;
-    leaf is-multi-access-dr {
-      type empty;
-      config false;
-      description
-        "The presence of this attribute indicates that this TE node
-         is a pseudonode elected as a designated router.";
-      reference
-        "RFC 1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
-         Environments
-         RFC 3630: Traffic Engineering (TE) Extensions to OSPF
-         Version 2";
-    }
-    uses information-source-per-node-attributes;
-    list information-source-entry {
-      key "information-source information-source-instance";
-      config false;
-      description
-        "A list of information sources learned, including the source
-         that is used.";
-      uses information-source-per-node-attributes;
-      uses te-node-connectivity-matrices;
-      uses te-node-info-attributes;
-    }
-  }
-  // te-node-state-derived
-
-  grouping te-node-tunnel-termination-point-config {
-    description
-      "Termination capability of a TTP on a TE node.";
-    uses te-node-tunnel-termination-point-config-attributes;
-    container local-link-connectivities {
-      description
-        "Contains an LLCL for a TTP on a TE node.";
-      leaf number-of-entries {
-        type uint16;
-        description
-          "The number of LLCL entries.
-           If this number is specified in the configuration request,
-           the number is the requested number of entries, which may
-           not all be listed in the list;
-           if this number is reported in the state data,
-           the number is the current number of operational entries.";
-      }
-      uses te-types:label-set-info;
-      uses connectivity-matrix-entry-path-attributes;
-    }
-  }
-  // te-node-tunnel-termination-point-config
-
-  grouping te-node-tunnel-termination-point-config-attributes {
-    description
-      "Configuration attributes of a TTP on a TE node.";
-    leaf admin-status {
-      type te-types:te-admin-status;
-      description
-        "The administrative state of the TTP.";
-    }
-    leaf name {
-      type string;
-      description
-        "A descriptive name for the TTP.";
-    }
-    leaf switching-capability {
-      type identityref {
-        base te-types:switching-capabilities;
-      }
-      description
-        "Switching capability for this interface.";
-    }
-    leaf encoding {
-      type identityref {
-        base te-types:lsp-encoding-types;
-      }
-      description
-        "Encoding supported by this interface.";
-    }
-    leaf-list inter-layer-lock-id {
-      type uint32;
-      description
-        "Inter-layer lock ID, used for path computation in a TE
-         topology covering multiple layers or multiple regions.";
-      reference
-        "RFC 5212: Requirements for GMPLS-Based Multi-Region and
-         Multi-Layer Networks (MRN/MLN)
-         RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
-         for Multi-Layer and Multi-Region Networks (MLN/MRN)";
-    }
-    leaf protection-type {
-      type identityref {
-        base te-types:lsp-protection-type;
-      }
-      description
-        "The protection type that this TTP is capable of.";
-    }
-    container client-layer-adaptation {
-      description
-        "Contains capability information to support a client-layer
-         adaptation in a multi-layer topology.";
-      list switching-capability {
-        key "switching-capability encoding";
-        description
-          "List of supported switching capabilities.";
-        reference
-          "RFC 4202: Routing Extensions in Support of
-           Generalized Multi-Protocol Label Switching (GMPLS)
-           RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
-           for Multi-Layer and Multi-Region Networks (MLN/MRN)";
-        leaf switching-capability {
-          type identityref {
-            base te-types:switching-capabilities;
-          }
-          description
-            "Switching capability for the client-layer adaptation.";
-        }
-        leaf encoding {
-          type identityref {
-            base te-types:lsp-encoding-types;
-          }
-          description
-            "Encoding supported by the client-layer adaptation.";
-        }
-        uses te-types:te-bandwidth;
-      }
-    }
-  }
-  // te-node-tunnel-termination-point-config-attributes
-
-  grouping te-node-tunnel-termination-point-llc-list {
-    description
-      "LLCL of a TTP on a TE node.";
-    list local-link-connectivity {
-      key "link-tp-ref";
-      description
-        "The termination capabilities between the TTP and the LTP.
-         This capability information can be used to compute
-         the tunnel path.
-         The Interface Adjustment Capability Descriptors (IACDs)
-         (defined in RFC 6001) on each LTP can be derived from
-         this list.";
-      reference
-        "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
-         for Multi-Layer and Multi-Region Networks (MLN/MRN)";
-      leaf link-tp-ref {
-        type leafref {
-          path "../../../../../nt:termination-point/nt:tp-id";
-        }
-        description
-          "LTP.";
-      }
-      uses te-types:label-set-info;
-      uses connectivity-matrix-entry-path-attributes;
-    }
-  }
-  // te-node-tunnel-termination-point-llc-list
-
-  grouping te-path-element {
-    description
-      "A group of attributes defining an element in a TE path,
-       such as a TE node, TE link, TE atomic resource, or label.";
-    uses te-types:explicit-route-hop;
-  }
-  // te-path-element
-
-  grouping te-termination-point-augment {
-    description
-      "Augmentation for a TE termination point.";
-    leaf te-tp-id {
-      type te-types:te-tp-id;
-      description
-        "An identifier that uniquely identifies a TE termination
-         point.";
-    }
-    container te {
-      must '../te-tp-id';
-      presence "TE support";
-      description
-        "Indicates TE support.";
-      uses te-termination-point-config;
-      leaf oper-status {
-        type te-types:te-oper-status;
-        config false;
-        description
-          "The current operational state of the LTP.";
-      }
-      uses geolocation-container;
-    }
-  }
-  // te-termination-point-augment
-
-  grouping te-termination-point-config {
-    description
-      "TE termination point configuration grouping.";
-    leaf admin-status {
-      type te-types:te-admin-status;
-      description
-        "The administrative state of the LTP.";
-    }
-    leaf name {
-      type string;
-      description
-        "A descriptive name for the LTP.";
-    }
-    uses interface-switching-capability-list;
-    leaf inter-domain-plug-id {
-      type binary;
-      description
-        "A network-wide unique number that identifies on the
-         network a connection that supports a given inter-domain
-         TE link.  This is a more flexible alternative to specifying
-         'remote-te-node-id' and 'remote-te-link-tp-id' on a TE link
-         when the provider either does not know 'remote-te-node-id'
-         and 'remote-te-link-tp-id' or needs to give the client the
-         flexibility to mix and match multiple topologies.";
-    }
-    leaf-list inter-layer-lock-id {
-      type uint32;
-      description
-        "Inter-layer lock ID, used for path computation in a TE
-         topology covering multiple layers or multiple regions.";
-      reference
-        "RFC 5212: Requirements for GMPLS-Based Multi-Region and
-         Multi-Layer Networks (MRN/MLN)
-         RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
-         for Multi-Layer and Multi-Region Networks (MLN/MRN)";
-    }
-  }
-  // te-termination-point-config
-
-  grouping te-topologies-augment {
-    description
-      "Augmentation for TE topologies.";
-    container te {
-      presence "TE support";
-      description
-        "Indicates TE support.";
-      container templates {
-        description
-          "Configuration parameters for templates used for a TE
-           topology.";
-        list node-template {
-          if-feature "template";
-          key "name";
-          leaf name {
-            type te-types:te-template-name;
-            description
-              "The name to identify a TE node template.";
-          }
-          description
-            "The list of TE node templates used to define sharable
-             and reusable TE node attributes.";
-          uses template-attributes;
-          uses te-node-config-attributes-template;
-        }
-        // node-template
-        list link-template {
-          if-feature "template";
-          key "name";
-          leaf name {
-            type te-types:te-template-name;
-            description
-              "The name to identify a TE link template.";
-          }
-          description
-            "The list of TE link templates used to define sharable
-             and reusable TE link attributes.";
-          uses template-attributes;
-          uses te-link-config-attributes;
-        }
-        // link-template
-      }
-      // templates
-    }
-    // te
-  }
-  // te-topologies-augment
-
-  grouping te-topology-augment {
-    description
-      "Augmentation for a TE topology.";
-    uses te-types:te-topology-identifier;
-    container te {
-      must '../te-topology-identifier/provider-id'
-         + ' and ../te-topology-identifier/client-id'
-         + ' and ../te-topology-identifier/topology-id';
-      presence "TE support";
-      description
-        "Indicates TE support.";
-      uses te-topology-config;
-      uses geolocation-container;
-    }
-  }
-  // te-topology-augment
-
-  grouping te-topology-config {
-    description
-      "TE topology configuration grouping.";
-    leaf name {
-      type string;
-      description
-        "Name of the TE topology.  This attribute is optional and can
-         be specified by the operator to describe the TE topology,
-         which can be useful when 'network-id' (RFC 8345) is not
-         descriptive and not modifiable because of being generated
-         by the system.";
-      reference
-        "RFC 8345: A YANG Data Model for Network Topologies";
-    }
-    leaf preference {
-      type uint8 {
-        range "1..255";
-      }
-      description
-        "Specifies a preference for this topology.  A lower number
-         indicates a higher preference.";
-    }
-    leaf optimization-criterion {
-      type identityref {
-        base te-types:objective-function-type;
-      }
-      description
-        "Optimization criterion applied to this topology.";
-      reference
-        "RFC 3272: Overview and Principles of Internet Traffic
-         Engineering";
-    }
-    list nsrlg {
-      if-feature "nsrlg";
-      key "id";
-      description
-        "List of NSRLGs (Non-Shared Risk Link Groups).";
-      reference
-        "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-         Generalized Multi-Protocol Label Switching (GMPLS)
-         Recovery";
-      leaf id {
-        type uint32;
-        description
-          "Identifies the NSRLG entry.";
-      }
-      leaf disjointness {
-        type te-types:te-path-disjointness;
-        description
-          "The type of resource disjointness.";
-      }
-    }
-    // nsrlg
-  }
-  // te-topology-config
-
-  grouping template-attributes {
-    description
-      "Common attributes for all templates.";
-    leaf priority {
-      type uint16;
-      description
-        "The preference value for resolving conflicts between
-         different templates.  When two or more templates specify
-         values for one configuration attribute, the value from the
-         template with the highest priority is used.
-         A lower number indicates a higher priority.  The highest
-         priority is 0.";
-    }
-    leaf reference-change-policy {
-      type enumeration {
-        enum no-action {
-          description
-            "When an attribute changes in this template, the
-             configuration node referring to this template does
-             not take any action.";
-        }
-        enum not-allowed {
-          description
-            "When any configuration object has a reference to this
-             template, changing this template is not allowed.";
-        }
-        enum cascade {
-          description
-            "When an attribute changes in this template, the
-             configuration object referring to this template applies
-             the new attribute value to the corresponding
-             configuration.";
-        }
-      }
-      description
-        "This attribute specifies the action taken for a
-         configuration node that has a reference to this template.";
-    }
-  }
-  // template-attributes
-
-  /*
-   * Data nodes
-   */
-
-  augment "/nw:networks/nw:network/nw:network-types" {
-    description
-      "Introduces a new network type for a TE topology.";
-    container te-topology {
-      presence "Indicates a TE topology";
-      description
-        "Its presence identifies the TE topology type.";
-    }
-  }
-
-  augment "/nw:networks" {
-    description
-      "Augmentation parameters for TE topologies.";
-    uses te-topologies-augment;
-  }
-
-  augment "/nw:networks/nw:network" {
-    when 'nw:network-types/tet:te-topology' {
-      description
-        "Augmentation parameters apply only for networks with a
-         TE topology type.";
-    }
-    description
-      "Configuration parameters for a TE topology.";
-    uses te-topology-augment;
-  }
-
-  augment "/nw:networks/nw:network/nw:node" {
-    when '../nw:network-types/tet:te-topology' {
-      description
-        "Augmentation parameters apply only for networks with a
-         TE topology type.";
-    }
-    description
-      "Configuration parameters for TE at the node level.";
-    leaf te-node-id {
-      type te-types:te-node-id;
-      description
-        "The identifier of a node in the TE topology.
-         A node is specific to a topology to which it belongs.";
-    }
-    container te {
-      must '../te-node-id' {
-        description
-          "'te-node-id' is mandatory.";
-      }
-      must 'count(../nw:supporting-node)<=1' {
-        description
-          "For a node in a TE topology, there cannot be more
-           than one supporting node.  If multiple nodes are
-           abstracted, the 'underlay-topology' field is used.";
-      }
-      presence "TE support";
-      description
-        "Indicates TE support.";
-      uses te-node-augment;
-    }
-  }
-
-  augment "/nw:networks/nw:network/nt:link" {
-    when '../nw:network-types/tet:te-topology' {
-      description
-        "Augmentation parameters apply only for networks with a
-         TE topology type.";
-    }
-    description
-      "Configuration parameters for TE at the link level.";
-    container te {
-      must 'count(../nt:supporting-link)<=1' {
-        description
-          "For a link in a TE topology, there cannot be more
-           than one supporting link.  If one or more link paths are
-           abstracted, the underlay is used.";
-      }
-      presence "TE support";
-      description
-        "Indicates TE support.";
-      uses te-link-augment;
-    }
-  }
-
-  augment "/nw:networks/nw:network/nw:node/"
-        + "nt:termination-point" {
-    when '../../nw:network-types/tet:te-topology' {
-      description
-        "Augmentation parameters apply only for networks with a
-         TE topology type.";
-    }
-    description
-      "Configuration parameters for TE at the termination point
-       level.";
-    uses te-termination-point-augment;
-  }
-
-  augment "/nw:networks/nw:network/nt:link/te/bundle-stack-level/"
-        + "bundle/bundled-links/bundled-link" {
-    when '../../../../nw:network-types/tet:te-topology' {
-      description
-        "Augmentation parameters apply only for networks with a
-         TE topology type.";
-    }
-    description
-      "Augmentation for a TE bundled link.";
-    leaf src-tp-ref {
-      type leafref {
-        path "../../../../../nw:node[nw:node-id = "
-           + "current()/../../../../nt:source/"
-           + "nt:source-node]/"
-           + "nt:termination-point/nt:tp-id";
-        require-instance true;
-      }
-      description
-        "Reference to another TE termination point on the
-         same source node.";
-    }
-    leaf des-tp-ref {
-      type leafref {
-        path "../../../../../nw:node[nw:node-id = "
-           + "current()/../../../../nt:destination/"
-           + "nt:dest-node]/"
-           + "nt:termination-point/nt:tp-id";
-        require-instance true;
-      }
-      description
-        "Reference to another TE termination point on the
-         same destination node.";
-    }
-  }
-
-  augment "/nw:networks/nw:network/nw:node/te/"
-        + "information-source-entry/connectivity-matrices/"
-        + "connectivity-matrix" {
-    when '../../../../../nw:network-types/tet:te-topology' {
-      description
-        "Augmentation parameters apply only for networks with a
-         TE topology type.";
-    }
-    description
-      "Augmentation for the TE node connectivity matrix.";
-    uses te-node-connectivity-matrix-attributes;
-  }
-
-  augment "/nw:networks/nw:network/nw:node/te/te-node-attributes/"
-        + "connectivity-matrices/connectivity-matrix" {
-    when '../../../../../nw:network-types/tet:te-topology' {
-      description
-        "Augmentation parameters apply only for networks with a
-         TE topology type.";
-    }
-    description
-      "Augmentation for the TE node connectivity matrix.";
-    uses te-node-connectivity-matrix-attributes;
-  }
-
-  augment "/nw:networks/nw:network/nw:node/te/"
-        + "tunnel-termination-point/local-link-connectivities" {
-    when '../../../../nw:network-types/tet:te-topology' {
-      description
-        "Augmentation parameters apply only for networks with a
-         TE topology type.";
-    }
-    description
-      "Augmentation for TE node TTP LLCs (Local Link
-       Connectivities).";
-    uses te-node-tunnel-termination-point-llc-list;
-  }
-}
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-types@2020-06-10.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-types@2020-06-10.yang
deleted file mode 100644
index 6fc0544de..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-te-types@2020-06-10.yang
+++ /dev/null
@@ -1,3379 +0,0 @@
-module ietf-te-types {
-  yang-version 1.1;
-  namespace "urn:ietf:params:xml:ns:yang:ietf-te-types";
-  prefix te-types;
-
-  import ietf-inet-types {
-    prefix inet;
-    reference
-      "RFC 6991: Common YANG Data Types";
-  }
-  import ietf-yang-types {
-    prefix yang;
-    reference
-      "RFC 6991: Common YANG Data Types";
-  }
-  import ietf-routing-types {
-    prefix rt-types;
-    reference
-      "RFC 8294: Common YANG Data Types for the Routing Area";
-  }
-
-  organization
-    "IETF Traffic Engineering Architecture and Signaling (TEAS)
-     Working Group";
-  contact
-    "WG Web:   <https://datatracker.ietf.org/wg/teas/>
-     WG List:  <mailto:teas@ietf.org>
-
-     Editor:   Tarek Saad
-               <mailto:tsaad@juniper.net>
-
-     Editor:   Rakesh Gandhi
-               <mailto:rgandhi@cisco.com>
-
-     Editor:   Vishnu Pavan Beeram
-               <mailto:vbeeram@juniper.net>
-
-     Editor:   Xufeng Liu
-               <mailto:xufeng.liu.ietf@gmail.com>
-
-     Editor:   Igor Bryskin
-               <mailto:i_bryskin@yahoo.com>";
-  description
-    "This YANG module contains a collection of generally useful
-     YANG data type definitions specific to TE.  The model fully
-     conforms to the Network Management Datastore Architecture
-     (NMDA).
-
-     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
-     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
-     'MAY', and 'OPTIONAL' in this document are to be interpreted as
-     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
-     they appear in all capitals, as shown here.
-
-     Copyright (c) 2020 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
-     (https://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 8776; see the
-     RFC itself for full legal notices.";
-
-  revision 2020-06-10 {
-    description
-      "Latest revision of TE types.";
-    reference
-      "RFC 8776: Common YANG Data Types for Traffic Engineering";
-  }
-
-  /**
-   * Typedefs
-   */
-
-  typedef admin-group {
-    type yang:hex-string {
-      /* 01:02:03:04 */
-      length "1..11";
-    }
-    description
-      "Administrative group / resource class / color representation
-       in 'hex-string' type.
-       The most significant byte in the hex-string is the farthest
-       to the left in the byte sequence.  Leading zero bytes in the
-       configured value may be omitted for brevity.";
-    reference
-      "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
-       Version 2
-       RFC 5305: IS-IS Extensions for Traffic Engineering
-       RFC 7308: Extended Administrative Groups in MPLS Traffic
-       Engineering (MPLS-TE)";
-  }
-
-  typedef admin-groups {
-    type union {
-      type admin-group;
-      type extended-admin-group;
-    }
-    description
-      "Derived types for TE administrative groups.";
-  }
-
-  typedef extended-admin-group {
-    type yang:hex-string;
-    description
-      "Extended administrative group / resource class / color
-       representation in 'hex-string' type.
-       The most significant byte in the hex-string is the farthest
-       to the left in the byte sequence.  Leading zero bytes in the
-       configured value may be omitted for brevity.";
-    reference
-      "RFC 7308: Extended Administrative Groups in MPLS Traffic
-       Engineering (MPLS-TE)";
-  }
-
-  typedef path-attribute-flags {
-    type union {
-      type identityref {
-        base session-attributes-flags;
-      }
-      type identityref {
-        base lsp-attributes-flags;
-      }
-    }
-    description
-      "Path attributes flags type.";
-  }
-
-  typedef performance-metrics-normality {
-    type enumeration {
-      enum unknown {
-        value 0;
-        description
-          "Unknown.";
-      }
-      enum normal {
-        value 1;
-        description
-          "Normal.  Indicates that the anomalous bit is not set.";
-      }
-      enum abnormal {
-        value 2;
-        description
-          "Abnormal.  Indicates that the anomalous bit is set.";
-      }
-    }
-    description
-      "Indicates whether a performance metric is normal (anomalous
-       bit not set), abnormal (anomalous bit set), or unknown.";
-    reference
-      "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
-       RFC 7823: Performance-Based Path Selection for Explicitly
-       Routed Label Switched Paths (LSPs) Using TE Metric
-       Extensions
-       RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
-  }
-
-  typedef srlg {
-    type uint32;
-    description
-      "SRLG type.";
-    reference
-      "RFC 4203: OSPF Extensions in Support of Generalized
-       Multi-Protocol Label Switching (GMPLS)
-       RFC 5307: IS-IS Extensions in Support of Generalized
-       Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  typedef te-common-status {
-    type enumeration {
-      enum up {
-        description
-          "Enabled.";
-      }
-      enum down {
-        description
-          "Disabled.";
-      }
-      enum testing {
-        description
-          "In some test mode.";
-      }
-      enum preparing-maintenance {
-        description
-          "The resource is disabled in the control plane to prepare
-           for a graceful shutdown for maintenance purposes.";
-        reference
-          "RFC 5817: Graceful Shutdown in MPLS and Generalized MPLS
-           Traffic Engineering Networks";
-      }
-      enum maintenance {
-        description
-          "The resource is disabled in the data plane for maintenance
-           purposes.";
-      }
-      enum unknown {
-        description
-          "Status is unknown.";
-      }
-    }
-    description
-      "Defines a type representing the common states of a TE
-       resource.";
-  }
-
-  typedef te-bandwidth {
-    type string {
-      pattern '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
-            + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?'
-            + '[pP](\+)?(12[0-7]|'
-            + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+'
-            + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
-            + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?'
-            + '[pP](\+)?(12[0-7]|'
-            + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*';
-    }
-    description
-      "This is the generic bandwidth type.  It is a string containing
-       a list of numbers separated by commas, where each of these
-       numbers can be non-negative decimal, hex integer, or
-       hex float:
-
-       (dec | hex | float)[*(','(dec | hex | float))]
-
-       For the packet-switching type, the string encoding follows
-       the type 'bandwidth-ieee-float32' as defined in RFC 8294
-       (e.g., 0x1p10), where the units are in bytes per second.
-
-       For the Optical Transport Network (OTN) switching type,
-       a list of integers can be used, such as '0,2,3,1', indicating
-       two ODU0s and one ODU3.  ('ODU' stands for 'Optical Data
-       Unit'.)  For Dense Wavelength Division Multiplexing (DWDM),
-       a list of pairs of slot numbers and widths can be used,
-       such as '0,2,3,3', indicating a frequency slot 0 with
-       slot width 2 and a frequency slot 3 with slot width 3.
-       Canonically, the string is represented as all lowercase and in
-       hex, where the prefix '0x' precedes the hex number.";
-    reference
-      "RFC 8294: Common YANG Data Types for the Routing Area
-       ITU-T Recommendation G.709: Interfaces for the
-       optical transport network";
-  }
-
-  typedef te-ds-class {
-    type uint8 {
-      range "0..7";
-    }
-    description
-      "The Differentiated Services Class-Type of traffic.";
-    reference
-      "RFC 4124: Protocol Extensions for Support of Diffserv-aware
-       MPLS Traffic Engineering, Section 4.3.1";
-  }
-
-  typedef te-global-id {
-    type uint32;
-    description
-      "An identifier to uniquely identify an operator, which can be
-       either a provider or a client.
-       The definition of this type is taken from RFCs 6370 and 5003.
-       This attribute type is used solely to provide a globally
-       unique context for TE topologies.";
-    reference
-      "RFC 5003: Attachment Individual Identifier (AII) Types for
-       Aggregation
-       RFC 6370: MPLS Transport Profile (MPLS-TP) Identifiers";
-  }
-
-  typedef te-hop-type {
-    type enumeration {
-      enum loose {
-        description
-          "A loose hop in an explicit path.";
-      }
-      enum strict {
-        description
-          "A strict hop in an explicit path.";
-      }
-    }
-    description
-      "Enumerated type for specifying loose or strict paths.";
-    reference
-      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
-       Section 4.3.3";
-  }
-
-  typedef te-link-access-type {
-    type enumeration {
-      enum point-to-point {
-        description
-          "The link is point-to-point.";
-      }
-      enum multi-access {
-        description
-          "The link is multi-access, including broadcast and NBMA.";
-      }
-    }
-    description
-      "Defines a type representing the access type of a TE link.";
-    reference
-      "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
-       Version 2";
-  }
-
-  typedef te-label-direction {
-    type enumeration {
-      enum forward {
-        description
-          "Label allocated for the forward LSP direction.";
-      }
-      enum reverse {
-        description
-          "Label allocated for the reverse LSP direction.";
-      }
-    }
-    description
-      "Enumerated type for specifying the forward or reverse
-       label.";
-  }
-
-  typedef te-link-direction {
-    type enumeration {
-      enum incoming {
-        description
-          "The explicit route represents an incoming link on
-           a node.";
-      }
-      enum outgoing {
-        description
-          "The explicit route represents an outgoing link on
-           a node.";
-      }
-    }
-    description
-      "Enumerated type for specifying the direction of a link on
-       a node.";
-  }
-
-  typedef te-metric {
-    type uint32;
-    description
-      "TE metric.";
-    reference
-      "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
-       second MPLS Traffic Engineering (TE) Metric";
-  }
-
-  typedef te-node-id {
-    type yang:dotted-quad;
-    description
-      "A type representing the identifier for a node in a TE
-       topology.
-       The identifier is represented as 4 octets in dotted-quad
-       notation.
-       This attribute MAY be mapped to the Router Address TLV
-       described in Section 2.4.1 of RFC 3630, the TE Router ID
-       described in Section 3 of RFC 6827, the Traffic Engineering
-       Router ID TLV described in Section 4.3 of RFC 5305, or the
-       TE Router ID TLV described in Section 3.2.1 of RFC 6119.
-       The reachability of such a TE node MAY be achieved by a
-       mechanism such as that described in Section 6.2 of RFC 6827.";
-    reference
-      "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
-       Version 2, Section 2.4.1
-       RFC 5305: IS-IS Extensions for Traffic Engineering,
-       Section 4.3
-       RFC 6119: IPv6 Traffic Engineering in IS-IS, Section 3.2.1
-       RFC 6827: Automatically Switched Optical Network (ASON)
-       Routing for OSPFv2 Protocols, Section 3";
-  }
-
-  typedef te-oper-status {
-    type te-common-status;
-    description
-      "Defines a type representing the operational status of
-       a TE resource.";
-  }
-
-  typedef te-admin-status {
-    type te-common-status;
-    description
-      "Defines a type representing the administrative status of
-       a TE resource.";
-  }
-
-  typedef te-path-disjointness {
-    type bits {
-      bit node {
-        position 0;
-        description
-          "Node disjoint.";
-      }
-      bit link {
-        position 1;
-        description
-          "Link disjoint.";
-      }
-      bit srlg {
-        position 2;
-        description
-          "SRLG (Shared Risk Link Group) disjoint.";
-      }
-    }
-    description
-      "Type of the resource disjointness for a TE tunnel path.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
-  }
-
-  typedef te-recovery-status {
-    type enumeration {
-      enum normal {
-        description
-          "Both the recovery span and the working span are fully
-           allocated and active, data traffic is being
-           transported over (or selected from) the working
-           span, and no trigger events are reported.";
-      }
-      enum recovery-started {
-        description
-          "The recovery action has been started but not completed.";
-      }
-      enum recovery-succeeded {
-        description
-          "The recovery action has succeeded.  The working span has
-           reported a failure/degrade condition, and the user traffic
-           is being transported (or selected) on the recovery span.";
-      }
-      enum recovery-failed {
-        description
-          "The recovery action has failed.";
-      }
-      enum reversion-started {
-        description
-          "The reversion has started.";
-      }
-      enum reversion-succeeded {
-        description
-          "The reversion action has succeeded.";
-      }
-      enum reversion-failed {
-        description
-          "The reversion has failed.";
-      }
-      enum recovery-unavailable {
-        description
-          "The recovery is unavailable, as a result of either an
-           operator's lockout command or a failure condition
-           detected on the recovery span.";
-      }
-      enum recovery-admin {
-        description
-          "The operator has issued a command to switch the user
-           traffic to the recovery span.";
-      }
-      enum wait-to-restore {
-        description
-          "The recovery domain is recovering from a failure/degrade
-           condition on the working span that is being controlled by
-           the Wait-to-Restore (WTR) timer.";
-      }
-    }
-    description
-      "Defines the status of a recovery action.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)
-       RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection";
-  }
-
-  typedef te-template-name {
-    type string {
-      pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
-    }
-    description
-      "A type for the name of a TE node template or TE link
-       template.";
-  }
-
-  typedef te-topology-event-type {
-    type enumeration {
-      enum add {
-        value 0;
-        description
-          "A TE node or TE link has been added.";
-      }
-      enum remove {
-        value 1;
-        description
-          "A TE node or TE link has been removed.";
-      }
-      enum update {
-        value 2;
-        description
-          "A TE node or TE link has been updated.";
-      }
-    }
-    description
-      "TE event type for notifications.";
-  }
-
-  typedef te-topology-id {
-    type union {
-      type string {
-        length "0";
-        // empty string
-      }
-      type string {
-        pattern '([a-zA-Z0-9\-_.]+:)*'
-              + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
-      }
-    }
-    description
-      "An identifier for a topology.
-       It is optional to have one or more prefixes at the beginning,
-       separated by colons.  The prefixes can be 'network-types' as
-       defined in the 'ietf-network' module in RFC 8345, to help the
-       user better understand the topology before further inquiry
-       is made.";
-    reference
-      "RFC 8345: A YANG Data Model for Network Topologies";
-  }
-
-  typedef te-tp-id {
-    type union {
-      type uint32;
-      // Unnumbered
-      type inet:ip-address;
-      // IPv4 or IPv6 address
-    }
-    description
-      "An identifier for a TE link endpoint on a node.
-       This attribute is mapped to a local or remote link identifier
-       as defined in RFCs 3630 and 5305.";
-    reference
-      "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
-       Version 2
-       RFC 5305: IS-IS Extensions for Traffic Engineering";
-  }
-
-  /* TE features */
-
-  feature p2mp-te {
-    description
-      "Indicates support for Point-to-Multipoint TE (P2MP-TE).";
-    reference
-      "RFC 4875: Extensions to Resource Reservation Protocol -
-       Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE
-       Label Switched Paths (LSPs)";
-  }
-
-  feature frr-te {
-    description
-      "Indicates support for TE Fast Reroute (FRR).";
-    reference
-      "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels";
-  }
-
-  feature extended-admin-groups {
-    description
-      "Indicates support for TE link extended administrative
-       groups.";
-    reference
-      "RFC 7308: Extended Administrative Groups in MPLS Traffic
-       Engineering (MPLS-TE)";
-  }
-
-  feature named-path-affinities {
-    description
-      "Indicates support for named path affinities.";
-  }
-
-  feature named-extended-admin-groups {
-    description
-      "Indicates support for named extended administrative groups.";
-  }
-
-  feature named-srlg-groups {
-    description
-      "Indicates support for named SRLG groups.";
-  }
-
-  feature named-path-constraints {
-    description
-      "Indicates support for named path constraints.";
-  }
-
-  feature path-optimization-metric {
-    description
-      "Indicates support for path optimization metrics.";
-  }
-
-  feature path-optimization-objective-function {
-    description
-      "Indicates support for path optimization objective functions.";
-  }
-
-  /*
-   * Identities
-   */
-
-  identity session-attributes-flags {
-    description
-      "Base identity for the RSVP-TE session attributes flags.";
-  }
-
-  identity local-protection-desired {
-    base session-attributes-flags;
-    description
-      "Local protection is desired.";
-    reference
-      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
-       Section 4.7.1";
-  }
-
-  identity se-style-desired {
-    base session-attributes-flags;
-    description
-      "Shared explicit style, to allow the LSP to be established
-       and share resources with the old LSP.";
-    reference
-      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
-  }
-
-  identity local-recording-desired {
-    base session-attributes-flags;
-    description
-      "Label recording is desired.";
-    reference
-      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
-       Section 4.7.1";
-  }
-
-  identity bandwidth-protection-desired {
-    base session-attributes-flags;
-    description
-      "Requests FRR bandwidth protection on LSRs, if present.";
-    reference
-      "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels";
-  }
-
-  identity node-protection-desired {
-    base session-attributes-flags;
-    description
-      "Requests FRR node protection on LSRs, if present.";
-    reference
-      "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels";
-  }
-
-  identity path-reevaluation-request {
-    base session-attributes-flags;
-    description
-      "This flag indicates that a path re-evaluation (of the
-       current path in use) is requested.  Note that this does
-       not trigger any LSP reroutes but instead just signals a
-       request to evaluate whether a preferable path exists.";
-    reference
-      "RFC 4736: Reoptimization of Multiprotocol Label Switching
-       (MPLS) Traffic Engineering (TE) Loosely Routed Label Switched
-       Path (LSP)";
-  }
-
-  identity soft-preemption-desired {
-    base session-attributes-flags;
-    description
-      "Soft preemption of LSP resources is desired.";
-    reference
-      "RFC 5712: MPLS Traffic Engineering Soft Preemption";
-  }
-
-  identity lsp-attributes-flags {
-    description
-      "Base identity for LSP attributes flags.";
-  }
-
-  identity end-to-end-rerouting-desired {
-    base lsp-attributes-flags;
-    description
-      "Indicates end-to-end rerouting behavior for an LSP
-       undergoing establishment.  This MAY also be used to
-       specify the behavior of end-to-end LSP recovery for
-       established LSPs.";
-    reference
-      "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS
-       RSVP-TE
-       RFC 5420: Encoding of Attributes for MPLS LSP Establishment
-       Using Resource Reservation Protocol Traffic Engineering
-       (RSVP-TE)
-       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
-       Route Object (ERO)";
-  }
-
-  identity boundary-rerouting-desired {
-    base lsp-attributes-flags;
-    description
-      "Indicates boundary rerouting behavior for an LSP undergoing
-       establishment.  This MAY also be used to specify
-       segment-based LSP recovery through nested crankback for
-       established LSPs.  The boundary Area Border Router (ABR) /
-       Autonomous System Border Router (ASBR) can decide to forward
-       the PathErr message upstream to either an upstream boundary
-       ABR/ASBR or the ingress LSR.  Alternatively, it can try to
-       select another egress boundary LSR.";
-    reference
-      "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS
-       RSVP-TE
-       RFC 5420: Encoding of Attributes for MPLS LSP Establishment
-       Using Resource Reservation Protocol Traffic Engineering
-       (RSVP-TE)
-       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
-       Route Object (ERO)";
-  }
-
-  identity segment-based-rerouting-desired {
-    base lsp-attributes-flags;
-    description
-      "Indicates segment-based rerouting behavior for an LSP
-       undergoing establishment.  This MAY also be used to specify
-       segment-based LSP recovery for established LSPs.";
-    reference
-      "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS
-       RSVP-TE
-       RFC 5420: Encoding of Attributes for MPLS LSP Establishment
-       Using Resource Reservation Protocol Traffic Engineering
-       (RSVP-TE)
-       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
-       Route Object (ERO)";
-  }
-
-  identity lsp-integrity-required {
-    base lsp-attributes-flags;
-    description
-      "Indicates that LSP integrity is required.";
-    reference
-      "RFC 4875: Extensions to Resource Reservation Protocol -
-       Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE
-       Label Switched Paths (LSPs)
-       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
-       Route Object (ERO)";
-  }
-
-  identity contiguous-lsp-desired {
-    base lsp-attributes-flags;
-    description
-      "Indicates that a contiguous LSP is desired.";
-    reference
-      "RFC 5151: Inter-Domain MPLS and GMPLS Traffic Engineering --
-       Resource Reservation Protocol-Traffic Engineering (RSVP-TE)
-       Extensions
-       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
-       Route Object (ERO)";
-  }
-
-  identity lsp-stitching-desired {
-    base lsp-attributes-flags;
-    description
-      "Indicates that LSP stitching is desired.";
-    reference
-      "RFC 5150: Label Switched Path Stitching with Generalized
-       Multiprotocol Label Switching Traffic Engineering (GMPLS TE)
-       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
-       Route Object (ERO)";
-  }
-
-  identity pre-planned-lsp-flag {
-    base lsp-attributes-flags;
-    description
-      "Indicates that the LSP MUST be provisioned in the
-       control plane only.";
-    reference
-      "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions for
-       Multi-Layer and Multi-Region Networks (MLN/MRN)
-       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
-       Route Object (ERO)";
-  }
-
-  identity non-php-behavior-flag {
-    base lsp-attributes-flags;
-    description
-      "Indicates that non-PHP (non-Penultimate Hop Popping) behavior
-       for the LSP is desired.";
-    reference
-      "RFC 6511: Non-Penultimate Hop Popping Behavior and Out-of-Band
-       Mapping for RSVP-TE Label Switched Paths
-       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
-       Route Object (ERO)";
-  }
-
-  identity oob-mapping-flag {
-    base lsp-attributes-flags;
-    description
-      "Indicates that signaling of the egress binding information is
-       out of band (e.g., via the Border Gateway Protocol (BGP)).";
-    reference
-      "RFC 6511: Non-Penultimate Hop Popping Behavior and Out-of-Band
-       Mapping for RSVP-TE Label Switched Paths
-       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
-       Route Object (ERO)";
-  }
-
-  identity entropy-label-capability {
-    base lsp-attributes-flags;
-    description
-      "Indicates entropy label capability.";
-    reference
-      "RFC 6790: The Use of Entropy Labels in MPLS Forwarding
-       RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
-       Route Object (ERO)";
-  }
-
-  identity oam-mep-entity-desired {
-    base lsp-attributes-flags;
-    description
-      "OAM Maintenance Entity Group End Point (MEP) entities
-       desired.";
-    reference
-      "RFC 7260: GMPLS RSVP-TE Extensions for Operations,
-       Administration, and Maintenance (OAM) Configuration";
-  }
-
-  identity oam-mip-entity-desired {
-    base lsp-attributes-flags;
-    description
-      "OAM Maintenance Entity Group Intermediate Points (MIP)
-       entities desired.";
-    reference
-      "RFC 7260: GMPLS RSVP-TE Extensions for Operations,
-       Administration, and Maintenance (OAM) Configuration";
-  }
-
-  identity srlg-collection-desired {
-    base lsp-attributes-flags;
-    description
-      "SRLG collection desired.";
-    reference
-      "RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
-       Route Object (ERO)
-       RFC 8001: RSVP-TE Extensions for Collecting Shared Risk
-       Link Group (SRLG) Information";
-  }
-
-  identity loopback-desired {
-    base lsp-attributes-flags;
-    description
-      "This flag indicates that a particular node on the LSP is
-       required to enter loopback mode.  This can also be
-       used to specify the loopback state of the node.";
-    reference
-      "RFC 7571: GMPLS RSVP-TE Extensions for Lock Instruct and
-       Loopback";
-  }
-
-  identity p2mp-te-tree-eval-request {
-    base lsp-attributes-flags;
-    description
-      "P2MP-TE tree re-evaluation request.";
-    reference
-      "RFC 8149: RSVP Extensions for Reoptimization of Loosely Routed
-       Point-to-Multipoint Traffic Engineering Label Switched Paths
-       (LSPs)";
-  }
-
-  identity rtm-set-desired {
-    base lsp-attributes-flags;
-    description
-      "Residence Time Measurement (RTM) attribute flag requested.";
-    reference
-      "RFC 8169: Residence Time Measurement in MPLS Networks";
-  }
-
-  identity link-protection-type {
-    description
-      "Base identity for the link protection type.";
-  }
-
-  identity link-protection-unprotected {
-    base link-protection-type;
-    description
-      "Unprotected link type.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
-  }
-
-  identity link-protection-extra-traffic {
-    base link-protection-type;
-    description
-      "Extra-Traffic protected link type.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity link-protection-shared {
-    base link-protection-type;
-    description
-      "Shared protected link type.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
-  }
-
-  identity link-protection-1-for-1 {
-    base link-protection-type;
-    description
-      "One-for-one (1:1) protected link type.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
-  }
-
-  identity link-protection-1-plus-1 {
-    base link-protection-type;
-    description
-      "One-plus-one (1+1) protected link type.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
-  }
-
-  identity link-protection-enhanced {
-    base link-protection-type;
-    description
-      "A compound link protection type derived from the underlay
-       TE tunnel protection configuration supporting the TE link.";
-  }
-
-  identity association-type {
-    description
-      "Base identity for the tunnel association.";
-  }
-
-  identity association-type-recovery {
-    base association-type;
-    description
-      "Association type for recovery, used to associate LSPs of the
-       same tunnel for recovery.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery
-       RFC 6780: RSVP ASSOCIATION Object Extensions";
-  }
-
-  identity association-type-resource-sharing {
-    base association-type;
-    description
-      "Association type for resource sharing, used to enable
-       resource sharing during make-before-break.";
-    reference
-      "RFC 4873: GMPLS Segment Recovery
-       RFC 6780: RSVP ASSOCIATION Object Extensions";
-  }
-
-  identity association-type-double-sided-bidir {
-    base association-type;
-    description
-      "Association type for double-sided bidirectional LSPs,
-       used to associate two LSPs of two tunnels that are
-       independently configured on either endpoint.";
-    reference
-      "RFC 7551: RSVP-TE Extensions for Associated Bidirectional
-       Label Switched Paths (LSPs)";
-  }
-
-  identity association-type-single-sided-bidir {
-    base association-type;
-    description
-      "Association type for single-sided bidirectional LSPs,
-       used to associate two LSPs of two tunnels, where one
-       tunnel is configured on one side/endpoint and the other
-       tunnel is dynamically created on the other endpoint.";
-    reference
-      "RFC 6780: RSVP ASSOCIATION Object Extensions
-       RFC 7551: RSVP-TE Extensions for Associated Bidirectional
-       Label Switched Paths (LSPs)";
-  }
-
-  identity objective-function-type {
-    description
-      "Base objective function type.";
-  }
-
-  identity of-minimize-cost-path {
-    base objective-function-type;
-    description
-      "Objective function for minimizing path cost.";
-    reference
-      "RFC 5541: Encoding of Objective Functions in the Path
-       Computation Element Communication Protocol (PCEP)";
-  }
-
-  identity of-minimize-load-path {
-    base objective-function-type;
-    description
-      "Objective function for minimizing the load on one or more
-       paths.";
-    reference
-      "RFC 5541: Encoding of Objective Functions in the Path
-       Computation Element Communication Protocol (PCEP)";
-  }
-
-  identity of-maximize-residual-bandwidth {
-    base objective-function-type;
-    description
-      "Objective function for maximizing residual bandwidth.";
-    reference
-      "RFC 5541: Encoding of Objective Functions in the Path
-       Computation Element Communication Protocol (PCEP)";
-  }
-
-  identity of-minimize-agg-bandwidth-consumption {
-    base objective-function-type;
-    description
-      "Objective function for minimizing aggregate bandwidth
-       consumption.";
-    reference
-      "RFC 5541: Encoding of Objective Functions in the Path
-       Computation Element Communication Protocol (PCEP)";
-  }
-
-  identity of-minimize-load-most-loaded-link {
-    base objective-function-type;
-    description
-      "Objective function for minimizing the load on the link that
-       is carrying the highest load.";
-    reference
-      "RFC 5541: Encoding of Objective Functions in the Path
-       Computation Element Communication Protocol (PCEP)";
-  }
-
-  identity of-minimize-cost-path-set {
-    base objective-function-type;
-    description
-      "Objective function for minimizing the cost on a path set.";
-    reference
-      "RFC 5541: Encoding of Objective Functions in the Path
-       Computation Element Communication Protocol (PCEP)";
-  }
-
-  identity path-computation-method {
-    description
-      "Base identity for supported path computation mechanisms.";
-  }
-
-  identity path-locally-computed {
-    base path-computation-method;
-    description
-      "Indicates a constrained-path LSP in which the
-       path is computed by the local LER.";
-    reference
-      "RFC 3272: Overview and Principles of Internet Traffic
-       Engineering, Section 5.4";
-  }
-
-  identity path-externally-queried {
-    base path-computation-method;
-    description
-      "Constrained-path LSP in which the path is obtained by
-       querying an external source, such as a PCE server.
-       In the case that an LSP is defined to be externally queried,
-       it may also have associated explicit definitions (provided
-       to the external source to aid computation).  The path that is
-       returned by the external source may require further local
-       computation on the device.";
-    reference
-      "RFC 3272: Overview and Principles of Internet Traffic
-       Engineering
-       RFC 4657: Path Computation Element (PCE) Communication
-       Protocol Generic Requirements";
-  }
-
-  identity path-explicitly-defined {
-    base path-computation-method;
-    description
-      "Constrained-path LSP in which the path is
-       explicitly specified as a collection of strict and/or loose
-       hops.";
-    reference
-      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
-       RFC 3272: Overview and Principles of Internet Traffic
-       Engineering";
-  }
-
-  identity lsp-metric-type {
-    description
-      "Base identity for the LSP metric specification types.";
-  }
-
-  identity lsp-metric-relative {
-    base lsp-metric-type;
-    description
-      "The metric specified for the LSPs to which this identity
-       refers is specified as a value relative to the IGP metric
-       cost to the LSP's tail end.";
-    reference
-      "RFC 4657: Path Computation Element (PCE) Communication
-       Protocol Generic Requirements";
-  }
-
-  identity lsp-metric-absolute {
-    base lsp-metric-type;
-    description
-      "The metric specified for the LSPs to which this identity
-       refers is specified as an absolute value.";
-    reference
-      "RFC 4657: Path Computation Element (PCE) Communication
-       Protocol Generic Requirements";
-  }
-
-  identity lsp-metric-inherited {
-    base lsp-metric-type;
-    description
-      "The metric for the LSPs to which this identity refers is
-       not specified explicitly; rather, it is directly inherited
-       from the IGP cost.";
-    reference
-      "RFC 4657: Path Computation Element (PCE) Communication
-       Protocol Generic Requirements";
-  }
-
-  identity te-tunnel-type {
-    description
-      "Base identity from which specific tunnel types are derived.";
-  }
-
-  identity te-tunnel-p2p {
-    base te-tunnel-type;
-    description
-      "TE Point-to-Point (P2P) tunnel type.";
-    reference
-      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
-  }
-
-  identity te-tunnel-p2mp {
-    base te-tunnel-type;
-    description
-      "TE P2MP tunnel type.";
-    reference
-      "RFC 4875: Extensions to Resource Reservation Protocol -
-       Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE
-       Label Switched Paths (LSPs)";
-  }
-
-  identity tunnel-action-type {
-    description
-      "Base identity from which specific tunnel action types
-       are derived.";
-  }
-
-  identity tunnel-action-resetup {
-    base tunnel-action-type;
-    description
-      "TE tunnel action that tears down the tunnel's current LSP
-       (if any) and attempts to re-establish a new LSP.";
-  }
-
-  identity tunnel-action-reoptimize {
-    base tunnel-action-type;
-    description
-      "TE tunnel action that reoptimizes the placement of the
-       tunnel LSP(s).";
-  }
-
-  identity tunnel-action-switchpath {
-    base tunnel-action-type;
-    description
-      "TE tunnel action that switches the tunnel's LSP to use the
-       specified path.";
-  }
-
-  identity te-action-result {
-    description
-      "Base identity from which specific TE action results
-       are derived.";
-  }
-
-  identity te-action-success {
-    base te-action-result;
-    description
-      "TE action was successful.";
-  }
-
-  identity te-action-fail {
-    base te-action-result;
-    description
-      "TE action failed.";
-  }
-
-  identity tunnel-action-inprogress {
-    base te-action-result;
-    description
-      "TE action is in progress.";
-  }
-
-  identity tunnel-admin-state-type {
-    description
-      "Base identity for TE tunnel administrative states.";
-  }
-
-  identity tunnel-admin-state-up {
-    base tunnel-admin-state-type;
-    description
-      "Tunnel's administrative state is up.";
-  }
-
-  identity tunnel-admin-state-down {
-    base tunnel-admin-state-type;
-    description
-      "Tunnel's administrative state is down.";
-  }
-
-  identity tunnel-state-type {
-    description
-      "Base identity for TE tunnel states.";
-  }
-
-  identity tunnel-state-up {
-    base tunnel-state-type;
-    description
-      "Tunnel's state is up.";
-  }
-
-  identity tunnel-state-down {
-    base tunnel-state-type;
-    description
-      "Tunnel's state is down.";
-  }
-
-  identity lsp-state-type {
-    description
-      "Base identity for TE LSP states.";
-  }
-
-  identity lsp-path-computing {
-    base lsp-state-type;
-    description
-      "State path computation is in progress.";
-  }
-
-  identity lsp-path-computation-ok {
-    base lsp-state-type;
-    description
-      "State path computation was successful.";
-  }
-
-  identity lsp-path-computation-failed {
-    base lsp-state-type;
-    description
-      "State path computation failed.";
-  }
-
-  identity lsp-state-setting-up {
-    base lsp-state-type;
-    description
-      "State is being set up.";
-  }
-
-  identity lsp-state-setup-ok {
-    base lsp-state-type;
-    description
-      "State setup was successful.";
-  }
-
-  identity lsp-state-setup-failed {
-    base lsp-state-type;
-    description
-      "State setup failed.";
-  }
-
-  identity lsp-state-up {
-    base lsp-state-type;
-    description
-      "State is up.";
-  }
-
-  identity lsp-state-tearing-down {
-    base lsp-state-type;
-    description
-      "State is being torn down.";
-  }
-
-  identity lsp-state-down {
-    base lsp-state-type;
-    description
-      "State is down.";
-  }
-
-  identity path-invalidation-action-type {
-    description
-      "Base identity for TE path invalidation action types.";
-  }
-
-  identity path-invalidation-action-drop {
-    base path-invalidation-action-type;
-    description
-      "Upon invalidation of the TE tunnel path, the tunnel remains
-       valid, but any packet mapped over the tunnel is dropped.";
-    reference
-      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
-       Section 2.5";
-  }
-
-  identity path-invalidation-action-teardown {
-    base path-invalidation-action-type;
-    description
-      "TE path invalidation action teardown.";
-    reference
-      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
-       Section 2.5";
-  }
-
-  identity lsp-restoration-type {
-    description
-      "Base identity from which LSP restoration types are derived.";
-  }
-
-  identity lsp-restoration-restore-any {
-    base lsp-restoration-type;
-    description
-      "Any LSP affected by a failure is restored.";
-  }
-
-  identity lsp-restoration-restore-all {
-    base lsp-restoration-type;
-    description
-      "Affected LSPs are restored after all LSPs of the tunnel are
-       broken.";
-  }
-
-  identity restoration-scheme-type {
-    description
-      "Base identity for LSP restoration schemes.";
-  }
-
-  identity restoration-scheme-preconfigured {
-    base restoration-scheme-type;
-    description
-      "Restoration LSP is preconfigured prior to the failure.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity restoration-scheme-precomputed {
-    base restoration-scheme-type;
-    description
-      "Restoration LSP is precomputed prior to the failure.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity restoration-scheme-presignaled {
-    base restoration-scheme-type;
-    description
-      "Restoration LSP is presignaled prior to the failure.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity lsp-protection-type {
-    description
-      "Base identity from which LSP protection types are derived.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
-  }
-
-  identity lsp-protection-unprotected {
-    base lsp-protection-type;
-    description
-      "'Unprotected' LSP protection type.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
-  }
-
-  identity lsp-protection-reroute-extra {
-    base lsp-protection-type;
-    description
-      "'(Full) Rerouting' LSP protection type.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
-  }
-
-  identity lsp-protection-reroute {
-    base lsp-protection-type;
-    description
-      "'Rerouting without Extra-Traffic' LSP protection type.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
-  }
-
-  identity lsp-protection-1-for-n {
-    base lsp-protection-type;
-    description
-      "'1:N Protection with Extra-Traffic' LSP protection type.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
-  }
-
-  identity lsp-protection-1-for-1 {
-    base lsp-protection-type;
-    description
-      "LSP protection '1:1 Protection Type'.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
-  }
-
-  identity lsp-protection-unidir-1-plus-1 {
-    base lsp-protection-type;
-    description
-      "'1+1 Unidirectional Protection' LSP protection type.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
-  }
-
-  identity lsp-protection-bidir-1-plus-1 {
-    base lsp-protection-type;
-    description
-      "'1+1 Bidirectional Protection' LSP protection type.";
-    reference
-      "RFC 4872: RSVP-TE Extensions in Support of End-to-End
-       Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
-  }
-
-  identity lsp-protection-extra-traffic {
-    base lsp-protection-type;
-    description
-      "Extra-Traffic LSP protection type.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity lsp-protection-state {
-    description
-      "Base identity of protection states for reporting purposes.";
-  }
-
-  identity normal {
-    base lsp-protection-state;
-    description
-      "Normal state.";
-  }
-
-  identity signal-fail-of-protection {
-    base lsp-protection-state;
-    description
-      "The protection transport entity has a signal fail condition
-       that is of higher priority than the forced switchover
-       command.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity lockout-of-protection {
-    base lsp-protection-state;
-    description
-      "A Loss of Protection (LoP) command is active.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity forced-switch {
-    base lsp-protection-state;
-    description
-      "A forced switchover command is active.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity signal-fail {
-    base lsp-protection-state;
-    description
-      "There is a signal fail condition on either the working path
-       or the protection path.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity signal-degrade {
-    base lsp-protection-state;
-    description
-      "There is a signal degrade condition on either the working
-       path or the protection path.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity manual-switch {
-    base lsp-protection-state;
-    description
-      "A manual switchover command is active.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity wait-to-restore {
-    base lsp-protection-state;
-    description
-      "A WTR timer is running.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity do-not-revert {
-    base lsp-protection-state;
-    description
-      "A Do Not Revert (DNR) condition is active because of
-       non-revertive behavior.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity failure-of-protocol {
-    base lsp-protection-state;
-    description
-      "LSP protection is not working because of a protocol failure
-       condition.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity protection-external-commands {
-    description
-      "Base identity from which protection-related external commands
-       used for troubleshooting purposes are derived.";
-  }
-
-  identity action-freeze {
-    base protection-external-commands;
-    description
-      "A temporary configuration action initiated by an operator
-       command that prevents any switchover action from being taken
-       and, as such, freezes the current state.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity clear-freeze {
-    base protection-external-commands;
-    description
-      "An action that clears the active freeze state.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity action-lockout-of-normal {
-    base protection-external-commands;
-    description
-      "A temporary configuration action initiated by an operator
-       command to ensure that the normal traffic is not allowed
-       to use the protection transport entity.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity clear-lockout-of-normal {
-    base protection-external-commands;
-    description
-      "An action that clears the active lockout of the
-       normal state.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity action-lockout-of-protection {
-    base protection-external-commands;
-    description
-      "A temporary configuration action initiated by an operator
-       command to ensure that the protection transport entity is
-       temporarily not available to transport a traffic signal
-       (either normal or Extra-Traffic).";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity action-forced-switch {
-    base protection-external-commands;
-    description
-      "A switchover action initiated by an operator command to switch
-       the Extra-Traffic signal, the normal traffic signal, or the
-       null signal to the protection transport entity, unless a
-       switchover command of equal or higher priority is in effect.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity action-manual-switch {
-    base protection-external-commands;
-    description
-      "A switchover action initiated by an operator command to switch
-       the Extra-Traffic signal, the normal traffic signal, or
-       the null signal to the protection transport entity, unless
-       a fault condition exists on other transport entities or a
-       switchover command of equal or higher priority is in effect.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity action-exercise {
-    base protection-external-commands;
-    description
-      "An action that starts testing whether or not APS communication
-       is operating correctly.  It is of lower priority than any
-       other state or command.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity clear {
-    base protection-external-commands;
-    description
-      "An action that clears the active near-end lockout of a
-       protection, forced switchover, manual switchover, WTR state,
-       or exercise command.";
-    reference
-      "RFC 4427: Recovery (Protection and Restoration) Terminology
-       for Generalized Multi-Protocol Label Switching (GMPLS)";
-  }
-
-  identity switching-capabilities {
-    description
-      "Base identity for interface switching capabilities.";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity switching-psc1 {
-    base switching-capabilities;
-    description
-      "Packet-Switch Capable-1 (PSC-1).";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity switching-evpl {
-    base switching-capabilities;
-    description
-      "Ethernet Virtual Private Line (EVPL).";
-    reference
-      "RFC 6004: Generalized MPLS (GMPLS) Support for Metro Ethernet
-       Forum and G.8011 Ethernet Service Switching";
-  }
-
-  identity switching-l2sc {
-    base switching-capabilities;
-    description
-      "Layer-2 Switch Capable (L2SC).";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity switching-tdm {
-    base switching-capabilities;
-    description
-      "Time-Division-Multiplex Capable (TDM).";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity switching-otn {
-    base switching-capabilities;
-    description
-      "OTN-TDM capable.";
-    reference
-      "RFC 7138: Traffic Engineering Extensions to OSPF for GMPLS
-       Control of Evolving G.709 Optical Transport Networks";
-  }
-
-  identity switching-dcsc {
-    base switching-capabilities;
-    description
-      "Data Channel Switching Capable (DCSC).";
-    reference
-      "RFC 6002: Generalized MPLS (GMPLS) Data Channel
-       Switching Capable (DCSC) and Channel Set Label Extensions";
-  }
-
-  identity switching-lsc {
-    base switching-capabilities;
-    description
-      "Lambda-Switch Capable (LSC).";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity switching-fsc {
-    base switching-capabilities;
-    description
-      "Fiber-Switch Capable (FSC).";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity lsp-encoding-types {
-    description
-      "Base identity for encoding types.";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity lsp-encoding-packet {
-    base lsp-encoding-types;
-    description
-      "Packet LSP encoding.";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity lsp-encoding-ethernet {
-    base lsp-encoding-types;
-    description
-      "Ethernet LSP encoding.";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity lsp-encoding-pdh {
-    base lsp-encoding-types;
-    description
-      "ANSI/ETSI PDH LSP encoding.";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity lsp-encoding-sdh {
-    base lsp-encoding-types;
-    description
-      "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding.";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity lsp-encoding-digital-wrapper {
-    base lsp-encoding-types;
-    description
-      "Digital Wrapper LSP encoding.";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity lsp-encoding-lambda {
-    base lsp-encoding-types;
-    description
-      "Lambda (photonic) LSP encoding.";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity lsp-encoding-fiber {
-    base lsp-encoding-types;
-    description
-      "Fiber LSP encoding.";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity lsp-encoding-fiber-channel {
-    base lsp-encoding-types;
-    description
-      "FiberChannel LSP encoding.";
-    reference
-      "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Functional Description";
-  }
-
-  identity lsp-encoding-oduk {
-    base lsp-encoding-types;
-    description
-      "G.709 ODUk (Digital Path) LSP encoding.";
-    reference
-      "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Extensions for G.709 Optical Transport Networks
-       Control";
-  }
-
-  identity lsp-encoding-optical-channel {
-    base lsp-encoding-types;
-    description
-      "G.709 Optical Channel LSP encoding.";
-    reference
-      "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS)
-       Signaling Extensions for G.709 Optical Transport Networks
-       Control";
-  }
-
-  identity lsp-encoding-line {
-    base lsp-encoding-types;
-    description
-      "Line (e.g., 8B/10B) LSP encoding.";
-    reference
-      "RFC 6004: Generalized MPLS (GMPLS) Support for Metro
-       Ethernet Forum and G.8011 Ethernet Service Switching";
-  }
-
-  identity path-signaling-type {
-    description
-      "Base identity from which specific LSP path setup types
-       are derived.";
-  }
-
-  identity path-setup-static {
-    base path-signaling-type;
-    description
-      "Static LSP provisioning path setup.";
-  }
-
-  identity path-setup-rsvp {
-    base path-signaling-type;
-    description
-      "RSVP-TE signaling path setup.";
-    reference
-      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
-  }
-
-  identity path-setup-sr {
-    base path-signaling-type;
-    description
-      "Segment-routing path setup.";
-  }
-
-  identity path-scope-type {
-    description
-      "Base identity from which specific path scope types are
-       derived.";
-  }
-
-  identity path-scope-segment {
-    base path-scope-type;
-    description
-      "Path scope segment.";
-    reference
-      "RFC 4873: GMPLS Segment Recovery";
-  }
-
-  identity path-scope-end-to-end {
-    base path-scope-type;
-    description
-      "Path scope end to end.";
-    reference
-      "RFC 4873: GMPLS Segment Recovery";
-  }
-
-  identity route-usage-type {
-    description
-      "Base identity for route usage.";
-  }
-
-  identity route-include-object {
-    base route-usage-type;
-    description
-      "'Include route' object.";
-  }
-
-  identity route-exclude-object {
-    base route-usage-type;
-    description
-      "'Exclude route' object.";
-    reference
-      "RFC 4874: Exclude Routes - Extension to Resource ReserVation
-       Protocol-Traffic Engineering (RSVP-TE)";
-  }
-
-  identity route-exclude-srlg {
-    base route-usage-type;
-    description
-      "Excludes SRLGs.";
-    reference
-      "RFC 4874: Exclude Routes - Extension to Resource ReserVation
-       Protocol-Traffic Engineering (RSVP-TE)";
-  }
-
-  identity path-metric-type {
-    description
-      "Base identity for the path metric type.";
-  }
-
-  identity path-metric-te {
-    base path-metric-type;
-    description
-      "TE path metric.";
-    reference
-      "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
-       second MPLS Traffic Engineering (TE) Metric";
-  }
-
-  identity path-metric-igp {
-    base path-metric-type;
-    description
-      "IGP path metric.";
-    reference
-      "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
-       second MPLS Traffic Engineering (TE) Metric";
-  }
-
-  identity path-metric-hop {
-    base path-metric-type;
-    description
-      "Hop path metric.";
-  }
-
-  identity path-metric-delay-average {
-    base path-metric-type;
-    description
-      "Average unidirectional link delay.";
-    reference
-      "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
-  }
-
-  identity path-metric-delay-minimum {
-    base path-metric-type;
-    description
-      "Minimum unidirectional link delay.";
-    reference
-      "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
-  }
-
-  identity path-metric-residual-bandwidth {
-    base path-metric-type;
-    description
-      "Unidirectional Residual Bandwidth, which is defined to be
-       Maximum Bandwidth (RFC 3630) minus the bandwidth currently
-       allocated to LSPs.";
-    reference
-      "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
-       Version 2
-       RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
-  }
-
-  identity path-metric-optimize-includes {
-    base path-metric-type;
-    description
-      "A metric that optimizes the number of included resources
-       specified in a set.";
-  }
-
-  identity path-metric-optimize-excludes {
-    base path-metric-type;
-    description
-      "A metric that optimizes to a maximum the number of excluded
-       resources specified in a set.";
-  }
-
-  identity path-tiebreaker-type {
-    description
-      "Base identity for the path tiebreaker type.";
-  }
-
-  identity path-tiebreaker-minfill {
-    base path-tiebreaker-type;
-    description
-      "Min-Fill LSP path placement.";
-  }
-
-  identity path-tiebreaker-maxfill {
-    base path-tiebreaker-type;
-    description
-      "Max-Fill LSP path placement.";
-  }
-
-  identity path-tiebreaker-random {
-    base path-tiebreaker-type;
-    description
-      "Random LSP path placement.";
-  }
-
-  identity resource-affinities-type {
-    description
-      "Base identity for resource class affinities.";
-    reference
-      "RFC 2702: Requirements for Traffic Engineering Over MPLS";
-  }
-
-  identity resource-aff-include-all {
-    base resource-affinities-type;
-    description
-      "The set of attribute filters associated with a
-       tunnel, all of which must be present for a link
-       to be acceptable.";
-    reference
-      "RFC 2702: Requirements for Traffic Engineering Over MPLS
-       RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
-  }
-
-  identity resource-aff-include-any {
-    base resource-affinities-type;
-    description
-      "The set of attribute filters associated with a
-       tunnel, any of which must be present for a link
-       to be acceptable.";
-    reference
-      "RFC 2702: Requirements for Traffic Engineering Over MPLS
-       RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
-  }
-
-  identity resource-aff-exclude-any {
-    base resource-affinities-type;
-    description
-      "The set of attribute filters associated with a
-       tunnel, any of which renders a link unacceptable.";
-    reference
-      "RFC 2702: Requirements for Traffic Engineering Over MPLS
-       RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
-  }
-
-  identity te-optimization-criterion {
-    description
-      "Base identity for the TE optimization criteria.";
-    reference
-      "RFC 3272: Overview and Principles of Internet Traffic
-       Engineering";
-  }
-
-  identity not-optimized {
-    base te-optimization-criterion;
-    description
-      "Optimization is not applied.";
-  }
-
-  identity cost {
-    base te-optimization-criterion;
-    description
-      "Optimized on cost.";
-    reference
-      "RFC 5541: Encoding of Objective Functions in the Path
-       Computation Element Communication Protocol (PCEP)";
-  }
-
-  identity delay {
-    base te-optimization-criterion;
-    description
-      "Optimized on delay.";
-    reference
-      "RFC 5541: Encoding of Objective Functions in the Path
-       Computation Element Communication Protocol (PCEP)";
-  }
-
-  identity path-computation-srlg-type {
-    description
-      "Base identity for SRLG path computation.";
-  }
-
-  identity srlg-ignore {
-    base path-computation-srlg-type;
-    description
-      "Ignores SRLGs in the path computation.";
-  }
-
-  identity srlg-strict {
-    base path-computation-srlg-type;
-    description
-      "Includes a strict SRLG check in the path computation.";
-  }
-
-  identity srlg-preferred {
-    base path-computation-srlg-type;
-    description
-      "Includes a preferred SRLG check in the path computation.";
-  }
-
-  identity srlg-weighted {
-    base path-computation-srlg-type;
-    description
-      "Includes a weighted SRLG check in the path computation.";
-  }
-
-  /**
-   * TE bandwidth groupings
-   **/
-
-  grouping te-bandwidth {
-    description
-      "This grouping defines the generic TE bandwidth.
-       For some known data-plane technologies, specific modeling
-       structures are specified.  The string-encoded 'te-bandwidth'
-       type is used for unspecified technologies.
-       The modeling structure can be augmented later for other
-       technologies.";
-    container te-bandwidth {
-      description
-        "Container that specifies TE bandwidth.  The choices
-         can be augmented for specific data-plane technologies.";
-      choice technology {
-        default "generic";
-        description
-          "Data-plane technology type.";
-        case generic {
-          leaf generic {
-            type te-bandwidth;
-            description
-              "Bandwidth specified in a generic format.";
-          }
-        }
-      }
-    }
-  }
-
-  /**
-   * TE label groupings
-   **/
-
-  grouping te-label {
-    description
-      "This grouping defines the generic TE label.
-       The modeling structure can be augmented for each technology.
-       For unspecified technologies, 'rt-types:generalized-label'
-       is used.";
-    container te-label {
-      description
-        "Container that specifies the TE label.  The choices can
-         be augmented for specific data-plane technologies.";
-      choice technology {
-        default "generic";
-        description
-          "Data-plane technology type.";
-        case generic {
-          leaf generic {
-            type rt-types:generalized-label;
-            description
-              "TE label specified in a generic format.";
-          }
-        }
-      }
-      leaf direction {
-        type te-label-direction;
-        default "forward";
-        description
-          "Label direction.";
-      }
-    }
-  }
-
-  grouping te-topology-identifier {
-    description
-      "Augmentation for a TE topology.";
-    container te-topology-identifier {
-      description
-        "TE topology identifier container.";
-      leaf provider-id {
-        type te-global-id;
-        default "0";
-        description
-          "An identifier to uniquely identify a provider.
-           If omitted, it assumes that the topology provider ID
-           value = 0 (the default).";
-      }
-      leaf client-id {
-        type te-global-id;
-        default "0";
-        description
-          "An identifier to uniquely identify a client.
-           If omitted, it assumes that the topology client ID
-           value = 0 (the default).";
-      }
-      leaf topology-id {
-        type te-topology-id;
-        default "";
-        description
-          "When the datastore contains several topologies,
-           'topology-id' distinguishes between them.  If omitted,
-           the default (empty) string for this leaf is assumed.";
-      }
-    }
-  }
-
-  /**
-   * TE performance metrics groupings
-   **/
-
-  grouping performance-metrics-one-way-delay-loss {
-    description
-      "Performance Metrics (PM) information in real time that can
-       be applicable to links or connections.  PM defined in this
-       grouping are applicable to generic TE PM as well as packet TE
-       PM.";
-    reference
-      "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
-       RFC 7823: Performance-Based Path Selection for Explicitly
-       Routed Label Switched Paths (LSPs) Using TE Metric
-       Extensions
-       RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
-    leaf one-way-delay {
-      type uint32 {
-        range "0..16777215";
-      }
-      description
-        "One-way delay or latency in microseconds.";
-    }
-    leaf one-way-delay-normality {
-      type te-types:performance-metrics-normality;
-      description
-        "One-way delay normality.";
-    }
-  }
-
-  grouping performance-metrics-two-way-delay-loss {
-    description
-      "PM information in real time that can be applicable to links or
-       connections.  PM defined in this grouping are applicable to
-       generic TE PM as well as packet TE PM.";
-    reference
-      "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
-       RFC 7823: Performance-Based Path Selection for Explicitly
-       Routed Label Switched Paths (LSPs) Using TE Metric
-       Extensions
-       RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
-    leaf two-way-delay {
-      type uint32 {
-        range "0..16777215";
-      }
-      description
-        "Two-way delay or latency in microseconds.";
-    }
-    leaf two-way-delay-normality {
-      type te-types:performance-metrics-normality;
-      description
-        "Two-way delay normality.";
-    }
-  }
-
-  grouping performance-metrics-one-way-bandwidth {
-    description
-      "PM information in real time that can be applicable to links.
-       PM defined in this grouping are applicable to generic TE PM
-       as well as packet TE PM.";
-    reference
-      "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
-       RFC 7823: Performance-Based Path Selection for Explicitly
-       Routed Label Switched Paths (LSPs) Using TE Metric
-       Extensions
-       RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
-    leaf one-way-residual-bandwidth {
-      type rt-types:bandwidth-ieee-float32;
-      units "bytes per second";
-      default "0x0p0";
-      description
-        "Residual bandwidth that subtracts tunnel reservations from
-         Maximum Bandwidth (or link capacity) (RFC 3630) and
-         provides an aggregated remainder across QoS classes.";
-      reference
-        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
-         Version 2";
-    }
-    leaf one-way-residual-bandwidth-normality {
-      type te-types:performance-metrics-normality;
-      default "normal";
-      description
-        "Residual bandwidth normality.";
-    }
-    leaf one-way-available-bandwidth {
-      type rt-types:bandwidth-ieee-float32;
-      units "bytes per second";
-      default "0x0p0";
-      description
-        "Available bandwidth that is defined to be residual
-         bandwidth minus the measured bandwidth used for the
-         actual forwarding of non-RSVP-TE LSP packets.  For a
-         bundled link, available bandwidth is defined to be the
-         sum of the component link available bandwidths.";
-    }
-    leaf one-way-available-bandwidth-normality {
-      type te-types:performance-metrics-normality;
-      default "normal";
-      description
-        "Available bandwidth normality.";
-    }
-    leaf one-way-utilized-bandwidth {
-      type rt-types:bandwidth-ieee-float32;
-      units "bytes per second";
-      default "0x0p0";
-      description
-        "Bandwidth utilization that represents the actual
-         utilization of the link (i.e., as measured in the router).
-         For a bundled link, bandwidth utilization is defined to
-         be the sum of the component link bandwidth utilizations.";
-    }
-    leaf one-way-utilized-bandwidth-normality {
-      type te-types:performance-metrics-normality;
-      default "normal";
-      description
-        "Bandwidth utilization normality.";
-    }
-  }
-
-  grouping one-way-performance-metrics {
-    description
-      "One-way PM throttle grouping.";
-    leaf one-way-delay {
-      type uint32 {
-        range "0..16777215";
-      }
-      default "0";
-      description
-        "One-way delay or latency in microseconds.";
-    }
-    leaf one-way-residual-bandwidth {
-      type rt-types:bandwidth-ieee-float32;
-      units "bytes per second";
-      default "0x0p0";
-      description
-        "Residual bandwidth that subtracts tunnel reservations from
-         Maximum Bandwidth (or link capacity) (RFC 3630) and
-         provides an aggregated remainder across QoS classes.";
-      reference
-        "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
-         Version 2";
-    }
-    leaf one-way-available-bandwidth {
-      type rt-types:bandwidth-ieee-float32;
-      units "bytes per second";
-      default "0x0p0";
-      description
-        "Available bandwidth that is defined to be residual
-         bandwidth minus the measured bandwidth used for the
-         actual forwarding of non-RSVP-TE LSP packets.  For a
-         bundled link, available bandwidth is defined to be the
-         sum of the component link available bandwidths.";
-    }
-    leaf one-way-utilized-bandwidth {
-      type rt-types:bandwidth-ieee-float32;
-      units "bytes per second";
-      default "0x0p0";
-      description
-        "Bandwidth utilization that represents the actual
-         utilization of the link (i.e., as measured in the router).
-         For a bundled link, bandwidth utilization is defined to
-         be the sum of the component link bandwidth utilizations.";
-    }
-  }
-
-  grouping two-way-performance-metrics {
-    description
-      "Two-way PM throttle grouping.";
-    leaf two-way-delay {
-      type uint32 {
-        range "0..16777215";
-      }
-      default "0";
-      description
-        "Two-way delay or latency in microseconds.";
-    }
-  }
-
-  grouping performance-metrics-thresholds {
-    description
-      "Grouping for configurable thresholds for measured
-       attributes.";
-    uses one-way-performance-metrics;
-    uses two-way-performance-metrics;
-  }
-
-  grouping performance-metrics-attributes {
-    description
-      "Contains PM attributes.";
-    container performance-metrics-one-way {
-      description
-        "One-way link performance information in real time.";
-      reference
-        "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
-         RFC 7823: Performance-Based Path Selection for Explicitly
-         Routed Label Switched Paths (LSPs) Using TE Metric
-         Extensions
-         RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
-      uses performance-metrics-one-way-delay-loss;
-      uses performance-metrics-one-way-bandwidth;
-    }
-    container performance-metrics-two-way {
-      description
-        "Two-way link performance information in real time.";
-      reference
-        "RFC 6374: Packet Loss and Delay Measurement for MPLS
-         Networks";
-      uses performance-metrics-two-way-delay-loss;
-    }
-  }
-
-  grouping performance-metrics-throttle-container {
-    description
-      "Controls PM throttling.";
-    container throttle {
-      must 'suppression-interval >= measure-interval' {
-        error-message "'suppression-interval' cannot be less than "
-                    + "'measure-interval'.";
-        description
-          "Constraint on 'suppression-interval' and
-           'measure-interval'.";
-      }
-      description
-        "Link performance information in real time.";
-      reference
-        "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
-         RFC 7823: Performance-Based Path Selection for Explicitly
-         Routed Label Switched Paths (LSPs) Using TE Metric
-         Extensions
-         RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
-      leaf one-way-delay-offset {
-        type uint32 {
-          range "0..16777215";
-        }
-        default "0";
-        description
-          "Offset value to be added to the measured delay value.";
-      }
-      leaf measure-interval {
-        type uint32;
-        default "30";
-        description
-          "Interval, in seconds, to measure the extended metric
-           values.";
-      }
-      leaf advertisement-interval {
-        type uint32;
-        default "0";
-        description
-          "Interval, in seconds, to advertise the extended metric
-           values.";
-      }
-      leaf suppression-interval {
-        type uint32 {
-          range "1..max";
-        }
-        default "120";
-        description
-          "Interval, in seconds, to suppress advertisement of the
-           extended metric values.";
-        reference
-          "RFC 8570: IS-IS Traffic Engineering (TE) Metric
-           Extensions, Section 6";
-      }
-      container threshold-out {
-        uses performance-metrics-thresholds;
-        description
-          "If the measured parameter falls outside an upper bound
-           for all but the minimum-delay metric (or a lower bound
-           for the minimum-delay metric only) and the advertised
-           value is not already outside that bound, an 'anomalous'
-           announcement (anomalous bit set) will be triggered.";
-      }
-      container threshold-in {
-        uses performance-metrics-thresholds;
-        description
-          "If the measured parameter falls inside an upper bound
-           for all but the minimum-delay metric (or a lower bound
-           for the minimum-delay metric only) and the advertised
-           value is not already inside that bound, a 'normal'
-           announcement (anomalous bit cleared) will be triggered.";
-      }
-      container threshold-accelerated-advertisement {
-        description
-          "When the difference between the last advertised value and
-           the current measured value exceeds this threshold, an
-           'anomalous' announcement (anomalous bit set) will be
-           triggered.";
-        uses performance-metrics-thresholds;
-      }
-    }
-  }
-
-  /**
-   * TE tunnel generic groupings
-   **/
-
-  grouping explicit-route-hop {
-    description
-      "The explicit route entry grouping.";
-    choice type {
-      description
-        "The explicit route entry type.";
-      case numbered-node-hop {
-        container numbered-node-hop {
-          leaf node-id {
-            type te-node-id;
-            mandatory true;
-            description
-              "The identifier of a node in the TE topology.";
-          }
-          leaf hop-type {
-            type te-hop-type;
-            default "strict";
-            description
-              "Strict or loose hop.";
-          }
-          description
-            "Numbered node route hop.";
-          reference
-            "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
-             Section 4.3, EXPLICIT_ROUTE in RSVP-TE
-             RFC 3477: Signalling Unnumbered Links in Resource
-             ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
-        }
-      }
-      case numbered-link-hop {
-        container numbered-link-hop {
-          leaf link-tp-id {
-            type te-tp-id;
-            mandatory true;
-            description
-              "TE Link Termination Point (LTP) identifier.";
-          }
-          leaf hop-type {
-            type te-hop-type;
-            default "strict";
-            description
-              "Strict or loose hop.";
-          }
-          leaf direction {
-            type te-link-direction;
-            default "outgoing";
-            description
-              "Link route object direction.";
-          }
-          description
-            "Numbered link explicit route hop.";
-          reference
-            "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
-             Section 4.3, EXPLICIT_ROUTE in RSVP-TE
-             RFC 3477: Signalling Unnumbered Links in Resource
-             ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
-        }
-      }
-      case unnumbered-link-hop {
-        container unnumbered-link-hop {
-          leaf link-tp-id {
-            type te-tp-id;
-            mandatory true;
-            description
-              "TE LTP identifier.  The combination of the TE link ID
-               and the TE node ID is used to identify an unnumbered
-               TE link.";
-          }
-          leaf node-id {
-            type te-node-id;
-            mandatory true;
-            description
-              "The identifier of a node in the TE topology.";
-          }
-          leaf hop-type {
-            type te-hop-type;
-            default "strict";
-            description
-              "Strict or loose hop.";
-          }
-          leaf direction {
-            type te-link-direction;
-            default "outgoing";
-            description
-              "Link route object direction.";
-          }
-          description
-            "Unnumbered link explicit route hop.";
-          reference
-            "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
-             Section 4.3, EXPLICIT_ROUTE in RSVP-TE
-             RFC 3477: Signalling Unnumbered Links in Resource
-             ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
-        }
-      }
-      case as-number {
-        container as-number-hop {
-          leaf as-number {
-            type inet:as-number;
-            mandatory true;
-            description
-              "The Autonomous System (AS) number.";
-          }
-          leaf hop-type {
-            type te-hop-type;
-            default "strict";
-            description
-              "Strict or loose hop.";
-          }
-          description
-            "AS explicit route hop.";
-        }
-      }
-      case label {
-        container label-hop {
-          description
-            "Label hop type.";
-          uses te-label;
-        }
-        description
-          "The label explicit route hop type.";
-      }
-    }
-  }
-
-  grouping record-route-state {
-    description
-      "The Record Route grouping.";
-    leaf index {
-      type uint32;
-      description
-        "Record Route hop index.  The index is used to
-         identify an entry in the list.  The order of entries
-         is defined by the user without relying on key values.";
-    }
-    choice type {
-      description
-        "The Record Route entry type.";
-      case numbered-node-hop {
-        container numbered-node-hop {
-          description
-            "Numbered node route hop container.";
-          leaf node-id {
-            type te-node-id;
-            mandatory true;
-            description
-              "The identifier of a node in the TE topology.";
-          }
-          leaf-list flags {
-            type path-attribute-flags;
-            description
-              "Path attributes flags.";
-            reference
-              "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
-               RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
-               Tunnels
-               RFC 4561: Definition of a Record Route Object (RRO)
-               Node-Id Sub-Object";
-          }
-        }
-        description
-          "Numbered node route hop.";
-      }
-      case numbered-link-hop {
-        container numbered-link-hop {
-          description
-            "Numbered link route hop container.";
-          leaf link-tp-id {
-            type te-tp-id;
-            mandatory true;
-            description
-              "Numbered TE LTP identifier.";
-          }
-          leaf-list flags {
-            type path-attribute-flags;
-            description
-              "Path attributes flags.";
-            reference
-              "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
-               RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
-               Tunnels
-               RFC 4561: Definition of a Record Route Object (RRO)
-               Node-Id Sub-Object";
-          }
-        }
-        description
-          "Numbered link route hop.";
-      }
-      case unnumbered-link-hop {
-        container unnumbered-link-hop {
-          leaf link-tp-id {
-            type te-tp-id;
-            mandatory true;
-            description
-              "TE LTP identifier.  The combination of the TE link ID
-               and the TE node ID is used to identify an unnumbered
-               TE link.";
-          }
-          leaf node-id {
-            type te-node-id;
-            description
-              "The identifier of a node in the TE topology.";
-          }
-          leaf-list flags {
-            type path-attribute-flags;
-            description
-              "Path attributes flags.";
-            reference
-              "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
-               RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
-               Tunnels
-               RFC 4561: Definition of a Record Route Object (RRO)
-               Node-Id Sub-Object";
-          }
-          description
-            "Unnumbered link Record Route hop.";
-          reference
-            "RFC 3477: Signalling Unnumbered Links in Resource
-             ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
-        }
-        description
-          "Unnumbered link route hop.";
-      }
-      case label {
-        container label-hop {
-          description
-            "Label route hop type.";
-          uses te-label;
-          leaf-list flags {
-            type path-attribute-flags;
-            description
-              "Path attributes flags.";
-            reference
-              "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
-               RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
-               Tunnels
-               RFC 4561: Definition of a Record Route Object (RRO)
-               Node-Id Sub-Object";
-          }
-        }
-        description
-          "The label Record Route entry types.";
-      }
-    }
-  }
-
-  grouping label-restriction-info {
-    description
-      "Label set item information.";
-    leaf restriction {
-      type enumeration {
-        enum inclusive {
-          description
-            "The label or label range is inclusive.";
-        }
-        enum exclusive {
-          description
-            "The label or label range is exclusive.";
-        }
-      }
-      default "inclusive";
-      description
-        "Indicates whether the list item is inclusive or exclusive.";
-    }
-    leaf index {
-      type uint32;
-      description
-        "The index of the label restriction list entry.";
-    }
-    container label-start {
-      must "(not(../label-end/te-label/direction) and"
-         + " not(te-label/direction))"
-         + " or "
-         + "(../label-end/te-label/direction = te-label/direction)"
-         + " or "
-         + "(not(te-label/direction) and"
-         + " (../label-end/te-label/direction = 'forward'))"
-         + " or "
-         + "(not(../label-end/te-label/direction) and"
-         + " (te-label/direction = 'forward'))" {
-        error-message "'label-start' and 'label-end' must have the "
-                    + "same direction.";
-      }
-      description
-        "This is the starting label if a label range is specified.
-         This is the label value if a single label is specified,
-         in which case the 'label-end' attribute is not set.";
-      uses te-label;
-    }
-    container label-end {
-      must "(not(../label-start/te-label/direction) and"
-         + " not(te-label/direction))"
-         + " or "
-         + "(../label-start/te-label/direction = te-label/direction)"
-         + " or "
-         + "(not(te-label/direction) and"
-         + " (../label-start/te-label/direction = 'forward'))"
-         + " or "
-         + "(not(../label-start/te-label/direction) and"
-         + " (te-label/direction = 'forward'))" {
-        error-message "'label-start' and 'label-end' must have the "
-                    + "same direction.";
-      }
-      description
-        "This is the ending label if a label range is specified.
-         This attribute is not set if a single label is specified.";
-      uses te-label;
-    }
-    container label-step {
-      description
-        "The step increment between labels in the label range.
-         The label start/end values will have to be consistent
-         with the sign of label step.  For example,
-         'label-start' < 'label-end' enforces 'label-step' > 0
-         'label-start' > 'label-end' enforces 'label-step' < 0.";
-      choice technology {
-        default "generic";
-        description
-          "Data-plane technology type.";
-        case generic {
-          leaf generic {
-            type int32;
-            default "1";
-            description
-              "Label range step.";
-          }
-        }
-      }
-    }
-    leaf range-bitmap {
-      type yang:hex-string;
-      description
-        "When there are gaps between 'label-start' and 'label-end',
-         this attribute is used to specify the positions
-         of the used labels.  This is represented in big endian as
-         'hex-string'.
-         The most significant byte in the hex-string is the farthest
-         to the left in the byte sequence.  Leading zero bytes in the
-         configured value may be omitted for brevity.
-         Each bit position in the 'range-bitmap' 'hex-string' maps
-         to a label in the range derived from 'label-start'.
-
-         For example, assuming that 'label-start' = 16000 and
-         'range-bitmap' = 0x01000001, then:
-
-         - bit position (0) is set, and the corresponding mapped
-           label from the range is 16000 + (0 * 'label-step') or
-           16000 for default 'label-step' = 1.
-         - bit position (24) is set, and the corresponding mapped
-           label from the range is 16000 + (24 * 'label-step') or
-           16024 for default 'label-step' = 1.";
-    }
-  }
-
-  grouping label-set-info {
-    description
-      "Grouping for the list of label restrictions specifying what
-       labels may or may not be used.";
-    container label-restrictions {
-      description
-        "The label restrictions container.";
-      list label-restriction {
-        key "index";
-        description
-          "The absence of the label restrictions container implies
-           that all labels are acceptable; otherwise, only restricted
-           labels are available.";
-        reference
-          "RFC 7579: General Network Element Constraint Encoding
-           for GMPLS-Controlled Networks";
-        uses label-restriction-info;
-      }
-    }
-  }
-
-  grouping optimization-metric-entry {
-    description
-      "Optimization metrics configuration grouping.";
-    leaf metric-type {
-      type identityref {
-        base path-metric-type;
-      }
-      description
-        "Identifies the 'metric-type' that the path computation
-         process uses for optimization.";
-    }
-    leaf weight {
-      type uint8;
-      default "1";
-      description
-        "TE path metric normalization weight.";
-    }
-    container explicit-route-exclude-objects {
-      when "../metric-type = "
-         + "'te-types:path-metric-optimize-excludes'";
-      description
-        "Container for the 'exclude route' object list.";
-      uses path-route-exclude-objects;
-    }
-    container explicit-route-include-objects {
-      when "../metric-type = "
-         + "'te-types:path-metric-optimize-includes'";
-      description
-        "Container for the 'include route' object list.";
-      uses path-route-include-objects;
-    }
-  }
-
-  grouping common-constraints {
-    description
-      "Common constraints grouping that can be set on
-       a constraint set or directly on the tunnel.";
-    uses te-bandwidth {
-      description
-        "A requested bandwidth to use for path computation.";
-    }
-    leaf link-protection {
-      type identityref {
-        base link-protection-type;
-      }
-      default "te-types:link-protection-unprotected";
-      description
-        "Link protection type required for the links included
-         in the computed path.";
-      reference
-        "RFC 4202: Routing Extensions in Support of
-         Generalized Multi-Protocol Label Switching (GMPLS)";
-    }
-    leaf setup-priority {
-      type uint8 {
-        range "0..7";
-      }
-      default "7";
-      description
-        "TE LSP requested setup priority.";
-      reference
-        "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
-    }
-    leaf hold-priority {
-      type uint8 {
-        range "0..7";
-      }
-      default "7";
-      description
-        "TE LSP requested hold priority.";
-      reference
-        "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
-    }
-    leaf signaling-type {
-      type identityref {
-        base path-signaling-type;
-      }
-      default "te-types:path-setup-rsvp";
-      description
-        "TE tunnel path signaling type.";
-    }
-  }
-
-  grouping tunnel-constraints {
-    description
-      "Tunnel constraints grouping that can be set on
-       a constraint set or directly on the tunnel.";
-    uses te-topology-identifier;
-    uses common-constraints;
-  }
-
-  grouping path-constraints-route-objects {
-    description
-      "List of route entries to be included or excluded when
-       performing the path computation.";
-    container explicit-route-objects-always {
-      description
-        "Container for the 'exclude route' object list.";
-      list route-object-exclude-always {
-        key "index";
-        ordered-by user;
-        description
-          "List of route objects to always exclude from the path
-           computation.";
-        leaf index {
-          type uint32;
-          description
-            "Explicit Route Object index.  The index is used to
-             identify an entry in the list.  The order of entries
-             is defined by the user without relying on key values.";
-        }
-        uses explicit-route-hop;
-      }
-      list route-object-include-exclude {
-        key "index";
-        ordered-by user;
-        description
-          "List of route objects to include or exclude in the path
-           computation.";
-        leaf explicit-route-usage {
-          type identityref {
-            base route-usage-type;
-          }
-          default "te-types:route-include-object";
-          description
-            "Indicates whether to include or exclude the
-             route object.  The default is to include it.";
-        }
-        leaf index {
-          type uint32;
-          description
-            "Route object include-exclude index.  The index is used
-             to identify an entry in the list.  The order of entries
-             is defined by the user without relying on key values.";
-        }
-        uses explicit-route-hop {
-          augment "type" {
-            case srlg {
-              container srlg {
-                description
-                  "SRLG container.";
-                leaf srlg {
-                  type uint32;
-                  description
-                    "SRLG value.";
-                }
-              }
-              description
-                "An SRLG value to be included or excluded.";
-            }
-            description
-              "Augmentation for a generic explicit route for SRLG
-               exclusion.";
-          }
-        }
-      }
-    }
-  }
-
-  grouping path-route-include-objects {
-    description
-      "List of route objects to be included when performing
-       the path computation.";
-    list route-object-include-object {
-      key "index";
-      ordered-by user;
-      description
-        "List of Explicit Route Objects to be included in the
-         path computation.";
-      leaf index {
-        type uint32;
-        description
-          "Route object entry index.  The index is used to
-           identify an entry in the list.  The order of entries
-           is defined by the user without relying on key values.";
-      }
-      uses explicit-route-hop;
-    }
-  }
-
-  grouping path-route-exclude-objects {
-    description
-      "List of route objects to be excluded when performing
-       the path computation.";
-    list route-object-exclude-object {
-      key "index";
-      ordered-by user;
-      description
-        "List of Explicit Route Objects to be excluded in the
-         path computation.";
-      leaf index {
-        type uint32;
-        description
-          "Route object entry index.  The index is used to
-           identify an entry in the list.  The order of entries
-           is defined by the user without relying on key values.";
-      }
-      uses explicit-route-hop {
-        augment "type" {
-          case srlg {
-            container srlg {
-              description
-                "SRLG container.";
-              leaf srlg {
-                type uint32;
-                description
-                  "SRLG value.";
-              }
-            }
-            description
-              "An SRLG value to be included or excluded.";
-          }
-          description
-            "Augmentation for a generic explicit route for SRLG
-             exclusion.";
-        }
-      }
-    }
-  }
-
-  grouping generic-path-metric-bounds {
-    description
-      "TE path metric bounds grouping.";
-    container path-metric-bounds {
-      description
-        "TE path metric bounds container.";
-      list path-metric-bound {
-        key "metric-type";
-        description
-          "List of TE path metric bounds.";
-        leaf metric-type {
-          type identityref {
-            base path-metric-type;
-          }
-          description
-            "Identifies an entry in the list of 'metric-type' items
-             bound for the TE path.";
-        }
-        leaf upper-bound {
-          type uint64;
-          default "0";
-          description
-            "Upper bound on the end-to-end TE path metric.  A zero
-             indicates an unbounded upper limit for the specific
-             'metric-type'.";
-        }
-      }
-    }
-  }
-
-  grouping generic-path-optimization {
-    description
-      "TE generic path optimization grouping.";
-    container optimizations {
-      description
-        "The objective function container that includes
-         attributes to impose when computing a TE path.";
-      choice algorithm {
-        description
-          "Optimizations algorithm.";
-        case metric {
-          if-feature "path-optimization-metric";
-          /* Optimize by metric */
-          list optimization-metric {
-            key "metric-type";
-            description
-              "TE path metric type.";
-            uses optimization-metric-entry;
-          }
-          /* Tiebreakers */
-          container tiebreakers {
-            description
-              "Container for the list of tiebreakers.";
-            list tiebreaker {
-              key "tiebreaker-type";
-              description
-                "The list of tiebreaker criteria to apply on an
-                 equally favored set of paths, in order to pick
-                 the best.";
-              leaf tiebreaker-type {
-                type identityref {
-                  base path-metric-type;
-                }
-                description
-                  "Identifies an entry in the list of tiebreakers.";
-              }
-            }
-          }
-        }
-        case objective-function {
-          if-feature "path-optimization-objective-function";
-          /* Objective functions */
-          container objective-function {
-            description
-              "The objective function container that includes
-               attributes to impose when computing a TE path.";
-            leaf objective-function-type {
-              type identityref {
-                base objective-function-type;
-              }
-              default "te-types:of-minimize-cost-path";
-              description
-                "Objective function entry.";
-            }
-          }
-        }
-      }
-    }
-  }
-
-  grouping generic-path-affinities {
-    description
-      "Path affinities grouping.";
-    container path-affinities-values {
-      description
-        "Path affinities represented as values.";
-      list path-affinities-value {
-        key "usage";
-        description
-          "List of named affinity constraints.";
-        leaf usage {
-          type identityref {
-            base resource-affinities-type;
-          }
-          description
-            "Identifies an entry in the list of value affinity
-             constraints.";
-        }
-        leaf value {
-          type admin-groups;
-          default "";
-          description
-            "The affinity value.  The default is empty.";
-        }
-      }
-    }
-    container path-affinity-names {
-      description
-        "Path affinities represented as names.";
-      list path-affinity-name {
-        key "usage";
-        description
-          "List of named affinity constraints.";
-        leaf usage {
-          type identityref {
-            base resource-affinities-type;
-          }
-          description
-            "Identifies an entry in the list of named affinity
-             constraints.";
-        }
-        list affinity-name {
-          key "name";
-          leaf name {
-            type string;
-            description
-              "Identifies a named affinity entry.";
-          }
-          description
-            "List of named affinities.";
-        }
-      }
-    }
-  }
-
-  grouping generic-path-srlgs {
-    description
-      "Path SRLG grouping.";
-    container path-srlgs-lists {
-      description
-        "Path SRLG properties container.";
-      list path-srlgs-list {
-        key "usage";
-        description
-          "List of SRLG values to be included or excluded.";
-        leaf usage {
-          type identityref {
-            base route-usage-type;
-          }
-          description
-            "Identifies an entry in a list of SRLGs to either
-             include or exclude.";
-        }
-        leaf-list values {
-          type srlg;
-          description
-            "List of SRLG values.";
-        }
-      }
-    }
-    container path-srlgs-names {
-      description
-        "Container for the list of named SRLGs.";
-      list path-srlgs-name {
-        key "usage";
-        description
-          "List of named SRLGs to be included or excluded.";
-        leaf usage {
-          type identityref {
-            base route-usage-type;
-          }
-          description
-            "Identifies an entry in a list of named SRLGs to either
-             include or exclude.";
-        }
-        leaf-list names {
-          type string;
-          description
-            "List of named SRLGs.";
-        }
-      }
-    }
-  }
-
-  grouping generic-path-disjointness {
-    description
-      "Path disjointness grouping.";
-    leaf disjointness {
-      type te-path-disjointness;
-      description
-        "The type of resource disjointness.
-         When configured for a primary path, the disjointness level
-         applies to all secondary LSPs.  When configured for a
-         secondary path, the disjointness level overrides the level
-         configured for the primary path.";
-    }
-  }
-
-  grouping common-path-constraints-attributes {
-    description
-      "Common path constraints configuration grouping.";
-    uses common-constraints;
-    uses generic-path-metric-bounds;
-    uses generic-path-affinities;
-    uses generic-path-srlgs;
-  }
-
-  grouping generic-path-constraints {
-    description
-      "Global named path constraints configuration grouping.";
-    container path-constraints {
-      description
-        "TE named path constraints container.";
-      uses common-path-constraints-attributes;
-      uses generic-path-disjointness;
-    }
-  }
-
-  grouping generic-path-properties {
-    description
-      "TE generic path properties grouping.";
-    container path-properties {
-      config false;
-      description
-        "The TE path properties.";
-      list path-metric {
-        key "metric-type";
-        description
-          "TE path metric type.";
-        leaf metric-type {
-          type identityref {
-            base path-metric-type;
-          }
-          description
-            "TE path metric type.";
-        }
-        leaf accumulative-value {
-          type uint64;
-          description
-            "TE path metric accumulative value.";
-        }
-      }
-      uses generic-path-affinities;
-      uses generic-path-srlgs;
-      container path-route-objects {
-        description
-          "Container for the list of route objects either returned by
-           the computation engine or actually used by an LSP.";
-        list path-route-object {
-          key "index";
-          ordered-by user;
-          description
-            "List of route objects either returned by the computation
-             engine or actually used by an LSP.";
-          leaf index {
-            type uint32;
-            description
-              "Route object entry index.  The index is used to
-               identify an entry in the list.  The order of entries
-               is defined by the user without relying on key
-               values.";
-          }
-          uses explicit-route-hop;
-        }
-      }
-    }
-  }
-}
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-service@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-service@2023-10-23.yang
deleted file mode 100644
index f0157bcc8..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-service@2023-10-23.yang
+++ /dev/null
@@ -1,325 +0,0 @@
-   module ietf-trans-client-service {
-     /* TODO: FIXME */
-       yang-version 1.1;
-
-     namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-service";
-     prefix "clntsvc";
-
-     import ietf-network {
-       prefix "nw";
-       reference "RFC8345 - A YANG Data Model for Network Topologies";
-     }
-
-     import ietf-network-topology {
-       prefix "nt";
-       reference "RFC8345 - A YANG Data Model for Network Topologies";
-     }
-
-     import ietf-te-types {
-       prefix "te-types";
-       reference "RFC 8776 - Traffic Engineering Common YANG Types";
-     }
-
-     import ietf-layer1-types {
-       prefix "layer1-types";
-       reference "RFC ZZZZ - A YANG Data Model for Layer 1 Types";
-     }
-
-     import ietf-yang-types {
-       prefix "yang";
-       reference "RFC 6991 - Common YANG Data Types";
-     }
-
-    import ietf-trans-client-svc-types {
-      prefix "clntsvc-types";
-      reference "RFC XXXX - A YANG Data Model for
-                 Transport Network Client Signals";
-    }
-
-     organization
-       "Internet Engineering Task Force (IETF) CCAMP WG";
-     contact
-       "
-         ID-draft editor:
-           Haomian Zheng (zhenghaomian@huawei.com);
-           Aihua Guo (aihuaguo.ietf@gmail.com);
-           Italo Busi (italo.busi@huawei.com);
-           Anton Snitser (antons@sedonasys.com);
-           Francesco Lazzeri (francesco.lazzeri@ericsson.com);
-           Yunbin Xu (xuyunbin@caict.ac.cn);
-           Yang Zhao (zhaoyangyjy@chinamobile.com);
-           Xufeng Liu (Xufeng_Liu@jabil.com);
-           Giuseppe Fioccola (giuseppe.fioccola@huawei.com);
-           Chaode Yu (yuchaode@huawei.com);
-       ";
-
-     description
-       "This module defines a YANG data model for describing
-        transport network client services. The model fully conforms
-        to the Network Management Datastore Architecture (NMDA).
-
-        Copyright (c) 2021 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
-        (https://trustee.ietf.org/license-info).
-        This version of this YANG module is part of RFC XXXX; see
-        the RFC itself for full legal notices.";
-     revision 2023-10-23 {
-       description
-         "version -04 as a WG document";
-       reference
-         "draft-ietf-ccamp-client-signal-yang";
-     }
-
-     /*
-      * Groupings
-      */
-     grouping client-svc-access-parameters {
-       description
-         "Transport network client signals access parameters";
-
-       leaf access-node-id {
-         type te-types:te-node-id;
-         description
-           "The identifier of the access node in the TE topology.";
-       }
-
-       leaf access-node-uri {
-         type nw:node-id;
-         description
-           "The identifier of the access node in the network.";
-       }
-
-       leaf access-ltp-id {
-         type te-types:te-tp-id;
-         description
-           "The TE link termination point identifier in TE topology, used
-           together with access-node-id to identify the access LTP.";
-       }
-
-       leaf access-ltp-uri {
-         type nt:tp-id;
-         description
-           "The link termination point identifier in network topology,
-           used together with access-node-uri to identify the access LTP";
-       }
-
-       leaf client-signal {
-         type identityref {
-           base layer1-types:client-signal;
-         }
-         description
-           "Identify the client signal type associated with this port";
-       }
-
-     }
-
-     grouping pm-state-grouping {
-       leaf latency {
-         description "latency value of the E2E client signal service";
-         type uint32;
-         units microsecond;
-       }
-     }
-
-     grouping error-info-grouping {
-       leaf error-code {
-         description "error code";
-         type uint16;
-       }
-
-       leaf error-description {
-         description "detail message of error";
-         type string;
-       }
-
-       leaf error-timestamp {
-         description "the date and time error is happened";
-         type yang:date-and-time;
-       }
-     }
-
-     grouping alarm-shreshold-grouping {
-       leaf latency-threshold {
-         description "a threshold for the E2E client signal service's
-         latency. Once the latency value exceed this threshold, an alarm
-         should be triggered.";
-         type uint32;
-         units microsecond;
-       }
-     }
-
-     grouping client-svc-tunnel-parameters {
-       description
-         "Transport network client signals tunnel parameters";
-
-       leaf tunnel-name {
-         type string;
-         description
-           "TE tunnel instance name.";
-       }
-     }
-
-     grouping  client-svc-instance-config {
-       description
-         "Configuration parameters for client services.";
-       leaf client-svc-name {
-         type string;
-         description
-           "Identifier of the p2p transport network client signals.";
-       }
-
-       leaf client-svc-title {
-         type string;
-         description
-           "Name of the p2p transport network client signals.";
-       }
-
-       leaf user-label {
-         type string;
-         description
-           "Alias of the p2p transport network client signals.";
-       }
-
-       leaf client-svc-descr {
-         type string;
-         description
-           "Description of the transport network client signals.";
-       }
-
-       leaf client-svc-customer {
-         type string;
-         description
-           "Customer of the transport network client signals.";
-       }
-
-       container resilience {
-         description "Place holder for resilience functionalities";
-       }
-
-       uses te-types:te-topology-identifier;
-
-       leaf admin-status {
-         type identityref {
-           base te-types:tunnel-admin-state-type;
-         }
-         default te-types:tunnel-admin-state-up;
-         description "Client signals administrative state.";
-       }
-
-       container src-access-ports {
-         description
-           "Source access port of a client signal.";
-         uses client-svc-access-parameters;
-       }
-       container dst-access-ports {
-         description
-           "Destination access port of a client signal.";
-         uses client-svc-access-parameters;
-       }
-
-       container pm-state {
-         config false;
-         description "PM data of E2E client signal";
-         uses pm-state-grouping;
-       }
-
-       container error-info {
-         config false;
-         description "error messages of configuration";
-         uses error-info-grouping;
-       }
-
-       container alarm-shreshold {
-         description "threshold configuration for the E2E client signal";
-         uses alarm-shreshold-grouping;
-       }
-
-       leaf direction {
-         type identityref {
-           base clntsvc-types:direction;
-         }
-         description "Uni-dir or Bi-dir for the client signal.";
-       }
-
-       list svc-tunnels {
-         key tunnel-name;
-         description
-           "List of the TE Tunnels supporting the client signal.";
-         uses client-svc-tunnel-parameters;
-       }
-     }
-
-     grouping  client-svc-instance-state {
-       description
-         "State parameters for client services.";
-       leaf operational-state {
-         type identityref {
-               base te-types:tunnel-state-type;
-         }
-         config false;
-         description "Client signal operational state.";
-       }
-       leaf provisioning-state {
-         type identityref {
-               base te-types:lsp-state-type;
-         }
-         config false;
-         description "Client signal provisioning state.";
-       }
-       leaf creation-time {
-         type yang:date-and-time;
-         config false;
-         description "The time of the client signal be created.";
-       }
-       leaf last-updated-time {
-         type yang:date-and-time;
-         config false;
-         description "The time of the client signal's latest update.";
-       }
-       leaf created-by {
-         type string;
-         config false;
-         description
-           "The client signal is created by whom,
-            can be a system or staff ID.";
-       }
-       leaf last-updated-by {
-         type string;
-         config false;
-         description
-           "The client signal is last updated by whom,
-            can be a system or staff ID.";
-       }
-       leaf owned-by {
-         type string;
-         config false;
-         description
-           "The client signal is owned by whom,
-            can be a system ID.";
-       }
-     }
-
-     /*
-      * Data nodes
-      */
-
-     container client-svc {
-       description
-         "Transport client services.";
-
-       list client-svc-instances {
-         key client-svc-name;
-         description
-           "The list of p2p transport client service instances";
-
-             uses client-svc-instance-config;
-             uses client-svc-instance-state;
-       }
-     }
-   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-svc-types@2023-10-23.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-svc-types@2023-10-23.yang
deleted file mode 100644
index 60db5633a..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-trans-client-svc-types@2023-10-23.yang
+++ /dev/null
@@ -1,63 +0,0 @@
-   module ietf-trans-client-svc-types {
-     namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-svc-types";
-     prefix "clntsvc-types";
-
-     organization
-        "Internet Engineering Task Force (IETF) CCAMP WG";
-      contact
-        "
-          ID-draft editor:
-            Haomian Zheng (zhenghaomian@huawei.com);
-            Aihua Guo (aihuaguo.ietf@gmail.com);
-            Italo Busi (italo.busi@huawei.com);
-            Anton Snitser (antons@sedonasys.com);
-            Francesco Lazzeri (francesco.lazzeri@ericsson.com);
-            Yunbin Xu (xuyunbin@caict.ac.cn);
-            Yang Zhao (zhaoyangyjy@chinamobile.com);
-            Xufeng Liu (Xufeng_Liu@jabil.com);
-            Giuseppe Fioccola (giuseppe.fioccola@huawei.com);
-            Chaode Yu (yuchaode@huawei.com);
-        ";
-
-      description
-        "This module defines a YANG data model for describing
-         transport network client types. The model fully conforms
-         to the Network Management Datastore Architecture (NMDA).
-
-         Copyright (c) 2019 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
-         (https://trustee.ietf.org/license-info).
-         This version of this YANG module is part of RFC XXXX; see
-         the RFC itself for full legal notices.";
-
-      revision 2023-10-23 {
-        description
-          "version -01 as a WG document";
-        reference
-          "draft-ietf-ccamp-client-signal-yang";
-      }
-
-     identity direction {
-       description
-         "Direction information of Client Signal.";
-     }
-
-     identity bidirectional {
-       base direction;
-       description
-         "Client Signal is bi-directional.";
-     }
-
-     identity unidirectional {
-       base direction;
-       description
-         "Client Signal is uni-directional.";
-     }
-
-   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
index e67c297bc..4443d7e24 100644
--- a/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
+++ b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
@@ -14,6 +14,7 @@
 
 from nbi.service.rest_server.RestServer import RestServer
 from nbi.service.rest_server.nbi_plugins.ietf_hardware import Hardware, HardwareMultipleDevices
+from nbi.service.rest_server.nbi_plugins.ietf_network_new import Networks
 from .Resources import (
     Connection, ConnectionIds, Connections,
     Context, ContextIds, Contexts,
@@ -64,6 +65,8 @@ RESOURCES = [
     ('api.policyrule_ids', PolicyRuleIds, '/policyrule_ids'),
     ('api.policyrules',    PolicyRules,   '/policyrules'),
     ('api.policyrule',     PolicyRule,    '/policyrule/<path:policyrule_uuid>'),
+
+    ('api.networksl3'    , Networks, '/networks')
 ]
 
 def register_tfs_api(rest_server : RestServer):
diff --git a/src/webui/service/templates/main/debug.html b/src/webui/service/templates/main/debug.html
index 895685669..e6965cb55 100644
--- a/src/webui/service/templates/main/debug.html
+++ b/src/webui/service/templates/main/debug.html
@@ -24,6 +24,7 @@
         <li><a class="nav-link" href="/tfs-api/dummy_contexts" id="dummy_contexts_link" target="dummy_contexts">Dummy Contexts</a></li>
         <li><a class="nav-link" href="/tfs-api/devices" id="devices_link" target="devices">Devices</a></li>
         <li><a class="nav-link" href="/tfs-api/links" id="links_link" target="links">Links</a></li>
+        <li><a class="nav-link" href="/tfs-api/networks" id="networks_link" target="networks">Networks</a></li>
     </ul>
 
 {% endblock %}
-- 
GitLab


From 2092ad05b0aad5c52374a97cccfbc65b35ab106a Mon Sep 17 00:00:00 2001
From: armingol <pablo.armingolrobles@telefonica.com>
Date: Wed, 21 Aug 2024 14:26:52 +0200
Subject: [PATCH 03/14] code clean up

---
 nbi.json                                      | 4837 -----------------
 .../nbi_plugins/ietf_network_new/Networks.py  |    3 +-
 .../nbi_plugins/ietf_network_new/__init__.py  |    3 -
 3 files changed, 2 insertions(+), 4841 deletions(-)
 delete mode 100644 nbi.json

diff --git a/nbi.json b/nbi.json
deleted file mode 100644
index ffd7a849a..000000000
--- a/nbi.json
+++ /dev/null
@@ -1,4837 +0,0 @@
-[
-  {
-    "ietf-network-hardware-inventory:network-hardware-inventory": {
-      "network-elements": {
-        "network-element": [
-          {
-            "components": {
-              "component": [
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "08b718c1-5523-5c70-8699-9e7cc11ac171"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/10",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 2
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 10,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/10"
-                  ],
-                  "uuid": "00778c55-e1f1-5801-b9b7-25815c65cb1b"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "cb6fb97c-fe8f-528f-b34e-c7c9ee52e485"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/17",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 3
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 17,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/17"
-                  ],
-                  "uuid": "01310680-37b7-58bf-914a-1ba4583a16c2"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "6ba73403-f894-5781-8a83-a906649b26be"
-                  ],
-                  "description": "\"100G/40G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/1",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 4
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 1,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/1"
-                  ],
-                  "uuid": "01b7daf5-f25e-51da-96b8-d14f7249f6b4"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#10",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 5,
-                        "uuid": "00778c55-e1f1-5801-b9b7-25815c65cb1b"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 10,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#10"
-                  ],
-                  "uuid": "08b718c1-5523-5c70-8699-9e7cc11ac171"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "fb5d6c6d-edf2-5d17-b39f-62a889797be3"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/8",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 6
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 8,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/8"
-                  ],
-                  "uuid": "14c2bb4e-7d9c-5e32-a53a-0bbbdcd720c3"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#14",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 7,
-                        "uuid": "cce67881-0cf8-5778-83fc-099e4dddfa50"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 14,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#14"
-                  ],
-                  "uuid": "15411cf7-182d-5dbe-89e7-260d95798ec7"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "da6e0382-5ca3-5f23-8ae6-1c8ccc897c65"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/24",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 8
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 24,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/24"
-                  ],
-                  "uuid": "1574d8e0-900f-5047-87f6-dc1f09883836"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "72f4bcf3-d7c7-59e8-80c6-a8cd2971f17d"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/13",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 9
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 13,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/13"
-                  ],
-                  "uuid": "1b97500c-f4d6-57fc-b8dd-259c150aa33d"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#25",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 10,
-                        "uuid": "2057d491-54e2-52f3-be89-7e8453af1956"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 25,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#25"
-                  ],
-                  "uuid": "1c8e6596-1eb7-517e-8324-c74875efb9cc"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "1c8e6596-1eb7-517e-8324-c74875efb9cc"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/25",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 11
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 25,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/25"
-                  ],
-                  "uuid": "2057d491-54e2-52f3-be89-7e8453af1956"
-                },
-                {
-                  "class": "iana-hardware:power-supply",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Power-Supply#2",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 12,
-                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 2,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Power-Supply#2"
-                  ],
-                  "uuid": "211c3af7-d69a-5c23-b911-2dc522afbf1d"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "39498531-80a9-5660-9018-04e215ffe618"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/20",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 13
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 20,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/20"
-                  ],
-                  "uuid": "21cbcc2b-4750-5476-8df6-2ba67470b336"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#1",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 14,
-                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 1,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#1"
-                  ],
-                  "uuid": "22de51e1-0a09-59b3-864e-8fd379931bb6"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "ecf4c207-e36b-52cb-a34a-2cecc4030d25"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/15",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 15
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 15,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/15"
-                  ],
-                  "uuid": "24639859-aa84-532a-ac92-d7fc91db0a22"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "b49ce3de-b5f9-5f02-b2f6-aa9e0c4ab9c0"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/18",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 16
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 18,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/18"
-                  ],
-                  "uuid": "2815040e-3a39-545e-9799-4f223014dbfc"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "6fe099f7-0b6d-5fdb-bdf5-72046ec4c6b4"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/11",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 17
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 11,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/11"
-                  ],
-                  "uuid": "2cc805ae-4959-5c53-8d21-98314a61bdfb"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#2",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 18,
-                        "uuid": "d0757c2c-8d4b-57aa-8f17-c5fab40551d4"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 2,
-                  "serial-num": "\"FA70191603686\"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#2"
-                  ],
-                  "uuid": "323bb3fe-391d-5cc2-8cf0-0b99ec874045"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#20",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 19,
-                        "uuid": "21cbcc2b-4750-5476-8df6-2ba67470b336"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 20,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#20"
-                  ],
-                  "uuid": "39498531-80a9-5660-9018-04e215ffe618"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "a40ba96e-db02-502f-b8e7-c4ce60e6a681"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/4",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 20
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 4,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/4"
-                  ],
-                  "uuid": "3b8c5d33-58ab-5403-80fa-395bbf8e91a0"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#30",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 21,
-                        "uuid": "58ea7baa-3ac1-5501-9fdf-a1310881fe83"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 30,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#30"
-                  ],
-                  "uuid": "400555ff-395a-54c0-a8e6-6702c0505dbe"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "49a31219-0e33-5d0f-a45a-3bf285f9e2fd"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/9",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 22
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 9,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/9"
-                  ],
-                  "uuid": "43455150-4a95-58d8-bf84-d0e83095431b"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#9",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 23,
-                        "uuid": "43455150-4a95-58d8-bf84-d0e83095431b"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 9,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#9"
-                  ],
-                  "uuid": "49a31219-0e33-5d0f-a45a-3bf285f9e2fd"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#26",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 24,
-                        "uuid": "6e5b78c9-869a-5fbe-90b2-0cd287b2e4be"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 26,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#26"
-                  ],
-                  "uuid": "4c860a8b-e262-5d27-8f98-0b0be6562a4d"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#5",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 25,
-                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 5,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#5"
-                  ],
-                  "uuid": "52aaa9ea-61f7-5052-b988-2fac4afe4172"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "d7d2e358-3203-5e6b-a23b-eecc4f866fa9"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/22",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 26
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 22,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/22"
-                  ],
-                  "uuid": "54a2e18e-edfc-5b65-a5c3-20c7bd7e3593"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "c9a857e4-736c-54a1-abe8-bd5768f556b4"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/6",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 27
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 6,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/6"
-                  ],
-                  "uuid": "55937b2f-19d0-52e6-ac51-3ca68d5ba047"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "400555ff-395a-54c0-a8e6-6702c0505dbe"
-                  ],
-                  "description": "\"1G Copper\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/30",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 28
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 30,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/30"
-                  ],
-                  "uuid": "58ea7baa-3ac1-5501-9fdf-a1310881fe83"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#1",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 29,
-                        "uuid": "01b7daf5-f25e-51da-96b8-d14f7249f6b4"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 1,
-                  "serial-num": "\"IWKBW7180045   \"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#1"
-                  ],
-                  "uuid": "6ba73403-f894-5781-8a83-a906649b26be"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "4c860a8b-e262-5d27-8f98-0b0be6562a4d"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/26",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 30
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 26,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/26"
-                  ],
-                  "uuid": "6e5b78c9-869a-5fbe-90b2-0cd287b2e4be"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#11",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 31,
-                        "uuid": "2cc805ae-4959-5c53-8d21-98314a61bdfb"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 11,
-                  "serial-num": "\"ACW1747006N4   \"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#11"
-                  ],
-                  "uuid": "6fe099f7-0b6d-5fdb-bdf5-72046ec4c6b4"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#13",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 32,
-                        "uuid": "1b97500c-f4d6-57fc-b8dd-259c150aa33d"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 13,
-                  "serial-num": "\"AD1331A02S9    \"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#13"
-                  ],
-                  "uuid": "72f4bcf3-d7c7-59e8-80c6-a8cd2971f17d"
-                },
-                {
-                  "class": "iana-hardware:power-supply",
-                  "description": "\"CRXT-T0T12B\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"CRXT-T0T12B\"",
-                  "name": "Power-Supply#1",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 33,
-                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 1,
-                  "serial-num": "\"21030005\"",
-                  "software-rev": "",
-                  "uri": [
-                    "Power-Supply#1"
-                  ],
-                  "uuid": "7905b083-401b-5685-8ec2-ad2ba21f716b"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "ca78897e-e256-5a57-91e8-792e92280c30"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/23",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 34
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 23,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/23"
-                  ],
-                  "uuid": "7dbf69ba-707e-54b6-98fc-f907f40234b4"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#16",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 35,
-                        "uuid": "d6e15727-40bd-51f6-a7c4-7356358a60b6"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 16,
-                  "serial-num": "\"CN04HG00184001E\"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#16"
-                  ],
-                  "uuid": "7f5c81bf-e019-58d4-96a3-9fbb9edc22f8"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "e43d275a-e710-5a00-b1c9-6b964f4214f2"
-                  ],
-                  "description": "\"1G Copper\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/29",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 36
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 29,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/29"
-                  ],
-                  "uuid": "8ae15e57-f162-567c-a619-df5b548c0902"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#27",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 37,
-                        "uuid": "df37f614-ec9f-5181-8c41-c322f31586ea"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 27,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#27"
-                  ],
-                  "uuid": "8e3677d0-42a7-5942-9b09-e86657cbcd41"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#12",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 38,
-                        "uuid": "ffb8587d-ddb3-5eec-ba78-bb5be047def2"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 12,
-                  "serial-num": "\"F162250012     \"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#12"
-                  ],
-                  "uuid": "9b42bf35-e457-5303-b765-523009f7a5a4"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "fe86ab62-509d-513a-b378-2bc18a794542"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/21",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 39
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 21,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/21"
-                  ],
-                  "uuid": "9beab43b-9bb4-5672-adc3-f6329e4ba827"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "aae72351-d863-5c58-b76b-bba4b2075ef9"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/19",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 40
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 19,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/19"
-                  ],
-                  "uuid": "a3154e0c-8fb7-5cda-b245-4be61a10b220"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#4",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 41,
-                        "uuid": "3b8c5d33-58ab-5403-80fa-395bbf8e91a0"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 4,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#4"
-                  ],
-                  "uuid": "a40ba96e-db02-502f-b8e7-c4ce60e6a681"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "ad294931-6af3-51dd-a869-77b0737e8d2c"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/5",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 42
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 5,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/5"
-                  ],
-                  "uuid": "a4cfdc29-bcaa-57ec-8c83-126e0e77c2ec"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "de36dafb-2d66-54ef-9351-54ee4a1b0f9b"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/3",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 43
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 3,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/3"
-                  ],
-                  "uuid": "a9e9c4ec-265a-5039-848c-2ebf578855f3"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#19",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 44,
-                        "uuid": "a3154e0c-8fb7-5cda-b245-4be61a10b220"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 19,
-                  "serial-num": "\"AD0911A00C2    \"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#19"
-                  ],
-                  "uuid": "aae72351-d863-5c58-b76b-bba4b2075ef9"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#28",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 45,
-                        "uuid": "df910973-1c02-53ff-8dde-3bce8955a73a"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 28,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#28"
-                  ],
-                  "uuid": "aaf4e1d8-b1fe-5864-a1ce-ae8d6b188293"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#5",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 46,
-                        "uuid": "a4cfdc29-bcaa-57ec-8c83-126e0e77c2ec"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 5,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#5"
-                  ],
-                  "uuid": "ad294931-6af3-51dd-a869-77b0737e8d2c"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#18",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 47,
-                        "uuid": "2815040e-3a39-545e-9799-4f223014dbfc"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 18,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#18"
-                  ],
-                  "uuid": "b49ce3de-b5f9-5f02-b2f6-aa9e0c4ab9c0"
-                },
-                {
-                  "class": "iana-hardware:chassis",
-                  "contained-child": [
-                    "211c3af7-d69a-5c23-b911-2dc522afbf1d"                  ],
-                  "description": "\"7315-30X-O-48V-S\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "\"R0B\"",
-                  "is-fru": false,
-                  "mfg-date": "2021-10-25T00:00:00+00:00",
-                  "mfg-name": "\"7315-30X-O-48V-S\"",
-                  "name": "chassis",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 48,
-                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 0,
-                  "serial-num": "\"731530X2143013\"",
-                  "software-rev": "\"21.5.1 (9799)\"",
-                  "uri": [
-                    "chassis"
-                  ],
-                  "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#3",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 49,
-                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 3,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#3"
-                  ],
-                  "uuid": "c4a286b4-14bc-508c-94d5-3210d5a4670d"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#6",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 50,
-                        "uuid": "55937b2f-19d0-52e6-ac51-3ca68d5ba047"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 6,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#6"
-                  ],
-                  "uuid": "c9a857e4-736c-54a1-abe8-bd5768f556b4"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#23",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 51,
-                        "uuid": "7dbf69ba-707e-54b6-98fc-f907f40234b4"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 23,
-                  "serial-num": "\"ACW1747006MV   \"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#23"
-                  ],
-                  "uuid": "ca78897e-e256-5a57-91e8-792e92280c30"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#17",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 52,
-                        "uuid": "01310680-37b7-58bf-914a-1ba4583a16c2"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 17,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#17"
-                  ],
-                  "uuid": "cb6fb97c-fe8f-528f-b34e-c7c9ee52e485"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "15411cf7-182d-5dbe-89e7-260d95798ec7"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/14",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 53
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 14,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/14"
-                  ],
-                  "uuid": "cce67881-0cf8-5778-83fc-099e4dddfa50"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#4",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 54,
-                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 4,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#4"
-                  ],
-                  "uuid": "ce3fb53f-c07c-5b1d-b8b3-8c08da8800b9"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "323bb3fe-391d-5cc2-8cf0-0b99ec874045"
-                  ],
-                  "description": "\"100G/40G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/2",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 55
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 2,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/2"
-                  ],
-                  "uuid": "d0757c2c-8d4b-57aa-8f17-c5fab40551d4"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#7",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 56,
-                        "uuid": "db647a95-a6e8-5ad3-8d9a-0842517fe27d"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 7,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#7"
-                  ],
-                  "uuid": "d54a9b97-d671-5c84-988d-1d0bc3a62f55"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "7f5c81bf-e019-58d4-96a3-9fbb9edc22f8"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/16",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 57
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 16,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/16"
-                  ],
-                  "uuid": "d6e15727-40bd-51f6-a7c4-7356358a60b6"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#22",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 58,
-                        "uuid": "54a2e18e-edfc-5b65-a5c3-20c7bd7e3593"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 22,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#22"
-                  ],
-                  "uuid": "d7d2e358-3203-5e6b-a23b-eecc4f866fa9"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#24",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 59,
-                        "uuid": "1574d8e0-900f-5047-87f6-dc1f09883836"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 24,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#24"
-                  ],
-                  "uuid": "da6e0382-5ca3-5f23-8ae6-1c8ccc897c65"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "d54a9b97-d671-5c84-988d-1d0bc3a62f55"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/7",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 60
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 7,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/7"
-                  ],
-                  "uuid": "db647a95-a6e8-5ad3-8d9a-0842517fe27d"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#3",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 61,
-                        "uuid": "a9e9c4ec-265a-5039-848c-2ebf578855f3"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 3,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#3"
-                  ],
-                  "uuid": "de36dafb-2d66-54ef-9351-54ee4a1b0f9b"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "8e3677d0-42a7-5942-9b09-e86657cbcd41"
-                  ],
-                  "description": "\"1G Copper\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/27",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 62
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 27,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/27"
-                  ],
-                  "uuid": "df37f614-ec9f-5181-8c41-c322f31586ea"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "aaf4e1d8-b1fe-5864-a1ce-ae8d6b188293"
-                  ],
-                  "description": "\"1G Copper\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/28",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 63
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 28,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/28"
-                  ],
-                  "uuid": "df910973-1c02-53ff-8dde-3bce8955a73a"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#29",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 64,
-                        "uuid": "8ae15e57-f162-567c-a619-df5b548c0902"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 29,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#29"
-                  ],
-                  "uuid": "e43d275a-e710-5a00-b1c9-6b964f4214f2"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#15",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 65,
-                        "uuid": "24639859-aa84-532a-ac92-d7fc91db0a22"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 15,
-                  "serial-num": "\"CN04HG0018P13RE\"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#15"
-                  ],
-                  "uuid": "ecf4c207-e36b-52cb-a34a-2cecc4030d25"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#2",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 66,
-                        "uuid": "bae372e1-9b13-5f5e-aed0-0dfe87d9c9b7"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 2,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#2"
-                  ],
-                  "uuid": "f3e2636c-c742-5542-8586-7a7d516e8544"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#8",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 67,
-                        "uuid": "14c2bb4e-7d9c-5e32-a53a-0bbbdcd720c3"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 8,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#8"
-                  ],
-                  "uuid": "fb5d6c6d-edf2-5d17-b39f-62a889797be3"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#21",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 68,
-                        "uuid": "9beab43b-9bb4-5672-adc3-f6329e4ba827"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 21,
-                  "serial-num": "\"ACW1747006MZ   \"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#21"
-                  ],
-                  "uuid": "fe86ab62-509d-513a-b378-2bc18a794542"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "9b42bf35-e457-5303-b765-523009f7a5a4"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/12",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 69
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 12,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/12"
-                  ],
-                  "uuid": "ffb8587d-ddb3-5eec-ba78-bb5be047def2"
-                }
-              ]
-            },
-            "name": "R199",
-            "uuid": "2a672db3-9ac5-5124-b9b2-12c9fc9dd4a8"
-          }
-        ]
-      }
-    }
-  },
-  {
-    "ietf-network-hardware-inventory:network-hardware-inventory": {
-      "network-elements": {
-        "network-element": [
-          {
-            "components": {
-              "component": [
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#3",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 2,
-                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 3,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#3"
-                  ],
-                  "uuid": "02d7b07c-7552-5c2d-b6dd-9b1aa07087e1"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "5beb5441-c807-59c1-8535-1c2eb4f9cee8"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/12",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 3
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 12,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/12"
-                  ],
-                  "uuid": "07207602-d029-5cc1-83af-4a243166c7bc"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "1cd5416f-a2cd-5615-9ab9-aae1560bf39a"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/3",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 4
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 3,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/3"
-                  ],
-                  "uuid": "0f9a7a09-eb52-5a70-a2f7-94fff68f4510"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#9",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 5,
-                        "uuid": "d4c56b9d-d131-55c5-8536-1aece8087ffb"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 9,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#9"
-                  ],
-                  "uuid": "0fb1b102-0ac4-5de3-8e16-117b2f5e12a9"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "201b08ac-5107-577b-85c9-4cc742ece6ce"
-                  ],
-                  "description": "\"100G/40G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/1",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 6
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 1,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/1"
-                  ],
-                  "uuid": "1343ac3a-c765-5c10-a04c-eb43e4093a46"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "54186200-dac6-57cf-a84c-f2b1ebe4f5fc"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/7",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 7
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 7,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/7"
-                  ],
-                  "uuid": "145ba61e-7112-5eec-b41c-91978b80d77f"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#3",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 8,
-                        "uuid": "0f9a7a09-eb52-5a70-a2f7-94fff68f4510"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 3,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#3"
-                  ],
-                  "uuid": "1cd5416f-a2cd-5615-9ab9-aae1560bf39a"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#1",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 9,
-                        "uuid": "1343ac3a-c765-5c10-a04c-eb43e4093a46"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 1,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#1"
-                  ],
-                  "uuid": "201b08ac-5107-577b-85c9-4cc742ece6ce"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "ab9c4611-0ad8-5f9a-8848-c97a8829e693"
-                  ],
-                  "description": "\"100G/40G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/26",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 10
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 26,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/26"
-                  ],
-                  "uuid": "22d12bd5-f2b1-545c-a2a1-58c59defc2e0"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "7fbe001d-9cd5-55cf-9b2d-1e2198c4d8e1"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/5",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 11
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 5,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/5"
-                  ],
-                  "uuid": "4015a0f7-a90e-53fa-a8e9-e97d58854f24"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#27",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 12,
-                        "uuid": "d470e8ce-f044-54f6-9dd8-05fad9bc0b34"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 27,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#27"
-                  ],
-                  "uuid": "40aaac2b-be53-530b-8fb9-4dc4240dad2b"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#20",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 13,
-                        "uuid": "946ea635-16d3-531e-ac0a-0f70f0d38e08"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 20,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#20"
-                  ],
-                  "uuid": "43423068-88f4-5780-9186-a840031a5562"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#13",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 14,
-                        "uuid": "5d3dafdb-43a9-5745-9d9e-b07cea2e719b"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 13,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#13"
-                  ],
-                  "uuid": "448f2156-8dc4-5fb8-9671-be17c6054b44"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#4",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 15,
-                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 4,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#4"
-                  ],
-                  "uuid": "50a04d98-5873-5e5a-b725-c41b04c91ea4"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#7",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 16,
-                        "uuid": "145ba61e-7112-5eec-b41c-91978b80d77f"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 7,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#7"
-                  ],
-                  "uuid": "54186200-dac6-57cf-a84c-f2b1ebe4f5fc"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "eae9dff7-3885-5640-8348-c91ce05543c6"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/4",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 17
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 4,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/4"
-                  ],
-                  "uuid": "5655d66f-a362-57e2-9a9c-ab4bcdb863d5"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#12",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 18,
-                        "uuid": "07207602-d029-5cc1-83af-4a243166c7bc"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 12,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#12"
-                  ],
-                  "uuid": "5beb5441-c807-59c1-8535-1c2eb4f9cee8"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "448f2156-8dc4-5fb8-9671-be17c6054b44"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/13",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 19
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 13,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/13"
-                  ],
-                  "uuid": "5d3dafdb-43a9-5745-9d9e-b07cea2e719b"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#10",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 20,
-                        "uuid": "8669c5b6-c6a4-526f-bed1-9c0d24146739"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 10,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#10"
-                  ],
-                  "uuid": "61a96138-48de-56e4-bc8b-355967ca944f"
-                },
-                {
-                  "class": "iana-hardware:power-supply",
-                  "description": "\"CRXT-T0T12A\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"CRXT-T0T12A\"",
-                  "name": "Power-Supply#1",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 21,
-                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 1,
-                  "serial-num": "\"19430061\"",
-                  "software-rev": "",
-                  "uri": [
-                    "Power-Supply#1"
-                  ],
-                  "uuid": "677ce193-eabe-5c99-be1d-87e5d8a735bc"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#19",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 22,
-                        "uuid": "e2cd6e88-e40c-5f39-91f0-646fdb3f14fb"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 19,
-                  "serial-num": "\"F1930015671    \"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#19"
-                  ],
-                  "uuid": "6838ea30-544e-5188-af7e-7a21e4bc4012"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#25",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 23,
-                        "uuid": "ce8079db-7521-592f-95bc-459a05b95483"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 25,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#25"
-                  ],
-                  "uuid": "728c024d-336b-5657-b0aa-6968704c534a"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "c9756d8f-a333-528e-99f5-fa8bbb73301d"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/16",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 24
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 16,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/16"
-                  ],
-                  "uuid": "75b6bf48-155c-5b2d-b94c-3a022d2ee7b3"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#21",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 25,
-                        "uuid": "81e12350-5582-5d28-8f89-8bec87ddfcf5"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 21,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#21"
-                  ],
-                  "uuid": "7bcb17de-7b39-53c2-a383-8ff2508c194e"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#5",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 26,
-                        "uuid": "4015a0f7-a90e-53fa-a8e9-e97d58854f24"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 5,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#5"
-                  ],
-                  "uuid": "7fbe001d-9cd5-55cf-9b2d-1e2198c4d8e1"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#11",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 27,
-                        "uuid": "90248895-6cdf-55cc-ba47-07208aec7561"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 11,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#11"
-                  ],
-                  "uuid": "810184e8-051d-5366-bb5c-ebed97590fb4"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "7bcb17de-7b39-53c2-a383-8ff2508c194e"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/21",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 28
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 21,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/21"
-                  ],
-                  "uuid": "81e12350-5582-5d28-8f89-8bec87ddfcf5"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "96874de4-51d9-5c68-9700-042d4263cdd8"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/6",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 29
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 6,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/6"
-                  ],
-                  "uuid": "8214b7cb-bbc3-5b69-805d-ed35128f796f"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "a0166f5f-7f55-5880-9231-48624cda031c"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/17",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 30
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 17,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/17"
-                  ],
-                  "uuid": "8452da86-83c6-5f59-942b-0d59a08e60b8"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "61a96138-48de-56e4-bc8b-355967ca944f"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/10",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 31
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 10,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/10"
-                  ],
-                  "uuid": "8669c5b6-c6a4-526f-bed1-9c0d24146739"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "b0451047-ff08-5bc6-8bc8-bf21b0d70049"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/2",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 32
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 2,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/2"
-                  ],
-                  "uuid": "8a37750c-b5ef-510b-80cd-f4eb7d938b8c"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#5",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 33,
-                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 5,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#5"
-                  ],
-                  "uuid": "8db38f44-4e57-5621-9801-b7683b19ff56"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#15",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 34,
-                        "uuid": "a67341ee-0313-58aa-b416-7d698d3877be"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 15,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#15"
-                  ],
-                  "uuid": "8ec6edce-4522-597d-88c8-37697cb154fe"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#8",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 35,
-                        "uuid": "c2d9a8ff-a854-50d8-8550-dc1f60ef9261"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 8,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#8"
-                  ],
-                  "uuid": "8f802e29-1885-55d2-9122-9a1fffc3ec46"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "810184e8-051d-5366-bb5c-ebed97590fb4"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/11",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 36
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 11,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/11"
-                  ],
-                  "uuid": "90248895-6cdf-55cc-ba47-07208aec7561"
-                },
-                {
-                  "class": "iana-hardware:power-supply",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Power-Supply#2",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 37,
-                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 2,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Power-Supply#2"
-                  ],
-                  "uuid": "93c9b45e-7574-5fb6-b0b1-6574f823b46a"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "43423068-88f4-5780-9186-a840031a5562"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/20",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 38
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 20,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/20"
-                  ],
-                  "uuid": "946ea635-16d3-531e-ac0a-0f70f0d38e08"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#6",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 39,
-                        "uuid": "8214b7cb-bbc3-5b69-805d-ed35128f796f"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 6,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#6"
-                  ],
-                  "uuid": "96874de4-51d9-5c68-9700-042d4263cdd8"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#23",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 40,
-                        "uuid": "c28279e3-4dae-5af8-b8be-99ccc1cda2f1"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 23,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#23"
-                  ],
-                  "uuid": "99258fb4-22e3-5516-bc2e-c1f50f238d31"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#17",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 41,
-                        "uuid": "8452da86-83c6-5f59-942b-0d59a08e60b8"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 17,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#17"
-                  ],
-                  "uuid": "a0166f5f-7f55-5880-9231-48624cda031c"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "f1568cd5-a694-57a5-b233-8d21f11fb5bc"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/22",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 42
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 22,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/22"
-                  ],
-                  "uuid": "a52bac7b-0b70-5a5b-9066-99ed66e09cbb"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "8ec6edce-4522-597d-88c8-37697cb154fe"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/15",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 43
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 15,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/15"
-                  ],
-                  "uuid": "a67341ee-0313-58aa-b416-7d698d3877be"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#14",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 44,
-                        "uuid": "b3ed689a-f997-59d6-9b3d-aff511a0e253"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 14,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#14"
-                  ],
-                  "uuid": "a8b55643-e432-5a14-b34b-9f0824d1ae66"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "ba77d752-b621-598b-91e3-c80c13109fb8"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/18",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 45
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 18,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/18"
-                  ],
-                  "uuid": "ab710745-3989-5e4d-8b70-7048bd437d0e"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#26",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 46,
-                        "uuid": "22d12bd5-f2b1-545c-a2a1-58c59defc2e0"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 26,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#26"
-                  ],
-                  "uuid": "ab9c4611-0ad8-5f9a-8848-c97a8829e693"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#2",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 47,
-                        "uuid": "8a37750c-b5ef-510b-80cd-f4eb7d938b8c"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 2,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#2"
-                  ],
-                  "uuid": "b0451047-ff08-5bc6-8bc8-bf21b0d70049"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "b606eb8f-079e-5039-936f-e1fa8c8bbc22"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/24",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 48
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 24,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/24"
-                  ],
-                  "uuid": "b3cdb834-c93e-5029-9dd6-21cb3696c84c"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "a8b55643-e432-5a14-b34b-9f0824d1ae66"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/14",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 49
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 14,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/14"
-                  ],
-                  "uuid": "b3ed689a-f997-59d6-9b3d-aff511a0e253"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#24",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 50,
-                        "uuid": "b3cdb834-c93e-5029-9dd6-21cb3696c84c"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 24,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#24"
-                  ],
-                  "uuid": "b606eb8f-079e-5039-936f-e1fa8c8bbc22"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#18",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 51,
-                        "uuid": "ab710745-3989-5e4d-8b70-7048bd437d0e"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 18,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#18"
-                  ],
-                  "uuid": "ba77d752-b621-598b-91e3-c80c13109fb8"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "99258fb4-22e3-5516-bc2e-c1f50f238d31"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/23",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 52
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 23,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/23"
-                  ],
-                  "uuid": "c28279e3-4dae-5af8-b8be-99ccc1cda2f1"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "8f802e29-1885-55d2-9122-9a1fffc3ec46"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/8",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 53
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 8,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/8"
-                  ],
-                  "uuid": "c2d9a8ff-a854-50d8-8550-dc1f60ef9261"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#16",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 54,
-                        "uuid": "75b6bf48-155c-5b2d-b94c-3a022d2ee7b3"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 16,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#16"
-                  ],
-                  "uuid": "c9756d8f-a333-528e-99f5-fa8bbb73301d"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "728c024d-336b-5657-b0aa-6968704c534a"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/25",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 55
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 25,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/25"
-                  ],
-                  "uuid": "ce8079db-7521-592f-95bc-459a05b95483"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "40aaac2b-be53-530b-8fb9-4dc4240dad2b"
-                  ],
-                  "description": "\"100G/40G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/27",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 56
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 27,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/27"
-                  ],
-                  "uuid": "d470e8ce-f044-54f6-9dd8-05fad9bc0b34"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "0fb1b102-0ac4-5de3-8e16-117b2f5e12a9"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/9",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 57
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 9,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/9"
-                  ],
-                  "uuid": "d4c56b9d-d131-55c5-8536-1aece8087ffb"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#2",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 58,
-                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 2,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#2"
-                  ],
-                  "uuid": "d637794b-b553-59b9-9d85-115d151e94e7"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "6838ea30-544e-5188-af7e-7a21e4bc4012"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/19",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 59
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 19,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/19"
-                  ],
-                  "uuid": "e2cd6e88-e40c-5f39-91f0-646fdb3f14fb"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#4",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 60,
-                        "uuid": "5655d66f-a362-57e2-9a9c-ab4bcdb863d5"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 4,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#4"
-                  ],
-                  "uuid": "eae9dff7-3885-5640-8348-c91ce05543c6"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#22",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 61,
-                        "uuid": "a52bac7b-0b70-5a5b-9066-99ed66e09cbb"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 22,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#22"
-                  ],
-                  "uuid": "f1568cd5-a694-57a5-b233-8d21f11fb5bc"
-                },
-                {
-                  "class": "iana-hardware:chassis",
-                  "contained-child": [
-                    "02d7b07c-7552-5c2d-b6dd-9b1aa07087e1"
-                  ],
-                  "description": "\"DRX-30\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "\"R0D\"",
-                  "is-fru": false,
-                  "mfg-date": "2020-01-09T00:00:00+00:00",
-                  "mfg-name": "\"DRX-30\"",
-                  "name": "chassis",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 62,
-                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 0,
-                  "serial-num": "\"731527XB1952198\"",
-                  "software-rev": "\"21.5.1 (9799)\"",
-                  "uri": [
-                    "chassis"
-                  ],
-                  "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#1",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 63,
-                        "uuid": "f53bf8e4-17f2-5dbb-8247-5f42c97340bb"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 1,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#1"
-                  ],
-                  "uuid": "f8acb54f-f88a-59d0-9a59-f3460f19c706"
-                }
-              ]
-            },
-            "name": "R155",
-            "uuid": "50f6fe52-9cbd-5e7b-b4ad-082a264c4452"
-          }
-        ]
-      }
-    }
-  },
-  {
-    "ietf-network-hardware-inventory:network-hardware-inventory": {
-      "network-elements": {
-        "network-element": [
-          {
-            "components": {
-              "component": [
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "380c56d9-4da7-52a0-8902-17e44d84182d"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/6",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 2
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 6,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/6"
-                  ],
-                  "uuid": "015374ab-9cae-58c3-8e0e-a438482511d1"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "a537dd75-55ed-5f80-bbe0-a5fcec8fe992"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/20",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 3
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 20,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/20"
-                  ],
-                  "uuid": "030e2ea4-7cdf-5212-9a28-88dc24c52629"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "cdcb47b3-3fe9-5db0-a70a-df607933c68b"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/17",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 4
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 17,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/17"
-                  ],
-                  "uuid": "11e08bd6-770d-55a0-a635-e54cf3dbccc7"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#15",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 5,
-                        "uuid": "d425d98d-4f08-5519-a754-63fa109ba13b"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 15,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#15"
-                  ],
-                  "uuid": "1c93cb2d-2c23-50df-95d8-f32fe26e1373"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#4",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 6,
-                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 4,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#4"
-                  ],
-                  "uuid": "1feb16b7-ccd9-5cd6-a958-56400aafb910"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "b9326b3e-4bfd-5334-8205-17964ca521d3"
-                  ],
-                  "description": "\"100G/40G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/1",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 7
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 1,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/1"
-                  ],
-                  "uuid": "2033bacd-7ca6-5226-ad88-e05f3b36881b"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "4f052094-76bf-57e9-8c50-ab087f7585fc"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/22",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 8
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 22,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/22"
-                  ],
-                  "uuid": "2058b20d-6517-5380-8b20-e1ebda347ff1"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "68748f18-ee2c-5650-9476-375489dcf90c"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/14",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 9
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 14,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/14"
-                  ],
-                  "uuid": "2733b361-a1e5-5a22-b0ff-f20346c233b7"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "2dc02c86-6a77-5767-9c6f-07b20d09bcc5"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/8",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 10
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 8,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/8"
-                  ],
-                  "uuid": "2ca154b0-4e4b-5024-92b0-b7cf4bcc4fac"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#8",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 11,
-                        "uuid": "2ca154b0-4e4b-5024-92b0-b7cf4bcc4fac"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 8,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#8"
-                  ],
-                  "uuid": "2dc02c86-6a77-5767-9c6f-07b20d09bcc5"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "9f20d73a-2898-5bcb-8dcf-09441dcaaa14"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/10",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 12
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 10,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/10"
-                  ],
-                  "uuid": "2e08a6e2-10f9-5b61-b358-a46e5d2168c7"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "a86ad9f3-d5f7-5e4b-911a-89e15cf56cbb"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/16",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 13
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 16,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/16"
-                  ],
-                  "uuid": "2febcb3d-0afa-594e-9ebe-c6f23c8b7e8a"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#23",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 14,
-                        "uuid": "60bd77bf-2c0e-5058-ac6a-f4b107888668"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 23,
-                  "serial-num": "\"PYA2FD5        \"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#23"
-                  ],
-                  "uuid": "330654aa-1136-58c7-9836-dce23b03e84b"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "abb4254a-f8fc-5c88-a884-cba09af44e2f"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/2",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 15
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 2,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/2"
-                  ],
-                  "uuid": "36c2ad7f-3191-5d73-ba5b-a90eee210e28"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#6",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 16,
-                        "uuid": "015374ab-9cae-58c3-8e0e-a438482511d1"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 6,
-                  "serial-num": "\"AZG28W2        \"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#6"
-                  ],
-                  "uuid": "380c56d9-4da7-52a0-8902-17e44d84182d"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "389fa34a-d04c-5328-af4b-f3d825907e11"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/5",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 17
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 5,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/5"
-                  ],
-                  "uuid": "383a5fda-c038-5273-919e-e2fdebec614a"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#5",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 18,
-                        "uuid": "383a5fda-c038-5273-919e-e2fdebec614a"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 5,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#5"
-                  ],
-                  "uuid": "389fa34a-d04c-5328-af4b-f3d825907e11"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#9",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 19,
-                        "uuid": "f0c6922f-c0bb-5f69-920b-0d8ebc3f7c63"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 9,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#9"
-                  ],
-                  "uuid": "399007c8-f6c1-5b1e-9c88-19d5815b447f"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#22",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 20,
-                        "uuid": "2058b20d-6517-5380-8b20-e1ebda347ff1"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 22,
-                  "serial-num": "\"F162250019     \"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#22"
-                  ],
-                  "uuid": "4f052094-76bf-57e9-8c50-ab087f7585fc"
-                },
-                {
-                  "class": "iana-hardware:power-supply",
-                  "description": "\"CRXT-T0T12A\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"CRXT-T0T12A\"",
-                  "name": "Power-Supply#1",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 21,
-                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 1,
-                  "serial-num": "\"19330053\"",
-                  "software-rev": "",
-                  "uri": [
-                    "Power-Supply#1"
-                  ],
-                  "uuid": "52494162-56ba-5362-84c2-de654f647fd4"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "330654aa-1136-58c7-9836-dce23b03e84b"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/23",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 22
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 23,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/23"
-                  ],
-                  "uuid": "60bd77bf-2c0e-5058-ac6a-f4b107888668"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "ff8fc959-332f-5e3d-8b4b-ad52935ab386"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/7",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 23
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 7,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/7"
-                  ],
-                  "uuid": "638f45d1-e274-5c90-bd6c-6d0b43354705"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#3",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 24,
-                        "uuid": "d976f4a3-6490-5006-8452-65d8b80af1b6"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 3,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#3"
-                  ],
-                  "uuid": "6548a5c7-3dc3-56d3-9521-3b8f1bcd00f5"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "8cd2af8e-072a-56e3-88d0-dd3a73b14ca3"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/4",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 25
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 4,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/4"
-                  ],
-                  "uuid": "669a0888-e577-511f-8bb1-a78854d21236"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "e2dc2aaf-afea-5356-8ea5-c77e9895da0b"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/18",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 26
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 18,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/18"
-                  ],
-                  "uuid": "66f3fad6-f259-558c-87cb-85c267bf872d"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#14",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 27,
-                        "uuid": "2733b361-a1e5-5a22-b0ff-f20346c233b7"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 14,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#14"
-                  ],
-                  "uuid": "68748f18-ee2c-5650-9476-375489dcf90c"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "7a57c318-8e6c-5b45-89e5-fae2c611fb03"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/19",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 28
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 19,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/19"
-                  ],
-                  "uuid": "6c5296eb-eeaa-5d24-b274-3cc24095ebfe"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "8ba82a4b-08cc-5f84-89da-ce532af55224"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/11",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 29
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 11,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/11"
-                  ],
-                  "uuid": "6f156244-93a8-5b24-8300-3bcb1d390ec5"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#21",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 30,
-                        "uuid": "cae5f45f-0442-5ea1-ba3f-beac8c1e2e55"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 21,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#21"
-                  ],
-                  "uuid": "7317a965-f981-59e8-87ca-0aa8c87634b1"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#19",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 31,
-                        "uuid": "6c5296eb-eeaa-5d24-b274-3cc24095ebfe"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 19,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#19"
-                  ],
-                  "uuid": "7a57c318-8e6c-5b45-89e5-fae2c611fb03"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#5",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 32,
-                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 5,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#5"
-                  ],
-                  "uuid": "7c8a8160-a11b-588d-8302-c2fa37b7acd3"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#24",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 33,
-                        "uuid": "b1fe3b03-236d-509f-9738-0863a0051cc0"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 24,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#24"
-                  ],
-                  "uuid": "86b7296f-1bc6-5ed6-9019-89776c5e624c"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "e3a4825b-62c2-5119-bed1-9c4b7edeb0bf"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/12",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 34
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 12,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/12"
-                  ],
-                  "uuid": "88619a40-3670-5447-8264-a5a44e75f8ea"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#11",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 35,
-                        "uuid": "6f156244-93a8-5b24-8300-3bcb1d390ec5"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 11,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#11"
-                  ],
-                  "uuid": "8ba82a4b-08cc-5f84-89da-ce532af55224"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#4",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 36,
-                        "uuid": "669a0888-e577-511f-8bb1-a78854d21236"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 4,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#4"
-                  ],
-                  "uuid": "8cd2af8e-072a-56e3-88d0-dd3a73b14ca3"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "bddb5da3-8ca6-50a8-91e2-4ab1d7bca8b1"
-                  ],
-                  "description": "\"100G/40G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/27",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 37
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 27,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/27"
-                  ],
-                  "uuid": "8dab697e-efe0-5818-b072-841bcd57340e"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#10",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 38,
-                        "uuid": "2e08a6e2-10f9-5b61-b358-a46e5d2168c7"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 10,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#10"
-                  ],
-                  "uuid": "9f20d73a-2898-5bcb-8dcf-09441dcaaa14"
-                },
-                {
-                  "class": "iana-hardware:chassis",
-                  "contained-child": [
-                    "1feb16b7-ccd9-5cd6-a958-56400aafb910"
-                  ],
-                  "description": "\"DRX-30\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "\"R0D\"",
-                  "is-fru": false,
-                  "mfg-date": "2020-01-08T00:00:00+00:00",
-                  "mfg-name": "\"DRX-30\"",
-                  "name": "chassis",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 39,
-                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 0,
-                  "serial-num": "\"731527XB1952144\"",
-                  "software-rev": "\"21.5.1 (9799)\"",
-                  "uri": [
-                    "chassis"
-                  ],
-                  "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#20",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 40,
-                        "uuid": "030e2ea4-7cdf-5212-9a28-88dc24c52629"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 20,
-                  "serial-num": "\"CN04HG0018P1452\"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#20"
-                  ],
-                  "uuid": "a537dd75-55ed-5f80-bbe0-a5fcec8fe992"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#3",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 41,
-                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 3,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#3"
-                  ],
-                  "uuid": "a548914d-f039-5463-a7cf-e3a2d0e970ce"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#16",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 42,
-                        "uuid": "2febcb3d-0afa-594e-9ebe-c6f23c8b7e8a"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 16,
-                  "serial-num": "\"030SBF6TH661789\"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#16"
-                  ],
-                  "uuid": "a86ad9f3-d5f7-5e4b-911a-89e15cf56cbb"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#2",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 43,
-                        "uuid": "36c2ad7f-3191-5d73-ba5b-a90eee210e28"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 2,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#2"
-                  ],
-                  "uuid": "abb4254a-f8fc-5c88-a884-cba09af44e2f"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "86b7296f-1bc6-5ed6-9019-89776c5e624c"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/24",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 44
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 24,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/24"
-                  ],
-                  "uuid": "b1fe3b03-236d-509f-9738-0863a0051cc0"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#1",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 45,
-                        "uuid": "2033bacd-7ca6-5226-ad88-e05f3b36881b"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 1,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#1"
-                  ],
-                  "uuid": "b9326b3e-4bfd-5334-8205-17964ca521d3"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#27",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 46,
-                        "uuid": "8dab697e-efe0-5818-b072-841bcd57340e"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 27,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#27"
-                  ],
-                  "uuid": "bddb5da3-8ca6-50a8-91e2-4ab1d7bca8b1"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "7317a965-f981-59e8-87ca-0aa8c87634b1"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/21",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 47
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 21,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/21"
-                  ],
-                  "uuid": "cae5f45f-0442-5ea1-ba3f-beac8c1e2e55"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#2",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 48,
-                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 2,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#2"
-                  ],
-                  "uuid": "cbb8d2b5-a57f-508b-a054-509ace91bc88"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#17",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 49,
-                        "uuid": "11e08bd6-770d-55a0-a635-e54cf3dbccc7"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 17,
-                  "serial-num": "\"CN04HG00183038D\"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#17"
-                  ],
-                  "uuid": "cdcb47b3-3fe9-5db0-a70a-df607933c68b"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "f441b766-d83b-51f0-bb87-9feacbaa222e"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/13",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 50
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 13,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/13"
-                  ],
-                  "uuid": "d20d0c2a-5cbd-5602-b54b-a44134b391b7"
-                },
-                {
-                  "class": "iana-hardware:power-supply",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Power-Supply#2",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 51,
-                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 2,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Power-Supply#2"
-                  ],
-                  "uuid": "d35ae2b7-88e8-5f8e-bb1c-6b1b04c41652"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "d9a36c03-d934-5ca3-ab94-047b6114ce5a"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/25",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 52
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 25,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/25"
-                  ],
-                  "uuid": "d3cbf635-9c86-542b-b169-53a77dea2d75"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "1c93cb2d-2c23-50df-95d8-f32fe26e1373"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/15",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 53
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 15,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/15"
-                  ],
-                  "uuid": "d425d98d-4f08-5519-a754-63fa109ba13b"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "e7c4e4dc-5f70-53a8-9680-6d1d1f382611"
-                  ],
-                  "description": "\"100G/40G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/26",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 54
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 26,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/26"
-                  ],
-                  "uuid": "d71a754a-1d95-5fa9-956a-fba4da2e9841"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "6548a5c7-3dc3-56d3-9521-3b8f1bcd00f5"
-                  ],
-                  "description": "\"25G/10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/3",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 55
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 3,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/3"
-                  ],
-                  "uuid": "d976f4a3-6490-5006-8452-65d8b80af1b6"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#25",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 56,
-                        "uuid": "d3cbf635-9c86-542b-b169-53a77dea2d75"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 25,
-                  "serial-num": "\"F162250016     \"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#25"
-                  ],
-                  "uuid": "d9a36c03-d934-5ca3-ab94-047b6114ce5a"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#18",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 57,
-                        "uuid": "66f3fad6-f259-558c-87cb-85c267bf872d"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 18,
-                  "serial-num": "\"P22224B0261    \"",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#18"
-                  ],
-                  "uuid": "e2dc2aaf-afea-5356-8ea5-c77e9895da0b"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#12",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 58,
-                        "uuid": "88619a40-3670-5447-8264-a5a44e75f8ea"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 12,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#12"
-                  ],
-                  "uuid": "e3a4825b-62c2-5119-bed1-9c4b7edeb0bf"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#26",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 59,
-                        "uuid": "d71a754a-1d95-5fa9-956a-fba4da2e9841"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 26,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#26"
-                  ],
-                  "uuid": "e7c4e4dc-5f70-53a8-9680-6d1d1f382611"
-                },
-                {
-                  "class": "iana-hardware:port",
-                  "contained-child": [
-                    "399007c8-f6c1-5b1e-9c88-19d5815b447f"
-                  ],
-                  "description": "\"10G/1G Fiber\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "eth-1/0/9",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 60
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 9,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "eth-1/0/9"
-                  ],
-                  "uuid": "f0c6922f-c0bb-5f69-920b-0d8ebc3f7c63"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#13",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 61,
-                        "uuid": "d20d0c2a-5cbd-5602-b54b-a44134b391b7"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 13,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#13"
-                  ],
-                  "uuid": "f441b766-d83b-51f0-bb87-9feacbaa222e"
-                },
-                {
-                  "class": "iana-hardware:fan",
-                  "description": "\"AS7315\"",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "\"AS7315\"",
-                  "name": "Fan#1",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 62,
-                        "uuid": "a0307926-d58c-51ef-aeaf-a8587065ddb2"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 1,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Fan#1"
-                  ],
-                  "uuid": "fbee5498-f04b-543b-b0df-054b8ddcdab5"
-                },
-                {
-                  "class": "iana-hardware:module",
-                  "description": "",
-                  "firmware-rev": "",
-                  "hardware-rev": "",
-                  "is-fru": false,
-                  "mfg-name": "",
-                  "name": "Transceiver#7",
-                  "parent-component-references": {
-                    "component-reference": [
-                      {
-                        "index": 63,
-                        "uuid": "638f45d1-e274-5c90-bd6c-6d0b43354705"
-                      }
-                    ]
-                  },
-                  "parent-rel-pos": 7,
-                  "serial-num": "",
-                  "software-rev": "",
-                  "uri": [
-                    "Transceiver#7"
-                  ],
-                  "uuid": "ff8fc959-332f-5e3d-8b4b-ad52935ab386"
-                }
-              ]
-            },
-            "name": "R149",
-            "uuid": "fd28848d-18e7-5cb5-bb02-4085d088eede"
-          }
-        ]
-      }
-    }
-  }
-]
\ No newline at end of file
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
index 260fa5e04..e8c03857e 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
@@ -56,4 +56,5 @@ class Networks(Resource):
             LOGGER.exception('Something went wrong Retrieving Topology({:s})'.format(str(topology_id)))
             response = jsonify({'error': str(e)})
             response.status_code = HTTP_SERVERERROR
-        return response
\ No newline at end of file
+        return response
+    
\ No newline at end of file
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/__init__.py
index a1966f23f..4503c22d5 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/__init__.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/__init__.py
@@ -35,8 +35,5 @@ from nbi.service.rest_server.nbi_plugins.ietf_network_new.Networks import Networ
 
 URL_PREFIX = '/restconf/data/ietf-network:networks'
 
-
 def register_ietf_network(rest_server : RestServer):
     rest_server.add_resource(Networks, URL_PREFIX)
-
-    
-- 
GitLab


From 1796019d8630c88af0a8fc71b106a62a69f14d03 Mon Sep 17 00:00:00 2001
From: armingol <pablo.armingolrobles@telefonica.com>
Date: Thu, 22 Aug 2024 10:54:54 +0200
Subject: [PATCH 04/14] Code cleanup

---
 .../nbi_plugins/ietf_network_new/Networks.py  | 44 ++++++++++---------
 .../ietf_network_new/YangHandler.py           |  6 ---
 2 files changed, 24 insertions(+), 26 deletions(-)

diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
index e8c03857e..9ca60d4c6 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
@@ -16,8 +16,9 @@ import json, logging
 from flask import request
 from flask.json import jsonify
 from flask_restful import Resource
-from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME
+from common.proto.context_pb2 import ContextId, Empty
 from common.tools.context_queries.Topology import get_topology_details
+from common.tools.object_factory.Context import json_context_id
 from context.client.ContextClient import ContextClient
 from nbi.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH
 from nbi.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR
@@ -25,35 +26,38 @@ from .YangHandler import YangHandler
 
 LOGGER = logging.getLogger(__name__)
 
-TE_TOPOLOGY_NAMES = [
-    'providerId-10-clientId-0-topologyId-1',
-]
-
 class Networks(Resource):
     @HTTP_AUTH.login_required
     def get(self):
-        LOGGER.info('Request: {:s}'.format(str(request)))
-        topology_id = ''
+        LOGGER.info(f'Request: {request}')
         try:
             context_client = ContextClient()
-            topology_details = get_topology_details(
-                context_client, DEFAULT_TOPOLOGY_NAME)
-            if topology_details is None:
-                MSG = 'Topology({:s}/{:s}) not found'
-                raise Exception(MSG.format(DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME))
-            
-            network_list_reply = []
             yang_handler = YangHandler()
-            for te_topology_name in TE_TOPOLOGY_NAMES:
-                network_reply = yang_handler.compose_network(te_topology_name, topology_details)
-                network_list_reply.append(network_reply)
+            network_list_reply = []
+
+            contexts = context_client.ListContexts(Empty()).contexts
+            context_names = [context.name for context in contexts]
+            LOGGER.info(f'Contexts detected: {context_names}')
+
+            for context_name in context_names:
+                topologies = context_client.ListTopologies(ContextId(**json_context_id(context_name))).topologies
+                topology_names = [topology.name for topology in topologies]
+                LOGGER.info(f'Topologies detected for context {context_name}: {topology_names}')
+
+                for topology_name in topology_names:
+                    topology_details = get_topology_details(context_client, topology_name, context_name)
+                    if topology_details is None:
+                        raise Exception(f'Topology({context_name}/{topology_name}) not found')
+                    
+                    network_reply = yang_handler.compose_network(topology_name, topology_details)
+                    network_list_reply.append(network_reply)
 
             yang_handler.destroy()
             response = jsonify(network_list_reply)
-
             response.status_code = HTTP_OK
-        except Exception as e: # pylint: disable=broad-except
-            LOGGER.exception('Something went wrong Retrieving Topology({:s})'.format(str(topology_id)))
+
+        except Exception as e:
+            LOGGER.exception(f'Error retrieving topologies: {e}')
             response = jsonify({'error': str(e)})
             response.status_code = HTTP_SERVERERROR
         return response
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
index 0472a2e34..5024b315f 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
@@ -36,10 +36,6 @@ class YangHandler:
             LOGGER.info('Loading module: {:s}'.format(str(yang_module_name)))
             self._yang_context.load_module(yang_module_name).feature_enable_all()
     
-    def get_endpoint_name(self, device: str) -> None:
-        context_client = ContextClient()
-        device = context_client.GetDevice(DeviceId(**json_device_id(device)))
-            
     def compose_network(self, te_topology_name : str, topology_details : TopologyDetails) -> None:
         networks = self._yang_context.create_data_path('/ietf-network:networks')
         network = networks.create_path('network[network-id="{:s}"]'.format(te_topology_name))
@@ -103,14 +99,12 @@ class YangHandler:
         links = network.create_path('ietf-network-topology:link[link-id="{:s}"]'.format(link_name))
         links.create_path('link-id', link_name)
         src_endpoint_id = link_specs.link_endpoint_ids[0]
-        LOGGER.info('SRC: {:s}'.format(str(src_endpoint_id)))
 
         source = links.create_path('source')
         source.create_path('source-node', name_mappings.get_device_name(src_endpoint_id.device_id))
         source.create_path('source-tp', name_mappings.get_endpoint_name(src_endpoint_id))
 
         dst_endpoint_id = link_specs.link_endpoint_ids[-1]
-        LOGGER.info('DST: {:s}'.format(str(dst_endpoint_id)))
 
         destination = links.create_path('destination')
         destination.create_path('dest-node', name_mappings.get_device_name(dst_endpoint_id.device_id))
-- 
GitLab


From f541c4ebd4eaad479ff3f7d9866f03e668a37216 Mon Sep 17 00:00:00 2001
From: armingol <pablo.armingolrobles@telefonica.com>
Date: Thu, 22 Aug 2024 11:06:29 +0200
Subject: [PATCH 05/14] code cleanup

---
 .../ietf_network_new/YangHandler.py           | 117 +++++++++---------
 1 file changed, 58 insertions(+), 59 deletions(-)

diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
index 5024b315f..4037f1aa7 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
@@ -19,15 +19,12 @@ from common.proto.context_pb2 import TopologyDetails, Device, Link
 from .NameMapping import NameMappings
 from context.client.ContextClient import ContextClient
 from common.tools.object_factory.Device import json_device_id
-from common.proto.context_pb2 import  DeviceId 
+from common.proto.context_pb2 import DeviceId
+
 LOGGER = logging.getLogger(__name__)
 
 YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang')
-YANG_MODULES = [
-    'ietf-network',
-    'ietf-network-topology', 
-    'ietf-l3-unicast-topology'
-]
+YANG_MODULES = ['ietf-network', 'ietf-network-topology', 'ietf-l3-unicast-topology']
 
 class YangHandler:
     def __init__(self) -> None:
@@ -36,9 +33,9 @@ class YangHandler:
             LOGGER.info('Loading module: {:s}'.format(str(yang_module_name)))
             self._yang_context.load_module(yang_module_name).feature_enable_all()
     
-    def compose_network(self, te_topology_name : str, topology_details : TopologyDetails) -> None:
+    def compose_network(self, te_topology_name: str, topology_details: TopologyDetails) -> dict:
         networks = self._yang_context.create_data_path('/ietf-network:networks')
-        network = networks.create_path('network[network-id="{:s}"]'.format(te_topology_name))
+        network = networks.create_path(f'network[network-id="{te_topology_name}"]')
         network.create_path('network-id', te_topology_name)
        
         network_types = network.create_path('network-types') 
@@ -51,68 +48,70 @@ class YangHandler:
 
         for link in topology_details.links:
             self.compose_link(link, name_mappings, network)
+        
         return json.loads(networks.print_mem('json'))
 
     def compose_node(self, dev: Device, name_mappings: NameMappings, network: Any) -> None:                                     
-            device_name = dev.name
-            name_mappings.store_device_name(dev)
+        device_name = dev.name
+        name_mappings.store_device_name(dev)
+
+        node = network.create_path(f'node[node-id="{device_name}"]')
+        node.create_path('node-id', device_name)
+        node_attributes = node.create_path('ietf-l3-unicast-topology:l3-node-attributes')
+        node_attributes.create_path('name', device_name)
+
+        context_client = ContextClient()
+        device = context_client.GetDevice(DeviceId(**json_device_id(device_name)))
+        
+        for endpoint in device.device_endpoints:
+            name_mappings.store_endpoint_name(dev, endpoint)
 
-            node = network.create_path(f'node[node-id="{device_name}"]')
-            node.create_path('node-id', device_name)
-            node_attributes = node.create_path('ietf-l3-unicast-topology:l3-node-attributes')
-            node_attributes.create_path('name', device_name)
+        self._process_device_config(device, node)
 
-            context_client = ContextClient()
-            device = context_client.GetDevice(DeviceId(**json_device_id(device_name)))
+    def _process_device_config(self, device: Device, node: Any) -> None:
+        for config in device.device_config.config_rules:
+            if config.WhichOneof('config_rule') != 'custom' or '/interface[' not in config.custom.resource_key:
+                continue
             
             for endpoint in device.device_endpoints:
-                name_mappings.store_endpoint_name(dev,endpoint)
-
-            for config in device.device_config.config_rules:
-                if config.WhichOneof('config_rule') != 'custom' or '/interface[' not in config.custom.resource_key:
-                    continue
-                
-                for endpoint in device.device_endpoints:
-                    endpoint_name = endpoint.name
-                    if f'/interface[{endpoint_name}]' in config.custom.resource_key or f'/interface[{endpoint_name}.' in config.custom.resource_key:
-                        interface_name = config.custom.resource_key.split('interface[')[1].split(']')[0]
-                        
-                        ip_addresses = []
-                        resource_value = json.loads(config.custom.resource_value)
-                        if 'address_ip' in resource_value:
-                            ip_addresses.append(resource_value['address_ip'])
-                        if 'address_ipv6' in resource_value:
-                            ip_addresses.append(resource_value['address_ipv6'])
-                        
-                        if ip_addresses:
-                            tp = node.create_path(f'ietf-network-topology:termination-point[tp-id="{interface_name}"]')
-                            tp.create_path('tp-id', interface_name)
-                            tp_attributes = tp.create_path('ietf-l3-unicast-topology:l3-termination-point-attributes')
-                            
-                            for ip in ip_addresses:
-                                tp_attributes.create_path('ip-address', ip)
-                            tp_attributes.create_path('interface-name', endpoint_name)
-
-    def compose_link(self, link_specs : Link, name_mappings : NameMappings, network : Any
-    ) -> None:
+                endpoint_name = endpoint.name
+                if f'/interface[{endpoint_name}]' in config.custom.resource_key or f'/interface[{endpoint_name}.' in config.custom.resource_key:
+                    interface_name = config.custom.resource_key.split('interface[')[1].split(']')[0]
+                    self._create_termination_point(node, interface_name, endpoint_name, config.custom.resource_value)
+
+    def _create_termination_point(self, node: Any, interface_name: str, endpoint_name: str, resource_value: str) -> None:
+        ip_addresses = self._extract_ip_addresses(json.loads(resource_value))
+        if ip_addresses:
+            tp = node.create_path(f'ietf-network-topology:termination-point[tp-id="{interface_name}"]')
+            tp.create_path('tp-id', interface_name)
+            tp_attributes = tp.create_path('ietf-l3-unicast-topology:l3-termination-point-attributes')
+            
+            for ip in ip_addresses:
+                tp_attributes.create_path('ip-address', ip)
+            tp_attributes.create_path('interface-name', endpoint_name)
+
+    @staticmethod
+    def _extract_ip_addresses(resource_value: dict) -> list:
+        ip_addresses = []
+        if 'address_ip' in resource_value:
+            ip_addresses.append(resource_value['address_ip'])
+        if 'address_ipv6' in resource_value:
+            ip_addresses.append(resource_value['address_ipv6'])
+        return ip_addresses
+
+    def compose_link(self, link_specs: Link, name_mappings: NameMappings, network: Any) -> None:
         link_name = link_specs.name
-        links = network.create_path('ietf-network-topology:link[link-id="{:s}"]'.format(link_name))
+        links = network.create_path(f'ietf-network-topology:link[link-id="{link_name}"]')
         links.create_path('link-id', link_name)
-        src_endpoint_id = link_specs.link_endpoint_ids[0]
 
-        source = links.create_path('source')
-        source.create_path('source-node', name_mappings.get_device_name(src_endpoint_id.device_id))
-        source.create_path('source-tp', name_mappings.get_endpoint_name(src_endpoint_id))
+        self._create_link_endpoint(links, 'source', link_specs.link_endpoint_ids[0], name_mappings)
+        self._create_link_endpoint(links, 'destination', link_specs.link_endpoint_ids[-1], name_mappings)
 
-        dst_endpoint_id = link_specs.link_endpoint_ids[-1]
-
-        destination = links.create_path('destination')
-        destination.create_path('dest-node', name_mappings.get_device_name(dst_endpoint_id.device_id))
-        destination.create_path('dest-tp', name_mappings.get_endpoint_name(dst_endpoint_id))
-    
-        # link_attributes = links.create_path('ietf-l3-unicast-topology:l3-link-attributes')
-        # link_attributes.create_path('name', link_name)
+    def _create_link_endpoint(self, links: Any, endpoint_type: str, endpoint_id: Any, name_mappings: NameMappings) -> None:
+        endpoint = links.create_path(endpoint_type)
+        if endpoint_type == 'destination': endpoint_type = 'dest'
+        endpoint.create_path(f'{endpoint_type}-node', name_mappings.get_device_name(endpoint_id.device_id))
+        endpoint.create_path(f'{endpoint_type}-tp', name_mappings.get_endpoint_name(endpoint_id))
 
     def destroy(self) -> None:
         self._yang_context.destroy()
-        
\ No newline at end of file
-- 
GitLab


From de5880aa68cdecfd82c74ec97a6a4ae427000453 Mon Sep 17 00:00:00 2001
From: armingol <pablo.armingolrobles@telefonica.com>
Date: Mon, 9 Sep 2024 16:48:28 +0200
Subject: [PATCH 06/14] pre merge code cleanup

---
 .../nbi_plugins/ietf_network_new/NameMapping.py    |  2 +-
 .../nbi_plugins/ietf_network_new/Networks.py       |  5 ++---
 .../nbi_plugins/ietf_network_new/YangHandler.py    | 14 +++++++-------
 .../rest_server/nbi_plugins/tfs_api/Resources.py   | 13 +++++++++++--
 .../rest_server/nbi_plugins/tfs_api/__init__.py    |  5 ++---
 5 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NameMapping.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NameMapping.py
index 0c1055911..94e4723a5 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NameMapping.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NameMapping.py
@@ -19,7 +19,7 @@ class NameMappings:
     def __init__(self) -> None:
         self._device_uuid_to_name   : Dict[str,             str] = dict()
         self._endpoint_uuid_to_name : Dict[Tuple[str, str], str] = dict()
-    
+
     def store_device_name(self, device : Device) -> None:
         device_uuid = device.device_id.device_uuid.uuid
         device_name = device.name
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
index 9ca60d4c6..fb97168ab 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import json, logging
+import logging
 from flask import request
 from flask.json import jsonify
 from flask_restful import Resource
@@ -48,7 +48,7 @@ class Networks(Resource):
                     topology_details = get_topology_details(context_client, topology_name, context_name)
                     if topology_details is None:
                         raise Exception(f'Topology({context_name}/{topology_name}) not found')
-                    
+
                     network_reply = yang_handler.compose_network(topology_name, topology_details)
                     network_list_reply.append(network_reply)
 
@@ -61,4 +61,3 @@ class Networks(Resource):
             response = jsonify({'error': str(e)})
             response.status_code = HTTP_SERVERERROR
         return response
-    
\ No newline at end of file
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
index 4037f1aa7..a5dda280c 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
@@ -32,23 +32,23 @@ class YangHandler:
         for yang_module_name in YANG_MODULES:
             LOGGER.info('Loading module: {:s}'.format(str(yang_module_name)))
             self._yang_context.load_module(yang_module_name).feature_enable_all()
-    
+
     def compose_network(self, te_topology_name: str, topology_details: TopologyDetails) -> dict:
         networks = self._yang_context.create_data_path('/ietf-network:networks')
         network = networks.create_path(f'network[network-id="{te_topology_name}"]')
         network.create_path('network-id', te_topology_name)
-       
+
         network_types = network.create_path('network-types') 
         network_types.create_path('ietf-l3-unicast-topology:l3-unicast-topology') 
 
         name_mappings = NameMappings()
- 
+
         for device in topology_details.devices: 
             self.compose_node(device, name_mappings, network)
 
         for link in topology_details.links:
             self.compose_link(link, name_mappings, network)
-        
+
         return json.loads(networks.print_mem('json'))
 
     def compose_node(self, dev: Device, name_mappings: NameMappings, network: Any) -> None:                                     
@@ -62,7 +62,7 @@ class YangHandler:
 
         context_client = ContextClient()
         device = context_client.GetDevice(DeviceId(**json_device_id(device_name)))
-        
+
         for endpoint in device.device_endpoints:
             name_mappings.store_endpoint_name(dev, endpoint)
 
@@ -72,7 +72,7 @@ class YangHandler:
         for config in device.device_config.config_rules:
             if config.WhichOneof('config_rule') != 'custom' or '/interface[' not in config.custom.resource_key:
                 continue
-            
+
             for endpoint in device.device_endpoints:
                 endpoint_name = endpoint.name
                 if f'/interface[{endpoint_name}]' in config.custom.resource_key or f'/interface[{endpoint_name}.' in config.custom.resource_key:
@@ -85,7 +85,7 @@ class YangHandler:
             tp = node.create_path(f'ietf-network-topology:termination-point[tp-id="{interface_name}"]')
             tp.create_path('tp-id', interface_name)
             tp_attributes = tp.create_path('ietf-l3-unicast-topology:l3-termination-point-attributes')
-            
+
             for ip in ip_addresses:
                 tp_attributes.create_path('ip-address', ip)
             tp_attributes.create_path('interface-name', endpoint_name)
diff --git a/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py b/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py
index 0e570fe5a..f360e3181 100644
--- a/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py
+++ b/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py
@@ -259,8 +259,17 @@ class Devices(_Resource):
 
 class Device(_Resource):
     def get(self, device_uuid : str):
-        return format_grpc_to_json(self.client.GetDevice(grpc_device_id(device_uuid)))
-    
+        return format_grpc_to_json(self.context_client.GetDevice(grpc_device_id(device_uuid)))
+
+    def put(self, device_uuid : str):
+        device = request.get_json()
+        if device_uuid != device['device_id']['device_uuid']['uuid']:
+            raise BadRequest('Mismatching device_uuid')
+        return format_grpc_to_json(self.device_client.ConfigureDevice(grpc_device(device)))
+
+    def delete(self, device_uuid : str):
+        return format_grpc_to_json(self.device_client.DeleteDevice(grpc_device_id(device_uuid)))
+
 class LinkIds(_Resource):
     def get(self):
         return format_grpc_to_json(self.context_client.ListLinkIds(Empty()))
diff --git a/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
index 4443d7e24..5333855cf 100644
--- a/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
+++ b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
@@ -50,10 +50,9 @@ RESOURCES = [
     ('api.slice',          Slice,         '/context/<path:context_uuid>/slice/<path:slice_uuid>'),
 
     ('api.device_ids',     DeviceIds,     '/device_ids'),
+    ('api.devices',        Devices,       '/devices'),
+    ('api.device',         Device,        '/device/<path:device_uuid>'),
 
-    ('api.devices',        HardwareMultipleDevices,       '/devices'),
-    ('api.device',         Hardware,        '/device/<path:device_uuid>'),
-    
     ('api.link_ids',       LinkIds,       '/link_ids'),
     ('api.links',          Links,         '/links'),
     ('api.link',           Link,          '/link/<path:link_uuid>'),
-- 
GitLab


From 77b20dc7e7a3326d2a45e79c37b83832b4583acc Mon Sep 17 00:00:00 2001
From: armingol <pablo.armingolrobles@telefonica.com>
Date: Mon, 9 Sep 2024 17:02:54 +0200
Subject: [PATCH 07/14] pre merge code cleanup

---
 .../ietf_hardware/HardwareMultipleDevices.py  |  36 --
 .../nbi_plugins/ietf_hardware/YangHandler.py  |  61 +-
 .../nbi_plugins/ietf_hardware/__init__.py     |   7 +-
 ...network-hardware-inventory@2023-03-09.yang | 604 ------------------
 .../nbi_plugins/tfs_api/__init__.py           |   1 -
 5 files changed, 26 insertions(+), 683 deletions(-)
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_hardware/HardwareMultipleDevices.py
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_hardware/yang/ietf-network-hardware-inventory@2023-03-09.yang

diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/HardwareMultipleDevices.py b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/HardwareMultipleDevices.py
deleted file mode 100644
index 5258455e5..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/HardwareMultipleDevices.py
+++ /dev/null
@@ -1,36 +0,0 @@
-import logging
-from flask import request
-from flask.json import jsonify
-from flask_restful import Resource
-from common.proto.context_pb2 import Empty
-from context.client.ContextClient import ContextClient
-from ..tools.Authentication import HTTP_AUTH
-from ..tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR
-from .YangHandler import YangHandler
-
-LOGGER = logging.getLogger(__name__)
-
-class HardwareMultipleDevices(Resource):
-    @HTTP_AUTH.login_required
-    def get(self):
-       
-        LOGGER.debug('Request: {:s}'.format(str(request)))
-
-        try:
-            context_client = ContextClient()
-            list_devices = context_client.ListDevices(Empty())
-            LOGGER.info('Request: {:s}'.format(str(list_devices)))
-            hardware_list_reply = []
-            yang_handler = YangHandler()
-            for device in list_devices.devices:
-                hardware_reply = yang_handler.compose(device)
-                hardware_list_reply.append(hardware_reply)
-            
-            yang_handler.destroy()
-            response = jsonify(hardware_list_reply)
-            response.status_code = HTTP_OK
-        except Exception as e: # pylint: disable=broad-except
-            MSG = 'Something went wrong Retrieving Hardware of Devices({:s})'
-            response = jsonify({'error': str(e)})
-            response.status_code = HTTP_SERVERERROR
-        return response
\ No newline at end of file
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py
index aa0a90908..ca67bcea1 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py
@@ -12,21 +12,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import libyang, os
 from common.proto.context_pb2 import Device
 from typing import Dict, Optional
-import datetime
 import json
 import logging
-import libyang
-import os
 import re
+import datetime
 
 LOGGER = logging.getLogger(__name__)
 YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang')
 YANG_MODULES = [
     'iana-hardware',
-    'ietf-hardware',
-    'ietf-network-hardware-inventory'
+    'ietf-hardware'
 ]
 
 class YangHandler:
@@ -37,7 +35,7 @@ class YangHandler:
             self._yang_context.load_module(yang_module_name).feature_enable_all()
 
     def parse_to_dict(self, message : Dict) -> Dict:
-        yang_module = self._yang_context.get_module('ietf-network-hardware-inventory')
+        yang_module = self._yang_context.get_module('ietf-hardware')
         dnode : Optional[libyang.DNode] = yang_module.parse_data_dict(
             message, validate_present=True, validate=True, strict=True
         )
@@ -67,7 +65,9 @@ class YangHandler:
 
 
     def compose(self, device : Device) -> Dict:
-        hardware = self._yang_context.create_data_path('/ietf-network-hardware-inventory:network-hardware-inventory')
+        # compose device iterating through the components
+ 
+        hardware = self._yang_context.create_data_path('/ietf-hardware:hardware')
         network_elements = hardware.create_path('network-elements')
             
         network_element = network_elements.create_path('network-element[uuid="{:s}"]'.format(device.device_id.device_uuid.uuid))
@@ -79,7 +79,7 @@ class YangHandler:
         for component in device.components:
             attributes = component.attributes
 
-            component_new = components.create_path('component[uuid="{:s}"]'.format(component.component_uuid.uuid))
+            component_new = hardware.create_path('component[name="{:s}"]'.format(component.name))
             component_new.create_path('name', component.name)
 
             #Cambiar las clases especiales, su formato  y añadir isfru 
@@ -89,6 +89,9 @@ class YangHandler:
 
             if component_type == "FRU" :
                 component_type = "slack"
+                component_new.create_path('is-fru', True)
+            else :
+                component_new.create_path('is-fru', False)
                 
             component_type = component_type.replace("_", "-").lower()
             component_type = 'iana-hardware:' + component_type
@@ -98,19 +101,15 @@ class YangHandler:
             #Añadir resto de atributos en IETF
 
             physical_index += 1
+            component_new.create_path('physical-index', physical_index)
 
-            component_new.create_path('description', attributes["description"].replace('/"',""))
-            
-            if "CHASSIS" not in component.type:
-                parent_component_references = component_new.create_path('parent-component-references')
-                parent = parent_component_references.create_path('component-reference[index="{:d}"]'.format(physical_index))
-                for component_parent in device.components:
-                    if component.parent == component_parent.name : 
-                      parent.create_path('uuid', component_parent.component_uuid.uuid)
-                      break
+            component_new.create_path('description', attributes["description"])
+
+            component_new.create_path('parent', component.parent)
 
             if attributes["mfg-date"] != "":
                 mfg_date = self.convert_to_iso_date(attributes["mfg-date"])
+                LOGGER.info('component[name="{:s}"]'.format(attributes["mfg-date"]))
                 component_new.create_path('mfg-date', mfg_date)
 
             component_new.create_path('hardware-rev', attributes["hardware-rev"])
@@ -118,32 +117,20 @@ class YangHandler:
             component_new.create_path('firmware-rev', attributes["firmware-version"])
             component_new.create_path('serial-num', attributes["serial-num"])
             component_new.create_path('mfg-name', attributes["mfg-name"])
-            if attributes["removable"]:
-                removable = attributes["removable"].lower()
-                if 'true' in removable:
-                    component_new.create_path('is-fru', True)
-                elif 'false' in removable:
-                    component_new.create_path('is-fru', False)
-                
             if attributes["id"]:
-                try:
-                    if  "CHASSIS" in component.type :  
-                        component_new.create_path('parent-rel-pos', 0)
-                    else:                        
-                        parent_rel_pos = int(attributes["id"].replace("\"", ""))
-                        component_new.create_path('parent-rel-pos', parent_rel_pos)
-                except ValueError:
-                    LOGGER.info('ERROR:{:s} '.format(component.name ))
-                    continue
+                component_new.create_path('parent-rel-pos', attributes["id"])
 
             component_new.create_path('uri', component.name)
-   
+
 
             component_new.create_path('uuid', component.component_uuid.uuid)
 
-            for child in device.components:
-                if component.name == child.parent : 
-                    component_new.create_path('contained-child', child.component_uuid.uuid)
+            contains_child = []
+            for component2 in device.components:
+                if component.name == component2.parent : 
+                 contains_child.append(component2.name)
+            
+            component_new.create_path('contains-child', contains_child)
 
         return json.loads(hardware.print_mem('json'))
                                     
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/__init__.py
index acec9ac45..84a0dceea 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/__init__.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/__init__.py
@@ -13,13 +13,10 @@
 # limitations under the License.
 
 from nbi.service.rest_server.nbi_plugins.ietf_hardware.Hardware import Hardware
-from nbi.service.rest_server.nbi_plugins.ietf_hardware.HardwareMultipleDevices import HardwareMultipleDevices
 from nbi.service.rest_server.RestServer import RestServer
 
-URL_PREFIX_device = "/restconf/data/device=<path:device_uuid>/ietf-network-hardware-inventory:network-hardware-inventory"
-URL_PREFIX_hardware = "/restconf/data/ietf-network-hardware-inventory:network-hardware-inventory"
+URL_PREFIX = "/restconf/data/device=<path:device_uuid>/ietf-hardware:hardware"
 
 def register_ietf_hardware(rest_server: RestServer):
-    rest_server.add_resource(Hardware, URL_PREFIX_device)
-    rest_server.add_resource(HardwareMultipleDevices, URL_PREFIX_hardware)
+    rest_server.add_resource(Hardware, URL_PREFIX)
     
\ No newline at end of file
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/yang/ietf-network-hardware-inventory@2023-03-09.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/yang/ietf-network-hardware-inventory@2023-03-09.yang
deleted file mode 100644
index e074e3005..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/yang/ietf-network-hardware-inventory@2023-03-09.yang
+++ /dev/null
@@ -1,604 +0,0 @@
-module ietf-network-hardware-inventory {
-  yang-version 1.1;
-  namespace
-    "urn:ietf:params:xml:ns:yang:ietf-network-hardware-inventory";
-  prefix nhi;
-
-  import ietf-yang-types {
-    prefix yang;
-    reference
-      "RFC6991: Common YANG Data Types.";
-  }
-
-  import iana-hardware {
-    prefix ianahw;
-    reference
-      "https://www.iana.org/assignments/yang-parameters";
-  }
-
-  import ietf-inet-types {
-    prefix inet;
-    reference
-      "RFC6991: Common YANG Data Types.";
-  }
-
-  organization
-    "IETF CCAMP Working Group";
-  contact
-    "WG Web:   <https://datatracker.ietf.org/wg/ccamp/>
-     WG List:  <mailto:ccamp@ietf.org>
-
-     Editor:   Chaode Yu
-               <yuchaode@huawei.com>
-
-     Editor:   Italo Busi
-               <italo.busi@huawei.com>
-
-     Editor:   Aihua Guo
-               <aihuaguo.ietf@gmail.com>
-
-     Editor:   Sergio Belotti
-               <sergio.belotti@nokia.com>
-
-     Editor:   Jean-Francois Bouquier
-               <jeff.bouquier@vodafone.com>
-
-     Editor:   Fabio Peruzzini
-               <fabio.peruzzini@telecomitalia.it>";
-
-  description
-    "This module defines a model for retrieving network hardware
-    inventory.
-
-    The model fully conforms to the Network Management
-    Datastore Architecture (NMDA).
-    Copyright (c) 2022 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 Revised BSD License
-    set forth in Section 4.c of the IETF Trust's Legal Provisions
-    Relating to IETF Documents
-    (https://trustee.ietf.org/license-info).
-
-    This version of this YANG module is part of RFC XXXX; see
-    the RFC itself for full legal notices.
-
-    The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
-    NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
-    'MAY', and 'OPTIONAL' in this document are to be interpreted as
-    described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
-    they appear in all capitals, as shown here.";
-
-  // RFC Ed.: replace XXXX with actual RFC number and remove this
-  // note.
-  // RFC Ed.: update the date below with the date of RFC publication
-  // and remove this note.
-
-  revision 2023-03-09 {
-    description
-      "Initial version";
-    reference
-      "RFC XXXX: A YANG Data Model for Network Hardware Inventory.";
-      //RFC Editor: replace XXXX with actual RFC number, update date
-      //information and remove this note
-  }
-
-  container network-hardware-inventory {
-    config false;
-    description
-      "The top-level container for the network inventory
-      information.";
-    uses equipment-rooms-grouping;
-    uses network-elements-grouping;
-  }
-
-  grouping common-entity-attributes {
-    description
-      "A set of attributes which are common to all the entities
-      (e.g., component, equipment room) defined in this module.";
-    leaf uuid {
-      type yang:uuid;
-      description
-        "Uniquely identifies an entity (e.g., component).";
-    }
-    leaf name {
-      type string;
-      description
-        "A name for an entity (e.g., component), as specified by
-        a network manager, that provides a non-volatile 'handle'
-        for the entity and that can be modified anytime during the
-        entity lifetime.
-
-        If no configured value exists, the server MAY set the value
-        of this node to a locally unique value in the operational
-        state.";
-    }
-    leaf description {
-      type string;
-      description "a textual description of inventory object";
-    }
-    leaf alias {
-      type string;
-      description
-      "a alias name of inventory objects. This alias name can be
-      specified by network manager.";
-    }
-  }
-
-  grouping network-elements-grouping {
-    description
-      "The attributes of the network elements.";
-    container network-elements {
-      description
-        "The container for the list of network elements.";
-      list network-element {
-        key uuid;
-        description
-          "The list of network elements within the network.";
-        uses common-entity-attributes;
-        container ne-location {
-          description
-            "The location information of this network element.";
-          leaf-list equipment-room-name {
-            type leafref {
-              path "/nhi:network-hardware-inventory/" +
-                   "nhi:equipment-rooms/nhi:equipment-room/nhi:name";
-            }
-            description
-              "Names of equipment rooms where the NE is located.
-              Please note that a NE could be located in several
-              equipment rooms.";
-          }
-        }
-        uses ne-specific-info-grouping;
-        uses components-grouping;
-      }
-    }
-  }
-
-  grouping ne-specific-info-grouping {
-    description
-      "Attributes applicable to network elements.";
-    leaf hardware-rev {
-      type string;
-      description
-        "The vendor-specific hardware revision string for the NE.";
-    }
-    leaf software-rev {
-      type string;
-      description
-        "The vendor-specific software revision string for the NE.";
-    }
-    leaf mfg-name {
-      type string;
-      description "The name of the manufacturer of this NE";
-    }
-    leaf mfg-date {
-      type yang:date-and-time;
-      description "The date of manufacturing of the NE.";
-    }
-    leaf part-number {
-      type string;
-      description
-        "The vendor-specific model name identifier string associated
-         with this NE.  The preferred value is the customer-visible
-         part number, which may be printed on the NE itself.";
-    }
-    leaf serial-number {
-      type string;
-      description
-        "The vendor-specific serial number string for the NE";
-    }
-    leaf product-name {
-      type string;
-      description
-        "indicates the vendor-spefic device type infomation.";
-    }
-  }
-
-  grouping equipment-rooms-grouping {
-    description
-      "The attributes of the equipment rooms.";
-    container equipment-rooms {
-      description
-        "The container for the list of equipment rooms.";
-      list equipment-room {
-        key uuid;
-        description
-          "The list of equipment rooms within the network.";
-        uses common-entity-attributes;
-        leaf location {
-          type string;
-          description
-            "compared with the location information of the other
-            inventory objects, a GIS address is preferred for
-            equipment room";
-        }
-        container racks {
-          description
-            "Top level container for the list of racks.";
-          list rack {
-            key uuid;
-            description
-              "The list of racks within an equipment room.";
-            uses common-entity-attributes;
-            uses rack-specific-info-grouping;
-            list contained-chassis {
-              key "ne-ref component-ref";
-              description
-                "The list of chassis within a rack.";
-              leaf ne-ref {
-                type leafref {
-                  path "/nhi:network-hardware-inventory"
-                  + "/nhi:network-elements/nhi:network-element"
-                  + "/nhi:uuid";
-                }
-                description
-                  "The reference to the network element containing
-                  the chassis component.";
-              }
-              leaf component-ref {
-                type leafref {
-                  path "/nhi:network-hardware-inventory"
-                  + "/nhi:network-elements/nhi:network-element"
-                  + "[nhi:uuid=current()/../ne-ref]/nhi:components"
-                  + "/nhi:component/nhi:uuid";
-                }
-                description
-                  "The reference to the chassis component within
-                  the network element and contained by the rack.";
-              }
-              leaf relative-position {
-                type uint8;
-                description "A relative position of chassis within
-                the rack";
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-
-  grouping rack-specific-info-grouping {
-    description
-      "Attributes applicable to racks only.";
-    container rack-location {
-      description
-        "The location information of the rack, which comprises the
-        name of the equipment room, row number, and column number.";
-      leaf equipment-room-name {
-        type leafref {
-          path "/nhi:network-hardware-inventory/nhi:equipment-rooms"
-          + "/nhi:equipment-room/nhi:name";
-        }
-        description
-        "Name of equipment room where this rack is located.";
-      }
-      leaf row-number {
-        type uint32;
-        description
-          "Identifies the row within the equipment room where
-          the rack is located.";
-      }
-      leaf column-number {
-        type uint32;
-        description
-          "Identifies the physical location of the rack within
-          the column.";
-      }
-    }
-    leaf height {
-      type uint16;
-      units millimeter;
-      description
-        "Rack height.";
-    }
-    leaf width {
-      type uint16;
-      units millimeter;
-      description
-        "Rack width.";
-    }
-    leaf depth {
-      type uint16;
-      units millimeter;
-      description
-        "Rack depth.";
-    }
-    leaf max-voltage {
-      type uint16;
-      units volt;
-      description
-        "The maximum voltage could be supported by the rack.";
-    }
-  }
-
-  grouping components-grouping {
-    description
-      "The attributes of the hardware components.";
-    container components {
-      description
-        "The container for the list of components.";
-      list component {
-        key uuid;
-        description
-          "The list of components within a network element.";
-        uses common-entity-attributes;
-        leaf location {
-          type string;
-          description
-            "A relative location information of this component.
-            In optical transport network, the location string is
-            using the following pattern:
-              '/ne=<nw-ne-name>[/r=<r_index>][/sh=<sh_index>
-              [/s_sh=<s_sh_index> ...]][[/sl=<sl_index>
-              [/s_sl=<s_sl_index> ...]][/p=<p_index> …]]'
-            ";
-        }
-        leaf class {
-          type identityref {
-            base ianahw:hardware-class;
-          }
-          description
-            "An indication of the general hardware type of the
-             component.";
-          reference
-            "RFC 8348: A YANG Data Model for Hardware Management.";
-        }
-        leaf-list contained-child {
-          type leafref {
-            path "../nhi:uuid";
-          }
-          description
-            "The list of the identifiers of the child components
-            physically contained within this component.";
-        }
-        leaf parent-rel-pos {
-          type int32 {
-            range "0 .. 2147483647";
-          }
-          description
-            "The relative position with respect to the parent
-            component among all the sibling components.";
-          reference
-            "RFC 6933: Entity MIB (Version 4) -
-                       entPhysicalParentRelPos";
-        }
-
-        container parent-component-references {
-          description
-              "The top level container for the list of the
-              identifiers of the parents of this component in a
-              hierarchy.";
-          list component-reference {
-            key index;
-            description
-              "The list of the identifiers of the parents of this
-              component in a hierarchy.
-
-              The index parameter defines the hierarchy: the topmost
-              parent has an index of 0.";
-            leaf index {
-              type uint8;
-              description
-                "The index of the parent with respect to the
-                hierarchy.";
-            }
-            leaf class {
-              type leafref {
-                path "../../../nhi:class";
-              }
-              description
-                "Class of the hierarchial parent component.";
-            }
-            leaf uuid {
-              type leafref {
-                path "../../../nhi:uuid";
-              }
-              description
-                "The identifier of the parent's component in the
-                hierarchy.";
-            }
-          }
-        }
-
-        leaf hardware-rev {
-          type string;
-          description
-            "The vendor-specific hardware revision string for the
-             component.  The preferred value is the hardware revision
-             identifier actually printed on the component itself (if
-             present).";
-          reference
-            "RFC 6933: Entity MIB (Version 4) -
-                       entPhysicalHardwareRev";
-        }
-        leaf firmware-rev {
-          type string;
-          description
-            "The vendor-specific firmware revision string for the
-             component.";
-          reference
-            "RFC 6933: Entity MIB (Version 4) -
-                       entPhysicalFirmwareRev";
-        }
-        leaf software-rev {
-          type string;
-          description
-            "The vendor-specific software revision string for the
-             component.";
-          reference
-            "RFC 6933: Entity MIB (Version 4) -
-                       entPhysicalSoftwareRev";
-        }
-        leaf serial-num {
-          type string;
-          description
-            "The vendor-specific serial number string for the
-             component.  The preferred value is the serial number
-             string actually printed on the component itself (if
-             present).";
-          reference
-            "RFC 6933: Entity MIB (Version 4) -
-            entPhysicalSerialNum";
-        }
-        leaf mfg-name {
-          type string;
-          description
-            "The name of the manufacturer of this physical component.
-             The preferred value is the manufacturer name string
-             actually printed on the component itself (if present).
-
-             Note that comparisons between instances of the
-             'model-name', 'firmware-rev', 'software-rev', and
-             'serial-num' nodes are only meaningful amongst
-             components with the same value of 'mfg-name'.
-
-             If the manufacturer name string associated with the
-             physical component is unknown to the server, then this
-             node is not instantiated.";
-          reference
-            "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgName";
-        }
-        leaf part-number {
-          type string;
-          description
-            "The vendor-specific model name identifier string
-             associated with this physical component.  The preferred
-             value is the customer-visible part number, which may be
-             printed on the component itself.
-
-             If the model name string associated with the physical
-             component is unknown to the server, then this node is
-             not instantiated.";
-          reference
-            "RFC 6933: Entity MIB (Version 4) -
-            entPhysicalModelName";
-        }
-        leaf asset-id {
-          type string;
-          description
-            "This node is a user-assigned asset tracking identifier
-             for the component.
-
-             A server implementation MAY map this leaf to the
-             entPhysicalAssetID MIB object.  Such an implementation
-             needs to use some mechanism to handle the differences in
-             size and characters allowed between this leaf and
-             entPhysicalAssetID.  The definition of such a mechanism
-             is outside the scope of this document.";
-          reference
-            "RFC 6933: Entity MIB (Version 4) - entPhysicalAssetID";
-        }
-        leaf is-fru {
-          type boolean;
-          description
-            "This node indicates whether or not this component is
-             considered a 'field-replaceable unit' by the vendor.  If
-             this node contains the value 'true', then this component
-             identifies a field-replaceable unit.  For all components
-             that are permanently contained within a
-             field-replaceable unit, the value 'false' should be
-             returned for this node.";
-          reference
-            "RFC 6933: Entity MIB (Version 4) - entPhysicalIsFRU";
-        }
-        leaf mfg-date {
-          type yang:date-and-time;
-          description
-            "The date of manufacturing of the managed component.";
-          reference
-            "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate";
-        }
-        leaf-list uri {
-          type inet:uri;
-          description
-            "This node contains identification information about the
-             component.";
-          reference
-            "RFC 6933: Entity MIB (Version 4) - entPhysicalUris";
-        }
-        uses component-specific-info-grouping;
-      }
-    }
-  }
-
-  grouping component-specific-info-grouping {
-    description
-      "In case if there are some missing attributes of component not
-      defined by RFC8348. These attributes could be
-      component-specific.
-      Here we provide a extension structure for all the components
-      we recognized. We will enrich these component specifc
-      containers in the future.";
-    choice component-class {
-      description
-        "This extension differs between different component
-        classes.";
-      case chassis {
-        when "./class = 'ianahw:chassis'";
-        container chassis-specific-info {
-          description
-            "This container contains some attributes belong to
-            chassis only.";
-          uses chassis-specific-info-grouping;
-        }
-      }
-      case container {
-        when "./class = 'ianahw:container'";
-        container slot-specific-info {
-          description
-            "This container contains some attributes belong to
-            slot or sub-slot only.";
-          uses slot-specific-info-grouping;
-        }
-      }
-      case module {
-        when "./nhi:class = 'ianahw:module'";
-        container board-specific-info {
-          description
-            "This container contains some attributes belong to
-            board only.";
-          uses board-specific-info-grouping;
-        }
-      }
-      case port {
-        when "./nhi:class = 'ianahw:port'";
-        container port-specific-info {
-          description
-            "This container contains some attributes belong to
-            port only.";
-          uses port-specific-info-grouping;
-        }
-      }
-    //TO BE ADDED: transceiver
-    }
-  }
-
-  grouping chassis-specific-info-grouping {
-  //To be enriched in the future.
-    description
-      "Specific attributes applicable to chassis only.";
-  }
-
-  grouping slot-specific-info-grouping {
-  //To be enriched in the future.
-    description
-      "Specific attributes applicable to slots only.";
-  }
-
-  grouping board-specific-info-grouping {
-  //To be enriched in the future.
-    description
-      "Specific attributes applicable to boards only.";
-  }
-
-  grouping port-specific-info-grouping {
-  //To be enriched in the future.
-    description
-      "Specific attributes applicable to ports only.";
-  }
-}
diff --git a/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
index 5333855cf..a0ffb7ed5 100644
--- a/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
+++ b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
@@ -13,7 +13,6 @@
 # limitations under the License.
 
 from nbi.service.rest_server.RestServer import RestServer
-from nbi.service.rest_server.nbi_plugins.ietf_hardware import Hardware, HardwareMultipleDevices
 from nbi.service.rest_server.nbi_plugins.ietf_network_new import Networks
 from .Resources import (
     Connection, ConnectionIds, Connections,
-- 
GitLab


From 140c73edc46535a0d52b8b89c4a5d0463fb63305 Mon Sep 17 00:00:00 2001
From: armingol <pablo.armingolrobles@telefonica.com>
Date: Mon, 9 Sep 2024 17:05:06 +0200
Subject: [PATCH 08/14] code cleanup

---
 .../nbi_plugins/ietf_hardware/YangHandler.py           | 10 ++--------
 .../rest_server/nbi_plugins/ietf_hardware/__init__.py  |  3 +--
 2 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py
index ca67bcea1..453429485 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py
@@ -68,12 +68,6 @@ class YangHandler:
         # compose device iterating through the components
  
         hardware = self._yang_context.create_data_path('/ietf-hardware:hardware')
-        network_elements = hardware.create_path('network-elements')
-            
-        network_element = network_elements.create_path('network-element[uuid="{:s}"]'.format(device.device_id.device_uuid.uuid))
-        network_element.create_path('uuid', device.device_id.device_uuid.uuid)
-        network_element.create_path('name', device.name)
-        components = network_element.create_path('components')
         physical_index = 1
         
         for component in device.components:
@@ -119,9 +113,9 @@ class YangHandler:
             component_new.create_path('mfg-name', attributes["mfg-name"])
             if attributes["id"]:
                 component_new.create_path('parent-rel-pos', attributes["id"])
-
+            
             component_new.create_path('uri', component.name)
-
+   
 
             component_new.create_path('uuid', component.component_uuid.uuid)
 
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/__init__.py
index 84a0dceea..4a0cedcc4 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/__init__.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/__init__.py
@@ -18,5 +18,4 @@ from nbi.service.rest_server.RestServer import RestServer
 URL_PREFIX = "/restconf/data/device=<path:device_uuid>/ietf-hardware:hardware"
 
 def register_ietf_hardware(rest_server: RestServer):
-    rest_server.add_resource(Hardware, URL_PREFIX)
-    
\ No newline at end of file
+    rest_server.add_resource(Hardware, URL_PREFIX)
\ No newline at end of file
-- 
GitLab


From 810a5a8eefaa3a2991382efd590ba5a5ff9cc61d Mon Sep 17 00:00:00 2001
From: armingol <pablo.armingolrobles@telefonica.com>
Date: Wed, 25 Sep 2024 17:04:41 +0200
Subject: [PATCH 09/14] fix nbi/tfs-api call

---
 src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py | 4 ++++
 src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py  | 3 ++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py b/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py
index f360e3181..0b3929564 100644
--- a/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py
+++ b/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py
@@ -323,3 +323,7 @@ class PolicyRules(_Resource):
 class PolicyRule(_Resource):
     def get(self, policy_rule_uuid : str):
         return format_grpc_to_json(self.context_client.GetPolicyRule(grpc_policy_rule_id(policy_rule_uuid)))
+
+class Networks(_Resource):
+    def get(self, context_uuid : str):
+        return format_grpc_to_json(self.context_client.ListTopologies(grpc_context_id(context_uuid)))
diff --git a/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
index 47e6095f0..a95cd88f9 100644
--- a/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
+++ b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
@@ -22,7 +22,8 @@ from .Resources import (
     PolicyRule, PolicyRuleIds, PolicyRules,
     Service, ServiceIds, Services,
     Slice, SliceIds, Slices,
-    Topologies, Topology, TopologyIds
+    Topologies, Topology, TopologyIds,
+    Networks
 )
 
 URL_PREFIX = '/tfs-api'
-- 
GitLab


From ed44430154c50310a8221942cc39b28a9574a56a Mon Sep 17 00:00:00 2001
From: armingol <pablo.armingolrobles@telefonica.com>
Date: Mon, 30 Sep 2024 15:42:24 +0200
Subject: [PATCH 10/14] code cleanup

---
 .../nbi_plugins/ietf_hardware/YangHandler.py  |  22 +-
 .../nbi_plugins/ietf_hardware/__init__.py     |   1 +
 ...network-hardware-inventory@2023-03-09.yang | 604 ++++++++++++++++++
 3 files changed, 621 insertions(+), 6 deletions(-)
 create mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_hardware/yang/ietf-network-hardware-inventory@2023-03-09.yang

diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py
index 0b857ab83..724dcc37f 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py
@@ -12,19 +12,21 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import libyang, os
 from common.proto.context_pb2 import Device
 from typing import Dict, Optional
+import datetime
 import json
 import logging
+import libyang
+import os
 import re
-import datetime
 
 LOGGER = logging.getLogger(__name__)
 YANG_DIR = os.path.join(os.path.dirname(__file__), 'yang')
 YANG_MODULES = [
     'iana-hardware',
-    'ietf-hardware'
+    'ietf-hardware',
+    'ietf-network-hardware-inventory'
 ]
 
 class YangHandler:
@@ -35,7 +37,7 @@ class YangHandler:
             self._yang_context.load_module(yang_module_name).feature_enable_all()
 
     def parse_to_dict(self, message : Dict) -> Dict:
-        yang_module = self._yang_context.get_module('ietf-hardware')
+        yang_module = self._yang_context.get_module('ietf-network-hardware-inventory')
         dnode : Optional[libyang.DNode] = yang_module.parse_data_dict(
             message, validate_present=True, validate=True, strict=True
         )
@@ -77,6 +79,7 @@ class YangHandler:
                 component_type = "module"
             if component_type == "FRU" :
                 component_type = "slack"
+
             component_type = component_type.replace("_", "-").lower()
             component_type = 'iana-hardware:' + component_type
             component_new.create_path('class', component_type)
@@ -91,7 +94,6 @@ class YangHandler:
                       break
             if attributes["mfg-date"] != "":
                 mfg_date = self.convert_to_iso_date(attributes["mfg-date"])
-                LOGGER.info('component[name="{:s}"]'.format(attributes["mfg-date"]))
                 component_new.create_path('mfg-date', mfg_date)
 
             component_new.create_path('hardware-rev', attributes["hardware-rev"])
@@ -107,7 +109,15 @@ class YangHandler:
                     component_new.create_path('is-fru', False)
 
             if attributes["id"]:
-                component_new.create_path('parent-rel-pos', attributes["id"])
+                try:
+                    if  "CHASSIS" in component.type :  
+                        component_new.create_path('parent-rel-pos', 0)
+                    else:                        
+                        parent_rel_pos = int(attributes["id"].replace("\"", ""))
+                        component_new.create_path('parent-rel-pos', parent_rel_pos)
+                except ValueError:
+                    LOGGER.info('ERROR:{:s} '.format(component.name ))
+                    continue
             
             component_new.create_path('uri', component.name)
             component_new.create_path('uuid', component.component_uuid.uuid)
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/__init__.py
index 7a9eec506..ba774650e 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/__init__.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/__init__.py
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 from nbi.service.rest_server.nbi_plugins.ietf_hardware.Hardware import Hardware
+from nbi.service.rest_server.nbi_plugins.ietf_hardware.HardwareMultipleDevices import HardwareMultipleDevices
 from nbi.service.rest_server.RestServer import RestServer
 
 URL_PREFIX_DEVICE   = "/restconf/data/device=<path:device_uuid>/ietf-network-hardware-inventory:network-hardware-inventory"
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/yang/ietf-network-hardware-inventory@2023-03-09.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/yang/ietf-network-hardware-inventory@2023-03-09.yang
new file mode 100644
index 000000000..e074e3005
--- /dev/null
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/yang/ietf-network-hardware-inventory@2023-03-09.yang
@@ -0,0 +1,604 @@
+module ietf-network-hardware-inventory {
+  yang-version 1.1;
+  namespace
+    "urn:ietf:params:xml:ns:yang:ietf-network-hardware-inventory";
+  prefix nhi;
+
+  import ietf-yang-types {
+    prefix yang;
+    reference
+      "RFC6991: Common YANG Data Types.";
+  }
+
+  import iana-hardware {
+    prefix ianahw;
+    reference
+      "https://www.iana.org/assignments/yang-parameters";
+  }
+
+  import ietf-inet-types {
+    prefix inet;
+    reference
+      "RFC6991: Common YANG Data Types.";
+  }
+
+  organization
+    "IETF CCAMP Working Group";
+  contact
+    "WG Web:   <https://datatracker.ietf.org/wg/ccamp/>
+     WG List:  <mailto:ccamp@ietf.org>
+
+     Editor:   Chaode Yu
+               <yuchaode@huawei.com>
+
+     Editor:   Italo Busi
+               <italo.busi@huawei.com>
+
+     Editor:   Aihua Guo
+               <aihuaguo.ietf@gmail.com>
+
+     Editor:   Sergio Belotti
+               <sergio.belotti@nokia.com>
+
+     Editor:   Jean-Francois Bouquier
+               <jeff.bouquier@vodafone.com>
+
+     Editor:   Fabio Peruzzini
+               <fabio.peruzzini@telecomitalia.it>";
+
+  description
+    "This module defines a model for retrieving network hardware
+    inventory.
+
+    The model fully conforms to the Network Management
+    Datastore Architecture (NMDA).
+    Copyright (c) 2022 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 Revised BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (https://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC XXXX; see
+    the RFC itself for full legal notices.
+
+    The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
+    NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
+    'MAY', and 'OPTIONAL' in this document are to be interpreted as
+    described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
+    they appear in all capitals, as shown here.";
+
+  // RFC Ed.: replace XXXX with actual RFC number and remove this
+  // note.
+  // RFC Ed.: update the date below with the date of RFC publication
+  // and remove this note.
+
+  revision 2023-03-09 {
+    description
+      "Initial version";
+    reference
+      "RFC XXXX: A YANG Data Model for Network Hardware Inventory.";
+      //RFC Editor: replace XXXX with actual RFC number, update date
+      //information and remove this note
+  }
+
+  container network-hardware-inventory {
+    config false;
+    description
+      "The top-level container for the network inventory
+      information.";
+    uses equipment-rooms-grouping;
+    uses network-elements-grouping;
+  }
+
+  grouping common-entity-attributes {
+    description
+      "A set of attributes which are common to all the entities
+      (e.g., component, equipment room) defined in this module.";
+    leaf uuid {
+      type yang:uuid;
+      description
+        "Uniquely identifies an entity (e.g., component).";
+    }
+    leaf name {
+      type string;
+      description
+        "A name for an entity (e.g., component), as specified by
+        a network manager, that provides a non-volatile 'handle'
+        for the entity and that can be modified anytime during the
+        entity lifetime.
+
+        If no configured value exists, the server MAY set the value
+        of this node to a locally unique value in the operational
+        state.";
+    }
+    leaf description {
+      type string;
+      description "a textual description of inventory object";
+    }
+    leaf alias {
+      type string;
+      description
+      "a alias name of inventory objects. This alias name can be
+      specified by network manager.";
+    }
+  }
+
+  grouping network-elements-grouping {
+    description
+      "The attributes of the network elements.";
+    container network-elements {
+      description
+        "The container for the list of network elements.";
+      list network-element {
+        key uuid;
+        description
+          "The list of network elements within the network.";
+        uses common-entity-attributes;
+        container ne-location {
+          description
+            "The location information of this network element.";
+          leaf-list equipment-room-name {
+            type leafref {
+              path "/nhi:network-hardware-inventory/" +
+                   "nhi:equipment-rooms/nhi:equipment-room/nhi:name";
+            }
+            description
+              "Names of equipment rooms where the NE is located.
+              Please note that a NE could be located in several
+              equipment rooms.";
+          }
+        }
+        uses ne-specific-info-grouping;
+        uses components-grouping;
+      }
+    }
+  }
+
+  grouping ne-specific-info-grouping {
+    description
+      "Attributes applicable to network elements.";
+    leaf hardware-rev {
+      type string;
+      description
+        "The vendor-specific hardware revision string for the NE.";
+    }
+    leaf software-rev {
+      type string;
+      description
+        "The vendor-specific software revision string for the NE.";
+    }
+    leaf mfg-name {
+      type string;
+      description "The name of the manufacturer of this NE";
+    }
+    leaf mfg-date {
+      type yang:date-and-time;
+      description "The date of manufacturing of the NE.";
+    }
+    leaf part-number {
+      type string;
+      description
+        "The vendor-specific model name identifier string associated
+         with this NE.  The preferred value is the customer-visible
+         part number, which may be printed on the NE itself.";
+    }
+    leaf serial-number {
+      type string;
+      description
+        "The vendor-specific serial number string for the NE";
+    }
+    leaf product-name {
+      type string;
+      description
+        "indicates the vendor-spefic device type infomation.";
+    }
+  }
+
+  grouping equipment-rooms-grouping {
+    description
+      "The attributes of the equipment rooms.";
+    container equipment-rooms {
+      description
+        "The container for the list of equipment rooms.";
+      list equipment-room {
+        key uuid;
+        description
+          "The list of equipment rooms within the network.";
+        uses common-entity-attributes;
+        leaf location {
+          type string;
+          description
+            "compared with the location information of the other
+            inventory objects, a GIS address is preferred for
+            equipment room";
+        }
+        container racks {
+          description
+            "Top level container for the list of racks.";
+          list rack {
+            key uuid;
+            description
+              "The list of racks within an equipment room.";
+            uses common-entity-attributes;
+            uses rack-specific-info-grouping;
+            list contained-chassis {
+              key "ne-ref component-ref";
+              description
+                "The list of chassis within a rack.";
+              leaf ne-ref {
+                type leafref {
+                  path "/nhi:network-hardware-inventory"
+                  + "/nhi:network-elements/nhi:network-element"
+                  + "/nhi:uuid";
+                }
+                description
+                  "The reference to the network element containing
+                  the chassis component.";
+              }
+              leaf component-ref {
+                type leafref {
+                  path "/nhi:network-hardware-inventory"
+                  + "/nhi:network-elements/nhi:network-element"
+                  + "[nhi:uuid=current()/../ne-ref]/nhi:components"
+                  + "/nhi:component/nhi:uuid";
+                }
+                description
+                  "The reference to the chassis component within
+                  the network element and contained by the rack.";
+              }
+              leaf relative-position {
+                type uint8;
+                description "A relative position of chassis within
+                the rack";
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+
+  grouping rack-specific-info-grouping {
+    description
+      "Attributes applicable to racks only.";
+    container rack-location {
+      description
+        "The location information of the rack, which comprises the
+        name of the equipment room, row number, and column number.";
+      leaf equipment-room-name {
+        type leafref {
+          path "/nhi:network-hardware-inventory/nhi:equipment-rooms"
+          + "/nhi:equipment-room/nhi:name";
+        }
+        description
+        "Name of equipment room where this rack is located.";
+      }
+      leaf row-number {
+        type uint32;
+        description
+          "Identifies the row within the equipment room where
+          the rack is located.";
+      }
+      leaf column-number {
+        type uint32;
+        description
+          "Identifies the physical location of the rack within
+          the column.";
+      }
+    }
+    leaf height {
+      type uint16;
+      units millimeter;
+      description
+        "Rack height.";
+    }
+    leaf width {
+      type uint16;
+      units millimeter;
+      description
+        "Rack width.";
+    }
+    leaf depth {
+      type uint16;
+      units millimeter;
+      description
+        "Rack depth.";
+    }
+    leaf max-voltage {
+      type uint16;
+      units volt;
+      description
+        "The maximum voltage could be supported by the rack.";
+    }
+  }
+
+  grouping components-grouping {
+    description
+      "The attributes of the hardware components.";
+    container components {
+      description
+        "The container for the list of components.";
+      list component {
+        key uuid;
+        description
+          "The list of components within a network element.";
+        uses common-entity-attributes;
+        leaf location {
+          type string;
+          description
+            "A relative location information of this component.
+            In optical transport network, the location string is
+            using the following pattern:
+              '/ne=<nw-ne-name>[/r=<r_index>][/sh=<sh_index>
+              [/s_sh=<s_sh_index> ...]][[/sl=<sl_index>
+              [/s_sl=<s_sl_index> ...]][/p=<p_index> …]]'
+            ";
+        }
+        leaf class {
+          type identityref {
+            base ianahw:hardware-class;
+          }
+          description
+            "An indication of the general hardware type of the
+             component.";
+          reference
+            "RFC 8348: A YANG Data Model for Hardware Management.";
+        }
+        leaf-list contained-child {
+          type leafref {
+            path "../nhi:uuid";
+          }
+          description
+            "The list of the identifiers of the child components
+            physically contained within this component.";
+        }
+        leaf parent-rel-pos {
+          type int32 {
+            range "0 .. 2147483647";
+          }
+          description
+            "The relative position with respect to the parent
+            component among all the sibling components.";
+          reference
+            "RFC 6933: Entity MIB (Version 4) -
+                       entPhysicalParentRelPos";
+        }
+
+        container parent-component-references {
+          description
+              "The top level container for the list of the
+              identifiers of the parents of this component in a
+              hierarchy.";
+          list component-reference {
+            key index;
+            description
+              "The list of the identifiers of the parents of this
+              component in a hierarchy.
+
+              The index parameter defines the hierarchy: the topmost
+              parent has an index of 0.";
+            leaf index {
+              type uint8;
+              description
+                "The index of the parent with respect to the
+                hierarchy.";
+            }
+            leaf class {
+              type leafref {
+                path "../../../nhi:class";
+              }
+              description
+                "Class of the hierarchial parent component.";
+            }
+            leaf uuid {
+              type leafref {
+                path "../../../nhi:uuid";
+              }
+              description
+                "The identifier of the parent's component in the
+                hierarchy.";
+            }
+          }
+        }
+
+        leaf hardware-rev {
+          type string;
+          description
+            "The vendor-specific hardware revision string for the
+             component.  The preferred value is the hardware revision
+             identifier actually printed on the component itself (if
+             present).";
+          reference
+            "RFC 6933: Entity MIB (Version 4) -
+                       entPhysicalHardwareRev";
+        }
+        leaf firmware-rev {
+          type string;
+          description
+            "The vendor-specific firmware revision string for the
+             component.";
+          reference
+            "RFC 6933: Entity MIB (Version 4) -
+                       entPhysicalFirmwareRev";
+        }
+        leaf software-rev {
+          type string;
+          description
+            "The vendor-specific software revision string for the
+             component.";
+          reference
+            "RFC 6933: Entity MIB (Version 4) -
+                       entPhysicalSoftwareRev";
+        }
+        leaf serial-num {
+          type string;
+          description
+            "The vendor-specific serial number string for the
+             component.  The preferred value is the serial number
+             string actually printed on the component itself (if
+             present).";
+          reference
+            "RFC 6933: Entity MIB (Version 4) -
+            entPhysicalSerialNum";
+        }
+        leaf mfg-name {
+          type string;
+          description
+            "The name of the manufacturer of this physical component.
+             The preferred value is the manufacturer name string
+             actually printed on the component itself (if present).
+
+             Note that comparisons between instances of the
+             'model-name', 'firmware-rev', 'software-rev', and
+             'serial-num' nodes are only meaningful amongst
+             components with the same value of 'mfg-name'.
+
+             If the manufacturer name string associated with the
+             physical component is unknown to the server, then this
+             node is not instantiated.";
+          reference
+            "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgName";
+        }
+        leaf part-number {
+          type string;
+          description
+            "The vendor-specific model name identifier string
+             associated with this physical component.  The preferred
+             value is the customer-visible part number, which may be
+             printed on the component itself.
+
+             If the model name string associated with the physical
+             component is unknown to the server, then this node is
+             not instantiated.";
+          reference
+            "RFC 6933: Entity MIB (Version 4) -
+            entPhysicalModelName";
+        }
+        leaf asset-id {
+          type string;
+          description
+            "This node is a user-assigned asset tracking identifier
+             for the component.
+
+             A server implementation MAY map this leaf to the
+             entPhysicalAssetID MIB object.  Such an implementation
+             needs to use some mechanism to handle the differences in
+             size and characters allowed between this leaf and
+             entPhysicalAssetID.  The definition of such a mechanism
+             is outside the scope of this document.";
+          reference
+            "RFC 6933: Entity MIB (Version 4) - entPhysicalAssetID";
+        }
+        leaf is-fru {
+          type boolean;
+          description
+            "This node indicates whether or not this component is
+             considered a 'field-replaceable unit' by the vendor.  If
+             this node contains the value 'true', then this component
+             identifies a field-replaceable unit.  For all components
+             that are permanently contained within a
+             field-replaceable unit, the value 'false' should be
+             returned for this node.";
+          reference
+            "RFC 6933: Entity MIB (Version 4) - entPhysicalIsFRU";
+        }
+        leaf mfg-date {
+          type yang:date-and-time;
+          description
+            "The date of manufacturing of the managed component.";
+          reference
+            "RFC 6933: Entity MIB (Version 4) - entPhysicalMfgDate";
+        }
+        leaf-list uri {
+          type inet:uri;
+          description
+            "This node contains identification information about the
+             component.";
+          reference
+            "RFC 6933: Entity MIB (Version 4) - entPhysicalUris";
+        }
+        uses component-specific-info-grouping;
+      }
+    }
+  }
+
+  grouping component-specific-info-grouping {
+    description
+      "In case if there are some missing attributes of component not
+      defined by RFC8348. These attributes could be
+      component-specific.
+      Here we provide a extension structure for all the components
+      we recognized. We will enrich these component specifc
+      containers in the future.";
+    choice component-class {
+      description
+        "This extension differs between different component
+        classes.";
+      case chassis {
+        when "./class = 'ianahw:chassis'";
+        container chassis-specific-info {
+          description
+            "This container contains some attributes belong to
+            chassis only.";
+          uses chassis-specific-info-grouping;
+        }
+      }
+      case container {
+        when "./class = 'ianahw:container'";
+        container slot-specific-info {
+          description
+            "This container contains some attributes belong to
+            slot or sub-slot only.";
+          uses slot-specific-info-grouping;
+        }
+      }
+      case module {
+        when "./nhi:class = 'ianahw:module'";
+        container board-specific-info {
+          description
+            "This container contains some attributes belong to
+            board only.";
+          uses board-specific-info-grouping;
+        }
+      }
+      case port {
+        when "./nhi:class = 'ianahw:port'";
+        container port-specific-info {
+          description
+            "This container contains some attributes belong to
+            port only.";
+          uses port-specific-info-grouping;
+        }
+      }
+    //TO BE ADDED: transceiver
+    }
+  }
+
+  grouping chassis-specific-info-grouping {
+  //To be enriched in the future.
+    description
+      "Specific attributes applicable to chassis only.";
+  }
+
+  grouping slot-specific-info-grouping {
+  //To be enriched in the future.
+    description
+      "Specific attributes applicable to slots only.";
+  }
+
+  grouping board-specific-info-grouping {
+  //To be enriched in the future.
+    description
+      "Specific attributes applicable to boards only.";
+  }
+
+  grouping port-specific-info-grouping {
+  //To be enriched in the future.
+    description
+      "Specific attributes applicable to ports only.";
+  }
+}
-- 
GitLab


From 4061762f00a4fb180812c08ab4b8149d192bad2f Mon Sep 17 00:00:00 2001
From: armingol <pablo.armingolrobles@telefonica.com>
Date: Mon, 30 Sep 2024 15:43:09 +0200
Subject: [PATCH 11/14] code cleanup

---
 .../rest_server/nbi_plugins/ietf_hardware/YangHandler.py        | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py
index 724dcc37f..7662261e9 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_hardware/YangHandler.py
@@ -118,7 +118,7 @@ class YangHandler:
                 except ValueError:
                     LOGGER.info('ERROR:{:s} '.format(component.name ))
                     continue
-            
+
             component_new.create_path('uri', component.name)
             component_new.create_path('uuid', component.component_uuid.uuid)
             for child in device.components:
-- 
GitLab


From abe59ebf753ee92d0ae0b8f2e7dcd3db23afd511 Mon Sep 17 00:00:00 2001
From: armingol <pablo.armingolrobles@telefonica.com>
Date: Mon, 30 Sep 2024 15:45:54 +0200
Subject: [PATCH 12/14] code cleanup

---
 src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py | 4 ----
 src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py  | 5 +----
 src/webui/service/templates/main/debug.html                  | 1 -
 3 files changed, 1 insertion(+), 9 deletions(-)

diff --git a/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py b/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py
index 0b3929564..f360e3181 100644
--- a/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py
+++ b/src/nbi/service/rest_server/nbi_plugins/tfs_api/Resources.py
@@ -323,7 +323,3 @@ class PolicyRules(_Resource):
 class PolicyRule(_Resource):
     def get(self, policy_rule_uuid : str):
         return format_grpc_to_json(self.context_client.GetPolicyRule(grpc_policy_rule_id(policy_rule_uuid)))
-
-class Networks(_Resource):
-    def get(self, context_uuid : str):
-        return format_grpc_to_json(self.context_client.ListTopologies(grpc_context_id(context_uuid)))
diff --git a/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
index a95cd88f9..41e8ff1ea 100644
--- a/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
+++ b/src/nbi/service/rest_server/nbi_plugins/tfs_api/__init__.py
@@ -22,8 +22,7 @@ from .Resources import (
     PolicyRule, PolicyRuleIds, PolicyRules,
     Service, ServiceIds, Services,
     Slice, SliceIds, Slices,
-    Topologies, Topology, TopologyIds,
-    Networks
+    Topologies, Topology, TopologyIds
 )
 
 URL_PREFIX = '/tfs-api'
@@ -63,8 +62,6 @@ RESOURCES = [
     ('api.policyrule_ids', PolicyRuleIds, '/policyrule_ids'),
     ('api.policyrules',    PolicyRules,   '/policyrules'),
     ('api.policyrule',     PolicyRule,    '/policyrule/<path:policyrule_uuid>'),
-
-    ('api.networksl3'    , Networks, '/networks')
 ]
 
 def register_tfs_api(rest_server : RestServer):
diff --git a/src/webui/service/templates/main/debug.html b/src/webui/service/templates/main/debug.html
index e6965cb55..895685669 100644
--- a/src/webui/service/templates/main/debug.html
+++ b/src/webui/service/templates/main/debug.html
@@ -24,7 +24,6 @@
         <li><a class="nav-link" href="/tfs-api/dummy_contexts" id="dummy_contexts_link" target="dummy_contexts">Dummy Contexts</a></li>
         <li><a class="nav-link" href="/tfs-api/devices" id="devices_link" target="devices">Devices</a></li>
         <li><a class="nav-link" href="/tfs-api/links" id="links_link" target="links">Links</a></li>
-        <li><a class="nav-link" href="/tfs-api/networks" id="networks_link" target="networks">Networks</a></li>
     </ul>
 
 {% endblock %}
-- 
GitLab


From 2fe7c851f7384b63e90a264c4edb5f91ab8bf27b Mon Sep 17 00:00:00 2001
From: gifrerenom <lluis.gifre@cttc.es>
Date: Wed, 2 Oct 2024 08:45:13 +0000
Subject: [PATCH 13/14] Updated NBI IETF Network to use libyang or pyangbind
 renderers as configured in the NBI manifest.

---
 manifests/nbiservice.yaml                     |   2 +
 .../nbi_plugins/ietf_network/NameMapping.py   |   2 +-
 .../nbi_plugins/ietf_network/Networks.py      |  78 +-
 .../YangHandler.py                            |   0
 .../ietf-l3-unicast-topology@2018-02-26.yang  |   0
 .../ietf_network_new/NameMapping.py           |  46 --
 .../nbi_plugins/ietf_network_new/Networks.py  |  63 --
 .../nbi_plugins/ietf_network_new/__init__.py  |  39 -
 .../yang/iana-routing-types@2017-12-04.yang   | 473 -----------
 .../yang/ietf-inet-types@2013-07-15.yang      | 459 -----------
 .../ietf-network-topology@2018-02-26.yang     | 294 -------
 .../yang/ietf-network@2018-02-26.yang         | 193 -----
 .../yang/ietf-routing-types@2017-12-04.yang   | 774 ------------------
 .../yang/ietf-yang-types@2013-07-15.yang      | 475 -----------
 14 files changed, 62 insertions(+), 2836 deletions(-)
 rename src/nbi/service/rest_server/nbi_plugins/{ietf_network_new => ietf_network}/YangHandler.py (100%)
 rename src/nbi/service/rest_server/nbi_plugins/{ietf_network_new => ietf_network}/yang/ietf-l3-unicast-topology@2018-02-26.yang (100%)
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NameMapping.py
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/__init__.py
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/iana-routing-types@2017-12-04.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-inet-types@2013-07-15.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network-topology@2018-02-26.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network@2018-02-26.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-routing-types@2017-12-04.yang
 delete mode 100644 src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-yang-types@2013-07-15.yang

diff --git a/manifests/nbiservice.yaml b/manifests/nbiservice.yaml
index d3892118a..70f553e64 100644
--- a/manifests/nbiservice.yaml
+++ b/manifests/nbiservice.yaml
@@ -38,6 +38,8 @@ spec:
           env:
             - name: LOG_LEVEL
               value: "INFO"
+            - name: IETF_NETWORK_RENDERER
+              value: "LIBYANG"
           readinessProbe:
             exec:
               command: ["/bin/grpc_health_probe", "-addr=:9090"]
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network/NameMapping.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network/NameMapping.py
index 0c1055911..94e4723a5 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network/NameMapping.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network/NameMapping.py
@@ -19,7 +19,7 @@ class NameMappings:
     def __init__(self) -> None:
         self._device_uuid_to_name   : Dict[str,             str] = dict()
         self._endpoint_uuid_to_name : Dict[Tuple[str, str], str] = dict()
-    
+
     def store_device_name(self, device : Device) -> None:
         device_uuid = device.device_id.device_uuid.uuid
         device_name = device.name
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network/Networks.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network/Networks.py
index 5d663b8b3..b53dc0fc2 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network/Networks.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_network/Networks.py
@@ -12,19 +12,23 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import json, logging
+import enum, json, logging
 import pyangbind.lib.pybindJSON as pybindJSON
 from flask import request
 from flask.json import jsonify
 from flask_restful import Resource
 from common.Constants import DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME
+from common.Settings import get_setting
+from common.proto.context_pb2 import ContextId, Empty
 from common.tools.context_queries.Topology import get_topology_details
+from common.tools.object_factory.Context import json_context_id
 from context.client.ContextClient import ContextClient
 from nbi.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH
 from nbi.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR
 from .bindings import ietf_network
 from .ComposeNetwork import compose_network
 from .ManualFixes import manual_fixes
+from .YangHandler import YangHandler
 
 LOGGER = logging.getLogger(__name__)
 
@@ -33,6 +37,14 @@ TE_TOPOLOGY_NAMES = [
     'providerId-10-clientId-0-topologyId-2'
 ]
 
+class Renderer(enum.Enum):
+    LIBYANG   = 'LIBYANG'
+    PYANGBIND = 'PYANGBIND'
+
+DEFAULT_RENDERER = Renderer.LIBYANG
+USE_RENDERER = get_setting('IETF_NETWORK_RENDERER', DEFAULT_RENDERER.value)
+
+
 class Networks(Resource):
     @HTTP_AUTH.login_required
     def get(self):
@@ -40,31 +52,59 @@ class Networks(Resource):
         topology_id = ''
         try:
             context_client = ContextClient()
-            #target = get_slice_by_uuid(context_client, vpn_id, rw_copy=True)
-            #if target is None:
-            #    raise Exception('VPN({:s}) not found in database'.format(str(vpn_id)))
 
-            ietf_nets = ietf_network()
+            if USE_RENDERER == Renderer.PYANGBIND.value:
+                #target = get_slice_by_uuid(context_client, vpn_id, rw_copy=True)
+                #if target is None:
+                #    raise Exception('VPN({:s}) not found in database'.format(str(vpn_id)))
+
+                ietf_nets = ietf_network()
+
+                topology_details = get_topology_details(
+                    context_client, DEFAULT_TOPOLOGY_NAME, context_uuid=DEFAULT_CONTEXT_NAME,
+                    #rw_copy=True
+                )
+                if topology_details is None:
+                    MSG = 'Topology({:s}/{:s}) not found'
+                    raise Exception(MSG.format(DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME))
 
-            topology_details = get_topology_details(
-                context_client, DEFAULT_TOPOLOGY_NAME, context_uuid=DEFAULT_CONTEXT_NAME, #rw_copy=True
-            )
-            if topology_details is None:
-                MSG = 'Topology({:s}/{:s}) not found'
-                raise Exception(MSG.format(DEFAULT_CONTEXT_NAME, DEFAULT_TOPOLOGY_NAME))
+                for te_topology_name in TE_TOPOLOGY_NAMES:
+                    ietf_net = ietf_nets.networks.network.add(te_topology_name)
+                    compose_network(ietf_net, te_topology_name, topology_details)
 
-            for te_topology_name in TE_TOPOLOGY_NAMES:
-                ietf_net = ietf_nets.networks.network.add(te_topology_name)
-                compose_network(ietf_net, te_topology_name, topology_details)
+                # TODO: improve these workarounds to enhance performance
+                json_response = json.loads(pybindJSON.dumps(ietf_nets, mode='ietf'))
+                
+                # Workaround; pyangbind does not allow to set otn_topology / eth-tran-topology
+                manual_fixes(json_response)
+            elif USE_RENDERER == Renderer.LIBYANG.value:
+                yang_handler = YangHandler()
+                json_response = []
 
-            # TODO: improve these workarounds to enhance performance
-            json_response = json.loads(pybindJSON.dumps(ietf_nets, mode='ietf'))
-            
-            # Workaround; pyangbind does not allow to set otn_topology / eth-tran-topology
-            manual_fixes(json_response)
+                contexts = context_client.ListContexts(Empty()).contexts
+                context_names = [context.name for context in contexts]
+                LOGGER.info(f'Contexts detected: {context_names}')
+
+                for context_name in context_names:
+                    topologies = context_client.ListTopologies(ContextId(**json_context_id(context_name))).topologies
+                    topology_names = [topology.name for topology in topologies]
+                    LOGGER.info(f'Topologies detected for context {context_name}: {topology_names}')
+
+                    for topology_name in topology_names:
+                        topology_details = get_topology_details(context_client, topology_name, context_name)
+                        if topology_details is None:
+                            raise Exception(f'Topology({context_name}/{topology_name}) not found')
+
+                        network_reply = yang_handler.compose_network(topology_name, topology_details)
+                        json_response.append(network_reply)
+
+                yang_handler.destroy()
+            else:
+                raise Exception('Unsupported Renderer: {:s}'.format(str(USE_RENDERER)))
 
             response = jsonify(json_response)
             response.status_code = HTTP_OK
+
         except Exception as e: # pylint: disable=broad-except
             LOGGER.exception('Something went wrong Retrieving Topology({:s})'.format(str(topology_id)))
             response = jsonify({'error': str(e)})
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network/YangHandler.py
similarity index 100%
rename from src/nbi/service/rest_server/nbi_plugins/ietf_network_new/YangHandler.py
rename to src/nbi/service/rest_server/nbi_plugins/ietf_network/YangHandler.py
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-l3-unicast-topology@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network/yang/ietf-l3-unicast-topology@2018-02-26.yang
similarity index 100%
rename from src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-l3-unicast-topology@2018-02-26.yang
rename to src/nbi/service/rest_server/nbi_plugins/ietf_network/yang/ietf-l3-unicast-topology@2018-02-26.yang
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NameMapping.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NameMapping.py
deleted file mode 100644
index 94e4723a5..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/NameMapping.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
-#
-# 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.
-
-from typing import Dict, Tuple
-from common.proto.context_pb2 import Device, DeviceId, EndPoint, EndPointId
-
-class NameMappings:
-    def __init__(self) -> None:
-        self._device_uuid_to_name   : Dict[str,             str] = dict()
-        self._endpoint_uuid_to_name : Dict[Tuple[str, str], str] = dict()
-
-    def store_device_name(self, device : Device) -> None:
-        device_uuid = device.device_id.device_uuid.uuid
-        device_name = device.name
-        self._device_uuid_to_name[device_uuid] = device_name
-        self._device_uuid_to_name[device_name] = device_name
-
-    def store_endpoint_name(self, device : Device, endpoint : EndPoint) -> None:
-        device_uuid = device.device_id.device_uuid.uuid
-        device_name = device.name
-        endpoint_uuid = endpoint.endpoint_id.endpoint_uuid.uuid
-        endpoint_name = endpoint.name
-        self._endpoint_uuid_to_name[(device_uuid, endpoint_uuid)] = endpoint_name
-        self._endpoint_uuid_to_name[(device_name, endpoint_uuid)] = endpoint_name
-        self._endpoint_uuid_to_name[(device_uuid, endpoint_name)] = endpoint_name
-        self._endpoint_uuid_to_name[(device_name, endpoint_name)] = endpoint_name
-
-    def get_device_name(self, device_id : DeviceId) -> str:
-        device_uuid = device_id.device_uuid.uuid
-        return self._device_uuid_to_name.get(device_uuid, device_uuid)
-
-    def get_endpoint_name(self, endpoint_id : EndPointId) -> str:
-        device_uuid = endpoint_id.device_id.device_uuid.uuid
-        endpoint_uuid = endpoint_id.endpoint_uuid.uuid
-        return self._endpoint_uuid_to_name.get((device_uuid, endpoint_uuid), endpoint_uuid)
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
deleted file mode 100644
index fb97168ab..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/Networks.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
-#
-# 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.
-
-import logging
-from flask import request
-from flask.json import jsonify
-from flask_restful import Resource
-from common.proto.context_pb2 import ContextId, Empty
-from common.tools.context_queries.Topology import get_topology_details
-from common.tools.object_factory.Context import json_context_id
-from context.client.ContextClient import ContextClient
-from nbi.service.rest_server.nbi_plugins.tools.Authentication import HTTP_AUTH
-from nbi.service.rest_server.nbi_plugins.tools.HttpStatusCodes import HTTP_OK, HTTP_SERVERERROR
-from .YangHandler import YangHandler
-
-LOGGER = logging.getLogger(__name__)
-
-class Networks(Resource):
-    @HTTP_AUTH.login_required
-    def get(self):
-        LOGGER.info(f'Request: {request}')
-        try:
-            context_client = ContextClient()
-            yang_handler = YangHandler()
-            network_list_reply = []
-
-            contexts = context_client.ListContexts(Empty()).contexts
-            context_names = [context.name for context in contexts]
-            LOGGER.info(f'Contexts detected: {context_names}')
-
-            for context_name in context_names:
-                topologies = context_client.ListTopologies(ContextId(**json_context_id(context_name))).topologies
-                topology_names = [topology.name for topology in topologies]
-                LOGGER.info(f'Topologies detected for context {context_name}: {topology_names}')
-
-                for topology_name in topology_names:
-                    topology_details = get_topology_details(context_client, topology_name, context_name)
-                    if topology_details is None:
-                        raise Exception(f'Topology({context_name}/{topology_name}) not found')
-
-                    network_reply = yang_handler.compose_network(topology_name, topology_details)
-                    network_list_reply.append(network_reply)
-
-            yang_handler.destroy()
-            response = jsonify(network_list_reply)
-            response.status_code = HTTP_OK
-
-        except Exception as e:
-            LOGGER.exception(f'Error retrieving topologies: {e}')
-            response = jsonify({'error': str(e)})
-            response.status_code = HTTP_SERVERERROR
-        return response
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/__init__.py b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/__init__.py
deleted file mode 100644
index 4503c22d5..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/__init__.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
-#
-# 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.
-
-# RFC 8795 - YANG Data Model for Traffic Engineering (TE) Topologies
-# Ref: https://datatracker.ietf.org/doc/html/rfc8795
-
-# RFC 8776 - Common YANG Data Types for Traffic Engineering
-# Ref: https://datatracker.ietf.org/doc/html/rfc8776
-
-# RFC 8345 - A YANG Data Model for Network Topologies
-# Ref: https://datatracker.ietf.org/doc/html/rfc8345
-
-# RFC 6991 - Common YANG Data Types
-# Ref: https://datatracker.ietf.org/doc/html/rfc6991
-
-# RFC draft-ietf-ccamp-eth-client-te-topo-yang-05 - A YANG Data Model for Ethernet TE Topology
-# Ref: https://datatracker.ietf.org/doc/draft-ietf-ccamp-eth-client-te-topo-yang/
-
-# RFC draft-ietf-ccamp-client-signal-yang-10 - A YANG Data Model for Transport Network Client Signals
-# Ref: https://datatracker.ietf.org/doc/draft-ietf-ccamp-client-signal-yang/
-
-from nbi.service.rest_server.RestServer import RestServer
-from nbi.service.rest_server.nbi_plugins.ietf_network_new.Networks import Networks
-
-URL_PREFIX = '/restconf/data/ietf-network:networks'
-
-def register_ietf_network(rest_server : RestServer):
-    rest_server.add_resource(Networks, URL_PREFIX)
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/iana-routing-types@2017-12-04.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/iana-routing-types@2017-12-04.yang
deleted file mode 100644
index 250cba4b6..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/iana-routing-types@2017-12-04.yang
+++ /dev/null
@@ -1,473 +0,0 @@
-   module iana-routing-types {
-     namespace "urn:ietf:params:xml:ns:yang:iana-routing-types";
-     prefix iana-rt-types;
-
-     organization
-       "IANA";
-     contact
-       "Internet Assigned Numbers Authority
-
-        Postal: ICANN
-                12025 Waterfront Drive, Suite 300
-                Los Angeles, CA  90094-2536
-                United States of America
-        Tel:    +1 310 301 5800
-        <mailto:iana@iana.org>";
-
-     description
-       "This module contains a collection of YANG data types
-        considered defined by IANA and used for routing
-        protocols.
-
-        Copyright (c) 2017 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
-        (https://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of RFC 8294; see
-        the RFC itself for full legal notices.";
-
-      revision 2017-12-04 {
-        description "Initial revision.";
-        reference
-          "RFC 8294: Common YANG Data Types for the Routing Area.
-           Section 4.";
-     }
-
-     /*** Collection of IANA types related to routing ***/
-     /*** IANA Address Family enumeration ***/
-
-     typedef address-family {
-       type enumeration {
-         enum ipv4 {
-           value 1;
-           description
-             "IPv4 Address Family.";
-         }
-
-         enum ipv6 {
-           value 2;
-           description
-             "IPv6 Address Family.";
-         }
-
-         enum nsap {
-           value 3;
-           description
-             "OSI Network Service Access Point (NSAP) Address Family.";
-         }
-
-         enum hdlc {
-           value 4;
-           description
-             "High-Level Data Link Control (HDLC) Address Family.";
-         }
-
-         enum bbn1822 {
-           value 5;
-           description
-             "Bolt, Beranek, and Newman Report 1822 (BBN 1822)
-              Address Family.";
-         }
-
-         enum ieee802 {
-           value 6;
-           description
-             "IEEE 802 Committee Address Family
-              (aka Media Access Control (MAC) address).";
-         }
-
-         enum e163 {
-           value 7;
-           description
-             "ITU-T E.163 Address Family.";
-         }
-
-         enum e164 {
-           value 8;
-           description
-             "ITU-T E.164 (Switched Multimegabit Data Service (SMDS),
-              Frame Relay, ATM) Address Family.";
-         }
-
-         enum f69 {
-           value 9;
-           description
-             "ITU-T F.69 (Telex) Address Family.";
-         }
-
-         enum x121 {
-           value 10;
-           description
-             "ITU-T X.121 (X.25, Frame Relay) Address Family.";
-         }
-
-         enum ipx {
-           value 11;
-           description
-             "Novell Internetwork Packet Exchange (IPX)
-              Address Family.";
-         }
-
-         enum appletalk {
-           value 12;
-           description
-             "Apple AppleTalk Address Family.";
-         }
-
-         enum decnet-iv {
-           value 13;
-           description
-             "Digital Equipment DECnet Phase IV Address Family.";
-         }
-
-         enum vines {
-           value 14;
-           description
-             "Banyan Vines Address Family.";
-         }
-
-         enum e164-nsap {
-           value 15;
-           description
-             "ITU-T E.164 with NSAP sub-address Address Family.";
-         }
-
-         enum dns {
-           value 16;
-           description
-             "Domain Name System (DNS) Address Family.";
-         }
-
-         enum distinguished-name {
-           value 17;
-           description
-             "Distinguished Name Address Family.";
-         }
-
-         enum as-num {
-           value 18;
-           description
-             "Autonomous System (AS) Number Address Family.";
-         }
-
-         enum xtp-v4 {
-           value 19;
-           description
-             "Xpress Transport Protocol (XTP) over IPv4
-              Address Family.";
-         }
-
-         enum xtp-v6 {
-           value 20;
-           description
-             "XTP over IPv6 Address Family.";
-         }
-
-         enum xtp-native {
-           value 21;
-           description
-             "XTP native mode Address Family.";
-         }
-
-         enum fc-port {
-           value 22;
-           description
-             "Fibre Channel (FC) World-Wide Port Name Address Family.";
-         }
-
-         enum fc-node {
-           value 23;
-           description
-             "FC World-Wide Node Name Address Family.";
-         }
-
-         enum gwid {
-           value 24;
-           description
-             "ATM Gateway Identifier (GWID) Number Address Family.";
-         }
-
-         enum l2vpn {
-           value 25;
-           description
-             "Layer 2 VPN (L2VPN) Address Family.";
-         }
-
-         enum mpls-tp-section-eid {
-           value 26;
-           description
-             "MPLS Transport Profile (MPLS-TP) Section Endpoint
-              Identifier Address Family.";
-         }
-
-         enum mpls-tp-lsp-eid {
-           value 27;
-           description
-             "MPLS-TP Label Switched Path (LSP) Endpoint Identifier
-              Address Family.";
-         }
-
-         enum mpls-tp-pwe-eid {
-           value 28;
-           description
-             "MPLS-TP Pseudowire Endpoint Identifier Address Family.";
-         }
-
-         enum mt-v4 {
-           value 29;
-           description
-             "Multi-Topology IPv4 Address Family.";
-         }
-
-         enum mt-v6 {
-           value 30;
-           description
-             "Multi-Topology IPv6 Address Family.";
-         }
-
-         enum eigrp-common-sf {
-           value 16384;
-           description
-             "Enhanced Interior Gateway Routing Protocol (EIGRP)
-              Common Service Family Address Family.";
-         }
-
-         enum eigrp-v4-sf {
-           value 16385;
-           description
-             "EIGRP IPv4 Service Family Address Family.";
-         }
-
-         enum eigrp-v6-sf {
-           value 16386;
-           description
-             "EIGRP IPv6 Service Family Address Family.";
-         }
-
-         enum lcaf {
-           value 16387;
-           description
-             "Locator/ID Separation Protocol (LISP)
-              Canonical Address Format (LCAF) Address Family.";
-         }
-
-         enum bgp-ls {
-           value 16388;
-           description
-             "Border Gateway Protocol - Link State (BGP-LS)
-              Address Family.";
-         }
-
-         enum mac-48 {
-           value 16389;
-           description
-             "IEEE 48-bit MAC Address Family.";
-         }
-
-         enum mac-64 {
-           value 16390;
-           description
-             "IEEE 64-bit MAC Address Family.";
-         }
-
-         enum trill-oui {
-           value 16391;
-           description
-             "Transparent Interconnection of Lots of Links (TRILL)
-              IEEE Organizationally Unique Identifier (OUI)
-              Address Family.";
-         }
-
-         enum trill-mac-24 {
-           value 16392;
-           description
-             "TRILL final 3 octets of 48-bit MAC Address Family.";
-         }
-
-         enum trill-mac-40 {
-           value 16393;
-           description
-             "TRILL final 5 octets of 64-bit MAC Address Family.";
-         }
-
-         enum ipv6-64 {
-           value 16394;
-           description
-             "First 8 octets (64 bits) of IPv6 address
-              Address Family.";
-         }
-
-         enum trill-rbridge-port-id {
-           value 16395;
-           description
-             "TRILL Routing Bridge (RBridge) Port ID Address Family.";
-         }
-
-         enum trill-nickname {
-           value 16396;
-           description
-             "TRILL Nickname Address Family.";
-         }
-       }
-
-       description
-         "Enumeration containing all the IANA-defined
-          Address Families.";
-
-     }
-
-     /*** Subsequent Address Family Identifiers (SAFIs) ***/
-     /*** for multiprotocol BGP enumeration ***/
-
-     typedef bgp-safi {
-       type enumeration {
-         enum unicast-safi {
-           value 1;
-           description
-             "Unicast SAFI.";
-         }
-
-         enum multicast-safi {
-           value 2;
-           description
-             "Multicast SAFI.";
-         }
-
-         enum labeled-unicast-safi {
-           value 4;
-           description
-             "Labeled Unicast SAFI.";
-         }
-
-         enum multicast-vpn-safi {
-           value 5;
-           description
-             "Multicast VPN SAFI.";
-         }
-
-         enum pseudowire-safi {
-           value 6;
-           description
-             "Multi-segment Pseudowire VPN SAFI.";
-         }
-
-         enum tunnel-encap-safi {
-           value 7;
-           description
-             "Tunnel Encap SAFI.";
-         }
-
-         enum mcast-vpls-safi {
-           value 8;
-           description
-             "Multicast Virtual Private LAN Service (VPLS) SAFI.";
-         }
-
-         enum tunnel-safi {
-           value 64;
-           description
-             "Tunnel SAFI.";
-         }
-
-         enum vpls-safi {
-           value 65;
-           description
-             "VPLS SAFI.";
-         }
-
-         enum mdt-safi {
-           value 66;
-           description
-             "Multicast Distribution Tree (MDT) SAFI.";
-         }
-
-         enum v4-over-v6-safi {
-           value 67;
-           description
-             "IPv4 over IPv6 SAFI.";
-         }
-
-         enum v6-over-v4-safi {
-           value 68;
-           description
-             "IPv6 over IPv4 SAFI.";
-         }
-
-         enum l1-vpn-auto-discovery-safi {
-           value 69;
-           description
-             "Layer 1 VPN Auto-Discovery SAFI.";
-         }
-
-         enum evpn-safi {
-           value 70;
-           description
-             "Ethernet VPN (EVPN) SAFI.";
-         }
-
-         enum bgp-ls-safi {
-           value 71;
-           description
-             "BGP-LS SAFI.";
-         }
-
-         enum bgp-ls-vpn-safi {
-           value 72;
-           description
-             "BGP-LS VPN SAFI.";
-         }
-
-         enum sr-te-safi {
-           value 73;
-           description
-             "Segment Routing - Traffic Engineering (SR-TE) SAFI.";
-         }
-
-         enum labeled-vpn-safi {
-           value 128;
-           description
-             "MPLS Labeled VPN SAFI.";
-         }
-
-         enum multicast-mpls-vpn-safi {
-           value 129;
-           description
-             "Multicast for BGP/MPLS IP VPN SAFI.";
-         }
-
-         enum route-target-safi {
-           value 132;
-           description
-             "Route Target SAFI.";
-         }
-
-         enum ipv4-flow-spec-safi {
-           value 133;
-           description
-             "IPv4 Flow Specification SAFI.";
-         }
-
-         enum vpnv4-flow-spec-safi {
-           value 134;
-           description
-             "IPv4 VPN Flow Specification SAFI.";
-         }
-
-         enum vpn-auto-discovery-safi {
-           value 140;
-           description
-             "VPN Auto-Discovery SAFI.";
-         }
-       }
-       description
-         "Enumeration for BGP SAFI.";
-       reference
-         "RFC 4760: Multiprotocol Extensions for BGP-4.";
-     }
-   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-inet-types@2013-07-15.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-inet-types@2013-07-15.yang
deleted file mode 100644
index 790bafc31..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-inet-types@2013-07-15.yang
+++ /dev/null
@@ -1,459 +0,0 @@
-   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 {
-         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]\.?)'
-         + '|\.';
-         length "1..253";
-       }
-       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/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network-topology@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network-topology@2018-02-26.yang
deleted file mode 100644
index 0538ac01b..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network-topology@2018-02-26.yang
+++ /dev/null
@@ -1,294 +0,0 @@
-   module ietf-network-topology {
-     yang-version 1.1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology";
-     prefix nt;
-
-     import ietf-inet-types {
-       prefix inet;
-       reference
-         "RFC 6991: Common YANG Data Types";
-     }
-     import ietf-network {
-       prefix nw;
-       reference
-         "RFC 8345: A YANG Data Model for Network Topologies";
-     }
-
-     organization
-       "IETF I2RS (Interface to the Routing System) Working Group";
-
-     contact
-       "WG Web:    <https://datatracker.ietf.org/wg/i2rs/>
-        WG List:   <mailto:i2rs@ietf.org>
-
-        Editor:    Alexander Clemm
-                   <mailto:ludwig@clemm.org>
-
-        Editor:    Jan Medved
-                   <mailto:jmedved@cisco.com>
-
-        Editor:    Robert Varga
-                   <mailto:robert.varga@pantheon.tech>
-
-        Editor:    Nitin Bahadur
-                   <mailto:nitin_bahadur@yahoo.com>
-
-        Editor:    Hariharan Ananthakrishnan
-                   <mailto:hari@packetdesign.com>
-
-        Editor:    Xufeng Liu
-                   <mailto:xufeng.liu.ietf@gmail.com>";
-
-     description
-       "This module defines a common base model for a network topology,
-        augmenting the base network data model with links to connect
-        nodes, as well as termination points to terminate links
-        on nodes.
-
-        Copyright (c) 2018 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
-        (https://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of RFC 8345;
-        see the RFC itself for full legal notices.";
-
-     revision 2018-02-26 {
-       description
-         "Initial revision.";
-       reference
-         "RFC 8345: A YANG Data Model for Network Topologies";
-     }
-
-     typedef link-id {
-       type inet:uri;
-       description
-         "An identifier for a link in a topology.  The precise
-          structure of the link-id will be up to the implementation.
-          The identifier SHOULD be chosen such that the same link in a
-          real network topology will always be identified through the
-          same identifier, even if the data model is instantiated in
-          separate datastores.  An implementation MAY choose to capture
-          semantics in the identifier -- for example, to indicate the
-          type of link and/or the type of topology of which the link is
-          a part.";
-     }
-
-     typedef tp-id {
-       type inet:uri;
-       description
-         "An identifier for termination points on a node.  The precise
-          structure of the tp-id will be up to the implementation.
-          The identifier SHOULD be chosen such that the same termination
-          point in a real network topology will always be identified
-          through the same identifier, even if the data model is
-          instantiated in separate datastores.  An implementation MAY
-          choose to capture semantics in the identifier -- for example,
-          to indicate the type of termination point and/or the type of
-          node that contains the termination point.";
-     }
-
-     grouping link-ref {
-       description
-         "This grouping can be used to reference a link in a specific
-          network.  Although it is not used in this module, it is
-          defined here for the convenience of augmenting modules.";
-       leaf link-ref {
-         type leafref {
-           path "/nw:networks/nw:network[nw:network-id=current()/../"+
-             "network-ref]/nt:link/nt:link-id";
-           require-instance false;
-         }
-         description
-           "A type for an absolute reference to a link instance.
-            (This type should not be used for relative references.
-            In such a case, a relative path should be used instead.)";
-       }
-       uses nw:network-ref;
-     }
-
-     grouping tp-ref {
-       description
-         "This grouping can be used to reference a termination point
-          in a specific node.  Although it is not used in this module,
-          it is defined here for the convenience of augmenting
-          modules.";
-       leaf tp-ref {
-         type leafref {
-           path "/nw:networks/nw:network[nw:network-id=current()/../"+
-             "network-ref]/nw:node[nw:node-id=current()/../"+
-             "node-ref]/nt:termination-point/nt:tp-id";
-           require-instance false;
-         }
-         description
-           "A type for an absolute reference to a termination point.
-            (This type should not be used for relative references.
-            In such a case, a relative path should be used instead.)";
-       }
-       uses nw:node-ref;
-     }
-
-     augment "/nw:networks/nw:network" {
-       description
-         "Add links to the network data model.";
-       list link {
-         key "link-id";
-         description
-           "A network link connects a local (source) node and
-            a remote (destination) node via a set of the respective
-            node's termination points.  It is possible to have several
-            links between the same source and destination nodes.
-            Likewise, a link could potentially be re-homed between
-            termination points.  Therefore, in order to ensure that we
-            would always know to distinguish between links, every link
-            is identified by a dedicated link identifier.  Note that a
-            link models a point-to-point link, not a multipoint link.";
-         leaf link-id {
-           type link-id;
-           description
-             "The identifier of a link in the topology.
-              A link is specific to a topology to which it belongs.";
-         }
-         container source {
-           description
-             "This container holds the logical source of a particular
-              link.";
-           leaf source-node {
-             type leafref {
-               path "../../../nw:node/nw:node-id";
-               require-instance false;
-             }
-             description
-               "Source node identifier.  Must be in the same topology.";
-           }
-           leaf source-tp {
-             type leafref {
-               path "../../../nw:node[nw:node-id=current()/../"+
-                 "source-node]/termination-point/tp-id";
-               require-instance false;
-             }
-             description
-               "This termination point is located within the source node
-                and terminates the link.";
-           }
-         }
-
-         container destination {
-           description
-             "This container holds the logical destination of a
-              particular link.";
-           leaf dest-node {
-             type leafref {
-               path "../../../nw:node/nw:node-id";
-             require-instance false;
-             }
-             description
-               "Destination node identifier.  Must be in the same
-                network.";
-           }
-           leaf dest-tp {
-             type leafref {
-               path "../../../nw:node[nw:node-id=current()/../"+
-                 "dest-node]/termination-point/tp-id";
-               require-instance false;
-             }
-             description
-               "This termination point is located within the
-                destination node and terminates the link.";
-           }
-         }
-         list supporting-link {
-           key "network-ref link-ref";
-           description
-             "Identifies the link or links on which this link depends.";
-           leaf network-ref {
-             type leafref {
-               path "../../../nw:supporting-network/nw:network-ref";
-             require-instance false;
-             }
-             description
-               "This leaf identifies in which underlay topology
-                the supporting link is present.";
-           }
-
-           leaf link-ref {
-             type leafref {
-               path "/nw:networks/nw:network[nw:network-id=current()/"+
-                 "../network-ref]/link/link-id";
-               require-instance false;
-             }
-             description
-               "This leaf identifies a link that is a part
-                of this link's underlay.  Reference loops in which
-                a link identifies itself as its underlay, either
-                directly or transitively, are not allowed.";
-           }
-         }
-       }
-     }
-     augment "/nw:networks/nw:network/nw:node" {
-       description
-         "Augments termination points that terminate links.
-          Termination points can ultimately be mapped to interfaces.";
-       list termination-point {
-         key "tp-id";
-         description
-           "A termination point can terminate a link.
-            Depending on the type of topology, a termination point
-            could, for example, refer to a port or an interface.";
-         leaf tp-id {
-           type tp-id;
-           description
-             "Termination point identifier.";
-         }
-         list supporting-termination-point {
-           key "network-ref node-ref tp-ref";
-           description
-             "This list identifies any termination points on which a
-              given termination point depends or onto which it maps.
-              Those termination points will themselves be contained
-              in a supporting node.  This dependency information can be
-              inferred from the dependencies between links.  Therefore,
-              this item is not separately configurable.  Hence, no
-              corresponding constraint needs to be articulated.
-              The corresponding information is simply provided by the
-              implementing system.";
-
-           leaf network-ref {
-             type leafref {
-               path "../../../nw:supporting-node/nw:network-ref";
-             require-instance false;
-             }
-             description
-               "This leaf identifies in which topology the
-                supporting termination point is present.";
-           }
-           leaf node-ref {
-             type leafref {
-               path "../../../nw:supporting-node/nw:node-ref";
-             require-instance false;
-             }
-             description
-               "This leaf identifies in which node the supporting
-                termination point is present.";
-           }
-           leaf tp-ref {
-             type leafref {
-               path "/nw:networks/nw:network[nw:network-id=current()/"+
-                 "../network-ref]/nw:node[nw:node-id=current()/../"+
-                 "node-ref]/termination-point/tp-id";
-               require-instance false;
-             }
-             description
-               "Reference to the underlay node (the underlay node must
-                be in a different topology).";
-           }
-         }
-       }
-     }
-   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network@2018-02-26.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network@2018-02-26.yang
deleted file mode 100644
index d9da81eee..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-network@2018-02-26.yang
+++ /dev/null
@@ -1,193 +0,0 @@
-   module ietf-network {
-     yang-version 1.1;
-     namespace "urn:ietf:params:xml:ns:yang:ietf-network";
-     prefix nw;
-
-     import ietf-inet-types {
-       prefix inet;
-       reference
-         "RFC 6991: Common YANG Data Types";
-     }
-
-     organization
-       "IETF I2RS (Interface to the Routing System) Working Group";
-
-     contact
-       "WG Web:    <https://datatracker.ietf.org/wg/i2rs/>
-        WG List:   <mailto:i2rs@ietf.org>
-
-        Editor:    Alexander Clemm
-                   <mailto:ludwig@clemm.org>
-
-        Editor:    Jan Medved
-                   <mailto:jmedved@cisco.com>
-
-        Editor:    Robert Varga
-                   <mailto:robert.varga@pantheon.tech>
-
-        Editor:    Nitin Bahadur
-                   <mailto:nitin_bahadur@yahoo.com>
-
-        Editor:    Hariharan Ananthakrishnan
-                   <mailto:hari@packetdesign.com>
-
-        Editor:    Xufeng Liu
-                   <mailto:xufeng.liu.ietf@gmail.com>";
-
-     description
-       "This module defines a common base data model for a collection
-        of nodes in a network.  Node definitions are further used
-        in network topologies and inventories.
-
-        Copyright (c) 2018 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
-        (https://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of RFC 8345;
-        see the RFC itself for full legal notices.";
-
-     revision 2018-02-26 {
-       description
-         "Initial revision.";
-       reference
-         "RFC 8345: A YANG Data Model for Network Topologies";
-     }
-
-     typedef node-id {
-       type inet:uri;
-       description
-         "Identifier for a node.  The precise structure of the node-id
-          will be up to the implementation.  For example, some
-          implementations MAY pick a URI that includes the network-id
-          as part of the path.  The identifier SHOULD be chosen
-          such that the same node in a real network topology will
-          always be identified through the same identifier, even if
-          the data model is instantiated in separate datastores.  An
-          implementation MAY choose to capture semantics in the
-          identifier -- for example, to indicate the type of node.";
-     }
-
-     typedef network-id {
-       type inet:uri;
-       description
-         "Identifier for a network.  The precise structure of the
-          network-id will be up to the implementation.  The identifier
-          SHOULD be chosen such that the same network will always be
-          identified through the same identifier, even if the data model
-          is instantiated in separate datastores.  An implementation MAY
-          choose to capture semantics in the identifier -- for example,
-          to indicate the type of network.";
-     }
-
-     grouping network-ref {
-       description
-         "Contains the information necessary to reference a network --
-          for example, an underlay network.";
-       leaf network-ref {
-         type leafref {
-           path "/nw:networks/nw:network/nw:network-id";
-         require-instance false;
-         }
-         description
-           "Used to reference a network -- for example, an underlay
-            network.";
-       }
-     }
-
-     grouping node-ref {
-       description
-         "Contains the information necessary to reference a node.";
-       leaf node-ref {
-         type leafref {
-           path "/nw:networks/nw:network[nw:network-id=current()/../"+
-             "network-ref]/nw:node/nw:node-id";
-           require-instance false;
-         }
-         description
-           "Used to reference a node.
-            Nodes are identified relative to the network that
-            contains them.";
-       }
-       uses network-ref;
-     }
-
-     container networks {
-       description
-         "Serves as a top-level container for a list of networks.";
-       list network {
-         key "network-id";
-         description
-           "Describes a network.
-            A network typically contains an inventory of nodes,
-            topological information (augmented through the
-            network-topology data model), and layering information.";
-         leaf network-id {
-           type network-id;
-           description
-             "Identifies a network.";
-         }
-         container network-types {
-           description
-             "Serves as an augmentation target.
-              The network type is indicated through corresponding
-              presence containers augmented into this container.";
-         }
-         list supporting-network {
-           key "network-ref";
-           description
-             "An underlay network, used to represent layered network
-              topologies.";
-           leaf network-ref {
-             type leafref {
-               path "/nw:networks/nw:network/nw:network-id";
-             require-instance false;
-             }
-             description
-               "References the underlay network.";
-           }
-         }
-
-         list node {
-           key "node-id";
-           description
-             "The inventory of nodes of this network.";
-           leaf node-id {
-             type node-id;
-             description
-               "Uniquely identifies a node within the containing
-                network.";
-           }
-           list supporting-node {
-             key "network-ref node-ref";
-             description
-               "Represents another node that is in an underlay network
-                and that supports this node.  Used to represent layering
-                structure.";
-             leaf network-ref {
-               type leafref {
-                 path "../../../nw:supporting-network/nw:network-ref";
-               require-instance false;
-               }
-               description
-                 "References the underlay network of which the
-                  underlay node is a part.";
-             }
-             leaf node-ref {
-               type leafref {
-                 path "/nw:networks/nw:network/nw:node/nw:node-id";
-               require-instance false;
-               }
-               description
-                 "References the underlay node itself.";
-             }
-           }
-         }
-       }
-     }
-   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-routing-types@2017-12-04.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-routing-types@2017-12-04.yang
deleted file mode 100644
index 695d9eaeb..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-routing-types@2017-12-04.yang
+++ /dev/null
@@ -1,774 +0,0 @@
-   module ietf-routing-types {
-     namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types";
-     prefix rt-types;
-
-     import ietf-yang-types {
-       prefix yang;
-     }
-     import ietf-inet-types {
-       prefix inet;
-     }
-
-     organization
-       "IETF RTGWG - Routing Area Working Group";
-     contact
-       "WG Web:   <https://datatracker.ietf.org/wg/rtgwg/>
-        WG List:  <mailto:rtgwg@ietf.org>
-
-        Editors:  Xufeng Liu
-                  <mailto:Xufeng_Liu@jabail.com>
-                  Yingzhen Qu
-                  <mailto:yingzhen.qu@huawei.com>
-                  Acee Lindem
-                  <mailto:acee@cisco.com>
-                  Christian Hopps
-                  <mailto:chopps@chopps.org>
-                  Lou Berger
-                  <mailto:lberger@labn.com>";
-
-     description
-       "This module contains a collection of YANG data types
-        considered generally useful for routing protocols.
-
-        Copyright (c) 2017 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
-        (https://trustee.ietf.org/license-info).
-
-        This version of this YANG module is part of RFC 8294; see
-        the RFC itself for full legal notices.";
-
-      revision 2017-12-04 {
-        description "Initial revision.";
-        reference
-          "RFC 8294: Common YANG Data Types for the Routing Area.
-           Section 3.";
-     }
-
-     /*** Identities related to MPLS/GMPLS ***/
-
-     identity mpls-label-special-purpose-value {
-       description
-         "Base identity for deriving identities describing
-          special-purpose Multiprotocol Label Switching (MPLS) label
-          values.";
-       reference
-         "RFC 7274: Allocating and Retiring Special-Purpose MPLS
-          Labels.";
-     }
-
-     identity ipv4-explicit-null-label {
-       base mpls-label-special-purpose-value;
-       description
-         "This identity represents the IPv4 Explicit NULL Label.";
-       reference
-         "RFC 3032: MPLS Label Stack Encoding.  Section 2.1.";
-     }
-
-     identity router-alert-label {
-       base mpls-label-special-purpose-value;
-       description
-         "This identity represents the Router Alert Label.";
-       reference
-         "RFC 3032: MPLS Label Stack Encoding.  Section 2.1.";
-     }
-
-     identity ipv6-explicit-null-label {
-       base mpls-label-special-purpose-value;
-       description
-         "This identity represents the IPv6 Explicit NULL Label.";
-       reference
-         "RFC 3032: MPLS Label Stack Encoding.  Section 2.1.";
-     }
-
-     identity implicit-null-label {
-       base mpls-label-special-purpose-value;
-       description
-         "This identity represents the Implicit NULL Label.";
-       reference
-         "RFC 3032: MPLS Label Stack Encoding.  Section 2.1.";
-     }
-
-     identity entropy-label-indicator {
-       base mpls-label-special-purpose-value;
-       description
-         "This identity represents the Entropy Label Indicator.";
-       reference
-         "RFC 6790: The Use of Entropy Labels in MPLS Forwarding.
-          Sections 3 and 10.1.";
-     }
-
-     identity gal-label {
-       base mpls-label-special-purpose-value;
-       description
-         "This identity represents the Generic Associated Channel
-          (G-ACh) Label (GAL).";
-       reference
-         "RFC 5586: MPLS Generic Associated Channel.
-          Sections 4 and 10.";
-     }
-
-     identity oam-alert-label {
-       base mpls-label-special-purpose-value;
-       description
-         "This identity represents the OAM Alert Label.";
-       reference
-         "RFC 3429: Assignment of the 'OAM Alert Label' for
-          Multiprotocol Label Switching Architecture (MPLS)
-          Operation and Maintenance (OAM) Functions.
-          Sections 3 and 6.";
-     }
-
-     identity extension-label {
-       base mpls-label-special-purpose-value;
-       description
-         "This identity represents the Extension Label.";
-       reference
-         "RFC 7274: Allocating and Retiring Special-Purpose MPLS
-          Labels.  Sections 3.1 and 5.";
-     }
-
-     /*** Collection of types related to routing ***/
-
-     typedef router-id {
-       type yang:dotted-quad;
-       description
-         "A 32-bit number in the dotted-quad format assigned to each
-          router.  This number uniquely identifies the router within
-          an Autonomous System.";
-     }
-
-     /*** Collection of types related to VPNs ***/
-
-     typedef route-target {
-       type string {
-         pattern
-           '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
-         +     '6[0-4][0-9]{3}|'
-         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|'
-         +     '42949672[0-8][0-9]|'
-         +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|'
-         +     '42949[0-5][0-9]{4}|'
-         +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|'
-         +     '42[0-8][0-9]{7}|4[01][0-9]{8}|'
-         +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|'
-         + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|'
-         +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|'
-         +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|'
-         +     '655[0-2][0-9]|'
-         +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|'
-         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
-         + '(2:(429496729[0-5]|42949672[0-8][0-9]|'
-         +     '4294967[01][0-9]{2}|'
-         +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|'
-         +     '4294[0-8][0-9]{5}|'
-         +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|'
-         +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):'
-         +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
-         +     '6[0-4][0-9]{3}|'
-         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
-         + '(6(:[a-fA-F0-9]{2}){6})|'
-         + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):'
-         +     '[0-9a-fA-F]{1,12})';
-       }
-
-       description
-         "A Route Target is an 8-octet BGP extended community
-          initially identifying a set of sites in a BGP VPN
-          (RFC 4364).  However, it has since taken on a more general
-          role in BGP route filtering.  A Route Target consists of two
-          or three fields: a 2-octet Type field, an administrator
-          field, and, optionally, an assigned number field.
-
-          According to the data formats for types 0, 1, 2, and 6 as
-          defined in RFC 4360, RFC 5668, and RFC 7432, the encoding
-          pattern is defined as:
-
-          0:2-octet-asn:4-octet-number
-          1:4-octet-ipv4addr:2-octet-number
-          2:4-octet-asn:2-octet-number
-          6:6-octet-mac-address
-
-          Additionally, a generic pattern is defined for future
-          Route Target types:
-
-          2-octet-other-hex-number:6-octet-hex-number
-
-          Some valid examples are 0:100:100, 1:1.1.1.1:100,
-          2:1234567890:203, and 6:26:00:08:92:78:00.";
-       reference
-         "RFC 4360: BGP Extended Communities Attribute.
-          RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).
-          RFC 5668: 4-Octet AS Specific BGP Extended Community.
-          RFC 7432: BGP MPLS-Based Ethernet VPN.";
-     }
-
-     typedef ipv6-route-target {
-       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]|1[0-9]{2}|[1-9]?[0-9])\.){3}'
-             + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))'
-             + ':'
-             + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
-             + '6[0-4][0-9]{3}|'
-             + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
-         pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))'
-             + ':'
-             + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
-             + '6[0-4][0-9]{3}|'
-             + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
-       }
-       description
-         "An IPv6 Route Target is a 20-octet BGP IPv6 Address
-          Specific Extended Community serving the same function
-          as a standard 8-octet Route Target, except that it only
-          allows an IPv6 address as the global administrator.
-          The format is <ipv6-address:2-octet-number>.
-
-          Two valid examples are 2001:db8::1:6544 and
-          2001:db8::5eb1:791:6b37:17958.";
-       reference
-         "RFC 5701: IPv6 Address Specific BGP Extended Community
-          Attribute.";
-     }
-
-     typedef route-target-type {
-       type enumeration {
-         enum import {
-           value 0;
-           description
-             "The Route Target applies to route import.";
-         }
-         enum export {
-           value 1;
-           description
-             "The Route Target applies to route export.";
-         }
-
-         enum both {
-           value 2;
-           description
-             "The Route Target applies to both route import and
-              route export.";
-         }
-       }
-       description
-         "Indicates the role a Route Target takes in route filtering.";
-       reference
-         "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).";
-     }
-
-     typedef route-distinguisher {
-       type string {
-         pattern
-           '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
-         +     '6[0-4][0-9]{3}|'
-         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|'
-         +     '42949672[0-8][0-9]|'
-         +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|'
-         +     '42949[0-5][0-9]{4}|'
-         +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|'
-         +     '42[0-8][0-9]{7}|4[01][0-9]{8}|'
-         +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|'
-         + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|'
-         +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|'
-         +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|'
-         +     '655[0-2][0-9]|'
-         +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|'
-         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
-         + '(2:(429496729[0-5]|42949672[0-8][0-9]|'
-         +     '4294967[01][0-9]{2}|'
-         +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|'
-         +     '4294[0-8][0-9]{5}|'
-         +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|'
-         +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):'
-         +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
-         +     '6[0-4][0-9]{3}|'
-         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
-         + '(6(:[a-fA-F0-9]{2}){6})|'
-         + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):'
-         +     '[0-9a-fA-F]{1,12})';
-       }
-
-       description
-         "A Route Distinguisher is an 8-octet value used to
-          distinguish routes from different BGP VPNs (RFC 4364).
-          A Route Distinguisher will have the same format as a
-          Route Target as per RFC 4360 and will consist of
-          two or three fields: a 2-octet Type field, an administrator
-          field, and, optionally, an assigned number field.
-
-          According to the data formats for types 0, 1, 2, and 6 as
-          defined in RFC 4360, RFC 5668, and RFC 7432, the encoding
-          pattern is defined as:
-
-          0:2-octet-asn:4-octet-number
-          1:4-octet-ipv4addr:2-octet-number
-          2:4-octet-asn:2-octet-number
-          6:6-octet-mac-address
-
-          Additionally, a generic pattern is defined for future
-          route discriminator types:
-
-          2-octet-other-hex-number:6-octet-hex-number
-
-          Some valid examples are 0:100:100, 1:1.1.1.1:100,
-          2:1234567890:203, and 6:26:00:08:92:78:00.";
-       reference
-         "RFC 4360: BGP Extended Communities Attribute.
-          RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).
-          RFC 5668: 4-Octet AS Specific BGP Extended Community.
-          RFC 7432: BGP MPLS-Based Ethernet VPN.";
-     }
-
-     typedef route-origin {
-       type string {
-         pattern
-           '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
-         +     '6[0-4][0-9]{3}|'
-         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|'
-         +     '42949672[0-8][0-9]|'
-         +     '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|'
-         +     '42949[0-5][0-9]{4}|'
-         +     '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|'
-         +     '42[0-8][0-9]{7}|4[01][0-9]{8}|'
-         +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|'
-         + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|'
-         +     '25[0-5])\.){3}([0-9]|[1-9][0-9]|'
-         +     '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|'
-         +     '655[0-2][0-9]|'
-         +     '65[0-4][0-9]{2}|6[0-4][0-9]{3}|'
-         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
-         + '(2:(429496729[0-5]|42949672[0-8][0-9]|'
-         +     '4294967[01][0-9]{2}|'
-         +     '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|'
-         +     '4294[0-8][0-9]{5}|'
-         +     '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|'
-         +     '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):'
-         +     '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
-         +     '6[0-4][0-9]{3}|'
-         +     '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
-         + '(6(:[a-fA-F0-9]{2}){6})|'
-         + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):'
-         +    '[0-9a-fA-F]{1,12})';
-       }
-       description
-         "A Route Origin is an 8-octet BGP extended community
-          identifying the set of sites where the BGP route
-          originated (RFC 4364).  A Route Origin will have the same
-          format as a Route Target as per RFC 4360 and will consist
-          of two or three fields: a 2-octet Type field, an
-          administrator field, and, optionally, an assigned number
-          field.
-
-          According to the data formats for types 0, 1, 2, and 6 as
-          defined in RFC 4360, RFC 5668, and RFC 7432, the encoding
-          pattern is defined as:
-
-          0:2-octet-asn:4-octet-number
-          1:4-octet-ipv4addr:2-octet-number
-          2:4-octet-asn:2-octet-number
-          6:6-octet-mac-address
-
-          Additionally, a generic pattern is defined for future
-          Route Origin types:
-
-          2-octet-other-hex-number:6-octet-hex-number
-
-          Some valid examples are 0:100:100, 1:1.1.1.1:100,
-          2:1234567890:203, and 6:26:00:08:92:78:00.";
-       reference
-         "RFC 4360: BGP Extended Communities Attribute.
-          RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).
-          RFC 5668: 4-Octet AS Specific BGP Extended Community.
-          RFC 7432: BGP MPLS-Based Ethernet VPN.";
-     }
-
-     typedef ipv6-route-origin {
-       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]|1[0-9]{2}|[1-9]?[0-9])\.){3}'
-             + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))'
-             + ':'
-             + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
-             + '6[0-4][0-9]{3}|'
-             + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
-         pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))'
-             + ':'
-             + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
-             + '6[0-4][0-9]{3}|'
-             + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
-       }
-       description
-         "An IPv6 Route Origin is a 20-octet BGP IPv6 Address
-          Specific Extended Community serving the same function
-          as a standard 8-octet route, except that it only allows
-          an IPv6 address as the global administrator.  The format
-          is <ipv6-address:2-octet-number>.
-
-          Two valid examples are 2001:db8::1:6544 and
-          2001:db8::5eb1:791:6b37:17958.";
-       reference
-         "RFC 5701: IPv6 Address Specific BGP Extended Community
-          Attribute.";
-     }
-
-     /*** Collection of types common to multicast ***/
-
-     typedef ipv4-multicast-group-address {
-       type inet:ipv4-address {
-         pattern '(2((2[4-9])|(3[0-9]))\.).*';
-       }
-       description
-         "This type represents an IPv4 multicast group address,
-          which is in the range of 224.0.0.0 to 239.255.255.255.";
-       reference
-         "RFC 1112: Host Extensions for IP Multicasting.";
-     }
-
-     typedef ipv6-multicast-group-address {
-       type inet:ipv6-address {
-         pattern '(([fF]{2}[0-9a-fA-F]{2}):).*';
-       }
-       description
-         "This type represents an IPv6 multicast group address,
-          which is in the range of ff00::/8.";
-       reference
-         "RFC 4291: IP Version 6 Addressing Architecture.  Section 2.7.
-          RFC 7346: IPv6 Multicast Address Scopes.";
-     }
-
-     typedef ip-multicast-group-address {
-       type union {
-         type ipv4-multicast-group-address;
-         type ipv6-multicast-group-address;
-       }
-       description
-         "This type represents a version-neutral IP multicast group
-          address.  The format of the textual representation implies
-          the IP version.";
-     }
-
-     typedef ipv4-multicast-source-address {
-       type union {
-         type enumeration {
-           enum * {
-             description
-               "Any source address.";
-           }
-         }
-         type inet:ipv4-address;
-       }
-       description
-         "Multicast source IPv4 address type.";
-     }
-
-     typedef ipv6-multicast-source-address {
-       type union {
-         type enumeration {
-           enum * {
-             description
-               "Any source address.";
-           }
-         }
-         type inet:ipv6-address;
-       }
-       description
-         "Multicast source IPv6 address type.";
-     }
-
-     /*** Collection of types common to protocols ***/
-
-     typedef bandwidth-ieee-float32 {
-       type string {
-         pattern
-           '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
-         + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
-         + '1[01][0-9]|0?[0-9]?[0-9])?)';
-       }
-       description
-         "Bandwidth in IEEE 754 floating-point 32-bit binary format:
-          (-1)**(S) * 2**(Exponent-127) * (1 + Fraction),
-          where Exponent uses 8 bits and Fraction uses 23 bits.
-          The units are octets per second.
-          The encoding format is the external hexadecimal-significant
-          character sequences specified in IEEE 754 and ISO/IEC C99.
-          The format is restricted to be normalized, non-negative, and
-          non-fraction: 0x1.hhhhhhp{+}d, 0X1.HHHHHHP{+}D, or 0x0p0,
-          where 'h' and 'H' are hexadecimal digits and 'd' and 'D' are
-          integers in the range of [0..127].
-
-          When six hexadecimal digits are used for 'hhhhhh' or
-          'HHHHHH', the least significant digit must be an even
-          number.  'x' and 'X' indicate hexadecimal; 'p' and 'P'
-          indicate a power of two.  Some examples are 0x0p0, 0x1p10,
-          and 0x1.abcde2p+20.";
-       reference
-         "IEEE Std 754-2008: IEEE Standard for Floating-Point
-          Arithmetic.
-          ISO/IEC C99: Information technology - Programming
-          Languages - C.";
-     }
-
-     typedef link-access-type {
-       type enumeration {
-         enum broadcast {
-           description
-             "Specify broadcast multi-access network.";
-         }
-         enum non-broadcast-multiaccess {
-           description
-             "Specify Non-Broadcast Multi-Access (NBMA) network.";
-         }
-         enum point-to-multipoint {
-           description
-             "Specify point-to-multipoint network.";
-         }
-         enum point-to-point {
-           description
-             "Specify point-to-point network.";
-         }
-       }
-       description
-         "Link access type.";
-     }
-
-     typedef timer-multiplier {
-       type uint8;
-       description
-         "The number of timer value intervals that should be
-          interpreted as a failure.";
-     }
-
-     typedef timer-value-seconds16 {
-       type union {
-         type uint16 {
-           range "1..65535";
-         }
-         type enumeration {
-           enum infinity {
-             description
-               "The timer is set to infinity.";
-           }
-           enum not-set {
-             description
-               "The timer is not set.";
-           }
-         }
-       }
-       units "seconds";
-       description
-         "Timer value type, in seconds (16-bit range).";
-     }
-
-     typedef timer-value-seconds32 {
-       type union {
-         type uint32 {
-           range "1..4294967295";
-         }
-         type enumeration {
-           enum infinity {
-             description
-               "The timer is set to infinity.";
-           }
-           enum not-set {
-             description
-               "The timer is not set.";
-           }
-         }
-       }
-       units "seconds";
-       description
-         "Timer value type, in seconds (32-bit range).";
-     }
-
-     typedef timer-value-milliseconds {
-       type union {
-         type uint32 {
-           range "1..4294967295";
-         }
-         type enumeration {
-           enum infinity {
-             description
-               "The timer is set to infinity.";
-           }
-           enum not-set {
-             description
-               "The timer is not set.";
-           }
-         }
-       }
-       units "milliseconds";
-       description
-         "Timer value type, in milliseconds.";
-     }
-
-     typedef percentage {
-       type uint8 {
-         range "0..100";
-       }
-       description
-         "Integer indicating a percentage value.";
-     }
-
-     typedef timeticks64 {
-       type uint64;
-       description
-         "This type is based on the timeticks type defined in
-          RFC 6991, but with 64-bit width.  It represents the time,
-          modulo 2^64, in hundredths of a second between two epochs.";
-       reference
-         "RFC 6991: Common YANG Data Types.";
-     }
-
-     typedef uint24 {
-       type uint32 {
-         range "0..16777215";
-       }
-       description
-         "24-bit unsigned integer.";
-     }
-
-     /*** Collection of types related to MPLS/GMPLS ***/
-
-     typedef generalized-label {
-       type binary;
-       description
-         "Generalized Label.  Nodes sending and receiving the
-          Generalized Label are aware of the link-specific
-          label context and type.";
-       reference
-         "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
-          Signaling Functional Description.  Section 3.2.";
-     }
-
-     typedef mpls-label-special-purpose {
-       type identityref {
-         base mpls-label-special-purpose-value;
-       }
-       description
-         "This type represents the special-purpose MPLS label values.";
-       reference
-         "RFC 3032: MPLS Label Stack Encoding.
-          RFC 7274: Allocating and Retiring Special-Purpose MPLS
-          Labels.";
-     }
-
-     typedef mpls-label-general-use {
-       type uint32 {
-         range "16..1048575";
-       }
-       description
-         "The 20-bit label value in an MPLS label stack as specified
-          in RFC 3032.  This label value does not include the
-          encodings of Traffic Class and TTL (Time to Live).
-          The label range specified by this type is for general use,
-          with special-purpose MPLS label values excluded.";
-       reference
-         "RFC 3032: MPLS Label Stack Encoding.";
-     }
-
-     typedef mpls-label {
-       type union {
-         type mpls-label-special-purpose;
-         type mpls-label-general-use;
-       }
-       description
-         "The 20-bit label value in an MPLS label stack as specified
-          in RFC 3032.  This label value does not include the
-          encodings of Traffic Class and TTL.";
-       reference
-         "RFC 3032: MPLS Label Stack Encoding.";
-     }
-
-     /*** Groupings **/
-
-     grouping mpls-label-stack {
-       description
-         "This grouping specifies an MPLS label stack.  The label
-          stack is encoded as a list of label stack entries.  The
-          list key is an identifier that indicates the relative
-          ordering of each entry, with the lowest-value identifier
-          corresponding to the top of the label stack.";
-       container mpls-label-stack {
-         description
-           "Container for a list of MPLS label stack entries.";
-         list entry {
-           key "id";
-           description
-             "List of MPLS label stack entries.";
-           leaf id {
-             type uint8;
-             description
-               "Identifies the entry in a sequence of MPLS label
-                stack entries.  An entry with a smaller identifier
-                value precedes an entry with a larger identifier
-                value in the label stack.  The value of this ID has
-                no semantic meaning other than relative ordering
-                and referencing the entry.";
-           }
-           leaf label {
-             type rt-types:mpls-label;
-             description
-               "Label value.";
-           }
-
-           leaf ttl {
-             type uint8;
-             description
-               "Time to Live (TTL).";
-             reference
-               "RFC 3032: MPLS Label Stack Encoding.";
-           }
-           leaf traffic-class {
-             type uint8 {
-               range "0..7";
-             }
-             description
-               "Traffic Class (TC).";
-             reference
-               "RFC 5462: Multiprotocol Label Switching (MPLS) Label
-                Stack Entry: 'EXP' Field Renamed to 'Traffic Class'
-                Field.";
-           }
-         }
-       }
-     }
-
-     grouping vpn-route-targets {
-       description
-         "A grouping that specifies Route Target import-export rules
-          used in BGP-enabled VPNs.";
-       reference
-         "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).
-          RFC 4664: Framework for Layer 2 Virtual Private Networks
-          (L2VPNs).";
-       list vpn-target {
-         key "route-target";
-         description
-           "List of Route Targets.";
-         leaf route-target {
-           type rt-types:route-target;
-           description
-             "Route Target value.";
-         }
-         leaf route-target-type {
-           type rt-types:route-target-type;
-           mandatory true;
-           description
-             "Import/export type of the Route Target.";
-         }
-       }
-     }
-   }
diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-yang-types@2013-07-15.yang b/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-yang-types@2013-07-15.yang
deleted file mode 100644
index 956562a7b..000000000
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_network_new/yang/ietf-yang-types@2013-07-15.yang
+++ /dev/null
@@ -1,475 +0,0 @@
-   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.";
-     }
-   }
-- 
GitLab


From 7a862d3f302b707a19b36481971aa72c776d05ae Mon Sep 17 00:00:00 2001
From: gifrerenom <lluis.gifre@cttc.es>
Date: Wed, 2 Oct 2024 08:49:13 +0000
Subject: [PATCH 14/14] Corrected NBI unitary test for IETF Network

---
 src/nbi/tests/test_ietf_network.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/nbi/tests/test_ietf_network.py b/src/nbi/tests/test_ietf_network.py
index 9a25e1b3b..ec03d3798 100644
--- a/src/nbi/tests/test_ietf_network.py
+++ b/src/nbi/tests/test_ietf_network.py
@@ -12,14 +12,20 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import deepdiff, json, logging, operator
+import deepdiff, json, logging, operator, os
 from typing import Dict
 from common.Constants import DEFAULT_CONTEXT_NAME
 from common.proto.context_pb2 import ContextId
-from common.tools.descriptor.Loader import DescriptorLoader, check_descriptor_load_results, validate_empty_scenario
+from common.tools.descriptor.Loader import (
+    DescriptorLoader, check_descriptor_load_results, validate_empty_scenario
+)
 from common.tools.object_factory.Context import json_context_id
 from context.client.ContextClient import ContextClient
 from nbi.service.rest_server import RestServer
+
+# Explicitly state NBI to use PyangBind Renderer for this test
+os.environ['IETF_NETWORK_RENDERER'] = 'PYANGBIND'
+
 from .PrepareTestScenario import ( # pylint: disable=unused-import
     # be careful, order of symbols is important here!
     do_rest_get_request, mock_service, nbi_service_rest, osm_wim, context_client
-- 
GitLab