From eea5bb7c99cd4d2aa4d5e49f314db192445e6145 Mon Sep 17 00:00:00 2001 From: armingol Date: Fri, 26 Jul 2024 08:42:10 +0200 Subject: [PATCH 1/8] 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 + "; + + 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: + WG List: + + Editor: Haomian Zheng + + + Editor: Italo Busi + + + Editor: Aihua Guo + + + Editor: Yunbin Xu + + + Editor: Yang Zhao + + + Editor: Xufeng Liu + "; + + 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: + + 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: + + 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: + WG List: + + WG Chair: David Kessens + + + WG Chair: Juergen Schoenwaelder + + + Editor: Juergen Schoenwaelder + "; + + 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 . + + 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: + WG List: + + Editor: Haomian Zheng + + + Editor: Italo Busi + "; + + 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: + WG List: + + Editor: Alexander Clemm + + + Editor: Jan Medved + + + Editor: Robert Varga + + + Editor: Nitin Bahadur + + + Editor: Hariharan Ananthakrishnan + + + Editor: Xufeng Liu + "; + + 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: + WG List: + + Editor: Alexander Clemm + + + Editor: Jan Medved + + + Editor: Robert Varga + + + Editor: Nitin Bahadur + + + Editor: Hariharan Ananthakrishnan + + + Editor: Xufeng Liu + "; + + 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: + WG List: + + Editor: Haomian Zheng + + + Editor: Italo Busi + + + Editor: Xufeng Liu + + + Editor: Sergio Belotti + + + + + + Editor: Oscar Gonzalez de Dios + "; + + 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: + WG List: + + Editors: Xufeng Liu + + Yingzhen Qu + + Acee Lindem + + Christian Hopps + + Lou Berger + "; + + 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 . + + 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 . + + 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: + WG List: + + Editor: Tarek Saad + + + Editor: Rakesh Gandhi + + + Editor: Vishnu Pavan Beeram + + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + "; + 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: + WG List: + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + + + Editor: Vishnu Pavan Beeram + + + Editor: Tarek Saad + + + Editor: Himanshu Shah + + + Editor: Oscar Gonzalez de Dios + "; + 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: + WG List: + + Editor: Tarek Saad + + + Editor: Rakesh Gandhi + + + Editor: Vishnu Pavan Beeram + + + Editor: Xufeng Liu + + + Editor: Igor Bryskin + "; + 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: + WG List: + + WG Chair: David Kessens + + + WG Chair: Juergen Schoenwaelder + + + Editor: Juergen Schoenwaelder + "; + + 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 Date: Wed, 21 Aug 2024 14:22:22 +0200 Subject: [PATCH 2/8] 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: - WG List: - - Editor: Haomian Zheng - - - Editor: Italo Busi - - - Editor: Aihua Guo - - - Editor: Yunbin Xu - - - Editor: Yang Zhao - - - Editor: Xufeng Liu - "; - - 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: - - 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: - - 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: + WG List: + Editor: Alexander Clemm + + Editor: Jan Medved + + Editor: Robert Varga + + Editor: Xufeng Liu + + Editor: Nitin Bahadur + + Editor: Hariharan Ananthakrishnan + "; + 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: - WG List: - - Editor: Haomian Zheng - - - Editor: Italo Busi - "; - - 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: - WG List: - - Editor: Haomian Zheng - - - Editor: Italo Busi - - - Editor: Xufeng Liu - - - Editor: Sergio Belotti - - - - - - Editor: Oscar Gonzalez de Dios - "; - - 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: - WG List: - - Editor: Tarek Saad - - - Editor: Rakesh Gandhi - - - Editor: Vishnu Pavan Beeram - - - Editor: Xufeng Liu - - - Editor: Igor Bryskin - "; - 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: - WG List: - - Editor: Xufeng Liu - - - Editor: Igor Bryskin - - - Editor: Vishnu Pavan Beeram - - - Editor: Tarek Saad - - - Editor: Himanshu Shah - - - Editor: Oscar Gonzalez de Dios - "; - 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: - WG List: - - Editor: Tarek Saad - - - Editor: Rakesh Gandhi - - - Editor: Vishnu Pavan Beeram - - - Editor: Xufeng Liu - - - Editor: Igor Bryskin - "; - 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/'), + + ('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 @@
  • Dummy Contexts
  • Devices
  • Links
  • +
  • Networks
  • {% endblock %} -- GitLab From 2092ad05b0aad5c52374a97cccfbc65b35ab106a Mon Sep 17 00:00:00 2001 From: armingol Date: Wed, 21 Aug 2024 14:26:52 +0200 Subject: [PATCH 3/8] 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 Date: Thu, 22 Aug 2024 10:54:54 +0200 Subject: [PATCH 4/8] 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 Date: Thu, 22 Aug 2024 11:06:29 +0200 Subject: [PATCH 5/8] 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 Date: Mon, 9 Sep 2024 16:48:28 +0200 Subject: [PATCH 6/8] 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//slice/'), ('api.device_ids', DeviceIds, '/device_ids'), + ('api.devices', Devices, '/devices'), + ('api.device', Device, '/device/'), - ('api.devices', HardwareMultipleDevices, '/devices'), - ('api.device', Hardware, '/device/'), - ('api.link_ids', LinkIds, '/link_ids'), ('api.links', Links, '/links'), ('api.link', Link, '/link/'), -- GitLab From 77b20dc7e7a3326d2a45e79c37b83832b4583acc Mon Sep 17 00:00:00 2001 From: armingol Date: Mon, 9 Sep 2024 17:02:54 +0200 Subject: [PATCH 7/8] 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=/ietf-network-hardware-inventory:network-hardware-inventory" -URL_PREFIX_hardware = "/restconf/data/ietf-network-hardware-inventory:network-hardware-inventory" +URL_PREFIX = "/restconf/data/device=/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: - WG List: - - Editor: Chaode Yu - - - Editor: Italo Busi - - - Editor: Aihua Guo - - - Editor: Sergio Belotti - - - Editor: Jean-Francois Bouquier - - - Editor: Fabio Peruzzini - "; - - 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=[/r=][/sh= - [/s_sh= ...]][[/sl= - [/s_sl= ...]][/p= …]]' - "; - } - 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 Date: Mon, 9 Sep 2024 17:05:06 +0200 Subject: [PATCH 8/8] 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=/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