X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=tests%2Ftransportpce_tests%2F1.2.1%2Ftest_gnpy.py;h=235b85f89c46d436156e86b3003c52ed73fe8f4d;hb=2fed85bc6d6a85d36982368cf47387cfc7ecc751;hp=9ff056b6a5f6beb5737255136e00d7f92ab106b0;hpb=6591095f6ce2a64ebcba11dab8836bb7656b09e5;p=transportpce.git diff --git a/tests/transportpce_tests/1.2.1/test_gnpy.py b/tests/transportpce_tests/1.2.1/test_gnpy.py index 9ff056b6a..235b85f89 100644 --- a/tests/transportpce_tests/1.2.1/test_gnpy.py +++ b/tests/transportpce_tests/1.2.1/test_gnpy.py @@ -1,7 +1,7 @@ #!/usr/bin/env python ############################################################################## -#Copyright (c) 2017 Orange, Inc. and others. All rights reserved. +# Copyright (c) 2017 Orange, Inc. and others. All rights reserved. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -9,3825 +9,338 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +import unittest import json import os -import psutil -import requests -import signal -import shutil -import subprocess +import sys import time -import unittest -import logging +import requests +from common import test_utils -class TransportGNPYtesting(unittest.TestCase): - gnpy_process = None - odl_process = None - restconf_baseurl = "http://localhost:8181/restconf" +class TransportGNPYtesting(unittest.TestCase): @classmethod def __init_logfile(cls): - if os.path.isfile("./transportpce_tests/gnpy.log"): - os.remove("transportpce_tests/gnpy.log") + GNPY_LOGFILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), + "..", "..", "transportpce_tests", "gnpy.log") + if os.path.isfile(GNPY_LOFGILE): + os.remove(GNPY_LOFGILE) - @classmethod - def __start_odl(cls): - executable = "../karaf/target/assembly/bin/karaf" - with open('transportpce_tests/odl.log', 'w') as outfile: - cls.odl_process = subprocess.Popen( - ["bash", executable, "server"], stdout=outfile, - stdin=open(os.devnull)) + topo_cllinet_data = None + topo_ordnet_data = None + topo_ordtopo_data = None + processes = None @classmethod def setUpClass(cls): - cls.__start_odl() - time.sleep(30) + try: + sample_files_parsed = False + TOPO_CLLINET_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), + "..", "..", "sample_configs", "gnpy", "clliNetwork.json") + with open(TOPO_CLLINET_FILE, 'r') as topo_cllinet: + cls.topo_cllinet_data = topo_cllinet.read() + + TOPO_ORDNET_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), + "..", "..", "sample_configs", "gnpy", "openroadmNetwork.json") + with open(TOPO_ORDNET_FILE, 'r') as topo_ordnet: + cls.topo_ordnet_data = topo_ordnet.read() + + TOPO_ORDTOPO_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), + "..", "..", "sample_configs", "gnpy", "openroadmTopology.json") + with open(TOPO_ORDTOPO_FILE, 'r') as topo_ordtopo: + cls.topo_ordtopo_data = topo_ordtopo.read() + sample_files_parsed = True + except PermissionError as err: + print("Permission Error when trying to read sample files\n", err) + sys.exit(2) + except FileNotFoundError as err: + print("File Not found Error when trying to read sample files\n", err) + sys.exit(2) + except: + print("Unexpected error when trying to read sample files\n", sys.exc_info()[0]) + sys.exit(2) + finally: + if sample_files_parsed: + print("sample files content loaded") + + cls.processes = test_utils.start_tpce() @classmethod def tearDownClass(cls): - for child in psutil.Process(cls.odl_process.pid).children(): - child.send_signal(signal.SIGINT) - child.wait() - cls.odl_process.send_signal(signal.SIGINT) - cls.odl_process.wait() + for process in cls.processes: + test_utils.shutdown_process(process) + print("all processes killed") def setUp(self): time.sleep(2) - #Connect the different topology + # Mount the different topologies def test_01_connect_clliNetwork(self): - #Config ROADMA - url = ("{}/config/ietf-network:networks/network/clli-network" - .format(self.restconf_baseurl)) - data = {"network": [{ - "network-id": "clli-network", - "network-types": { - "org-openroadm-clli-network:clli-network": {} - }, - "node": [ - { - "node-id": "NodeA", - "org-openroadm-clli-network:clli": "NodeA" - }, - { - "node-id": "NodeB", - "org-openroadm-clli-network:clli": "NodeB" - }, - { - "node-id": "NodeC", - "org-openroadm-clli-network:clli": "NodeC" - } - ] - }] - } - headers = {'content-type': 'application/json'} - response = requests.request( - "PUT", url, data=json.dumps(data), headers=headers, - auth=('admin', 'admin')) + response = test_utils.rawput_request(test_utils.URL_CONFIG_CLLI_NET, self.topo_cllinet_data) self.assertEqual(response.status_code, requests.codes.ok) time.sleep(3) def test_02_connect_openroadmNetwork(self): - #Config ROADMA - url = ("{}/config/ietf-network:networks/network/openroadm-network" - .format(self.restconf_baseurl)) - data = {"network": [{ - "network-id": "openroadm-network", - "network-types": { - "org-openroadm-common-network:openroadm-common-network": {} - }, - "node": [ - { - "node-id": "ROADMB", - "supporting-node": [ - { - "network-ref": "clli-network", - "node-ref": "NodeB" - } - ], - "org-openroadm-network:node-type": "ROADM", - "org-openroadm-network:vendor": "vendorA", - "org-openroadm-network:ip": "127.0.0.12", - "org-openroadm-network:model": "2" - }, - { - "node-id": "ROADMC", - "supporting-node": [ - { - "network-ref": "clli-network", - "node-ref": "NodeC" - } - ], - "org-openroadm-network:node-type": "ROADM", - "org-openroadm-network:vendor": "vendorA", - "org-openroadm-network:ip": "127.0.0.13", - "org-openroadm-network:model": "2" - }, - { - "node-id": "XPDRB", - "supporting-node": [ - { - "network-ref": "clli-network", - "node-ref": "NodeB" - } - ], - "org-openroadm-network:node-type": "XPONDER", - "org-openroadm-network:vendor": "vendorA", - "org-openroadm-network:ip": "127.0.0.14", - "org-openroadm-network:model": "1" + response = test_utils.rawput_request(test_utils.URL_CONFIG_ORDM_NET, self.topo_ordnet_data) + self.assertEqual(response.status_code, requests.codes.ok) + time.sleep(3) + + def test_03_connect_openroadmTopology(self): + response = test_utils.rawput_request(test_utils.URL_CONFIG_ORDM_TOPO, self.topo_ordtopo_data) + self.assertEqual(response.status_code, requests.codes.ok) + time.sleep(3) + + # Path computed by PCE is feasible according to Gnpy + def test_04_path_computation_FeasibleWithPCE(self): + url = "{}/operations/transportpce-pce:path-computation-request" + data = { + "input": { + "service-name": "service-1", + "resource-reserve": "true", + "pce-metric": "hop-count", + "service-handler-header": { + "request-id": "request-1" }, - { - "node-id": "ROADMA", - "supporting-node": [ - { - "network-ref": "clli-network", - "node-ref": "NodeA" - } - ], - "org-openroadm-network:node-type": "ROADM", - "org-openroadm-network:vendor": "vendorA", - "org-openroadm-network:ip": "127.0.0.11", - "org-openroadm-network:model": "2" + "service-a-end": { + "node-id": "XPONDER-1", + "service-rate": "100", + "service-format": "Ethernet", + "clli": "Node1" }, - { - "node-id": "XPDRA", - "supporting-node": [ - { - "network-ref": "clli-network", - "node-ref": "NodeA" - } - ], - "org-openroadm-network:node-type": "XPONDER", - "org-openroadm-network:vendor": "vendorA", - "org-openroadm-network:ip": "127.0.0.10", - "org-openroadm-network:model": "1" + "service-z-end": { + "node-id": "XPONDER-5", + "service-rate": "100", + "service-format": "Ethernet", + "clli": "Node5" } - ] - }] + } } - headers = {'content-type': 'application/json'} - response = requests.request( - "PUT", url, data=json.dumps(data), headers=headers, - auth=('admin', 'admin')) + response = test_utils.post_request(url, data) self.assertEqual(response.status_code, requests.codes.ok) - time.sleep(3) + res = response.json() + self.assertEqual(res['output']['configuration-response-common'][ + 'response-code'], '200') + self.assertEqual(res['output']['configuration-response-common'][ + 'response-message'], + 'Path is calculated by PCE') + self.assertEqual(res['output']['gnpy-response'][0]['path-dir'], + 'A-to-Z') + self.assertEqual(res['output']['gnpy-response'][0]['feasibility'], True) + self.assertEqual(res['output']['gnpy-response'][1]['path-dir'], + 'Z-to-A') + self.assertEqual(res['output']['gnpy-response'][1]['feasibility'], True) + time.sleep(5) - def test_03_connect_openroadmTopology(self): - #Config ROADMA - url = ("{}/config/ietf-network:networks/network/openroadm-topology" - .format(self.restconf_baseurl)) - data = {"network": [{ - "network-id": "openroadm-topology", - "node": [ - { - "node-id": "XPDRA-XPDR1", - "org-openroadm-network-topology:node-type": "XPONDER", - "ietf-network-topology:termination-point": [ - { - "tp-id": "XPDR1-CLIENT2", - "org-openroadm-network-topology:xpdr-client-attributes": { - "tail-equipment-id": "XPDR1-NETWORK2" - }, - "org-openroadm-network-topology:tp-type": "XPONDER-CLIENT" - }, - { - "tp-id": "XPDR1-CLIENT1", - "org-openroadm-network-topology:xpdr-client-attributes": { - "tail-equipment-id": "XPDR1-NETWORK1" - }, - "org-openroadm-network-topology:tp-type": "XPONDER-CLIENT" - }, - { - "tp-id": "XPDR1-NETWORK2", - "org-openroadm-network-topology:xpdr-client-attributes": { - "tail-equipment-id": "XPDR1-NETWORK1" - }, - "org-openroadm-network-topology:tp-type": "XPONDER-NETWORK", - "org-openroadm-network-topology:xpdr-network-attributes": { - "tail-equipment-id": "XPDR1-CLIENT2" - } - }, - { - "tp-id": "XPDR1-NETWORK1", - "org-openroadm-network-topology:xpdr-client-attributes": { - "tail-equipment-id": "XPDR1-NETWORK1" - }, - "org-openroadm-network-topology:tp-type": "XPONDER-NETWORK", - "org-openroadm-network-topology:xpdr-network-attributes": { - "tail-equipment-id": "XPDR1-CLIENT1" - } - } - ], - "supporting-node": [ - { - "network-ref": "openroadm-network", - "node-ref": "XPDRA" - } - ] + # Path computed by PCE is not feasible by GNPy and GNPy cannot find + # another one (low SNR) + def test_05_path_computation_FoundByPCE_NotFeasibleByGnpy(self): + url = "{}/operations/transportpce-pce:path-computation-request" + data = { + "input": { + "service-name": "service-2", + "resource-reserve": "true", + "pce-metric": "hop-count", + "service-handler-header": { + "request-id": "request-2" }, - { - "node-id": "ROADMC-DEG2", - "org-openroadm-network-topology:degree-attributes": { - "degree-number": 2, - "available-wavelengths": [ - { - "index": 94 - }, - { - "index": 93 - }, - { - "index": 96 - }, - { - "index": 95 - }, - { - "index": 42 - }, - { - "index": 41 - }, - { - "index": 44 - }, - { - "index": 43 - }, - { - "index": 38 - }, - { - "index": 37 - }, - { - "index": 40 - }, - { - "index": 39 - }, - { - "index": 34 - }, - { - "index": 33 - }, - { - "index": 36 - }, - { - "index": 35 - }, - { - "index": 30 - }, - { - "index": 29 - }, - { - "index": 32 - }, - { - "index": 31 - }, - { - "index": 58 - }, - { - "index": 57 - }, - { - "index": 60 - }, - { - "index": 59 - }, - { - "index": 54 - }, - { - "index": 53 - }, - { - "index": 56 - }, - { - "index": 55 - }, - { - "index": 50 - }, - { - "index": 49 - }, - { - "index": 52 - }, - { - "index": 51 - }, - { - "index": 46 - }, - { - "index": 45 - }, - { - "index": 48 - }, - { - "index": 47 - }, - { - "index": 74 - }, - { - "index": 73 - }, - { - "index": 76 - }, - { - "index": 75 - }, - { - "index": 70 - }, - { - "index": 69 - }, - { - "index": 72 - }, - { - "index": 71 - }, - { - "index": 66 - }, - { - "index": 65 - }, - { - "index": 68 - }, - { - "index": 67 - }, - { - "index": 62 - }, - { - "index": 61 - }, - { - "index": 64 - }, - { - "index": 63 - }, - { - "index": 90 - }, - { - "index": 89 - }, - { - "index": 92 - }, - { - "index": 91 - }, - { - "index": 86 - }, - { - "index": 85 - }, - { - "index": 88 - }, - { - "index": 87 - }, - { - "index": 82 - }, - { - "index": 81 - }, - { - "index": 84 - }, - { - "index": 83 - }, - { - "index": 78 - }, - { - "index": 77 - }, - { - "index": 80 - }, - { - "index": 79 - }, - { - "index": 10 - }, - { - "index": 9 - }, - { - "index": 12 - }, - { - "index": 11 - }, - { - "index": 6 - }, - { - "index": 5 - }, - { - "index": 8 - }, - { - "index": 7 - }, - { - "index": 2 - }, - { - "index": 1 - }, + "service-a-end": { + "node-id": "XPONDER-1", + "service-rate": "100", + "service-format": "Ethernet", + "clli": "Node1" + }, + "service-z-end": { + "node-id": "XPONDER-5", + "service-rate": "100", + "service-format": "Ethernet", + "clli": "Node5" + }, + "hard-constraints": { + "include_": { + "ordered-hops": [ { - "index": 4 + "hop-number": "0", + "hop-type": { + "node-id": "OpenROADM-2" + } }, { - "index": 3 + "hop-number": "1", + "hop-type": { + "node-id": "OpenROADM-3" + } }, { - "index": 26 - }, + "hop-number": "2", + "hop-type": { + "node-id": "OpenROADM-4" + } + } + ] + } + } + } + } + response = test_utils.post_request(url, data) + self.assertEqual(response.status_code, requests.codes.ok) + res = response.json() + self.assertEqual(res['output']['configuration-response-common'][ + 'response-code'], '500') + self.assertEqual(res['output']['configuration-response-common'][ + 'response-message'], + 'No path available by PCE and GNPy ') + self.assertEqual(res['output']['gnpy-response'][0]['path-dir'], + 'A-to-Z') + self.assertEqual(res['output']['gnpy-response'][0]['feasibility'], + False) + self.assertEqual(res['output']['gnpy-response'][1]['path-dir'], + 'Z-to-A') + self.assertEqual(res['output']['gnpy-response'][1]['feasibility'], + False) + time.sleep(5) + + # #PCE cannot find a path while GNPy finds a feasible one + def test_06_path_computation_NotFoundByPCE_FoundByGNPy(self): + url = "{}/operations/transportpce-pce:path-computation-request" + data = { + "input": { + "service-name": "service-3", + "resource-reserve": "true", + "pce-metric": "hop-count", + "service-handler-header": { + "request-id": "request-3" + }, + "service-a-end": { + "node-id": "XPONDER-1", + "service-rate": "100", + "service-format": "Ethernet", + "clli": "Node1" + }, + "service-z-end": { + "node-id": "XPONDER-4", + "service-rate": "100", + "service-format": "Ethernet", + "clli": "Node5" + }, + "hard-constraints": { + "include_": { + "ordered-hops": [ { - "index": 25 + "hop-number": "0", + "hop-type": { + "node-id": "OpenROADM-2" + } }, { - "index": 28 - }, + "hop-number": "1", + "hop-type": { + "node-id": "OpenROADM-3" + } + } + ] + } + } + } + } + response = test_utils.post_request(url, data) + self.assertEqual(response.status_code, requests.codes.ok) + res = response.json() + self.assertEqual(res['output']['configuration-response-common'][ + 'response-code'], '200') + self.assertEqual(res['output']['configuration-response-common'][ + 'response-message'], + 'Path is calculated by GNPy') + self.assertEqual(res['output']['gnpy-response'][0]['path-dir'], + 'A-to-Z') + self.assertEqual(res['output']['gnpy-response'][0]['feasibility'], True) + self.assertEqual(res['output']['gnpy-response'][1]['path-dir'], + 'Z-to-A') + self.assertEqual(res['output']['gnpy-response'][1]['feasibility'], True) + time.sleep(5) + + # Not found path by PCE and GNPy cannot find another one + def test_07_path_computation_FoundByPCE_NotFeasibleByGnpy(self): + url = "{}/operations/transportpce-pce:path-computation-request" + data = { + "input": { + "service-name": "service-4", + "resource-reserve": "true", + "pce-metric": "hop-count", + "service-handler-header": { + "request-id": "request-4" + }, + "service-a-end": { + "node-id": "XPONDER-1", + "service-rate": "100", + "service-format": "Ethernet", + "clli": "Node1" + }, + "service-z-end": { + "node-id": "XPONDER-4", + "service-rate": "100", + "service-format": "Ethernet", + "clli": "Node5" + }, + "hard-constraints": { + "include_": { + "ordered-hops": [ { - "index": 27 + "hop-number": "0", + "hop-type": { + "node-id": "OpenROADM-2" + } }, { - "index": 22 + "hop-number": "1", + "hop-type": { + "node-id": "OpenROADM-3" + } }, { - "index": 21 + "hop-number": "2", + "hop-type": { + "node-id": "OpenROADM-4" + } }, { - "index": 24 - }, - { - "index": 23 - }, - { - "index": 18 - }, - { - "index": 17 - }, - { - "index": 20 - }, - { - "index": 19 - }, - { - "index": 14 - }, - { - "index": 13 - }, - { - "index": 16 - }, - { - "index": 15 - } - ] - }, - "org-openroadm-network-topology:node-type": "DEGREE", - "ietf-network-topology:termination-point": [ - { - "tp-id": "DEG2-CTP-TXRX", - "org-openroadm-network-topology:tp-type": "DEGREE-TXRX-CTP" - }, - { - "tp-id": "DEG2-TTP-TXRX", - "org-openroadm-network-topology:tp-type": "DEGREE-TXRX-TTP" - } - ], - "supporting-node": [ - { - "network-ref": "openroadm-network", - "node-ref": "ROADMC" - } - ] - }, - { - "node-id": "ROADMC-SRG1", - "org-openroadm-network-topology:srg-attributes": { - "available-wavelengths": [ - { - "index": 94 - }, - { - "index": 93 - }, - { - "index": 96 - }, - { - "index": 95 - }, - { - "index": 42 - }, - { - "index": 41 - }, - { - "index": 44 - }, - { - "index": 43 - }, - { - "index": 38 - }, - { - "index": 37 - }, - { - "index": 40 - }, - { - "index": 39 - }, - { - "index": 34 - }, - { - "index": 33 - }, - { - "index": 36 - }, - { - "index": 35 - }, - { - "index": 30 - }, - { - "index": 29 - }, - { - "index": 32 - }, - { - "index": 31 - }, - { - "index": 58 - }, - { - "index": 57 - }, - { - "index": 60 - }, - { - "index": 59 - }, - { - "index": 54 - }, - { - "index": 53 - }, - { - "index": 56 - }, - { - "index": 55 - }, - { - "index": 50 - }, - { - "index": 49 - }, - { - "index": 52 - }, - { - "index": 51 - }, - { - "index": 46 - }, - { - "index": 45 - }, - { - "index": 48 - }, - { - "index": 47 - }, - { - "index": 74 - }, - { - "index": 73 - }, - { - "index": 76 - }, - { - "index": 75 - }, - { - "index": 70 - }, - { - "index": 69 - }, - { - "index": 72 - }, - { - "index": 71 - }, - { - "index": 66 - }, - { - "index": 65 - }, - { - "index": 68 - }, - { - "index": 67 - }, - { - "index": 62 - }, - { - "index": 61 - }, - { - "index": 64 - }, - { - "index": 63 - }, - { - "index": 90 - }, - { - "index": 89 - }, - { - "index": 92 - }, - { - "index": 91 - }, - { - "index": 86 - }, - { - "index": 85 - }, - { - "index": 88 - }, - { - "index": 87 - }, - { - "index": 82 - }, - { - "index": 81 - }, - { - "index": 84 - }, - { - "index": 83 - }, - { - "index": 78 - }, - { - "index": 77 - }, - { - "index": 80 - }, - { - "index": 79 - }, - { - "index": 10 - }, - { - "index": 9 - }, - { - "index": 12 - }, - { - "index": 11 - }, - { - "index": 6 - }, - { - "index": 5 - }, - { - "index": 8 - }, - { - "index": 7 - }, - { - "index": 2 - }, - { - "index": 1 - }, - { - "index": 4 - }, - { - "index": 3 - }, - { - "index": 26 - }, - { - "index": 25 - }, - { - "index": 28 - }, - { - "index": 27 - }, - { - "index": 22 - }, - { - "index": 21 - }, - { - "index": 24 - }, - { - "index": 23 - }, - { - "index": 18 - }, - { - "index": 17 - }, - { - "index": 20 - }, - { - "index": 19 - }, - { - "index": 14 - }, - { - "index": 13 - }, - { - "index": 16 - }, - { - "index": 15 - } - ] - }, - "org-openroadm-network-topology:node-type": "SRG", - "ietf-network-topology:termination-point": [ - { - "tp-id": "SRG1-PP16-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP10-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP3-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP6-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP9-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP1-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP13-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP4-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP7-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP11-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP15-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP8-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-CP-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-CP" - }, - { - "tp-id": "SRG1-PP12-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP14-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP2-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP5-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - } - ], - "supporting-node": [ - { - "network-ref": "openroadm-network", - "node-ref": "ROADMC" - } - ] - }, - { - "node-id": "ROADMA-DEG1", - "org-openroadm-network-topology:degree-attributes": { - "degree-number": 1, - "available-wavelengths": [ - { - "index": 94 - }, - { - "index": 93 - }, - { - "index": 96 - }, - { - "index": 95 - }, - { - "index": 42 - }, - { - "index": 41 - }, - { - "index": 44 - }, - { - "index": 43 - }, - { - "index": 38 - }, - { - "index": 37 - }, - { - "index": 40 - }, - { - "index": 39 - }, - { - "index": 34 - }, - { - "index": 33 - }, - { - "index": 36 - }, - { - "index": 35 - }, - { - "index": 30 - }, - { - "index": 29 - }, - { - "index": 32 - }, - { - "index": 31 - }, - { - "index": 58 - }, - { - "index": 57 - }, - { - "index": 60 - }, - { - "index": 59 - }, - { - "index": 54 - }, - { - "index": 53 - }, - { - "index": 56 - }, - { - "index": 55 - }, - { - "index": 50 - }, - { - "index": 49 - }, - { - "index": 52 - }, - { - "index": 51 - }, - { - "index": 46 - }, - { - "index": 45 - }, - { - "index": 48 - }, - { - "index": 47 - }, - { - "index": 74 - }, - { - "index": 73 - }, - { - "index": 76 - }, - { - "index": 75 - }, - { - "index": 70 - }, - { - "index": 69 - }, - { - "index": 72 - }, - { - "index": 71 - }, - { - "index": 66 - }, - { - "index": 65 - }, - { - "index": 68 - }, - { - "index": 67 - }, - { - "index": 62 - }, - { - "index": 61 - }, - { - "index": 64 - }, - { - "index": 63 - }, - { - "index": 90 - }, - { - "index": 89 - }, - { - "index": 92 - }, - { - "index": 91 - }, - { - "index": 86 - }, - { - "index": 85 - }, - { - "index": 88 - }, - { - "index": 87 - }, - { - "index": 82 - }, - { - "index": 81 - }, - { - "index": 84 - }, - { - "index": 83 - }, - { - "index": 78 - }, - { - "index": 77 - }, - { - "index": 80 - }, - { - "index": 79 - }, - { - "index": 10 - }, - { - "index": 9 - }, - { - "index": 12 - }, - { - "index": 11 - }, - { - "index": 6 - }, - { - "index": 5 - }, - { - "index": 8 - }, - { - "index": 7 - }, - { - "index": 2 - }, - { - "index": 1 - }, - { - "index": 4 - }, - { - "index": 3 - }, - { - "index": 26 - }, - { - "index": 25 - }, - { - "index": 28 - }, - { - "index": 27 - }, - { - "index": 22 - }, - { - "index": 21 - }, - { - "index": 24 - }, - { - "index": 23 - }, - { - "index": 18 - }, - { - "index": 17 - }, - { - "index": 20 - }, - { - "index": 19 - }, - { - "index": 14 - }, - { - "index": 13 - }, - { - "index": 16 - }, - { - "index": 15 - } - ] - }, - "org-openroadm-network-topology:node-type": "DEGREE", - "ietf-network-topology:termination-point": [ - { - "tp-id": "DEG1-TTP-TXRX", - "org-openroadm-network-topology:tp-type": "DEGREE-TXRX-TTP" - }, - { - "tp-id": "DEG1-CTP-TXRX", - "org-openroadm-network-topology:tp-type": "DEGREE-TXRX-CTP" - } - ], - "supporting-node": [ - { - "network-ref": "openroadm-network", - "node-ref": "ROADMA" - } - ] - }, - { - "node-id": "ROADMA-DEG2", - "org-openroadm-network-topology:degree-attributes": { - "degree-number": 2, - "available-wavelengths": [ - { - "index": 94 - }, - { - "index": 93 - }, - { - "index": 96 - }, - { - "index": 95 - }, - { - "index": 42 - }, - { - "index": 41 - }, - { - "index": 44 - }, - { - "index": 43 - }, - { - "index": 38 - }, - { - "index": 37 - }, - { - "index": 40 - }, - { - "index": 39 - }, - { - "index": 34 - }, - { - "index": 33 - }, - { - "index": 36 - }, - { - "index": 35 - }, - { - "index": 30 - }, - { - "index": 29 - }, - { - "index": 32 - }, - { - "index": 31 - }, - { - "index": 58 - }, - { - "index": 57 - }, - { - "index": 60 - }, - { - "index": 59 - }, - { - "index": 54 - }, - { - "index": 53 - }, - { - "index": 56 - }, - { - "index": 55 - }, - { - "index": 50 - }, - { - "index": 49 - }, - { - "index": 52 - }, - { - "index": 51 - }, - { - "index": 46 - }, - { - "index": 45 - }, - { - "index": 48 - }, - { - "index": 47 - }, - { - "index": 74 - }, - { - "index": 73 - }, - { - "index": 76 - }, - { - "index": 75 - }, - { - "index": 70 - }, - { - "index": 69 - }, - { - "index": 72 - }, - { - "index": 71 - }, - { - "index": 66 - }, - { - "index": 65 - }, - { - "index": 68 - }, - { - "index": 67 - }, - { - "index": 62 - }, - { - "index": 61 - }, - { - "index": 64 - }, - { - "index": 63 - }, - { - "index": 90 - }, - { - "index": 89 - }, - { - "index": 92 - }, - { - "index": 91 - }, - { - "index": 86 - }, - { - "index": 85 - }, - { - "index": 88 - }, - { - "index": 87 - }, - { - "index": 82 - }, - { - "index": 81 - }, - { - "index": 84 - }, - { - "index": 83 - }, - { - "index": 78 - }, - { - "index": 77 - }, - { - "index": 80 - }, - { - "index": 79 - }, - { - "index": 10 - }, - { - "index": 9 - }, - { - "index": 12 - }, - { - "index": 11 - }, - { - "index": 6 - }, - { - "index": 5 - }, - { - "index": 8 - }, - { - "index": 7 - }, - { - "index": 2 - }, - { - "index": 1 - }, - { - "index": 4 - }, - { - "index": 3 - }, - { - "index": 26 - }, - { - "index": 25 - }, - { - "index": 28 - }, - { - "index": 27 - }, - { - "index": 22 - }, - { - "index": 21 - }, - { - "index": 24 - }, - { - "index": 23 - }, - { - "index": 18 - }, - { - "index": 17 - }, - { - "index": 20 - }, - { - "index": 19 - }, - { - "index": 14 - }, - { - "index": 13 - }, - { - "index": 16 - }, - { - "index": 15 - } - ] - }, - "org-openroadm-network-topology:node-type": "DEGREE", - "ietf-network-topology:termination-point": [ - { - "tp-id": "DEG2-CTP-TXRX", - "org-openroadm-network-topology:tp-type": "DEGREE-TXRX-CTP" - }, - { - "tp-id": "DEG2-TTP-TXRX", - "org-openroadm-network-topology:tp-type": "DEGREE-TXRX-TTP" - } - ], - "supporting-node": [ - { - "network-ref": "openroadm-network", - "node-ref": "ROADMA" - } - ] - }, - { - "node-id": "ROADMB-SRG1", - "org-openroadm-network-topology:srg-attributes": { - "available-wavelengths": [ - { - "index": 94 - }, - { - "index": 93 - }, - { - "index": 96 - }, - { - "index": 95 - }, - { - "index": 42 - }, - { - "index": 41 - }, - { - "index": 44 - }, - { - "index": 43 - }, - { - "index": 38 - }, - { - "index": 37 - }, - { - "index": 40 - }, - { - "index": 39 - }, - { - "index": 34 - }, - { - "index": 33 - }, - { - "index": 36 - }, - { - "index": 35 - }, - { - "index": 30 - }, - { - "index": 29 - }, - { - "index": 32 - }, - { - "index": 31 - }, - { - "index": 58 - }, - { - "index": 57 - }, - { - "index": 60 - }, - { - "index": 59 - }, - { - "index": 54 - }, - { - "index": 53 - }, - { - "index": 56 - }, - { - "index": 55 - }, - { - "index": 50 - }, - { - "index": 49 - }, - { - "index": 52 - }, - { - "index": 51 - }, - { - "index": 46 - }, - { - "index": 45 - }, - { - "index": 48 - }, - { - "index": 47 - }, - { - "index": 74 - }, - { - "index": 73 - }, - { - "index": 76 - }, - { - "index": 75 - }, - { - "index": 70 - }, - { - "index": 69 - }, - { - "index": 72 - }, - { - "index": 71 - }, - { - "index": 66 - }, - { - "index": 65 - }, - { - "index": 68 - }, - { - "index": 67 - }, - { - "index": 62 - }, - { - "index": 61 - }, - { - "index": 64 - }, - { - "index": 63 - }, - { - "index": 90 - }, - { - "index": 89 - }, - { - "index": 92 - }, - { - "index": 91 - }, - { - "index": 86 - }, - { - "index": 85 - }, - { - "index": 88 - }, - { - "index": 87 - }, - { - "index": 82 - }, - { - "index": 81 - }, - { - "index": 84 - }, - { - "index": 83 - }, - { - "index": 78 - }, - { - "index": 77 - }, - { - "index": 80 - }, - { - "index": 79 - }, - { - "index": 10 - }, - { - "index": 9 - }, - { - "index": 12 - }, - { - "index": 11 - }, - { - "index": 6 - }, - { - "index": 5 - }, - { - "index": 8 - }, - { - "index": 7 - }, - { - "index": 2 - }, - { - "index": 1 - }, - { - "index": 4 - }, - { - "index": 3 - }, - { - "index": 26 - }, - { - "index": 25 - }, - { - "index": 28 - }, - { - "index": 27 - }, - { - "index": 22 - }, - { - "index": 21 - }, - { - "index": 24 - }, - { - "index": 23 - }, - { - "index": 18 - }, - { - "index": 17 - }, - { - "index": 20 - }, - { - "index": 19 - }, - { - "index": 14 - }, - { - "index": 13 - }, - { - "index": 16 - }, - { - "index": 15 - } - ] - }, - "org-openroadm-network-topology:node-type": "SRG", - "ietf-network-topology:termination-point": [ - { - "tp-id": "SRG1-PP16-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP10-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP3-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP6-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP9-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP1-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP13-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP4-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP7-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP11-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP15-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP8-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-CP-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-CP" - }, - { - "tp-id": "SRG1-PP12-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP14-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP2-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP5-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - } - ], - "supporting-node": [ - { - "network-ref": "openroadm-network", - "node-ref": "ROADMB" - } - ] - }, - { - "node-id": "ROADMC-DEG1", - "org-openroadm-network-topology:degree-attributes": { - "degree-number": 1, - "available-wavelengths": [ - { - "index": 94 - }, - { - "index": 93 - }, - { - "index": 96 - }, - { - "index": 95 - }, - { - "index": 42 - }, - { - "index": 41 - }, - { - "index": 44 - }, - { - "index": 43 - }, - { - "index": 38 - }, - { - "index": 37 - }, - { - "index": 40 - }, - { - "index": 39 - }, - { - "index": 34 - }, - { - "index": 33 - }, - { - "index": 36 - }, - { - "index": 35 - }, - { - "index": 30 - }, - { - "index": 29 - }, - { - "index": 32 - }, - { - "index": 31 - }, - { - "index": 58 - }, - { - "index": 57 - }, - { - "index": 60 - }, - { - "index": 59 - }, - { - "index": 54 - }, - { - "index": 53 - }, - { - "index": 56 - }, - { - "index": 55 - }, - { - "index": 50 - }, - { - "index": 49 - }, - { - "index": 52 - }, - { - "index": 51 - }, - { - "index": 46 - }, - { - "index": 45 - }, - { - "index": 48 - }, - { - "index": 47 - }, - { - "index": 74 - }, - { - "index": 73 - }, - { - "index": 76 - }, - { - "index": 75 - }, - { - "index": 70 - }, - { - "index": 69 - }, - { - "index": 72 - }, - { - "index": 71 - }, - { - "index": 66 - }, - { - "index": 65 - }, - { - "index": 68 - }, - { - "index": 67 - }, - { - "index": 62 - }, - { - "index": 61 - }, - { - "index": 64 - }, - { - "index": 63 - }, - { - "index": 90 - }, - { - "index": 89 - }, - { - "index": 92 - }, - { - "index": 91 - }, - { - "index": 86 - }, - { - "index": 85 - }, - { - "index": 88 - }, - { - "index": 87 - }, - { - "index": 82 - }, - { - "index": 81 - }, - { - "index": 84 - }, - { - "index": 83 - }, - { - "index": 78 - }, - { - "index": 77 - }, - { - "index": 80 - }, - { - "index": 79 - }, - { - "index": 10 - }, - { - "index": 9 - }, - { - "index": 12 - }, - { - "index": 11 - }, - { - "index": 6 - }, - { - "index": 5 - }, - { - "index": 8 - }, - { - "index": 7 - }, - { - "index": 2 - }, - { - "index": 1 - }, - { - "index": 4 - }, - { - "index": 3 - }, - { - "index": 26 - }, - { - "index": 25 - }, - { - "index": 28 - }, - { - "index": 27 - }, - { - "index": 22 - }, - { - "index": 21 - }, - { - "index": 24 - }, - { - "index": 23 - }, - { - "index": 18 - }, - { - "index": 17 - }, - { - "index": 20 - }, - { - "index": 19 - }, - { - "index": 14 - }, - { - "index": 13 - }, - { - "index": 16 - }, - { - "index": 15 - } - ] - }, - "org-openroadm-network-topology:node-type": "DEGREE", - "ietf-network-topology:termination-point": [ - { - "tp-id": "DEG1-TTP-TXRX", - "org-openroadm-network-topology:tp-type": "DEGREE-TXRX-TTP" - }, - { - "tp-id": "DEG1-CTP-TXRX", - "org-openroadm-network-topology:tp-type": "DEGREE-TXRX-CTP" - } - ], - "supporting-node": [ - { - "network-ref": "openroadm-network", - "node-ref": "ROADMC" - } - ] - }, - { - "node-id": "XPDRB-XPDR1", - "org-openroadm-network-topology:node-type": "XPONDER", - "ietf-network-topology:termination-point": [ - { - "tp-id": "XPDR1-CLIENT2", - "org-openroadm-network-topology:xpdr-client-attributes": { - "tail-equipment-id": "XPDR1-NETWORK2" - }, - "org-openroadm-network-topology:tp-type": "XPONDER-CLIENT" - }, - { - "tp-id": "XPDR1-CLIENT1", - "org-openroadm-network-topology:xpdr-client-attributes": { - "tail-equipment-id": "XPDR1-NETWORK1" - }, - "org-openroadm-network-topology:tp-type": "XPONDER-CLIENT" - }, - { - "tp-id": "XPDR1-NETWORK2", - "org-openroadm-network-topology:xpdr-client-attributes": { - "tail-equipment-id": "XPDR1-NETWORK1" - }, - "org-openroadm-network-topology:tp-type": "XPONDER-NETWORK", - "org-openroadm-network-topology:xpdr-network-attributes": { - "tail-equipment-id": "XPDR1-CLIENT2" - } - }, - { - "tp-id": "XPDR1-NETWORK1", - "org-openroadm-network-topology:xpdr-client-attributes": { - "tail-equipment-id": "XPDR1-NETWORK1" - }, - "org-openroadm-network-topology:tp-type": "XPONDER-NETWORK", - "org-openroadm-network-topology:xpdr-network-attributes": { - "tail-equipment-id": "XPDR1-CLIENT1" - } - } - ], - "supporting-node": [ - { - "network-ref": "openroadm-network", - "node-ref": "XPDRB" - } - ] - }, - { - "node-id": "ROADMB-DEG1", - "org-openroadm-network-topology:degree-attributes": { - "degree-number": 1, - "available-wavelengths": [ - { - "index": 94 - }, - { - "index": 93 - }, - { - "index": 96 - }, - { - "index": 95 - }, - { - "index": 42 - }, - { - "index": 41 - }, - { - "index": 44 - }, - { - "index": 43 - }, - { - "index": 38 - }, - { - "index": 37 - }, - { - "index": 40 - }, - { - "index": 39 - }, - { - "index": 34 - }, - { - "index": 33 - }, - { - "index": 36 - }, - { - "index": 35 - }, - { - "index": 30 - }, - { - "index": 29 - }, - { - "index": 32 - }, - { - "index": 31 - }, - { - "index": 58 - }, - { - "index": 57 - }, - { - "index": 60 - }, - { - "index": 59 - }, - { - "index": 54 - }, - { - "index": 53 - }, - { - "index": 56 - }, - { - "index": 55 - }, - { - "index": 50 - }, - { - "index": 49 - }, - { - "index": 52 - }, - { - "index": 51 - }, - { - "index": 46 - }, - { - "index": 45 - }, - { - "index": 48 - }, - { - "index": 47 - }, - { - "index": 74 - }, - { - "index": 73 - }, - { - "index": 76 - }, - { - "index": 75 - }, - { - "index": 70 - }, - { - "index": 69 - }, - { - "index": 72 - }, - { - "index": 71 - }, - { - "index": 66 - }, - { - "index": 65 - }, - { - "index": 68 - }, - { - "index": 67 - }, - { - "index": 62 - }, - { - "index": 61 - }, - { - "index": 64 - }, - { - "index": 63 - }, - { - "index": 90 - }, - { - "index": 89 - }, - { - "index": 92 - }, - { - "index": 91 - }, - { - "index": 86 - }, - { - "index": 85 - }, - { - "index": 88 - }, - { - "index": 87 - }, - { - "index": 82 - }, - { - "index": 81 - }, - { - "index": 84 - }, - { - "index": 83 - }, - { - "index": 78 - }, - { - "index": 77 - }, - { - "index": 80 - }, - { - "index": 79 - }, - { - "index": 10 - }, - { - "index": 9 - }, - { - "index": 12 - }, - { - "index": 11 - }, - { - "index": 6 - }, - { - "index": 5 - }, - { - "index": 8 - }, - { - "index": 7 - }, - { - "index": 2 - }, - { - "index": 1 - }, - { - "index": 4 - }, - { - "index": 3 - }, - { - "index": 26 - }, - { - "index": 25 - }, - { - "index": 28 - }, - { - "index": 27 - }, - { - "index": 22 - }, - { - "index": 21 - }, - { - "index": 24 - }, - { - "index": 23 - }, - { - "index": 18 - }, - { - "index": 17 - }, - { - "index": 20 - }, - { - "index": 19 - }, - { - "index": 14 - }, - { - "index": 13 - }, - { - "index": 16 - }, - { - "index": 15 - } - ] - }, - "org-openroadm-network-topology:node-type": "DEGREE", - "ietf-network-topology:termination-point": [ - { - "tp-id": "DEG1-TTP-TXRX", - "org-openroadm-network-topology:tp-type": "DEGREE-TXRX-TTP" - }, - { - "tp-id": "DEG1-CTP-TXRX", - "org-openroadm-network-topology:tp-type": "DEGREE-TXRX-CTP" - } - ], - "supporting-node": [ - { - "network-ref": "openroadm-network", - "node-ref": "ROADMB" - } - ] - }, - { - "node-id": "ROADMA-SRG1", - "org-openroadm-network-topology:srg-attributes": { - "available-wavelengths": [ - { - "index": 94 - }, - { - "index": 93 - }, - { - "index": 96 - }, - { - "index": 95 - }, - { - "index": 42 - }, - { - "index": 41 - }, - { - "index": 44 - }, - { - "index": 43 - }, - { - "index": 38 - }, - { - "index": 37 - }, - { - "index": 40 - }, - { - "index": 39 - }, - { - "index": 34 - }, - { - "index": 33 - }, - { - "index": 36 - }, - { - "index": 35 - }, - { - "index": 30 - }, - { - "index": 29 - }, - { - "index": 32 - }, - { - "index": 31 - }, - { - "index": 58 - }, - { - "index": 57 - }, - { - "index": 60 - }, - { - "index": 59 - }, - { - "index": 54 - }, - { - "index": 53 - }, - { - "index": 56 - }, - { - "index": 55 - }, - { - "index": 50 - }, - { - "index": 49 - }, - { - "index": 52 - }, - { - "index": 51 - }, - { - "index": 46 - }, - { - "index": 45 - }, - { - "index": 48 - }, - { - "index": 47 - }, - { - "index": 74 - }, - { - "index": 73 - }, - { - "index": 76 - }, - { - "index": 75 - }, - { - "index": 70 - }, - { - "index": 69 - }, - { - "index": 72 - }, - { - "index": 71 - }, - { - "index": 66 - }, - { - "index": 65 - }, - { - "index": 68 - }, - { - "index": 67 - }, - { - "index": 62 - }, - { - "index": 61 - }, - { - "index": 64 - }, - { - "index": 63 - }, - { - "index": 90 - }, - { - "index": 89 - }, - { - "index": 92 - }, - { - "index": 91 - }, - { - "index": 86 - }, - { - "index": 85 - }, - { - "index": 88 - }, - { - "index": 87 - }, - { - "index": 82 - }, - { - "index": 81 - }, - { - "index": 84 - }, - { - "index": 83 - }, - { - "index": 78 - }, - { - "index": 77 - }, - { - "index": 80 - }, - { - "index": 79 - }, - { - "index": 10 - }, - { - "index": 9 - }, - { - "index": 12 - }, - { - "index": 11 - }, - { - "index": 6 - }, - { - "index": 5 - }, - { - "index": 8 - }, - { - "index": 7 - }, - { - "index": 2 - }, - { - "index": 1 - }, - { - "index": 4 - }, - { - "index": 3 - }, - { - "index": 26 - }, - { - "index": 25 - }, - { - "index": 28 - }, - { - "index": 27 - }, - { - "index": 22 - }, - { - "index": 21 - }, - { - "index": 24 - }, - { - "index": 23 - }, - { - "index": 18 - }, - { - "index": 17 - }, - { - "index": 20 - }, - { - "index": 19 - }, - { - "index": 14 - }, - { - "index": 13 - }, - { - "index": 16 - }, - { - "index": 15 - } - ] - }, - "org-openroadm-network-topology:node-type": "SRG", - "ietf-network-topology:termination-point": [ - { - "tp-id": "SRG1-PP16-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP10-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP3-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP6-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP9-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP1-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP13-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP4-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP7-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP11-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP15-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP8-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-CP-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-CP" - }, - { - "tp-id": "SRG1-PP12-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP14-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP2-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - }, - { - "tp-id": "SRG1-PP5-TXRX", - "org-openroadm-network-topology:tp-type": "SRG-TXRX-PP" - } - ], - "supporting-node": [ - { - "network-ref": "openroadm-network", - "node-ref": "ROADMA" - } - ] - }, - { - "node-id": "ROADMB-DEG2", - "org-openroadm-network-topology:degree-attributes": { - "degree-number": 2, - "available-wavelengths": [ - { - "index": 94 - }, - { - "index": 93 - }, - { - "index": 96 - }, - { - "index": 95 - }, - { - "index": 42 - }, - { - "index": 41 - }, - { - "index": 44 - }, - { - "index": 43 - }, - { - "index": 38 - }, - { - "index": 37 - }, - { - "index": 40 - }, - { - "index": 39 - }, - { - "index": 34 - }, - { - "index": 33 - }, - { - "index": 36 - }, - { - "index": 35 - }, - { - "index": 30 - }, - { - "index": 29 - }, - { - "index": 32 - }, - { - "index": 31 - }, - { - "index": 58 - }, - { - "index": 57 - }, - { - "index": 60 - }, - { - "index": 59 - }, - { - "index": 54 - }, - { - "index": 53 - }, - { - "index": 56 - }, - { - "index": 55 - }, - { - "index": 50 - }, - { - "index": 49 - }, - { - "index": 52 - }, - { - "index": 51 - }, - { - "index": 46 - }, - { - "index": 45 - }, - { - "index": 48 - }, - { - "index": 47 - }, - { - "index": 74 - }, - { - "index": 73 - }, - { - "index": 76 - }, - { - "index": 75 - }, - { - "index": 70 - }, - { - "index": 69 - }, - { - "index": 72 - }, - { - "index": 71 - }, - { - "index": 66 - }, - { - "index": 65 - }, - { - "index": 68 - }, - { - "index": 67 - }, - { - "index": 62 - }, - { - "index": 61 - }, - { - "index": 64 - }, - { - "index": 63 - }, - { - "index": 90 - }, - { - "index": 89 - }, - { - "index": 92 - }, - { - "index": 91 - }, - { - "index": 86 - }, - { - "index": 85 - }, - { - "index": 88 - }, - { - "index": 87 - }, - { - "index": 82 - }, - { - "index": 81 - }, - { - "index": 84 - }, - { - "index": 83 - }, - { - "index": 78 - }, - { - "index": 77 - }, - { - "index": 80 - }, - { - "index": 79 - }, - { - "index": 10 - }, - { - "index": 9 - }, - { - "index": 12 - }, - { - "index": 11 - }, - { - "index": 6 - }, - { - "index": 5 - }, - { - "index": 8 - }, - { - "index": 7 - }, - { - "index": 2 - }, - { - "index": 1 - }, - { - "index": 4 - }, - { - "index": 3 - }, - { - "index": 26 - }, - { - "index": 25 - }, - { - "index": 28 - }, - { - "index": 27 - }, - { - "index": 22 - }, - { - "index": 21 - }, - { - "index": 24 - }, - { - "index": 23 - }, - { - "index": 18 - }, - { - "index": 17 - }, - { - "index": 20 - }, - { - "index": 19 - }, - { - "index": 14 - }, - { - "index": 13 - }, - { - "index": 16 - }, - { - "index": 15 + "hop-number": "3", + "hop-type": { + "node-id": "OpenROADM-3" + } } ] - }, - "org-openroadm-network-topology:node-type": "DEGREE", - "ietf-network-topology:termination-point": [ - { - "tp-id": "DEG2-CTP-TXRX", - "org-openroadm-network-topology:tp-type": "DEGREE-TXRX-CTP" - }, - { - "tp-id": "DEG2-TTP-TXRX", - "org-openroadm-network-topology:tp-type": "DEGREE-TXRX-TTP" - } - ], - "supporting-node": [ - { - "network-ref": "openroadm-network", - "node-ref": "ROADMB" - } - ] - } - ], - "network-types": { - "org-openroadm-common-network:openroadm-common-network": {} - }, - "ietf-network-topology:link": [ - { - "link-id": "ROADMA-DEG1-DEG1-CTP-TXRXtoROADMA-SRG1-SRG1-CP-TXRX", - "source": { - "source-node": "ROADMA-DEG1", - "source-tp": "DEG1-CTP-TXRX" - }, - "org-openroadm-network-topology:link-type": "DROP-LINK", - "destination": { - "dest-node": "ROADMA-SRG1", - "dest-tp": "SRG1-CP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMA-SRG1-SRG1-CP-TXRXtoROADMA-DEG1-DEG1-CTP-TXRX" - }, - { - "link-id": "ROADMA-DEG2-DEG2-CTP-TXRXtoROADMA-SRG1-SRG1-CP-TXRX", - "source": { - "source-node": "ROADMA-DEG2", - "source-tp": "DEG2-CTP-TXRX" - }, - "org-openroadm-network-topology:link-type": "DROP-LINK", - "destination": { - "dest-node": "ROADMA-SRG1", - "dest-tp": "SRG1-CP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMA-SRG1-SRG1-CP-TXRXtoROADMA-DEG2-DEG2-CTP-TXRX" - }, - { - "link-id": "ROADMA-DEG1-DEG1-CTP-TXRXtoROADMA-DEG2-DEG2-CTP-TXRX", - "source": { - "source-node": "ROADMA-DEG1", - "source-tp": "DEG1-CTP-TXRX" - }, - "org-openroadm-network-topology:link-type": "EXPRESS-LINK", - "destination": { - "dest-node": "ROADMA-DEG2", - "dest-tp": "DEG2-CTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMA-DEG2-DEG2-CTP-TXRXtoROADMA-DEG1-DEG1-CTP-TXRX" - }, - { - "link-id": "ROADMC-DEG1-DEG1-CTP-TXRXtoROADMC-SRG1-SRG1-CP-TXRX", - "source": { - "source-node": "ROADMC-DEG1", - "source-tp": "DEG1-CTP-TXRX" - }, - "org-openroadm-network-topology:link-type": "DROP-LINK", - "destination": { - "dest-node": "ROADMC-SRG1", - "dest-tp": "SRG1-CP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMC-SRG1-SRG1-CP-TXRXtoROADMC-DEG1-DEG1-CTP-TXRX" - }, - { - "link-id": "ROADMB-DEG1-DEG1-CTP-TXRXtoROADMB-SRG1-SRG1-CP-TXRX", - "source": { - "source-node": "ROADMB-DEG1", - "source-tp": "DEG1-CTP-TXRX" - }, - "org-openroadm-network-topology:link-type": "DROP-LINK", - "destination": { - "dest-node": "ROADMB-SRG1", - "dest-tp": "SRG1-CP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMB-SRG1-SRG1-CP-TXRXtoROADMB-DEG1-DEG1-CTP-TXRX" - }, - { - "link-id": "ROADMB-DEG2-DEG2-CTP-TXRXtoROADMB-SRG1-SRG1-CP-TXRX", - "source": { - "source-node": "ROADMB-DEG2", - "source-tp": "DEG2-CTP-TXRX" - }, - "org-openroadm-network-topology:link-type": "DROP-LINK", - "destination": { - "dest-node": "ROADMB-SRG1", - "dest-tp": "SRG1-CP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMB-SRG1-SRG1-CP-TXRXtoROADMB-DEG2-DEG2-CTP-TXRX" - }, - { - "link-id": "ROADMC-DEG2-DEG2-CTP-TXRXtoROADMC-SRG1-SRG1-CP-TXRX", - "source": { - "source-node": "ROADMC-DEG2", - "source-tp": "DEG2-CTP-TXRX" - }, - "org-openroadm-network-topology:link-type": "DROP-LINK", - "destination": { - "dest-node": "ROADMC-SRG1", - "dest-tp": "SRG1-CP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMC-SRG1-SRG1-CP-TXRXtoROADMC-DEG2-DEG2-CTP-TXRX" - }, - { - "link-id": "ROADMC-DEG1-DEG1-CTP-TXRXtoROADMC-DEG2-DEG2-CTP-TXRX", - "source": { - "source-node": "ROADMC-DEG1", - "source-tp": "DEG1-CTP-TXRX" - }, - "org-openroadm-network-topology:link-type": "EXPRESS-LINK", - "destination": { - "dest-node": "ROADMC-DEG2", - "dest-tp": "DEG2-CTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMC-DEG2-DEG2-CTP-TXRXtoROADMC-DEG1-DEG1-CTP-TXRX" - }, - { - "link-id": "ROADMB-DEG1-DEG1-CTP-TXRXtoROADMB-DEG2-DEG2-CTP-TXRX", - "source": { - "source-node": "ROADMB-DEG1", - "source-tp": "DEG1-CTP-TXRX" - }, - "org-openroadm-network-topology:link-type": "EXPRESS-LINK", - "destination": { - "dest-node": "ROADMB-DEG2", - "dest-tp": "DEG2-CTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMB-DEG2-DEG2-CTP-TXRXtoROADMB-DEG1-DEG1-CTP-TXRX" - }, - { - "link-id": "ROADMA-DEG1-DEG1-TTP-TXRXtoROADMC-DEG2-DEG2-TTP-TXRX", - "source": { - "source-node": "ROADMA-DEG1", - "source-tp": "DEG1-TTP-TXRX" - }, - "org-openroadm-network-topology:OMS-attributes": { - "opposite-link": "ROADMC-DEG2-DEG2-TTP-TXRXtoROADMA-DEG1-DEG1-TTP-TXRX", - "span": { - "spanloss-base": 11.4, - "link-concatenation": [ - { - "SRLG-Id": 0, - "SRLG-length": 100000, - "pmd": 0.5, - "fiber-type": "smf" - } - ], - "spanloss-current": 12, - "engineered-spanloss": 12.2, - "clfi": "fiber1", - "auto-spanloss": "true" - } - }, - "org-openroadm-network-topology:link-type": "ROADM-TO-ROADM", - "destination": { - "dest-node": "ROADMC-DEG2", - "dest-tp": "DEG2-TTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMC-DEG2-DEG2-TTP-TXRXtoROADMA-DEG1-DEG1-TTP-TXRX" - }, - { - "link-id": "XPDRA-XPDR1-XPDR1-NETWORK1toROADMA-SRG1-SRG1-PP1-TXRX", - "source": { - "source-node": "XPDRA-XPDR1", - "source-tp": "XPDR1-NETWORK1" - }, - "org-openroadm-network-topology:opposite-link": "ROADMA-SRG1-SRG1-PP1-TXRXtoXPDRA-XPDR1-XPDR1-NETWORK1", - "org-openroadm-network-topology:link-type": "XPONDER-OUTPUT", - "destination": { - "dest-node": "ROADMA-SRG1", - "dest-tp": "SRG1-PP1-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMA-SRG1-SRG1-PP1-TXRXtoXPDRA-XPDR1-XPDR1-NETWORK1" - }, - { - "link-id": "ROADMC-DEG1-DEG1-TTP-TXRXtoROADMB-DEG2-DEG2-TTP-TXRX", - "source": { - "source-node": "ROADMC-DEG1", - "source-tp": "DEG1-TTP-TXRX" - }, - "org-openroadm-network-topology:OMS-attributes": { - "opposite-link": "ROADMB-DEG2-DEG2-TTP-TXRXtoROADMC-DEG1-DEG1-TTP-TXRX", - "span": { - "spanloss-base": 11.4, - "link-concatenation": [ - { - "SRLG-Id": 0, - "SRLG-length": 100000, - "pmd": 0.5, - "fiber-type": "smf" - } - ], - "spanloss-current": 12, - "engineered-spanloss": 12.2, - "clfi": "fiber2", - "auto-spanloss": "true" - } - }, - "org-openroadm-network-topology:link-type": "ROADM-TO-ROADM", - "destination": { - "dest-node": "ROADMB-DEG2", - "dest-tp": "DEG2-TTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMB-DEG2-DEG2-TTP-TXRXtoROADMC-DEG1-DEG1-TTP-TXRX" - }, - { - "link-id": "ROADMB-DEG1-DEG1-TTP-TXRXtoROADMA-DEG2-DEG2-TTP-TXRX", - "source": { - "source-node": "ROADMB-DEG1", - "source-tp": "DEG1-TTP-TXRX" - }, - "org-openroadm-network-topology:OMS-attributes": { - "opposite-link": "ROADMA-DEG2-DEG2-TTP-TXRXtoROADMB-DEG1-DEG1-TTP-TXRX", - "span": { - "spanloss-base": 11.4, - "link-concatenation": [ - { - "SRLG-Id": 0, - "SRLG-length": 100000, - "pmd": 0.5, - "fiber-type": "smf" - } - ], - "spanloss-current": 12, - "engineered-spanloss": 12.2, - "clfi": "fiber3", - "auto-spanloss": "true" - } - }, - "org-openroadm-network-topology:link-type": "ROADM-TO-ROADM", - "destination": { - "dest-node": "ROADMA-DEG2", - "dest-tp": "DEG2-TTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMA-DEG2-DEG2-TTP-TXRXtoROADMB-DEG1-DEG1-TTP-TXRX" - }, - { - "link-id": "ROADMA-SRG1-SRG1-CP-TXRXtoROADMA-DEG2-DEG2-CTP-TXRX", - "source": { - "source-node": "ROADMA-SRG1", - "source-tp": "SRG1-CP-TXRX" - }, - "org-openroadm-network-topology:link-type": "ADD-LINK", - "destination": { - "dest-node": "ROADMA-DEG2", - "dest-tp": "DEG2-CTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMA-DEG2-DEG2-CTP-TXRXtoROADMA-SRG1-SRG1-CP-TXRX" - }, - { - "link-id": "ROADMA-DEG2-DEG2-CTP-TXRXtoROADMA-DEG1-DEG1-CTP-TXRX", - "source": { - "source-node": "ROADMA-DEG2", - "source-tp": "DEG2-CTP-TXRX" - }, - "org-openroadm-network-topology:link-type": "EXPRESS-LINK", - "destination": { - "dest-node": "ROADMA-DEG1", - "dest-tp": "DEG1-CTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMA-DEG1-DEG1-CTP-TXRXtoROADMA-DEG2-DEG2-CTP-TXRX" - }, - { - "link-id": "XPDRB-XPDR1-XPDR1-NETWORK1toROADMB-SRG1-SRG1-PP1-TXRX", - "source": { - "source-node": "XPDRB-XPDR1", - "source-tp": "XPDR1-NETWORK1" - }, - "org-openroadm-network-topology:opposite-link": "ROADMB-SRG1-SRG1-PP1-TXRXtoXPDRB-XPDR1-XPDR1-NETWORK1", - "org-openroadm-network-topology:link-type": "XPONDER-OUTPUT", - "destination": { - "dest-node": "ROADMB-SRG1", - "dest-tp": "SRG1-PP1-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMB-SRG1-SRG1-PP1-TXRXtoXPDRB-XPDR1-XPDR1-NETWORK1" - }, - { - "link-id": "ROADMA-SRG1-SRG1-CP-TXRXtoROADMA-DEG1-DEG1-CTP-TXRX", - "source": { - "source-node": "ROADMA-SRG1", - "source-tp": "SRG1-CP-TXRX" - }, - "org-openroadm-network-topology:link-type": "ADD-LINK", - "destination": { - "dest-node": "ROADMA-DEG1", - "dest-tp": "DEG1-CTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMA-DEG1-DEG1-CTP-TXRXtoROADMA-SRG1-SRG1-CP-TXRX" - }, - { - "link-id": "ROADMA-SRG1-SRG1-PP1-TXRXtoXPDRA-XPDR1-XPDR1-NETWORK1", - "source": { - "source-node": "ROADMA-SRG1", - "source-tp": "SRG1-PP1-TXRX" - }, - "org-openroadm-network-topology:opposite-link": "XPDRA-XPDR1-XPDR1-NETWORK1toROADMA-SRG1-SRG1-PP1-TXRX", - "org-openroadm-network-topology:link-type": "XPONDER-INPUT", - "destination": { - "dest-node": "XPDRA-XPDR1", - "dest-tp": "XPDR1-NETWORK1" - }, - "org-openroadm-common-network:opposite-link": "XPDRA-XPDR1-XPDR1-NETWORK1toROADMA-SRG1-SRG1-PP1-TXRX" - }, - { - "link-id": "ROADMC-DEG2-DEG2-CTP-TXRXtoROADMC-DEG1-DEG1-CTP-TXRX", - "source": { - "source-node": "ROADMC-DEG2", - "source-tp": "DEG2-CTP-TXRX" - }, - "org-openroadm-network-topology:link-type": "EXPRESS-LINK", - "destination": { - "dest-node": "ROADMC-DEG1", - "dest-tp": "DEG1-CTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMC-DEG1-DEG1-CTP-TXRXtoROADMC-DEG2-DEG2-CTP-TXRX" - }, - { - "link-id": "ROADMB-DEG2-DEG2-TTP-TXRXtoROADMC-DEG1-DEG1-TTP-TXRX", - "source": { - "source-node": "ROADMB-DEG2", - "source-tp": "DEG2-TTP-TXRX" - }, - "org-openroadm-network-topology:OMS-attributes": { - "opposite-link": "ROADMC-DEG1-DEG1-TTP-TXRXtoROADMB-DEG2-DEG2-TTP-TXRX", - "span": { - "spanloss-base": 11.4, - "link-concatenation": [ - { - "SRLG-Id": 0, - "SRLG-length": 100000, - "pmd": 0.5, - "fiber-type": "smf" - } - ], - "spanloss-current": 12, - "engineered-spanloss": 12.2, - "clfi": "fiber4", - "auto-spanloss": "true" - } - }, - "org-openroadm-network-topology:link-type": "ROADM-TO-ROADM", - "destination": { - "dest-node": "ROADMC-DEG1", - "dest-tp": "DEG1-TTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMC-DEG1-DEG1-TTP-TXRXtoROADMB-DEG2-DEG2-TTP-TXRX" - }, - { - "link-id": "ROADMB-DEG2-DEG2-CTP-TXRXtoROADMB-DEG1-DEG1-CTP-TXRX", - "source": { - "source-node": "ROADMB-DEG2", - "source-tp": "DEG2-CTP-TXRX" - }, - "org-openroadm-network-topology:link-type": "EXPRESS-LINK", - "destination": { - "dest-node": "ROADMB-DEG1", - "dest-tp": "DEG1-CTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMB-DEG1-DEG1-CTP-TXRXtoROADMB-DEG2-DEG2-CTP-TXRX" - }, - { - "link-id": "ROADMA-DEG2-DEG2-TTP-TXRXtoROADMB-DEG1-DEG1-TTP-TXRX", - "source": { - "source-node": "ROADMA-DEG2", - "source-tp": "DEG2-TTP-TXRX" - }, - "org-openroadm-network-topology:OMS-attributes": { - "opposite-link": "ROADMB-DEG1-DEG1-TTP-TXRXtoROADMA-DEG2-DEG2-TTP-TXRX", - "span": { - "spanloss-base": 11.4, - "link-concatenation": [ - { - "SRLG-Id": 0, - "SRLG-length": 100000, - "pmd": 0.5, - "fiber-type": "smf" - } - ], - "spanloss-current": 12, - "engineered-spanloss": 12.2, - "clfi": "fiber5", - "auto-spanloss": "true" - } - }, - "org-openroadm-network-topology:link-type": "ROADM-TO-ROADM", - "destination": { - "dest-node": "ROADMB-DEG1", - "dest-tp": "DEG1-TTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMB-DEG1-DEG1-TTP-TXRXtoROADMA-DEG2-DEG2-TTP-TXRX" - }, - { - "link-id": "ROADMC-SRG1-SRG1-CP-TXRXtoROADMC-DEG2-DEG2-CTP-TXRX", - "source": { - "source-node": "ROADMC-SRG1", - "source-tp": "SRG1-CP-TXRX" - }, - "org-openroadm-network-topology:link-type": "ADD-LINK", - "destination": { - "dest-node": "ROADMC-DEG2", - "dest-tp": "DEG2-CTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMC-DEG2-DEG2-CTP-TXRXtoROADMC-SRG1-SRG1-CP-TXRX" - }, - { - "link-id": "ROADMC-DEG2-DEG2-TTP-TXRXtoROADMA-DEG1-DEG1-TTP-TXRX", - "source": { - "source-node": "ROADMC-DEG2", - "source-tp": "DEG2-TTP-TXRX" - }, - "org-openroadm-network-topology:OMS-attributes": { - "opposite-link": "ROADMA-DEG1-DEG1-TTP-TXRXtoROADMC-DEG2-DEG2-TTP-TXRX", - "span": { - "spanloss-base": 11.4, - "link-concatenation": [ - { - "SRLG-Id": 0, - "SRLG-length": 100000, - "pmd": 0.5, - "fiber-type": "smf" - } - ], - "spanloss-current": 12, - "engineered-spanloss": 12.2, - "clfi": "fiber6", - "auto-spanloss": "true" - } - }, - "org-openroadm-network-topology:link-type": "ROADM-TO-ROADM", - "destination": { - "dest-node": "ROADMA-DEG1", - "dest-tp": "DEG1-TTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMA-DEG1-DEG1-TTP-TXRXtoROADMC-DEG2-DEG2-TTP-TXRX" - }, - { - "link-id": "ROADMC-SRG1-SRG1-CP-TXRXtoROADMC-DEG1-DEG1-CTP-TXRX", - "source": { - "source-node": "ROADMC-SRG1", - "source-tp": "SRG1-CP-TXRX" - }, - "org-openroadm-network-topology:link-type": "ADD-LINK", - "destination": { - "dest-node": "ROADMC-DEG1", - "dest-tp": "DEG1-CTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMC-DEG1-DEG1-CTP-TXRXtoROADMC-SRG1-SRG1-CP-TXRX" - }, - { - "link-id": "ROADMB-SRG1-SRG1-CP-TXRXtoROADMB-DEG1-DEG1-CTP-TXRX", - "source": { - "source-node": "ROADMB-SRG1", - "source-tp": "SRG1-CP-TXRX" - }, - "org-openroadm-network-topology:link-type": "ADD-LINK", - "destination": { - "dest-node": "ROADMB-DEG1", - "dest-tp": "DEG1-CTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMB-DEG1-DEG1-CTP-TXRXtoROADMB-SRG1-SRG1-CP-TXRX" - }, - { - "link-id": "ROADMB-SRG1-SRG1-CP-TXRXtoROADMB-DEG2-DEG2-CTP-TXRX", - "source": { - "source-node": "ROADMB-SRG1", - "source-tp": "SRG1-CP-TXRX" - }, - "org-openroadm-network-topology:link-type": "ADD-LINK", - "destination": { - "dest-node": "ROADMB-DEG2", - "dest-tp": "DEG2-CTP-TXRX" - }, - "org-openroadm-common-network:opposite-link": "ROADMB-DEG2-DEG2-CTP-TXRXtoROADMB-SRG1-SRG1-CP-TXRX" - }, - { - "link-id": "ROADMB-SRG1-SRG1-PP1-TXRXtoXPDRB-XPDR1-XPDR1-NETWORK1", - "source": { - "source-node": "ROADMB-SRG1", - "source-tp": "SRG1-PP1-TXRX" - }, - "org-openroadm-network-topology:opposite-link": "XPDRB-XPDR1-XPDR1-NETWORK1toROADMB-SRG1-SRG1-PP1-TXRX", - "org-openroadm-network-topology:link-type": "XPONDER-INPUT", - "destination": { - "dest-node": "XPDRB-XPDR1", - "dest-tp": "XPDR1-NETWORK1" - }, - "org-openroadm-common-network:opposite-link": "XPDRB-XPDR1-XPDR1-NETWORK1toROADMB-SRG1-SRG1-PP1-TXRX" - } - ] - }] - } - headers = {'content-type': 'application/json'} - response = requests.request( - "PUT", url, data=json.dumps(data), headers=headers, - auth=('admin', 'admin')) - self.assertEqual(response.status_code, requests.codes.ok) - time.sleep(3) - - #Test the gnpy - def test_04_path_computation_xpdr_bi(self): - url = ("{}/operations/transportpce-pce:path-computation-request" - .format(self.restconf_baseurl)) - body = {"input": { - "service-name": "service-1", - "resource-reserve": "true", - "pce-metric": "hop-count", - "service-handler-header": { - "request-id": "request-1" - }, - "service-a-end": { - "node-id": "XPDRA", - "service-rate": "100", - "clli": "nodeA" - }, - "service-z-end": { - "node-id": "XPDRB", - "service-rate": "100", - "clli": "nodeB" + } } } } - headers = {'content-type': 'application/json', - "Accept": "application/json"} - response = requests.request( - "POST", url, data=json.dumps(body), headers=headers, - auth=('admin', 'admin')) + response = test_utils.post_request(url, data) self.assertEqual(response.status_code, requests.codes.ok) res = response.json() - self.assertEqual(res['output']['gnpy-response'][0]['path-dir'], 'A-to-Z') - self.assertEqual(res['output']['gnpy-response'][0]['feasibility'],True) - self.assertEqual(res['output']['gnpy-response'][1]['path-dir'], 'Z-to-A') - self.assertEqual(res['output']['gnpy-response'][1]['feasibility'],True) + self.assertEqual(res['output']['configuration-response-common'][ + 'response-code'], '500') + self.assertEqual(res['output']['configuration-response-common'][ + 'response-message'], + 'No path available by PCE and GNPy ') time.sleep(5) - #Disconnect the different topology - def test_05_disconnect_openroadmTopology(self): - url = ("{}/config/ietf-network:networks/network/openroadm-topology" - .format(self.restconf_baseurl)) - data = {} - headers = {'content-type': 'application/json'} - response = requests.request( - "DELETE", url, data=json.dumps(data), headers=headers, - auth=('admin', 'admin')) + # Disconnect the different topologies + def test_08_disconnect_openroadmTopology(self): + response = test_utils.delete_request(test_utils.URL_CONFIG_ORDM_TOPO) self.assertEqual(response.status_code, requests.codes.ok) time.sleep(3) - def test_06_disconnect_openroadmNetwork(self): - #Config ROADMA - url = ("{}/config/ietf-network:networks/network/openroadm-network" - .format(self.restconf_baseurl)) - data = {} - headers = {'content-type': 'application/json'} - response = requests.request( - "DELETE", url, data=json.dumps(data), headers=headers, - auth=('admin', 'admin')) + def test_09_disconnect_openroadmNetwork(self): + response = test_utils.delete_request(test_utils.URL_CONFIG_ORDM_NET) self.assertEqual(response.status_code, requests.codes.ok) time.sleep(3) - def test_07_disconnect_clliNetwork(self): - url = ("{}/config/ietf-network:networks/network/clli-network" - .format(self.restconf_baseurl)) - data = {} - headers = {'content-type': 'application/json'} - response = requests.request( - "DELETE", url, data=json.dumps(data), headers=headers, - auth=('admin', 'admin')) + def test_10_disconnect_clliNetwork(self): + response = test_utils.delete_request(test_utils.URL_CONFIG_CLLI_NET) self.assertEqual(response.status_code, requests.codes.ok) time.sleep(3) + if __name__ == "__main__": - #logging.basicConfig(filename='./transportpce_tests/log/response.log',filemode='w',level=logging.DEBUG) + # logging.basicConfig(filename='./transportpce_tests/log/response.log',filemode='w',level=logging.DEBUG) unittest.main(verbosity=2)