Add new functional PCE test to check bug-772 22/109322/3
authorGilles Thouenon <gilles.thouenon@orange.com>
Fri, 15 Dec 2023 10:10:33 +0000 (11:10 +0100)
committerGilles Thouenon <gilles.thouenon@orange.com>
Fri, 15 Dec 2023 10:48:13 +0000 (11:48 +0100)
- Add a new pce functional test suite dedicated to check pce bugs. Check
the fix of TRNSPRTPCE-772 bug
- Add adequate topo and portmapping json input files

JIRA: TRNSPRTPCE-772
Signed-off-by: Gilles Thouenon <gilles.thouenon@orange.com>
Change-Id: I6f9948865343ca15c238f2185134c7f35ccba374

tests/sample_configs/honeynode-topo-3-RDM.json [new file with mode: 0644]
tests/sample_configs/portmapping-3-RDM-221.json [new file with mode: 0644]
tests/transportpce_tests/pce/test04_pce_bug_fix.py [new file with mode: 0644]

diff --git a/tests/sample_configs/honeynode-topo-3-RDM.json b/tests/sample_configs/honeynode-topo-3-RDM.json
new file mode 100644 (file)
index 0000000..8828e18
--- /dev/null
@@ -0,0 +1,1074 @@
+{
+    "ietf-network:network": [
+        {
+            "network-id": "openroadm-topology",
+            "network-types": {
+                "org-openroadm-common-network:openroadm-common-network": {}
+            },
+            "ietf-network-topology:link": [
+                {
+                    "link-id": "ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-A1-SRG3",
+                        "source-tp": "SRG3-CP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ADD-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG2-CTP-TXRX",
+                        "dest-node": "ROADM-A1-DEG2"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-A1-DEG1",
+                        "source-tp": "DEG1-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "DROP-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "SRG3-CP-TXRX",
+                        "dest-node": "ROADM-A1-SRG3"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-C1-DEG1",
+                        "source-tp": "DEG1-TTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ROADM-TO-ROADM",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG2-TTP-TXRX",
+                        "dest-node": "ROADM-A1-DEG2"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-B1-DEG1-DEG1-CTP-TXRXtoROADM-B1-SRG1-SRG1-CP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-B1-DEG1",
+                        "source-tp": "DEG1-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "DROP-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "SRG1-CP-TXRX",
+                        "dest-node": "ROADM-B1-SRG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-B1-SRG1-SRG1-CP-TXRXtoROADM-B1-DEG1-DEG1-CTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-C1-DEG2",
+                        "source-tp": "DEG2-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "EXPRESS-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG1-CTP-TXRX",
+                        "dest-node": "ROADM-C1-DEG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-C1-DEG2",
+                        "source-tp": "DEG2-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "DROP-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "SRG1-CP-TXRX",
+                        "dest-node": "ROADM-C1-SRG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-A1-DEG1",
+                        "source-tp": "DEG1-TTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ROADM-TO-ROADM",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG1-TTP-TXRX",
+                        "dest-node": "ROADM-B1-DEG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-B1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG1-DEG1-TTP-TXRX",
+                    "org-openroadm-network-topology:OMS-attributes": {
+                        "span": {
+                            "spanloss-current": "12.0",
+                            "auto-spanloss": true,
+                            "spanloss-base": "11.4",
+                            "engineered-spanloss": "12.2",
+                            "link-concatenation": [
+                                {
+                                    "SRLG-Id": 0,
+                                    "SRLG-length": "100000.0",
+                                    "pmd": "0.5",
+                                    "fiber-type": "smf"
+                                }
+                            ]
+                        }
+                    }
+                },
+                {
+                    "link-id": "ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-A1-DEG2",
+                        "source-tp": "DEG2-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "DROP-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "SRG1-CP-TXRX",
+                        "dest-node": "ROADM-A1-SRG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-C1-DEG1",
+                        "source-tp": "DEG1-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "EXPRESS-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG2-CTP-TXRX",
+                        "dest-node": "ROADM-C1-DEG2"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-A1-DEG2",
+                        "source-tp": "DEG2-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "EXPRESS-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG1-CTP-TXRX",
+                        "dest-node": "ROADM-A1-DEG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-A1-SRG1",
+                        "source-tp": "SRG1-CP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ADD-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG1-CTP-TXRX",
+                        "dest-node": "ROADM-A1-DEG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-A1-DEG2",
+                        "source-tp": "DEG2-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "DROP-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "SRG3-CP-TXRX",
+                        "dest-node": "ROADM-A1-SRG3"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-A1-SRG1",
+                        "source-tp": "SRG1-CP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ADD-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG2-CTP-TXRX",
+                        "dest-node": "ROADM-A1-DEG2"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-B1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG1-DEG1-TTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-B1-DEG1",
+                        "source-tp": "DEG1-TTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ROADM-TO-ROADM",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG1-TTP-TXRX",
+                        "dest-node": "ROADM-A1-DEG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX",
+                    "org-openroadm-network-topology:OMS-attributes": {
+                        "span": {
+                            "spanloss-current": "12.0",
+                            "auto-spanloss": true,
+                            "spanloss-base": "11.4",
+                            "engineered-spanloss": "12.2",
+                            "link-concatenation": [
+                                {
+                                    "SRLG-Id": 0,
+                                    "SRLG-length": "100000.0",
+                                    "pmd": "0.5",
+                                    "fiber-type": "smf"
+                                }
+                            ]
+                        }
+                    }
+                },
+                {
+                    "link-id": "ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-C1-SRG1",
+                        "source-tp": "SRG1-CP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ADD-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG2-CTP-TXRX",
+                        "dest-node": "ROADM-C1-DEG2"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-A1-DEG1",
+                        "source-tp": "DEG1-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "DROP-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "SRG1-CP-TXRX",
+                        "dest-node": "ROADM-A1-SRG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-B1-DEG2-DEG2-CTP-TXRXtoROADM-B1-SRG1-SRG1-CP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-B1-DEG2",
+                        "source-tp": "DEG2-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "DROP-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "SRG1-CP-TXRX",
+                        "dest-node": "ROADM-B1-SRG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-B1-SRG1-SRG1-CP-TXRXtoROADM-B1-DEG2-DEG2-CTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-C1-SRG1",
+                        "source-tp": "SRG1-CP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ADD-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG1-CTP-TXRX",
+                        "dest-node": "ROADM-C1-DEG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-B1-DEG2",
+                        "source-tp": "DEG2-TTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ROADM-TO-ROADM",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG2-TTP-TXRX",
+                        "dest-node": "ROADM-C1-DEG2"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-C1-DEG2-DEG2-TTP-TXRXtoROADM-B1-DEG2-DEG2-TTP-TXRX",
+                    "org-openroadm-network-topology:OMS-attributes": {
+                        "span": {
+                            "spanloss-current": "12.0",
+                            "auto-spanloss": true,
+                            "spanloss-base": "11.4",
+                            "engineered-spanloss": "12.2",
+                            "link-concatenation": [
+                                {
+                                    "SRLG-Id": 0,
+                                    "SRLG-length": "100000.0",
+                                    "pmd": "0.5",
+                                    "fiber-type": "smf"
+                                }
+                            ]
+                        }
+                    }
+                },
+                {
+                    "link-id": "ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-A1-DEG1",
+                        "source-tp": "DEG1-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "EXPRESS-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG2-CTP-TXRX",
+                        "dest-node": "ROADM-A1-DEG2"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-A1-DEG2",
+                        "source-tp": "DEG2-TTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ROADM-TO-ROADM",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG1-TTP-TXRX",
+                        "dest-node": "ROADM-C1-DEG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-C1-DEG2-DEG2-TTP-TXRXtoROADM-B1-DEG2-DEG2-TTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-C1-DEG2",
+                        "source-tp": "DEG2-TTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ROADM-TO-ROADM",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG2-TTP-TXRX",
+                        "dest-node": "ROADM-B1-DEG2"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX",
+                    "org-openroadm-network-topology:OMS-attributes": {
+                        "span": {
+                            "spanloss-current": "12.0",
+                            "auto-spanloss": true,
+                            "spanloss-base": "11.4",
+                            "engineered-spanloss": "12.2",
+                            "link-concatenation": [
+                                {
+                                    "SRLG-Id": 0,
+                                    "SRLG-length": "100000.0",
+                                    "pmd": "0.5",
+                                    "fiber-type": "smf"
+                                }
+                            ]
+                        }
+                    }
+                },
+                {
+                    "link-id": "ROADM-B1-SRG1-SRG1-CP-TXRXtoROADM-B1-DEG1-DEG1-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-B1-SRG1",
+                        "source-tp": "SRG1-CP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ADD-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG1-CTP-TXRX",
+                        "dest-node": "ROADM-B1-DEG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-B1-DEG1-DEG1-CTP-TXRXtoROADM-B1-SRG1-SRG1-CP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-C1-DEG1",
+                        "source-tp": "DEG1-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "DROP-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "SRG1-CP-TXRX",
+                        "dest-node": "ROADM-C1-SRG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-B1-DEG2-DEG2-CTP-TXRXtoROADM-B1-DEG1-DEG1-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-B1-DEG2",
+                        "source-tp": "DEG2-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "EXPRESS-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG1-CTP-TXRX",
+                        "dest-node": "ROADM-B1-DEG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-B1-DEG1-DEG1-CTP-TXRXtoROADM-B1-DEG2-DEG2-CTP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-B1-SRG1-SRG1-CP-TXRXtoROADM-B1-DEG2-DEG2-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-B1-SRG1",
+                        "source-tp": "SRG1-CP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ADD-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG2-CTP-TXRX",
+                        "dest-node": "ROADM-B1-DEG2"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-B1-DEG2-DEG2-CTP-TXRXtoROADM-B1-SRG1-SRG1-CP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-A1-SRG3",
+                        "source-tp": "SRG3-CP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "ADD-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG1-CTP-TXRX",
+                        "dest-node": "ROADM-A1-DEG1"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX"
+                },
+                {
+                    "link-id": "ROADM-B1-DEG1-DEG1-CTP-TXRXtoROADM-B1-DEG2-DEG2-CTP-TXRX",
+                    "source": {
+                        "source-node": "ROADM-B1-DEG1",
+                        "source-tp": "DEG1-CTP-TXRX"
+                    },
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:link-type": "EXPRESS-LINK",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "destination": {
+                        "dest-tp": "DEG2-CTP-TXRX",
+                        "dest-node": "ROADM-B1-DEG2"
+                    },
+                    "org-openroadm-common-network:opposite-link": "ROADM-B1-DEG2-DEG2-CTP-TXRXtoROADM-B1-DEG1-DEG1-CTP-TXRX"
+                }
+            ],
+            "node": [
+                {
+                    "node-id": "ROADM-B1-DEG1",
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:node-type": "DEGREE",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "ietf-network-topology:termination-point": [
+                        {
+                            "tp-id": "DEG1-CTP-TXRX",
+                            "org-openroadm-common-network:tp-type": "DEGREE-TXRX-CTP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "DEG1-TTP-TXRX",
+                            "org-openroadm-common-network:tp-type": "DEGREE-TXRX-TTP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        }
+                    ],
+                    "supporting-node": [
+                        {
+                            "network-ref": "clli-network",
+                            "node-ref": "NodeB"
+                        },
+                        {
+                            "network-ref": "openroadm-network",
+                            "node-ref": "ROADM-B1"
+                        }
+                    ],
+                    "org-openroadm-network-topology:degree-attributes": {
+                        "degree-number": 1,
+                        "avail-freq-maps": [
+                            {
+                                "map-name": "cband",
+                                "freq-map": "////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////",
+                                "start-edge-freq": "191.325",
+                                "freq-map-granularity": "6.25",
+                                "effective-bits": 768
+                            }
+                        ]
+                    }
+                },
+                {
+                    "node-id": "ROADM-A1-SRG3",
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-network-topology:srg-attributes": {
+                        "avail-freq-maps": [
+                            {
+                                "map-name": "cband",
+                                "freq-map": "////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////",
+                                "start-edge-freq": "191.325",
+                                "freq-map-granularity": "6.25",
+                                "effective-bits": 768
+                            }
+                        ]
+                    },
+                    "org-openroadm-common-network:node-type": "SRG",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "ietf-network-topology:termination-point": [
+                        {
+                            "tp-id": "SRG3-PP3-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG3-PP4-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG3-PP2-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG3-CP-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-CP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG3-PP1-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        }
+                    ],
+                    "supporting-node": [
+                        {
+                            "network-ref": "openroadm-network",
+                            "node-ref": "ROADM-A1"
+                        },
+                        {
+                            "network-ref": "clli-network",
+                            "node-ref": "NodeA"
+                        }
+                    ]
+                },
+                {
+                    "node-id": "ROADM-B1-DEG2",
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:node-type": "DEGREE",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "ietf-network-topology:termination-point": [
+                        {
+                            "tp-id": "DEG2-TTP-TXRX",
+                            "org-openroadm-common-network:tp-type": "DEGREE-TXRX-TTP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService",
+                            "org-openroadm-network-topology:tx-ttp-attributes": {
+                                "avail-freq-maps": [
+                                    {
+                                        "map-name": "cband",
+                                        "freq-map": "//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8A",
+                                        "start-edge-freq": "191.325",
+                                        "freq-map-granularity": "6.25",
+                                        "effective-bits": 768
+                                    }
+                                ]
+                            }
+                        },
+                        {
+                            "tp-id": "DEG2-CTP-TXRX",
+                            "org-openroadm-common-network:tp-type": "DEGREE-TXRX-CTP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService",
+                            "org-openroadm-network-topology:ctp-attributes": {
+                                "avail-freq-maps": [
+                                    {
+                                        "map-name": "cband",
+                                        "freq-map": "//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8A",
+                                        "start-edge-freq": "191.325",
+                                        "freq-map-granularity": "6.25",
+                                        "effective-bits": 768
+                                    }
+                                ]
+                            }
+                        }
+                    ],
+                    "supporting-node": [
+                        {
+                            "network-ref": "clli-network",
+                            "node-ref": "NodeB"
+                        },
+                        {
+                            "network-ref": "openroadm-network",
+                            "node-ref": "ROADM-B1"
+                        }
+                    ],
+                    "org-openroadm-network-topology:degree-attributes": {
+                        "degree-number": 2,
+                        "avail-freq-maps": [
+                            {
+                                "map-name": "cband",
+                                "freq-map": "//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8A",
+                                "start-edge-freq": "191.325",
+                                "freq-map-granularity": "6.25",
+                                "effective-bits": 768
+                            }
+                        ]
+                    }
+                },
+                {
+                    "node-id": "ROADM-C1-SRG1",
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-network-topology:srg-attributes": {
+                        "avail-freq-maps": [
+                            {
+                                "map-name": "cband",
+                                "freq-map": "//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8A",
+                                "start-edge-freq": "191.325",
+                                "freq-map-granularity": "6.25",
+                                "effective-bits": 768
+                            }
+                        ]
+                    },
+                    "org-openroadm-common-network:node-type": "SRG",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "ietf-network-topology:termination-point": [
+                        {
+                            "tp-id": "SRG1-PP4-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG1-PP1-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService",
+                            "org-openroadm-network-topology:pp-attributes": {
+                                "avail-freq-maps": [
+                                    {
+                                        "map-name": "cband",
+                                        "freq-map": "//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8A",
+                                        "start-edge-freq": "191.325",
+                                        "freq-map-granularity": "6.25",
+                                        "effective-bits": 768
+                                    }
+                                ]
+                            }
+                        },
+                        {
+                            "tp-id": "SRG1-PP2-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG1-PP3-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG1-CP-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-CP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService",
+                            "org-openroadm-network-topology:cp-attributes": {
+                                "avail-freq-maps": [
+                                    {
+                                        "map-name": "cband",
+                                        "freq-map": "//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8A",
+                                        "start-edge-freq": "191.325",
+                                        "freq-map-granularity": "6.25",
+                                        "effective-bits": 768
+                                    }
+                                ]
+                            }
+                        }
+                    ],
+                    "supporting-node": [
+                        {
+                            "network-ref": "clli-network",
+                            "node-ref": "NodeC"
+                        },
+                        {
+                            "network-ref": "openroadm-network",
+                            "node-ref": "ROADM-C1"
+                        }
+                    ]
+                },
+                {
+                    "node-id": "ROADM-A1-SRG1",
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-network-topology:srg-attributes": {
+                        "avail-freq-maps": [
+                            {
+                                "map-name": "cband",
+                                "freq-map": "////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////",
+                                "start-edge-freq": "191.325",
+                                "freq-map-granularity": "6.25",
+                                "effective-bits": 768
+                            }
+                        ]
+                    },
+                    "org-openroadm-common-network:node-type": "SRG",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "ietf-network-topology:termination-point": [
+                        {
+                            "tp-id": "SRG1-PP4-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG1-PP1-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG1-PP2-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG1-PP3-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG1-CP-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-CP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        }
+                    ],
+                    "supporting-node": [
+                        {
+                            "network-ref": "openroadm-network",
+                            "node-ref": "ROADM-A1"
+                        },
+                        {
+                            "network-ref": "clli-network",
+                            "node-ref": "NodeA"
+                        }
+                    ]
+                },
+                {
+                    "node-id": "ROADM-A1-DEG1",
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:node-type": "DEGREE",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "ietf-network-topology:termination-point": [
+                        {
+                            "tp-id": "DEG1-CTP-TXRX",
+                            "org-openroadm-common-network:tp-type": "DEGREE-TXRX-CTP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "DEG1-TTP-TXRX",
+                            "org-openroadm-common-network:tp-type": "DEGREE-TXRX-TTP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        }
+                    ],
+                    "supporting-node": [
+                        {
+                            "network-ref": "openroadm-network",
+                            "node-ref": "ROADM-A1"
+                        },
+                        {
+                            "network-ref": "clli-network",
+                            "node-ref": "NodeA"
+                        }
+                    ],
+                    "org-openroadm-network-topology:degree-attributes": {
+                        "degree-number": 1,
+                        "avail-freq-maps": [
+                            {
+                                "map-name": "cband",
+                                "freq-map": "////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////",
+                                "start-edge-freq": "191.325",
+                                "freq-map-granularity": "6.25",
+                                "effective-bits": 768
+                            }
+                        ]
+                    }
+                },
+                {
+                    "node-id": "ROADM-A1-DEG2",
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:node-type": "DEGREE",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "ietf-network-topology:termination-point": [
+                        {
+                            "tp-id": "DEG2-TTP-TXRX",
+                            "org-openroadm-common-network:tp-type": "DEGREE-TXRX-TTP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "DEG2-CTP-TXRX",
+                            "org-openroadm-common-network:tp-type": "DEGREE-TXRX-CTP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        }
+                    ],
+                    "supporting-node": [
+                        {
+                            "network-ref": "openroadm-network",
+                            "node-ref": "ROADM-A1"
+                        },
+                        {
+                            "network-ref": "clli-network",
+                            "node-ref": "NodeA"
+                        }
+                    ],
+                    "org-openroadm-network-topology:degree-attributes": {
+                        "degree-number": 2,
+                        "avail-freq-maps": [
+                            {
+                                "map-name": "cband",
+                                "freq-map": "////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////",
+                                "start-edge-freq": "191.325",
+                                "freq-map-granularity": "6.25",
+                                "effective-bits": 768
+                            }
+                        ]
+                    }
+                },
+                {
+                    "node-id": "ROADM-C1-DEG2",
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:node-type": "DEGREE",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "ietf-network-topology:termination-point": [
+                        {
+                            "tp-id": "DEG2-TTP-TXRX",
+                            "org-openroadm-common-network:tp-type": "DEGREE-TXRX-TTP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService",
+                            "org-openroadm-network-topology:tx-ttp-attributes": {
+                                "avail-freq-maps": [
+                                    {
+                                        "map-name": "cband",
+                                        "freq-map": "//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8A",
+                                        "start-edge-freq": "191.325",
+                                        "freq-map-granularity": "6.25",
+                                        "effective-bits": 768
+                                    }
+                                ]
+                            }
+                        },
+                        {
+                            "tp-id": "DEG2-CTP-TXRX",
+                            "org-openroadm-common-network:tp-type": "DEGREE-TXRX-CTP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService",
+                            "org-openroadm-network-topology:ctp-attributes": {
+                                "avail-freq-maps": [
+                                    {
+                                        "map-name": "cband",
+                                        "freq-map": "//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8A",
+                                        "start-edge-freq": "191.325",
+                                        "freq-map-granularity": "6.25",
+                                        "effective-bits": 768
+                                    }
+                                ]
+                            }
+                        }
+                    ],
+                    "supporting-node": [
+                        {
+                            "network-ref": "clli-network",
+                            "node-ref": "NodeC"
+                        },
+                        {
+                            "network-ref": "openroadm-network",
+                            "node-ref": "ROADM-C1"
+                        }
+                    ],
+                    "org-openroadm-network-topology:degree-attributes": {
+                        "degree-number": 2,
+                        "avail-freq-maps": [
+                            {
+                                "map-name": "cband",
+                                "freq-map": "//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8A",
+                                "start-edge-freq": "191.325",
+                                "freq-map-granularity": "6.25",
+                                "effective-bits": 768
+                            }
+                        ]
+                    }
+                },
+                {
+                    "node-id": "ROADM-C1-DEG1",
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-common-network:node-type": "DEGREE",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "ietf-network-topology:termination-point": [
+                        {
+                            "tp-id": "DEG1-CTP-TXRX",
+                            "org-openroadm-common-network:tp-type": "DEGREE-TXRX-CTP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "DEG1-TTP-TXRX",
+                            "org-openroadm-common-network:tp-type": "DEGREE-TXRX-TTP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        }
+                    ],
+                    "supporting-node": [
+                        {
+                            "network-ref": "clli-network",
+                            "node-ref": "NodeC"
+                        },
+                        {
+                            "network-ref": "openroadm-network",
+                            "node-ref": "ROADM-C1"
+                        }
+                    ],
+                    "org-openroadm-network-topology:degree-attributes": {
+                        "degree-number": 1,
+                        "avail-freq-maps": [
+                            {
+                                "map-name": "cband",
+                                "freq-map": "////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////",
+                                "start-edge-freq": "191.325",
+                                "freq-map-granularity": "6.25",
+                                "effective-bits": 768
+                            }
+                        ]
+                    }
+                },
+                {
+                    "node-id": "ROADM-B1-SRG1",
+                    "org-openroadm-common-network:operational-state": "inService",
+                    "org-openroadm-network-topology:srg-attributes": {
+                        "avail-freq-maps": [
+                            {
+                                "map-name": "cband",
+                                "freq-map": "//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8A",
+                                "start-edge-freq": "191.325",
+                                "freq-map-granularity": "6.25",
+                                "effective-bits": 768
+                            }
+                        ]
+                    },
+                    "org-openroadm-common-network:node-type": "SRG",
+                    "org-openroadm-common-network:administrative-state": "inService",
+                    "ietf-network-topology:termination-point": [
+                        {
+                            "tp-id": "SRG1-PP4-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG1-PP1-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService",
+                            "org-openroadm-network-topology:pp-attributes": {
+                                "avail-freq-maps": [
+                                    {
+                                        "map-name": "cband",
+                                        "freq-map": "//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8A",
+                                        "start-edge-freq": "191.325",
+                                        "freq-map-granularity": "6.25",
+                                        "effective-bits": 768
+                                    }
+                                ]
+                            }
+                        },
+                        {
+                            "tp-id": "SRG1-PP2-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG1-PP3-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-PP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService"
+                        },
+                        {
+                            "tp-id": "SRG1-CP-TXRX",
+                            "org-openroadm-common-network:tp-type": "SRG-TXRX-CP",
+                            "org-openroadm-common-network:operational-state": "inService",
+                            "org-openroadm-common-network:administrative-state": "inService",
+                            "org-openroadm-network-topology:cp-attributes": {
+                                "avail-freq-maps": [
+                                    {
+                                        "map-name": "cband",
+                                        "freq-map": "//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8A",
+                                        "start-edge-freq": "191.325",
+                                        "freq-map-granularity": "6.25",
+                                        "effective-bits": 768
+                                    }
+                                ]
+                            }
+                        }
+                    ],
+                    "supporting-node": [
+                        {
+                            "network-ref": "clli-network",
+                            "node-ref": "NodeB"
+                        },
+                        {
+                            "network-ref": "openroadm-network",
+                            "node-ref": "ROADM-B1"
+                        }
+                    ]
+                }
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/tests/sample_configs/portmapping-3-RDM-221.json b/tests/sample_configs/portmapping-3-RDM-221.json
new file mode 100644 (file)
index 0000000..fcc93e6
--- /dev/null
@@ -0,0 +1,353 @@
+{
+    "nodes": [
+        {
+            "node-id": "ROADM-C1",
+            "node-info": {
+                "node-type": "rdm",
+                "node-model": "model2",
+                "openroadm-version": "2.2.1",
+                "node-clli": "NodeC",
+                "node-vendor": "vendorA",
+                "node-ip-address": "127.0.0.13"
+            },
+            "cp-to-degree": [
+                {
+                    "circuit-pack-name": "1/0/ETH-PLUG",
+                    "interface-name": "1GE-interface-1",
+                    "degree-number": 1
+                },
+                {
+                    "circuit-pack-name": "2/0/ETH-PLUG",
+                    "interface-name": "1GE-interface-2",
+                    "degree-number": 2
+                },
+                {
+                    "circuit-pack-name": "2/0",
+                    "interface-name": "1GE-interface-2",
+                    "degree-number": 2
+                },
+                {
+                    "circuit-pack-name": "1/0",
+                    "interface-name": "1GE-interface-1",
+                    "degree-number": 1
+                }
+            ],
+            "mapping": [
+                {
+                    "logical-connection-point": "SRG1-PP3-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "3/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C3"
+                },
+                {
+                    "logical-connection-point": "SRG1-PP2-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "3/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C2"
+                },
+                {
+                    "logical-connection-point": "SRG1-PP4-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "3/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C4"
+                },
+                {
+                    "logical-connection-point": "SRG1-PP1-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "3/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C1"
+                },
+                {
+                    "logical-connection-point": "DEG1-TTP-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-oms": "OMS-DEG1-TTP-TXRX",
+                    "supporting-circuit-pack-name": "1/0",
+                    "supporting-ots": "OTS-DEG1-TTP-TXRX",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "L1"
+                },
+                {
+                    "logical-connection-point": "DEG2-TTP-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-oms": "OMS-DEG2-TTP-TXRX",
+                    "supporting-circuit-pack-name": "2/0",
+                    "supporting-ots": "OTS-DEG2-TTP-TXRX",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "L1"
+                }
+            ],
+            "mc-capabilities": [
+                {
+                    "mc-node-name": "DEG1-TTP",
+                    "slot-width-granularity": "50.0",
+                    "center-freq-granularity": "50.0"
+                },
+                {
+                    "mc-node-name": "DEG2-TTP",
+                    "slot-width-granularity": "50.0",
+                    "center-freq-granularity": "50.0"
+                },
+                {
+                    "mc-node-name": "SRG1-PP",
+                    "slot-width-granularity": "50.0",
+                    "center-freq-granularity": "50.0"
+                }
+            ]
+        },
+        {
+            "node-id": "ROADM-A1",
+            "node-info": {
+                "node-type": "rdm",
+                "node-model": "model2",
+                "openroadm-version": "2.2.1",
+                "node-clli": "NodeA",
+                "node-vendor": "vendorA",
+                "node-ip-address": "127.0.0.11"
+            },
+            "cp-to-degree": [
+                {
+                    "circuit-pack-name": "1/0/ETH-PLUG",
+                    "interface-name": "1GE-interface-1",
+                    "degree-number": 1
+                },
+                {
+                    "circuit-pack-name": "2/0/ETH-PLUG",
+                    "interface-name": "1GE-interface-2",
+                    "degree-number": 2
+                },
+                {
+                    "circuit-pack-name": "2/0",
+                    "interface-name": "1GE-interface-2",
+                    "degree-number": 2
+                },
+                {
+                    "circuit-pack-name": "1/0",
+                    "interface-name": "1GE-interface-1",
+                    "degree-number": 1
+                }
+            ],
+            "mapping": [
+                {
+                    "logical-connection-point": "SRG1-PP2-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "3/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C2"
+                },
+                {
+                    "logical-connection-point": "SRG1-PP4-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "3/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C4"
+                },
+                {
+                    "logical-connection-point": "SRG3-PP4-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "5/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C4"
+                },
+                {
+                    "logical-connection-point": "SRG3-PP3-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "5/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C3"
+                },
+                {
+                    "logical-connection-point": "DEG2-TTP-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-oms": "OMS-DEG2-TTP-TXRX",
+                    "supporting-circuit-pack-name": "2/0",
+                    "supporting-ots": "OTS-DEG2-TTP-TXRX",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "L1"
+                },
+                {
+                    "logical-connection-point": "SRG1-PP3-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "3/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C3"
+                },
+                {
+                    "logical-connection-point": "SRG3-PP2-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "5/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C2"
+                },
+                {
+                    "logical-connection-point": "SRG1-PP1-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "3/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C1"
+                },
+                {
+                    "logical-connection-point": "DEG1-TTP-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-oms": "OMS-DEG1-TTP-TXRX",
+                    "supporting-circuit-pack-name": "1/0",
+                    "supporting-ots": "OTS-DEG1-TTP-TXRX",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "L1"
+                },
+                {
+                    "logical-connection-point": "SRG3-PP1-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "5/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C1"
+                }
+            ],
+            "mc-capabilities": [
+                {
+                    "mc-node-name": "DEG2-TTP",
+                    "slot-width-granularity": "50.0",
+                    "center-freq-granularity": "50.0"
+                },
+                {
+                    "mc-node-name": "DEG1-TTP",
+                    "slot-width-granularity": "50.0",
+                    "center-freq-granularity": "50.0"
+                },
+                {
+                    "mc-node-name": "SRG3-PP",
+                    "slot-width-granularity": "50.0",
+                    "center-freq-granularity": "50.0"
+                },
+                {
+                    "mc-node-name": "SRG1-PP",
+                    "slot-width-granularity": "50.0",
+                    "center-freq-granularity": "50.0"
+                }
+            ]
+        },
+        {
+            "node-id": "ROADM-B1",
+            "node-info": {
+                "node-type": "rdm",
+                "node-model": "model2",
+                "openroadm-version": "2.2.1",
+                "node-clli": "NodeB",
+                "node-vendor": "vendorA",
+                "node-ip-address": "127.0.0.12"
+            },
+            "cp-to-degree": [
+                {
+                    "circuit-pack-name": "1/0/ETH-PLUG",
+                    "interface-name": "1GE-interface-1",
+                    "degree-number": 1
+                },
+                {
+                    "circuit-pack-name": "2/0/ETH-PLUG",
+                    "interface-name": "1GE-interface-2",
+                    "degree-number": 2
+                },
+                {
+                    "circuit-pack-name": "2/0",
+                    "interface-name": "1GE-interface-2",
+                    "degree-number": 2
+                },
+                {
+                    "circuit-pack-name": "1/0",
+                    "interface-name": "1GE-interface-1",
+                    "degree-number": 1
+                }
+            ],
+            "mapping": [
+                {
+                    "logical-connection-point": "SRG1-PP3-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "3/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C3"
+                },
+                {
+                    "logical-connection-point": "SRG1-PP2-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "3/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C2"
+                },
+                {
+                    "logical-connection-point": "SRG1-PP4-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "3/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C4"
+                },
+                {
+                    "logical-connection-point": "SRG1-PP1-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-circuit-pack-name": "3/0",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "C1"
+                },
+                {
+                    "logical-connection-point": "DEG1-TTP-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-oms": "OMS-DEG1-TTP-TXRX",
+                    "supporting-circuit-pack-name": "1/0",
+                    "supporting-ots": "OTS-DEG1-TTP-TXRX",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "L1"
+                },
+                {
+                    "logical-connection-point": "DEG2-TTP-TXRX",
+                    "port-oper-state": "InService",
+                    "supporting-oms": "OMS-DEG2-TTP-TXRX",
+                    "supporting-circuit-pack-name": "2/0",
+                    "supporting-ots": "OTS-DEG2-TTP-TXRX",
+                    "port-direction": "bidirectional",
+                    "port-admin-state": "InService",
+                    "supporting-port": "L1"
+                }
+            ],
+            "mc-capabilities": [
+                {
+                    "mc-node-name": "DEG1-TTP",
+                    "slot-width-granularity": "50.0",
+                    "center-freq-granularity": "50.0"
+                },
+                {
+                    "mc-node-name": "DEG2-TTP",
+                    "slot-width-granularity": "50.0",
+                    "center-freq-granularity": "50.0"
+                },
+                {
+                    "mc-node-name": "SRG1-PP",
+                    "slot-width-granularity": "50.0",
+                    "center-freq-granularity": "50.0"
+                }
+            ]
+        }
+    ]
+}
\ No newline at end of file
diff --git a/tests/transportpce_tests/pce/test04_pce_bug_fix.py b/tests/transportpce_tests/pce/test04_pce_bug_fix.py
new file mode 100644 (file)
index 0000000..a8f1764
--- /dev/null
@@ -0,0 +1,136 @@
+#!/usr/bin/env python
+##############################################################################
+# Copyright (c) 2023 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
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# pylint: disable=no-member
+# pylint: disable=too-many-public-methods
+
+import unittest
+import os
+# pylint: disable=wrong-import-order
+import sys
+import time
+import requests
+sys.path.append('transportpce_tests/common/')
+# pylint: disable=wrong-import-position
+# pylint: disable=import-error
+import test_utils  # nopep8
+
+
+class TransportPCEtesting(unittest.TestCase):
+    path_computation_input_data = {
+        "service-name": "service-AB",
+        "resource-reserve": "true",
+        "service-handler-header": {
+            "request-id": "request1"
+        },
+        "service-a-end": {
+            "service-rate": "100",
+            "clli": "NodeA",
+            "service-format": "OC",
+            "node-id": "ROADM-A1"
+        },
+        "service-z-end": {
+            "service-rate": "100",
+            "clli": "NodeB",
+            "service-format": "OC",
+            "node-id": "ROADM-B1"
+        },
+        "pce-routing-metric": "hop-count"
+    }
+
+    openraodm_topo_with_service_BC = None
+    port_mapping_data = None
+    processes = None
+
+    @classmethod
+    def setUpClass(cls):
+        # pylint: disable=bare-except
+        sample_files_parsed = False
+        time.sleep(10)
+        try:
+            TOPO_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)),
+                                     "..", "..", "sample_configs", "honeynode-topo-3-RDM.json")
+            with open(TOPO_FILE, 'r', encoding='utf-8') as topo:
+                cls.openraodm_topo_with_service_BC = topo.read()
+
+            PORT_MAPPING_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)),
+                                             "..", "..", "sample_configs", "portmapping-3-RDM-221.json")
+            with open(PORT_MAPPING_FILE, 'r', encoding='utf-8') as port_mapping:
+                cls.port_mapping_data = port_mapping.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()
+        time.sleep(5)
+
+    @classmethod
+    def tearDownClass(cls):
+        # clean datastores
+        test_utils.del_portmapping()
+        test_utils.del_ietf_network('openroadm-topology')
+        # pylint: disable=not-an-iterable
+        for process in cls.processes:
+            test_utils.shutdown_process(process)
+        print("all processes killed")
+
+    def setUp(self):
+        time.sleep(1)
+
+    def test_01_load_port_mapping(self):
+        response = test_utils.post_portmapping(self.port_mapping_data)
+        self.assertIn(response['status_code'], (requests.codes.created, requests.codes.no_content))
+        time.sleep(1)
+
+    def test_02_load_openroadm_topology(self):
+        response = test_utils.put_ietf_network('openroadm-topology', self.openraodm_topo_with_service_BC)
+        self.assertIn(response['status_code'], (requests.codes.ok, requests.codes.no_content))
+        time.sleep(1)
+
+    # Path Computation success
+    def test_03_path_computation_AB(self):
+        response = test_utils.transportpce_api_rpc_request('transportpce-pce',
+                                                           'path-computation-request',
+                                                           self.path_computation_input_data)
+        self.assertEqual(response['status_code'], requests.codes.ok)
+        self.assertEqual('Path is calculated by PCE',
+                         response['output']['configuration-response-common']['response-message'])
+        self.assertEqual(
+            2,
+            response['output']['response-parameters']['path-description']['aToZ-direction']['aToZ-wavelength-number'])
+        self.assertEqual(196.025,
+                         float(response['output']['response-parameters']['path-description']['aToZ-direction']
+                               ['aToZ-min-frequency']))
+        self.assertEqual(196.075,
+                         float(response['output']['response-parameters']['path-description']['aToZ-direction']
+                               ['aToZ-max-frequency']))
+        self.assertEqual(
+            2,
+            response['output']['response-parameters']['path-description']['zToA-direction']['zToA-wavelength-number'])
+        self.assertEqual(196.025,
+                         float(response['output']['response-parameters']['path-description']['zToA-direction']
+                               ['zToA-min-frequency']))
+        self.assertEqual(196.075,
+                         float(response['output']['response-parameters']['path-description']['zToA-direction']
+                               ['zToA-max-frequency']))
+
+
+if __name__ == "__main__":
+    unittest.main(verbosity=2)