TAPI topology consolidation - step2 99/93699/1
authorGilles Thouenon <gilles.thouenon@orange.com>
Fri, 23 Oct 2020 07:56:30 +0000 (09:56 +0200)
committerGilles Thouenon <gilles.thouenon@orange.com>
Mon, 9 Nov 2020 16:06:07 +0000 (17:06 +0100)
- integrate into T0 mulilayer TAPI topology the 100GE Transponders when
  their network ports are connected to the ROADM infra through
  xponder-input/output links
- manage the client to network port association for the 100GE
  transponder case
- adapt ConvertORTopoToTapiTopo and TapiTopologyImpl classes to add new
  UT for the 100G transponder use case
- rationalise samples of xml files to adapt portmapping and topologies
  to new test cases with 100GE transponder
- separate in a dedicated test file UT testing TAPI exceptions

JIRA: TRNSPRTPCE-344
Signed-off-by: Gilles Thouenon <gilles.thouenon@orange.com>
Co-authored-by: Christophe Betoule <christophe.betoule@orange.com>
Change-Id: I665f2e6290c5a6be1628179a54fb35218c85739b

tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoToTapiTopo.java
tapi/src/main/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImpl.java
tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/ConvertORTopoObjectToTapiTooObjectTest.java
tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplExceptionTest.java [new file with mode: 0644]
tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplTest.java
tapi/src/test/java/org/opendaylight/transportpce/tapi/utils/TopologyDataUtils.java
tapi/src/test/resources/openroadm-topology.xml [moved from tapi/src/test/resources/get_openroadm-topology2.xml with 85% similarity]
tapi/src/test/resources/otn-topology.xml [moved from tapi/src/test/resources/otn-topology-with-otn-links.xml with 59% similarity]
tapi/src/test/resources/portmapping.xml [moved from tapi/src/test/resources/get_portmapping.xml with 79% similarity]

index 2e8c183bdba18f596105327372ec5397b6a78e35..e12a6b5db12c673df5ac92770dd1777911c6b64d 100644 (file)
@@ -20,7 +20,11 @@ import java.util.UUID;
 import java.util.stream.Collectors;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPools;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.OduSwitchingPoolsBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev181130.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingListKey;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.xpdr.tp.supported.interfaces.SupportedInterfaceCapability;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130.Link1;
@@ -74,6 +78,7 @@ import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.to
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.LinkKey;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.NodeKey;
+import org.opendaylight.yangtools.yang.common.Uint16;
 import org.opendaylight.yangtools.yang.common.Uint64;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -88,6 +93,7 @@ public class ConvertORTopoToTapiTopo {
     private static final String RDM_INFRA = "ROADM-infra";
     private static final Logger LOG = LoggerFactory.getLogger(ConvertORTopoToTapiTopo.class);
     private String ietfNodeId;
+    private OpenroadmNodeType ietfNodeType;
     private List<TerminationPoint> oorClientPortList;
     private List<TerminationPoint> oorNetworkPortList;
     private OduSwitchingPools oorOduSwitchingPool;
@@ -107,26 +113,48 @@ public class ConvertORTopoToTapiTopo {
 
     public void convertNode(Node ietfNode, List<String> networkPorts) {
         this.ietfNodeId = ietfNode.getNodeId().getValue();
-        this.oorClientPortList = ietfNode.augmentation(
+        if (ietfNode.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class)
+            == null) {
+            return;
+        }
+        this.ietfNodeType = ietfNode.augmentation(
+            org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class).getNodeType();
+        this.oorNetworkPortList = ietfNode.augmentation(
                 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
             .getTerminationPoint().values().stream()
             .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
-            == OpenroadmTpType.XPONDERCLIENT.getIntValue())
+            == OpenroadmTpType.XPONDERNETWORK.getIntValue()
+            && networkPorts.contains(tp.getTpId().getValue()))
             .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
             .collect(Collectors.toList());
-        this.oorNetworkPortList = ietfNode.augmentation(
+        if (!OpenroadmNodeType.TPDR.equals(this.ietfNodeType)) {
+            this.oorOduSwitchingPool = ietfNode.augmentation(Node1.class).getSwitchingPools().getOduSwitchingPools()
+                .values().stream().findFirst().get();
+            this.oorClientPortList = ietfNode.augmentation(
                 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
             .getTerminationPoint().values().stream()
             .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
-            == OpenroadmTpType.XPONDERNETWORK.getIntValue()
-            && networkPorts.contains(tp.getTpId().getValue()))
+            == OpenroadmTpType.XPONDERCLIENT.getIntValue())
             .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
             .collect(Collectors.toList());
-        this.oorOduSwitchingPool = ietfNode.augmentation(Node1.class).getSwitchingPools().getOduSwitchingPools()
-            .values().stream().findFirst().get();
+        } else {
+            this.oorOduSwitchingPool = createOduSwitchingPoolForTp100G();
+            List<TpId> toto = this.oorOduSwitchingPool.getNonBlockingList().values().stream()
+                .flatMap(nbl -> nbl.getTpList().stream())
+                .collect(Collectors.toList());
+            LOG.info("toto = {}", toto);
+            this.oorClientPortList = ietfNode.augmentation(
+                org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
+                .getTerminationPoint().values().stream()
+                .filter(tp -> tp.augmentation(TerminationPoint1.class).getTpType().getIntValue()
+                    == OpenroadmTpType.XPONDERCLIENT.getIntValue() && toto.contains(tp.getTpId()))
+                .sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
+                .collect(Collectors.toList());
+            this.oorClientPortList.forEach(tp -> LOG.info("tp = {}", tp.getTpId()));
+        }
 
         // node creation [DSR/ODU]
-        LOG.info("creation of a DSR/ODU node");
+        LOG.info("creation of a DSR/ODU node for {}", this.ietfNodeId);
         Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, DSR))
             .getBytes(Charset.forName("UTF-8"))).toString());
         this.uuidMap.put(String.join("+", this.ietfNodeId, DSR), nodeUuid);
@@ -137,7 +165,7 @@ public class ConvertORTopoToTapiTopo {
         tapiNodes.put(dsrNode.key(), dsrNode);
 
         // node creation [otsi]
-        LOG.info("creation of an OTSi node");
+        LOG.info("creation of an OTSi node for {}", this.ietfNodeId);
         nodeUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", this.ietfNodeId, OTSI))
             .getBytes(Charset.forName("UTF-8"))).toString());
         this.uuidMap.put(String.join("+", this.ietfNodeId, OTSI), nodeUuid);
@@ -205,6 +233,30 @@ public class ConvertORTopoToTapiTopo {
         }
     }
 
+    private OduSwitchingPools createOduSwitchingPoolForTp100G() {
+        Map<NonBlockingListKey, NonBlockingList> nblMap = new HashMap<>();
+        int count = 1;
+        for (TerminationPoint tp : this.oorNetworkPortList) {
+            TpId tpid1 = tp.getTpId();
+            TpId tpid2 = new TpId(tp.augmentation(
+                    org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.TerminationPoint1.class)
+                .getAssociatedConnectionMapPort());
+            List<TpId> tpList = new ArrayList<>();
+            tpList.add(tpid1);
+            tpList.add(tpid2);
+            NonBlockingList nbl = new NonBlockingListBuilder()
+                .setNblNumber(Uint16.valueOf(count))
+                .setTpList(tpList)
+                .build();
+            nblMap.put(nbl.key(), nbl);
+            count++;
+        }
+        return new OduSwitchingPoolsBuilder()
+            .setNonBlockingList(nblMap)
+            .setSwitchingPoolNumber(Uint16.valueOf(1))
+            .build();
+    }
+
     private List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
         pruneTapiPhotonicNodes() {
         List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
@@ -246,8 +298,8 @@ public class ConvertORTopoToTapiTopo {
         return uuidNameMap;
     }
 
-    private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology
-        .Node createTapiNode(Map<NameKey, Name> nodeNames, List<LayerProtocolName> layerProtocols) {
+    private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node
+        createTapiNode(Map<NameKey, Name> nodeNames, List<LayerProtocolName> layerProtocols) {
         Uuid nodeUuid = null;
         Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepl = new HashMap<>();
         Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList = new HashMap<>();
@@ -291,7 +343,7 @@ public class ConvertORTopoToTapiTopo {
             this.uuidMap.put(String.join("+", this.ietfNodeId, I_OTSI, oorNetworkPortList.get(i).getTpId().getValue()),
                 nepUuid1);
             Name onedName = new NameBuilder()
-                .setValueName(new StringBuilder("iNodeEdgePoint_").append(i + 1).toString())
+                .setValueName("iNodeEdgePoint")
                 .setValue(oorNetworkPortList.get(i).getTpId().getValue())
                 .build();
 
@@ -309,7 +361,7 @@ public class ConvertORTopoToTapiTopo {
             this.uuidMap.put(String.join("+", this.ietfNodeId, E_OTSI, oorNetworkPortList.get(i).getTpId().getValue()),
                 nepUuid2);
             Name onedName = new NameBuilder()
-                .setValueName(new StringBuilder("eNodeEdgePoint_").append(i + 1).toString())
+                .setValueName("eNodeEdgePoint")
                 .setValue(oorNetworkPortList.get(i).getTpId().getValue())
                 .build();
 
@@ -366,10 +418,13 @@ public class ConvertORTopoToTapiTopo {
                 .getBytes(Charset.forName("UTF-8"))).toString());
             this.uuidMap.put(String.join("+", this.ietfNodeId, DSR, oorClientPortList.get(i).getTpId().getValue()),
                 nepUuid);
-            Name name = new NameBuilder()
-                .setValueName(new StringBuilder("NodeEdgePoint_C").append(i + 1).toString())
-                .setValue(oorClientPortList.get(i).getTpId().getValue())
-                .build();
+            NameBuilder nameBldr = new NameBuilder().setValue(oorClientPortList.get(i).getTpId().getValue());
+            Name name;
+            if (OpenroadmNodeType.TPDR.equals(this.ietfNodeType)) {
+                name = nameBldr.setValueName("100G-tpdr").build();
+            } else {
+                name = nameBldr.setValueName("NodeEdgePoint_C").build();
+            }
 
             OwnedNodeEdgePoint onep = createNep(oorClientPortList.get(i), Map.of(name.key(), name),
                 LayerProtocolName.ETH, LayerProtocolName.DSR, true, String.join("+", this.ietfNodeId, DSR));
@@ -383,7 +438,7 @@ public class ConvertORTopoToTapiTopo {
             this.uuidMap.put(String.join("+", this.ietfNodeId, DSR, oorNetworkPortList.get(i).getTpId().getValue()),
                 nepUuid);
             Name onedName = new NameBuilder()
-                .setValueName(new StringBuilder("NodeEdgePoint_N").append(i + 1).toString())
+                .setValueName("NodeEdgePoint_N")
                 .setValue(oorNetworkPortList.get(i).getTpId().getValue())
                 .build();
 
@@ -393,7 +448,7 @@ public class ConvertORTopoToTapiTopo {
         }
         // create NodeRuleGroup
         int count = 1;
-        for (NonBlockingList nbl : this.oorOduSwitchingPool.getNonBlockingList().values()) {
+        for (NonBlockingList nbl : this.oorOduSwitchingPool.nonnullNonBlockingList().values()) {
             Map<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePointKey,
                 org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
                 nepList = new HashMap<>();
@@ -525,6 +580,8 @@ public class ConvertORTopoToTapiTopo {
                     } else if (sic.getIfCapType().getSimpleName().equals("If100GEODU4")) {
                         sclpqList.add(DIGITALSIGNALTYPE100GigE.class);
                         sclpqList.add(ODUTYPEODU4.class);
+                    } else if (sic.getIfCapType().getSimpleName().equals("If100GE")) {
+                        sclpqList.add(DIGITALSIGNALTYPE100GigE.class);
                     }
                     break;
                 case "PHOTONIC_MEDIA":
index 4a6625632055646ee1fddec16f42b45f298290ec..0068e6c2258def9d43a57871c302f7c4e7b3c656 100644 (file)
@@ -105,7 +105,7 @@ public class TapiTopologyImpl implements TapiTopologyService {
     @Override
     public ListenableFuture<RpcResult<GetTopologyDetailsOutput>> getTopologyDetails(GetTopologyDetailsInput input) {
         try {
-            LOG.info("Building TAPI Topology abstraction from {}", input.getTopologyIdOrName());
+            LOG.info("Building TAPI Topology abstraction");
             Topology topology = null;
             switch (input.getTopologyIdOrName()) {
                 case NetworkUtils.OVERLAY_NETWORK_ID:
@@ -121,6 +121,7 @@ public class TapiTopologyImpl implements TapiTopologyService {
             return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder().setTopology(topology).build())
                 .buildFuture();
         } catch (TapiTopologyException e) {
+            LOG.error("error building TAPI topology");
             return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder().build()).buildFuture();
         }
     }
@@ -223,11 +224,7 @@ public class TapiTopologyImpl implements TapiTopologyService {
                 .collect(Collectors.toList());
         // read otn-topology
         Network otnTopo = readTopology(InstanceIdentifiers.OTN_NETWORK_II);
-        Map<NodeId, Node> otnNodeMap = otnTopo.nonnullNode().values().stream().filter(nt -> nt.augmentation(
-            org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class)
-            .getNodeType().equals(OpenroadmNodeType.SWITCH) || nt.augmentation(
-                org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class)
-                .getNodeType().equals(OpenroadmNodeType.MUXPDR))
+        Map<NodeId, Node> otnNodeMap = otnTopo.nonnullNode().values().stream()
             .collect(Collectors.toMap(Node::getNodeId, node -> node));
 
         Map<String, List<String>> networkPortMap = new HashMap<>();
index 61e0a073ffa7038ac55c323d287f876a7dabda07..ed61dcac2c446316d0a99b818ce8062503374c5a 100644 (file)
@@ -13,6 +13,7 @@ import static org.hamcrest.CoreMatchers.hasItem;
 import static org.hamcrest.CoreMatchers.hasItems;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
 
 import com.google.common.util.concurrent.FluentFuture;
 import java.nio.charset.Charset;
@@ -81,6 +82,7 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
     private static Node otnMuxA;
     private static Node otnMuxC;
     private static Node otnSwitch;
+    private static Node tpdr100G;
     private static List<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226
         .networks.network.Link> otnLinks;
     private static Uuid topologyUuid;
@@ -91,7 +93,7 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
         TopologyDataUtils.writeTopologyFromFileToDatastore(getDataStoreContextUtil(),
             TopologyDataUtils.OPENROADM_TOPOLOGY_FILE, InstanceIdentifiers.OVERLAY_NETWORK_II);
         TopologyDataUtils.writeTopologyFromFileToDatastore(getDataStoreContextUtil(),
-            TopologyDataUtils.OTN_TOPOLOGY_WITH_OTN_LINKS_FILE, InstanceIdentifiers.OTN_NETWORK_II);
+            TopologyDataUtils.OTN_TOPOLOGY_FILE, InstanceIdentifiers.OTN_NETWORK_II);
         TopologyDataUtils.writePortmappingFromFileToDatastore(getDataStoreContextUtil());
 
         KeyedInstanceIdentifier<Node, NodeKey> muxAIID = InstanceIdentifier.create(Networks.class)
@@ -112,10 +114,19 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
             .child(Node.class, new NodeKey(new NodeId("SPDR-SA1-XPDR2")));
         FluentFuture<Optional<Node>> switchFuture = dataBroker.newReadOnlyTransaction()
             .read(LogicalDatastoreType.CONFIGURATION, switchIID);
+
         otnMuxA = muxAFuture.get().get();
         otnMuxC = muxCFuture.get().get();
         otnSwitch = switchFuture.get().get();
 
+        KeyedInstanceIdentifier<Node, NodeKey> tpdrIID = InstanceIdentifier.create(Networks.class)
+            .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network
+                .class, new NetworkKey(new NetworkId("otn-topology")))
+            .child(Node.class, new NodeKey(new NodeId("XPDR-A1-XPDR1")));
+        FluentFuture<Optional<Node>> tpdrFuture = dataBroker.newReadOnlyTransaction()
+            .read(LogicalDatastoreType.CONFIGURATION, tpdrIID);
+        tpdr100G = tpdrFuture.get().get();
+
         InstanceIdentifier<Network1> linksIID = InstanceIdentifier.create(Networks.class)
             .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network
                 .class, new NetworkKey(new NetworkId("otn-topology")))
@@ -129,6 +140,38 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
         LOG.info("TEST SETUP READY");
     }
 
+    @Test
+    public void convertNodeForTransponder100G() {
+        ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+        List<String> networkPortList = new ArrayList<>();
+        for (TerminationPoint tp : tpdr100G.augmentation(Node1.class).getTerminationPoint().values()) {
+            if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
+                networkPortList.add(tp.getTpId().getValue());
+            }
+        }
+        tapiFactory.convertNode(tpdr100G, networkPortList);
+        List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes
+            = tapiFactory.getTapiNodes().values().stream()
+            .sorted((n1, n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
+            .collect(Collectors.toList());
+
+        assertEquals("Node list size should be 2", 2, tapiFactory.getTapiNodes().size());
+        assertEquals("Link list size should be 2", 2, tapiFactory.getTapiLinks().size());
+
+        Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+            .toString());
+        checkDsrNode(tapiNodes.get(1), dsrNodeUuid, "tpdr", "XPDR-A1-XPDR1");
+        Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("XPDR-A1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
+            .toString());
+        checkOtsiNode(tapiNodes.get(0), otsiNodeUuid, "tpdr", "XPDR-A1-XPDR1");
+
+        List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
+            .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
+            .collect(Collectors.toList());
+        checkTransitionalLink(tapiLinks.get(1), dsrNodeUuid, otsiNodeUuid,
+            "XPDR-A1-XPDR1+DSR+XPDR1-NETWORK1", "XPDR-A1-XPDR1+iOTSi+XPDR1-NETWORK1", "XPDR-A1-XPDR1");
+    }
+
     @Test
     public void convertNodeForOtnMuxponder() {
         ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
@@ -146,10 +189,9 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
 
         assertEquals("Node list size should be 2", 2, tapiFactory.getTapiNodes().size());
         assertEquals("Link list size should be 1", 1, tapiFactory.getTapiLinks().size());
-
         Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
             .toString());
-        checkDsrNode(tapiNodes.get(0), dsrNodeUuid, false, "SPDR-SA1-XPDR1");
+        checkDsrNode(tapiNodes.get(0), dsrNodeUuid, "mux", "SPDR-SA1-XPDR1");
         Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
             .toString());
         checkOtsiNode(tapiNodes.get(1), otsiNodeUuid, "mux", "SPDR-SA1-XPDR1");
@@ -181,7 +223,7 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
 
         Uuid dsrNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+DSR".getBytes(Charset.forName("UTF-8")))
             .toString());
-        checkDsrNode(tapiNodes.get(0), dsrNodeUuid, true, "SPDR-SA1-XPDR2");
+        checkDsrNode(tapiNodes.get(0), dsrNodeUuid, "switch", "SPDR-SA1-XPDR2");
         Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+OTSi".getBytes(Charset.forName("UTF-8")))
             .toString());
         checkOtsiNode(tapiNodes.get(1), otsiNodeUuid, "switch", "SPDR-SA1-XPDR2");
@@ -300,7 +342,7 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
     }
 
     private void checkDsrNode(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node,
-        Uuid nodeUuid, boolean isSwitch, String nodeId) {
+        Uuid nodeUuid, String dsrNodeType, String nodeId) {
         assertEquals("incorrect node uuid", nodeUuid, node.getUuid());
         assertEquals("incorrect node name", nodeId, node.getName().get(new NameKey("dsr/odu node name")).getValue());
         assertEquals("administrative state should be UNLOCKED",
@@ -313,42 +355,83 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
             2, node.getLayerProtocolName().size());
         assertThat("dsr node should manage 2 protocol layers : dsr and odu",
             node.getLayerProtocolName(), hasItems(LayerProtocolName.DSR, LayerProtocolName.ODU));
-        List<OwnedNodeEdgePoint> neps = node.nonnullOwnedNodeEdgePoint().values().stream()
+        List<OwnedNodeEdgePoint> nepsN = node.nonnullOwnedNodeEdgePoint().values().stream()
+            .filter(n -> n.getName().containsKey(new NameKey("NodeEdgePoint_N")))
             .sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
             .collect(Collectors.toList());
-        if (isSwitch) {
-            assertEquals("Switch-DSR node should have 8 NEPs", 8, neps.size());
-            OwnedNodeEdgePoint nep1 = neps.get(3);
-            Uuid client4NepUuid = new Uuid(
-                    UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR2-CLIENT4").getBytes(Charset.forName("UTF-8")))
-                    .toString());
-            checkNepClient100G(nep1, client4NepUuid, "XPDR2-CLIENT4", "NodeEdgePoint_C4");
-            OwnedNodeEdgePoint nep2 = neps.get(4);
-            Uuid networkNepUuid = new Uuid(
-                    UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR2-NETWORK1").getBytes(Charset.forName("UTF-8")))
-                    .toString());
-            checkNepNetworkODU4(nep2, networkNepUuid, "XPDR2-NETWORK1", "NodeEdgePoint_N1");
-            List<NodeRuleGroup> nrgList = node.nonnullNodeRuleGroup().values().stream()
-                .sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
-                .collect(Collectors.toList());
-            checkNodeRuleGroupForSwitchDSR(nrgList, client4NepUuid, networkNepUuid, nodeUuid);
-        } else {
-            assertEquals("Mux-DSR node should have 5 NEPs", 5, neps.size());
-            OwnedNodeEdgePoint nep1 = neps.get(0);
-            Uuid client4NepUuid = new Uuid(
-                    UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR1-CLIENT4").getBytes(Charset.forName("UTF-8")))
-                    .toString());
-            checkNepClient10G(nep1, client4NepUuid, "XPDR1-CLIENT4", "NodeEdgePoint_C4");
-
-            OwnedNodeEdgePoint nep2 = neps.get(1);
-            Uuid networkNepUuid = new Uuid(
-                    UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
-                    .toString());
-            checkNepNetworkODU4(nep2, networkNepUuid, "XPDR1-NETWORK1", "NodeEdgePoint_N1");
-            List<NodeRuleGroup> nrgList = node.nonnullNodeRuleGroup().values().stream()
-                .sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
-                .collect(Collectors.toList());
-            checkNodeRuleGroupForMuxDSR(nrgList, client4NepUuid, networkNepUuid, nodeUuid);
+        List<OwnedNodeEdgePoint> nepsC;
+        switch (dsrNodeType) {
+            case "switch":
+                nepsC = node.nonnullOwnedNodeEdgePoint().values().stream()
+                    .filter(n -> n.getName().containsKey(new NameKey("NodeEdgePoint_C")))
+                    .sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
+                    .collect(Collectors.toList());
+                assertEquals("Switch-DSR node should have 4 NEPs network", 4, nepsN.size());
+                assertEquals("Switch-DSR node should have 4 NEPs client", 4, nepsC.size());
+                OwnedNodeEdgePoint nep1 = nepsC.get(2);
+                Uuid client4NepUuid = new Uuid(
+                        UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR2-CLIENT4").getBytes(Charset.forName("UTF-8")))
+                        .toString());
+                checkNepClient100GSwitch(nep1, client4NepUuid, "XPDR2-CLIENT4", "NodeEdgePoint_C");
+                OwnedNodeEdgePoint nep2 = nepsN.get(1);
+                Uuid networkNepUuid = new Uuid(
+                        UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR2-NETWORK1").getBytes(Charset.forName("UTF-8")))
+                        .toString());
+                checkNepNetworkODU4(nep2, networkNepUuid, "XPDR2-NETWORK1", "NodeEdgePoint_N");
+                List<NodeRuleGroup> nrgList = node.nonnullNodeRuleGroup().values().stream()
+                    .sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
+                    .collect(Collectors.toList());
+                checkNodeRuleGroupForSwitchDSR(nrgList, client4NepUuid, networkNepUuid, nodeUuid);
+                break;
+            case "mux":
+                nepsC = node.nonnullOwnedNodeEdgePoint().values().stream()
+                    .filter(n -> n.getName().containsKey(new NameKey("NodeEdgePoint_C")))
+                    .sorted((nep3, nep4) -> nep3.getUuid().getValue().compareTo(nep4.getUuid().getValue()))
+                    .collect(Collectors.toList());
+                assertEquals("Mux-DSR node should have 1 NEP network", 1, nepsN.size());
+                assertEquals("Mux-DSR node should have 4 NEPs client", 4, nepsC.size());
+                OwnedNodeEdgePoint nep3 = nepsC.get(2);
+                Uuid client3NepUuid = new Uuid(
+                        UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR1-CLIENT3").getBytes(Charset.forName("UTF-8")))
+                        .toString());
+                checkNepClient10G(nep3, client3NepUuid, "XPDR1-CLIENT3", "NodeEdgePoint_C");
+
+                OwnedNodeEdgePoint nep4 = nepsN.get(0);
+                Uuid networkNepUuid2 = new Uuid(
+                        UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+                        .toString());
+                checkNepNetworkODU4(nep4, networkNepUuid2, "XPDR1-NETWORK1", "NodeEdgePoint_N");
+                List<NodeRuleGroup> nrgList2 = node.nonnullNodeRuleGroup().values().stream()
+                    .sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
+                    .collect(Collectors.toList());
+                checkNodeRuleGroupForMuxDSR(nrgList2, client3NepUuid, networkNepUuid2, nodeUuid);
+                break;
+            case "tpdr":
+                nepsC = node.nonnullOwnedNodeEdgePoint().values().stream()
+                    .filter(n -> n.getName().containsKey(new NameKey("100G-tpdr")))
+                    .sorted((nep5, nep6) -> nep5.getUuid().getValue().compareTo(nep6.getUuid().getValue()))
+                    .collect(Collectors.toList());
+                assertEquals("Tpdr-DSR node should have 2 NEPs network", 2, nepsN.size());
+                assertEquals("Tpdr-DSR node should have 2 NEPs client", 2, nepsC.size());
+                OwnedNodeEdgePoint nep5 = nepsC.get(0);
+                Uuid client1NepUuid = new Uuid(
+                        UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR1-CLIENT1").getBytes(Charset.forName("UTF-8")))
+                        .toString());
+                checkNepClient100GTpdr(nep5, client1NepUuid, "XPDR1-CLIENT1", "100G-tpdr");
+
+                OwnedNodeEdgePoint nep6 = nepsN.get(0);
+                Uuid networkNepUuid3 = new Uuid(
+                        UUID.nameUUIDFromBytes((nodeId + "+DSR+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+                        .toString());
+                checkNepNetworkODU4(nep6, networkNepUuid3, "XPDR1-NETWORK1", "NodeEdgePoint_N");
+                List<NodeRuleGroup> nrgList3 = node.nonnullNodeRuleGroup().values().stream()
+                    .sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
+                    .collect(Collectors.toList());
+                checkNodeRuleGroupForTpdrDSR(nrgList3, client1NepUuid, networkNepUuid3, nodeUuid);
+                break;
+            default:
+                fail();
+                break;
         }
     }
 
@@ -367,44 +450,69 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
             1, node.getLayerProtocolName().size());
         assertEquals("otsi node should manage a single protocol layer : PHOTONIC_MEDIA",
             LayerProtocolName.PHOTONICMEDIA, node.getLayerProtocolName().get(0));
-        List<OwnedNodeEdgePoint> neps = node.nonnullOwnedNodeEdgePoint().values().stream()
+        List<OwnedNodeEdgePoint> nepsI = node.nonnullOwnedNodeEdgePoint().values().stream()
+            .filter(n -> n.getName().containsKey(new NameKey("iNodeEdgePoint")))
+            .sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
+            .collect(Collectors.toList());
+        List<OwnedNodeEdgePoint> nepsE = node.nonnullOwnedNodeEdgePoint().values().stream()
+            .filter(n -> n.getName().containsKey(new NameKey("eNodeEdgePoint")))
             .sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
             .collect(Collectors.toList());
         switch (otsiNodeType) {
             case "switch":
-                assertEquals("Switch-OTSi node should have 8 NEPs", 8, neps.size());
-                OwnedNodeEdgePoint nep1 = neps.get(2);
+                assertEquals("Switch-OTSi node should have 4 eNEPs", 4, nepsE.size());
+                assertEquals("Switch-OTSi node should have 4 iNEPs", 4, nepsI.size());
+                OwnedNodeEdgePoint nep1 = nepsI.get(1);
                 Uuid inepUuid = new Uuid(
                         UUID.nameUUIDFromBytes((nodeId + "+iOTSi+XPDR2-NETWORK2").getBytes(Charset.forName("UTF-8")))
                         .toString());
-                checkNepOtsiNode(nep1, inepUuid, "XPDR2-NETWORK2", "iNodeEdgePoint_2");
-                OwnedNodeEdgePoint nep2 = neps.get(0);
+                checkNepOtsiNode(nep1, inepUuid, "XPDR2-NETWORK2", "iNodeEdgePoint");
+                OwnedNodeEdgePoint nep2 = nepsE.get(0);
                 Uuid enepUuid = new Uuid(
                         UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR2-NETWORK2").getBytes(Charset.forName("UTF-8")))
                         .toString());
-                checkNepOtsiNode(nep2, enepUuid, "XPDR2-NETWORK2", "eNodeEdgePoint_2");
+                checkNepOtsiNode(nep2, enepUuid, "XPDR2-NETWORK2", "eNodeEdgePoint");
                 List<NodeRuleGroup> nrgList = node.nonnullNodeRuleGroup().values().stream()
                     .sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
                     .collect(Collectors.toList());
                 checkNodeRuleGroupForSwitchOTSi(nrgList, enepUuid, inepUuid, nodeUuid);
                 break;
             case "mux":
-                assertEquals("Mux-OTSi node should have 2 NEPs", 2, neps.size());
-                OwnedNodeEdgePoint nep3 = neps.get(0);
+                assertEquals("Mux-OTSi node should have 1 eNEP", 1, nepsE.size());
+                assertEquals("Mux-OTSi node should have 1 iNEPs", 1, nepsI.size());
+                OwnedNodeEdgePoint nep3 = nepsE.get(0);
                 Uuid enepUuid2 = new Uuid(
                         UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
                         .toString());
-                checkNepOtsiNode(nep3, enepUuid2, "XPDR1-NETWORK1", "eNodeEdgePoint_1");
-                OwnedNodeEdgePoint nep4 = neps.get(1);
+                checkNepOtsiNode(nep3, enepUuid2, "XPDR1-NETWORK1", "eNodeEdgePoint");
+                OwnedNodeEdgePoint nep4 = nepsI.get(0);
                 Uuid inepUuid2 = new Uuid(
                         UUID.nameUUIDFromBytes((nodeId + "+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
                         .toString());
-                checkNepOtsiNode(nep4, inepUuid2, "XPDR1-NETWORK1", "iNodeEdgePoint_1");
+                checkNepOtsiNode(nep4, inepUuid2, "XPDR1-NETWORK1", "iNodeEdgePoint");
                 List<NodeRuleGroup> nrgList2 = node.nonnullNodeRuleGroup().values().stream()
                     .sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
                     .collect(Collectors.toList());
                 checkNodeRuleGroupForMuxOTSi(nrgList2, enepUuid2, inepUuid2, nodeUuid);
                 break;
+            case "tpdr":
+                assertEquals("Tpdr-OTSi node should have 2 eNEPs", 2, nepsE.size());
+                assertEquals("Tpdr-OTSi node should have 2 iNEPs", 2, nepsI.size());
+                OwnedNodeEdgePoint nep5 = nepsE.get(0);
+                Uuid enepUuid3 = new Uuid(
+                        UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+                        .toString());
+                checkNepOtsiNode(nep5, enepUuid3, "XPDR1-NETWORK1", "eNodeEdgePoint");
+                OwnedNodeEdgePoint nep6 = nepsI.get(0);
+                Uuid inepUuid3 = new Uuid(
+                        UUID.nameUUIDFromBytes((nodeId + "+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+                        .toString());
+                checkNepOtsiNode(nep6, inepUuid3, "XPDR1-NETWORK1", "iNodeEdgePoint");
+                List<NodeRuleGroup> nrgList3 = node.nonnullNodeRuleGroup().values().stream()
+                    .sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
+                    .collect(Collectors.toList());
+                checkNodeRuleGroupForTpdrOTSi(nrgList3, enepUuid3, inepUuid3, nodeUuid);
+                break;
             default:
                 Iterator<OwnedNodeEdgePoint> nepIterator = node.nonnullOwnedNodeEdgePoint().values().iterator();
                 int count = 1;
@@ -455,6 +563,34 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
         checkCommonPartOfNep(nep, false);
     }
 
+    private void checkNodeRuleGroupForTpdrDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
+        Uuid nodeUuid) {
+        assertEquals("transponder DSR should contain 2 node rule group", 2, nrgList.size());
+        for (NodeRuleGroup nodeRuleGroup : nrgList) {
+            assertEquals("each node-rule-group should contain 2 NEP for transponder DSR",
+                2, nodeRuleGroup.getNodeEdgePoint().size());
+        }
+        List<NodeEdgePoint> nodeEdgePointList = new ArrayList<>(nrgList.get(0).nonnullNodeEdgePoint().values());
+        assertThat("node-rule-group nb 1 should be between nep-client1 and nep-network1",
+            nodeEdgePointList.get(0).getNodeEdgePointUuid().getValue(),
+            either(containsString(networkNepUuid.getValue())).or(containsString(clientNepUuid.getValue())));
+        assertThat("node-rule-group nb 1 should be between nep-client1 and nep-network1",
+            nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
+            either(containsString(networkNepUuid.getValue())).or(containsString(clientNepUuid.getValue())));
+        assertEquals("node-rule-group nb 1 should be between nep-client1 and nep-network1 of the same node",
+            nodeEdgePointList.get(0).getNodeUuid(), nodeUuid);
+        assertEquals("node-rule-group nb 1 should be between nep-client1 and nep-network1 of the same node",
+            nodeEdgePointList.get(1).getNodeUuid(), nodeUuid);
+        List<Rule> rule = new ArrayList<>(nrgList.get(1).nonnullRule().values());
+        assertEquals("node-rule-group nb 1 should contain a single rule", 1, rule.size());
+        assertEquals("local-id of the rule should be 'forward'",
+            "forward", rule.get(0).getLocalId());
+        assertEquals("the forwarding rule should be 'MAYFORWARDACROSSGROUP'",
+            ForwardingRule.MAYFORWARDACROSSGROUP, rule.get(0).getForwardingRule());
+        assertEquals("the rule type should be 'FORWARDING'",
+            RuleType.FORWARDING, rule.get(0).getRuleType());
+    }
+
     private void checkNodeRuleGroupForMuxDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
         Uuid nodeUuid) {
         assertEquals("muxponder DSR should contain 4 node rule group", 4, nrgList.size());
@@ -464,7 +600,7 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
         }
         List<NodeEdgePoint> nodeEdgePointList = new ArrayList<>(nrgList.get(0).nonnullNodeEdgePoint().values());
         assertThat("node-rule-group nb 2 should be between nep-client4 and nep-network1",
-            nodeEdgePointList.get(0).getNodeEdgePointUuid().getValue(),
+            nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
             either(containsString(networkNepUuid.getValue())).or(containsString(clientNepUuid.getValue())));
         assertThat("node-rule-group nb 2 should be between nep-client4 and nep-network1",
             nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
@@ -510,6 +646,31 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
             RuleType.FORWARDING, ruleList.get(0).getRuleType());
     }
 
+    private void checkNodeRuleGroupForTpdrOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
+        Uuid nodeUuid) {
+        assertEquals("Tpdr-OTSi should contain two node rule groups", 2, nrgList.size());
+        List<NodeEdgePoint> nodeEdgePointList = new ArrayList<>(nrgList.get(0).getNodeEdgePoint().values());
+        assertEquals("Tpdr-OTSi node-rule-group should contain 2 NEP", 2, nodeEdgePointList.size());
+        assertThat("Tpdr-OTSi node-rule-group should be between eNEP and iNEP of XPDR1-NETWORK1",
+            nodeEdgePointList.get(0).getNodeEdgePointUuid().getValue(),
+            either(containsString(enepUuid.getValue())).or(containsString(inepUuid.getValue())));
+        assertThat("Tpdr-OTSi node-rule-group should be between eNEP and iNEP of XPDR1-NETWORK1",
+            nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
+            either(containsString(enepUuid.getValue())).or(containsString(inepUuid.getValue())));
+        assertEquals("any item of the node-rule-group should have the same nodeUuid",
+            nodeUuid, nodeEdgePointList.get(0).getNodeUuid());
+        assertEquals("any item of the node-rule-group should have the same nodeUuid",
+            nodeUuid, nodeEdgePointList.get(1).getNodeUuid());
+        List<Rule> ruleList = new ArrayList<>(nrgList.get(0).nonnullRule().values());
+        assertEquals("node-rule-group should contain a single rule", 1, ruleList.size());
+        assertEquals("local-id of the rule should be 'forward'",
+            "forward", ruleList.get(0).getLocalId());
+        assertEquals("the forwarding rule should be 'MAYFORWARDACROSSGROUP'",
+            ForwardingRule.MAYFORWARDACROSSGROUP, ruleList.get(0).getForwardingRule());
+        assertEquals("the rule type should be 'FORWARDING'",
+            RuleType.FORWARDING, ruleList.get(0).getRuleType());
+    }
+
     private void checkNodeRuleGroupForMuxOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
         Uuid nodeUuid) {
         assertEquals("Mux-OTSi should contain a single node rule group", 1, nrgList.size());
@@ -564,7 +725,7 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
             RuleType.FORWARDING, ruleList0.get(0).getRuleType());
     }
 
-    private void checkNepClient100G(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName) {
+    private void checkNepClient100GSwitch(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName) {
         assertEquals("bad uuid for " + portName, nepUuid, nep.getUuid());
         List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
         assertEquals("value of client nep should be '" + portName + "'",
@@ -580,6 +741,22 @@ public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
         checkCommonPartOfNep(nep, false);
     }
 
+    private void checkNepClient100GTpdr(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName) {
+        assertEquals("bad uuid for " + portName, nepUuid, nep.getUuid());
+        List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
+        assertEquals("value of client nep should be '" + portName + "'",
+            portName, nameList.get(0).getValue());
+        assertEquals("value-name of client nep for '" + portName + "' should be 100G-tpdr'",
+            nepName, nameList.get(0).getValueName());
+        assertEquals("Client nep should support 1 kind of cep",
+            1, nep.getSupportedCepLayerProtocolQualifier().size());
+        assertThat("client nep should support 2 kind of cep",
+            nep.getSupportedCepLayerProtocolQualifier(),
+            hasItems(DIGITALSIGNALTYPE100GigE.class));
+        assertEquals("client nep should be of ETH protocol type", LayerProtocolName.ETH, nep.getLayerProtocolName());
+        checkCommonPartOfNep(nep, false);
+    }
+
     private void checkNepOtsiNode(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName) {
         assertEquals("bad uuid for " + portName, nepUuid, nep.getUuid());
         List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
diff --git a/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplExceptionTest.java b/tapi/src/test/java/org/opendaylight/transportpce/tapi/topology/TapiTopologyImplExceptionTest.java
new file mode 100644 (file)
index 0000000..551e75c
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Copyright Â© 2019 Orange, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.transportpce.tapi.topology;
+
+import static org.junit.Assert.assertNull;
+import static org.mockito.Mockito.when;
+
+import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import java.util.Optional;
+import java.util.concurrent.ExecutionException;
+import org.eclipse.jdt.annotation.NonNull;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.transportpce.common.NetworkUtils;
+import org.opendaylight.transportpce.tapi.utils.TopologyDataUtils;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.GetTopologyDetailsOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.details.output.Topology;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.RpcResult;
+
+public class TapiTopologyImplExceptionTest {
+
+    @Test
+    public void getTopologyDetailsWithExceptionTest() throws InterruptedException, ExecutionException {
+        DataBroker dataBroker = Mockito.mock(DataBroker.class);
+        when(dataBroker.newReadOnlyTransaction())
+            .thenReturn(new ReadTransactionMock());
+
+        GetTopologyDetailsInput input = TopologyDataUtils.buildGetTopologyDetailsInput(NetworkUtils.OTN_NETWORK_ID);
+        TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(dataBroker);
+        ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
+        RpcResult<GetTopologyDetailsOutput> rpcResult = result.get();
+        Topology topology = rpcResult.getResult().getTopology();
+        assertNull("Topology should be null", topology);
+    }
+
+    private class ReadTransactionMock implements ReadTransaction {
+
+        @Override
+        public @NonNull Object getIdentifier() {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public <T extends DataObject> @NonNull FluentFuture<Optional<T>> read(@NonNull LogicalDatastoreType store,
+            @NonNull InstanceIdentifier<T> path) {
+            return FluentFuture.from(Futures.immediateFailedFuture(new InterruptedException()));
+        }
+
+        @Override
+        public @NonNull FluentFuture<Boolean> exists(@NonNull LogicalDatastoreType store,
+            @NonNull InstanceIdentifier<?> path) {
+            // TODO Auto-generated method stub
+            return null;
+        }
+
+        @Override
+        public void close() {
+            // TODO Auto-generated method stub
+        }
+    }
+
+}
index aeab921fe93dc47f24c9a5f5f6fa6148e8dccbf3..2e9898cf8da9ad5488e8afd821fd542a4faa1ee8 100644 (file)
@@ -12,7 +12,6 @@ import static org.hamcrest.CoreMatchers.either;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
 
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
@@ -64,7 +63,7 @@ public class TapiTopologyImplTest extends AbstractTest {
         TopologyDataUtils.writeTopologyFromFileToDatastore(getDataStoreContextUtil(),
             TopologyDataUtils.OPENROADM_TOPOLOGY_FILE, InstanceIdentifiers.OVERLAY_NETWORK_II);
         TopologyDataUtils.writeTopologyFromFileToDatastore(getDataStoreContextUtil(),
-            TopologyDataUtils.OTN_TOPOLOGY_WITH_OTN_LINKS_FILE, InstanceIdentifiers.OTN_NETWORK_II);
+            TopologyDataUtils.OTN_TOPOLOGY_FILE, InstanceIdentifiers.OTN_NETWORK_II);
         TopologyDataUtils.writePortmappingFromFileToDatastore(getDataStoreContextUtil());
         LOG.info("setup done");
     }
@@ -95,10 +94,10 @@ public class TapiTopologyImplTest extends AbstractTest {
         Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes("TAPI Ethernet Node".getBytes()).toString());
         assertEquals("incorrect topology uuid", topoUuid, topology.getUuid());
         assertEquals("incorrect node uuid", nodeUuid, topologyNodeList.get(0).getUuid());
-        assertNull("TAPI Ethernet Node should have no nep", topologyNodeList.get(0).getOwnedNodeEdgePoint());
+        assertEquals("TAPI Ethernet Node should have 2 neps",
+            2, topologyNodeList.get(0).getOwnedNodeEdgePoint().size());
     }
 
-
     @Test
     public void getTopologyDetailsForOtnTopologyWithOtnLinksWhenSuccessful()
         throws ExecutionException, InterruptedException {
@@ -116,8 +115,43 @@ public class TapiTopologyImplTest extends AbstractTest {
         @Nullable
         Topology topology = rpcResult.getResult().getTopology();
         assertNotNull("Topology should not be null", topology);
-        assertEquals("Node list size should be 9", 9, topology.getNode().size());
-        assertEquals("Link list size should be 14", 14, topology.getLink().size());
+        assertEquals("Node list size should be 13", 13, topology.getNode().size());
+        long nb1 = topology.getNode().values().stream()
+            .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+            .filter(node -> node.getName().values().stream().findFirst().get().getValue().equals("XPDR-A1-XPDR1"))
+            .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
+                .filter(nep -> nep.getName().containsKey(new NameKey("100G-tpdr"))))
+            .count();
+        assertEquals("XPDR-A1-XPDR1 should only have one client nep", 1, nb1);
+        long nb2 = topology.getNode().values().stream()
+            .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+            .filter(node -> node.getName().values().stream().findFirst().get().getValue().equals("SPDR-SA1-XPDR1"))
+            .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
+                .filter(nep -> nep.getName().containsKey(new NameKey("NodeEdgePoint_C"))))
+            .count();
+        assertEquals("SPDR-SA1-XPDR1 (mux) should have 4 client neps", 4, nb2);
+        long nb3 = topology.getNode().values().stream()
+            .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+            .filter(node -> node.getName().values().stream().findFirst().get().getValue().equals("SPDR-SA1-XPDR1"))
+            .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
+                .filter(nep -> nep.getName().containsKey(new NameKey("NodeEdgePoint_N"))))
+            .count();
+        assertEquals("SPDR-SA1-XPDR1 (mux) should have a single network nep", 1, nb3);
+        long nb4 = topology.getNode().values().stream()
+            .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+            .filter(node -> node.getName().values().stream().findFirst().get().getValue().equals("SPDR-SA1-XPDR2"))
+            .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
+                .filter(nep -> nep.getName().containsKey(new NameKey("NodeEdgePoint_C"))))
+            .count();
+        assertEquals("SPDR-SA1-XPDR2 (switch) should have 4 client neps", 4, nb4);
+        long nb5 = topology.getNode().values().stream()
+            .filter(node -> node.getLayerProtocolName().contains(LayerProtocolName.DSR))
+            .filter(node -> node.getName().values().stream().findFirst().get().getValue().equals("SPDR-SA1-XPDR2"))
+            .flatMap(node -> node.getOwnedNodeEdgePoint().values().stream()
+                .filter(nep -> nep.getName().containsKey(new NameKey("NodeEdgePoint_N"))))
+            .count();
+        assertEquals("SPDR-SA1-XPDR2 (switch) should have 2 network neps", 2, nb5);
+        assertEquals("Link list size should be 18", 18, topology.getLink().size());
         Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes("T0 - Multi-layer topology".getBytes()).toString());
         assertEquals("incorrect topology uuid", topoUuid, topology.getUuid());
         assertEquals("topology name should be T0 - Multi-layer topology",
@@ -128,16 +162,16 @@ public class TapiTopologyImplTest extends AbstractTest {
             .filter(n -> n.getName().containsKey(new NameKey("dsr/odu node name"))).count();
         long nbPhotonicNodes = topology.nonnullNode().values().stream()
             .filter(n -> n.getName().containsKey(new NameKey("otsi node name"))).count();
-        assertEquals("Node list should contain 4 DSR-ODU nodes", 4, nbDsrOduNodes);
-        assertEquals("Node list should contain 5 Photonics nodes", 5, nbPhotonicNodes);
+        assertEquals("Node list should contain 6 DSR-ODU nodes", 6, nbDsrOduNodes);
+        assertEquals("Node list should contain 7 Photonics nodes", 7, nbPhotonicNodes);
         long nbTransititionalLinks = topology.getLink().values().stream()
             .filter(l -> l.getName().containsKey(new NameKey("transitional link name"))).count();
         long nbOmsLinks = topology.getLink().values().stream()
             .filter(l -> l.getName().containsKey(new NameKey("OMS link name"))).count();
         long nbOtnLinks = topology.getLink().values().stream()
             .filter(l -> l.getName().containsKey(new NameKey("otn link name"))).count();
-        assertEquals("Link list should contain 6 transitional links", 6, nbTransititionalLinks);
-        assertEquals("Link list should contain 6 transitional links", 6, nbOmsLinks);
+        assertEquals("Link list should contain 8 transitional links", 8, nbTransititionalLinks);
+        assertEquals("Link list should contain 8 transitional links", 8, nbOmsLinks);
         assertEquals("Link list should contain 2 OTN links", 2, nbOtnLinks);
 
         Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
@@ -164,11 +198,12 @@ public class TapiTopologyImplTest extends AbstractTest {
                 .getBytes(Charset.forName("UTF-8"))).toString());
 
         List<Link> links = topology.nonnullLink().values().stream()
+            .filter(l -> l.getName().containsKey(new NameKey("otn link name")))
             .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
             .collect(Collectors.toList());
-        checkOtnLink(links.get(4), topoUuid, node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
+        checkOtnLink(links.get(0), topoUuid, node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
             "ODU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
-        checkOtnLink(links.get(11), topoUuid, node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
+        checkOtnLink(links.get(1), topoUuid, node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
             "OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
     }
 
index 80b393ddb8833d97a0e226bc88ade5983a4eb5fa..39868077fc98262f428f5f18de12e3821fa1866e 100644 (file)
@@ -33,9 +33,9 @@ import org.slf4j.LoggerFactory;
 public final class TopologyDataUtils {
 
     private static final Logger LOG = LoggerFactory.getLogger(TopologyDataUtils.class);
-    public static final String OPENROADM_TOPOLOGY_FILE = "src/test/resources/get_openroadm-topology2.xml";
-    public static final String OTN_TOPOLOGY_WITH_OTN_LINKS_FILE = "src/test/resources/otn-topology-with-otn-links.xml";
-    public static final String PORTMAPPING_FILE = "src/test/resources/get_portmapping.xml";
+    public static final String OPENROADM_TOPOLOGY_FILE = "src/test/resources/openroadm-topology.xml";
+    public static final String OTN_TOPOLOGY_FILE = "src/test/resources/otn-topology.xml";
+    public static final String PORTMAPPING_FILE = "src/test/resources/portmapping.xml";
 
     public static GetTopologyDetailsInput buildGetTopologyDetailsInput(String topoName) {
         GetTopologyDetailsInputBuilder builtInput = new GetTopologyDetailsInputBuilder();
similarity index 85%
rename from tapi/src/test/resources/get_openroadm-topology2.xml
rename to tapi/src/test/resources/openroadm-topology.xml
index 2a9c9b24a88329297bcad87d8a5f1121831693c7..053f56d7cbeed0144a6db18ad7f6d334ff0d708b 100644 (file)
@@ -3,11 +3,38 @@
 <network>
   <network-id>openroadm-topology</network-id>
   <network-types>
-    <openroadm-common-network xmlns="http://org/openroadm/common/network" />
+    <openroadm-common-network
+      xmlns="http://org/openroadm/common/network" />
   </network-types>
   <node>
     <node-id>ROADM-A1-SRG3</node-id>
-    <srg-attributes xmlns="http://org/openroadm/network/topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG3-PP3-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG3-PP2-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG3-CP-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-CP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG3-PP1-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG3-PP4-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    </termination-point>
+    <srg-attributes
+      xmlns="http://org/openroadm/network/topology">
       <available-wavelengths>
         <index>95</index>
       </available-wavelengths>
         <index>16</index>
       </available-wavelengths>
     </srg-attributes>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG3-PP3-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
-    </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG3-PP2-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    <supporting-node>
+      <network-ref>clli-network</network-ref>
+      <node-ref>NodeA</node-ref>
+    </supporting-node>
+    <supporting-node>
+      <network-ref>openroadm-network</network-ref>
+      <node-ref>ROADM-A1</node-ref>
+    </supporting-node>
+    <node-type xmlns="http://org/openroadm/common/network">SRG</node-type>
+  </node>
+  <node>
+    <node-id>XPDR-C1-XPDR1</node-id>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-CLIENT1</tp-id>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-NETWORK1</associated-connection-map-port>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG3-CP-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-CP</tp-type>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-CLIENT2</tp-id>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-NETWORK2</associated-connection-map-port>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG3-PP1-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-NETWORK2</tp-id>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-CLIENT2</associated-connection-map-port>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG3-PP4-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-NETWORK1</tp-id>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
+      <xpdr-network-attributes
+        xmlns="http://org/openroadm/network/topology">
+        <tail-equipment-id>ROADM-C1-SRG1--SRG1-PP1-TXRX
+        </tail-equipment-id>
+      </xpdr-network-attributes>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
     <supporting-node>
       <network-ref>clli-network</network-ref>
-      <node-ref>NodeA</node-ref>
+      <node-ref>NodeC</node-ref>
     </supporting-node>
     <supporting-node>
       <network-ref>openroadm-network</network-ref>
-      <node-ref>ROADM-A1</node-ref>
+      <node-ref>XPDR-C1</node-ref>
     </supporting-node>
-    <node-type xmlns="http://org/openroadm/common/network">SRG</node-type>
+    <node-type xmlns="http://org/openroadm/common/network">XPONDER</node-type>
   </node>
   <node>
-    <node-id>ROADM-C1-SRG1</node-id>
-    <srg-attributes xmlns="http://org/openroadm/network/topology">
+    <node-id>ROADM-A1-SRG1</node-id>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG1-PP4-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG1-PP1-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG1-PP2-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG1-PP3-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG1-CP-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-CP</tp-type>
+    </termination-point>
+    <srg-attributes
+      xmlns="http://org/openroadm/network/topology">
       <available-wavelengths>
         <index>95</index>
       </available-wavelengths>
         <index>16</index>
       </available-wavelengths>
     </srg-attributes>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG1-PP4-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
-    </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG1-PP1-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
-    </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG1-PP2-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
-    </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG1-PP3-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
-    </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG1-CP-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-CP</tp-type>
-    </termination-point>
     <supporting-node>
       <network-ref>clli-network</network-ref>
-      <node-ref>NodeC</node-ref>
+      <node-ref>NodeA</node-ref>
     </supporting-node>
     <supporting-node>
       <network-ref>openroadm-network</network-ref>
-      <node-ref>ROADM-C1</node-ref>
+      <node-ref>ROADM-A1</node-ref>
     </supporting-node>
     <node-type xmlns="http://org/openroadm/common/network">SRG</node-type>
   </node>
   <node>
-    <node-id>ROADM-A1-SRG1</node-id>
-    <srg-attributes xmlns="http://org/openroadm/network/topology">
+    <node-id>ROADM-A1-DEG1</node-id>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>DEG1-CTP-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-CTP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>DEG1-TTP-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-TTP</tp-type>
+    </termination-point>
+    <degree-attributes
+      xmlns="http://org/openroadm/network/topology">
+      <degree-number>1</degree-number>
       <available-wavelengths>
         <index>95</index>
       </available-wavelengths>
       <available-wavelengths>
         <index>16</index>
       </available-wavelengths>
-    </srg-attributes>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG1-PP4-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
-    </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG1-PP1-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
-    </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG1-PP2-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
-    </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG1-PP3-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
-    </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>SRG1-CP-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-CP</tp-type>
-    </termination-point>
+    </degree-attributes>
     <supporting-node>
       <network-ref>clli-network</network-ref>
       <node-ref>NodeA</node-ref>
       <network-ref>openroadm-network</network-ref>
       <node-ref>ROADM-A1</node-ref>
     </supporting-node>
-    <node-type xmlns="http://org/openroadm/common/network">SRG</node-type>
+    <node-type xmlns="http://org/openroadm/common/network">DEGREE</node-type>
   </node>
   <node>
-    <node-id>SPDR-SA1-XPDR1</node-id>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>XPDR1-NETWORK1</tp-id>
+    <node-id>XPDR-A1-XPDR1</node-id>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-CLIENT1</tp-id>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-NETWORK1</associated-connection-map-port>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-CLIENT2</tp-id>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-NETWORK2</associated-connection-map-port>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-NETWORK2</tp-id>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-CLIENT2</associated-connection-map-port>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-NETWORK1</tp-id>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
       <xpdr-network-attributes
         xmlns="http://org/openroadm/network/topology">
-        <tail-equipment-id>ROADM-A1-SRG1--SRG1-PP2-TXRX
+        <tail-equipment-id>ROADM-A1-SRG1--SRG1-PP1-TXRX
         </tail-equipment-id>
       </xpdr-network-attributes>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
     <supporting-node>
       <network-ref>openroadm-network</network-ref>
-      <node-ref>SPDR-SA1</node-ref>
+      <node-ref>XPDR-A1</node-ref>
     </supporting-node>
     <supporting-node>
       <network-ref>clli-network</network-ref>
-      <node-ref>NodeSA</node-ref>
+      <node-ref>NodeA</node-ref>
     </supporting-node>
     <node-type xmlns="http://org/openroadm/common/network">XPONDER</node-type>
   </node>
   <node>
-    <node-id>ROADM-A1-DEG1</node-id>
-    <degree-attributes xmlns="http://org/openroadm/network/topology">
-      <degree-number>1</degree-number>
+    <node-id>ROADM-A1-DEG2</node-id>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>DEG2-TTP-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-TTP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>DEG2-CTP-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-CTP</tp-type>
+    </termination-point>
+    <degree-attributes
+      xmlns="http://org/openroadm/network/topology">
+      <degree-number>2</degree-number>
       <available-wavelengths>
         <index>95</index>
       </available-wavelengths>
         <index>16</index>
       </available-wavelengths>
     </degree-attributes>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>DEG1-CTP-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-CTP</tp-type>
-    </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>DEG1-TTP-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-TTP</tp-type>
-    </termination-point>
     <supporting-node>
       <network-ref>clli-network</network-ref>
       <node-ref>NodeA</node-ref>
     <node-type xmlns="http://org/openroadm/common/network">DEGREE</node-type>
   </node>
   <node>
-    <node-id>ROADM-A1-DEG2</node-id>
-    <degree-attributes xmlns="http://org/openroadm/network/topology">
-      <degree-number>2</degree-number>
+    <node-id>ROADM-C1-SRG1</node-id>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG1-PP4-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG1-PP1-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG1-PP2-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG1-PP3-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>SRG1-CP-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-CP</tp-type>
+    </termination-point>
+    <srg-attributes
+      xmlns="http://org/openroadm/network/topology">
       <available-wavelengths>
         <index>95</index>
       </available-wavelengths>
       <available-wavelengths>
         <index>16</index>
       </available-wavelengths>
-    </degree-attributes>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>DEG2-TTP-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-TTP</tp-type>
-    </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>DEG2-CTP-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-CTP</tp-type>
-    </termination-point>
+    </srg-attributes>
     <supporting-node>
       <network-ref>clli-network</network-ref>
-      <node-ref>NodeA</node-ref>
+      <node-ref>NodeC</node-ref>
     </supporting-node>
     <supporting-node>
       <network-ref>openroadm-network</network-ref>
-      <node-ref>ROADM-A1</node-ref>
+      <node-ref>ROADM-C1</node-ref>
     </supporting-node>
-    <node-type xmlns="http://org/openroadm/common/network">DEGREE</node-type>
+    <node-type xmlns="http://org/openroadm/common/network">SRG</node-type>
   </node>
   <node>
-    <node-id>SPDR-SC1-XPDR1</node-id>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <node-id>SPDR-SA1-XPDR1</node-id>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR1-NETWORK1</tp-id>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
       <xpdr-network-attributes
         xmlns="http://org/openroadm/network/topology">
-        <tail-equipment-id>ROADM-C1-SRG1--SRG1-PP2-TXRX
+        <tail-equipment-id>ROADM-A1-SRG1--SRG1-PP2-TXRX
         </tail-equipment-id>
       </xpdr-network-attributes>
     </termination-point>
     <supporting-node>
       <network-ref>openroadm-network</network-ref>
-      <node-ref>SPDR-SC1</node-ref>
+      <node-ref>SPDR-SA1</node-ref>
     </supporting-node>
     <supporting-node>
       <network-ref>clli-network</network-ref>
-      <node-ref>NodeSC</node-ref>
+      <node-ref>NodeSA</node-ref>
     </supporting-node>
     <node-type xmlns="http://org/openroadm/common/network">XPONDER</node-type>
   </node>
   <node>
     <node-id>ROADM-C1-DEG1</node-id>
-    <degree-attributes xmlns="http://org/openroadm/network/topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>DEG1-CTP-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-CTP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>DEG1-TTP-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-TTP</tp-type>
+    </termination-point>
+    <degree-attributes
+      xmlns="http://org/openroadm/network/topology">
       <degree-number>1</degree-number>
       <available-wavelengths>
         <index>95</index>
         <index>16</index>
       </available-wavelengths>
     </degree-attributes>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>DEG1-CTP-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-CTP</tp-type>
-    </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>DEG1-TTP-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-TTP</tp-type>
-    </termination-point>
     <supporting-node>
       <network-ref>clli-network</network-ref>
       <node-ref>NodeC</node-ref>
     </supporting-node>
     <node-type xmlns="http://org/openroadm/common/network">DEGREE</node-type>
   </node>
+  <node>
+    <node-id>SPDR-SC1-XPDR1</node-id>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-NETWORK1</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
+      <xpdr-network-attributes
+        xmlns="http://org/openroadm/network/topology">
+        <tail-equipment-id>ROADM-C1-SRG1--SRG1-PP2-TXRX
+        </tail-equipment-id>
+      </xpdr-network-attributes>
+    </termination-point>
+    <supporting-node>
+      <network-ref>openroadm-network</network-ref>
+      <node-ref>SPDR-SC1</node-ref>
+    </supporting-node>
+    <supporting-node>
+      <network-ref>clli-network</network-ref>
+      <node-ref>NodeSC</node-ref>
+    </supporting-node>
+    <node-type xmlns="http://org/openroadm/common/network">XPONDER</node-type>
+  </node>
   <node>
     <node-id>ROADM-C1-DEG2</node-id>
-    <degree-attributes xmlns="http://org/openroadm/network/topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>DEG2-TTP-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-TTP</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>DEG2-CTP-TXRX</tp-id>
+      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-CTP</tp-type>
+    </termination-point>
+    <degree-attributes
+      xmlns="http://org/openroadm/network/topology">
       <degree-number>2</degree-number>
       <available-wavelengths>
         <index>95</index>
         <index>16</index>
       </available-wavelengths>
     </degree-attributes>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>DEG2-TTP-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-TTP</tp-type>
-    </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-      <tp-id>DEG2-CTP-TXRX</tp-id>
-      <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-CTP</tp-type>
-    </termination-point>
     <supporting-node>
       <network-ref>clli-network</network-ref>
       <node-ref>NodeC</node-ref>
   </node>
   <node>
     <node-id>SPDR-SA1-XPDR2</node-id>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK1</tp-id>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK3</tp-id>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
       <xpdr-network-attributes
         </tail-equipment-id>
       </xpdr-network-attributes>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK2</tp-id>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
       <xpdr-network-attributes
         </tail-equipment-id>
       </xpdr-network-attributes>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK4</tp-id>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
   </node>
   <node>
     <node-id>SPDR-SC1-XPDR2</node-id>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK1</tp-id>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK3</tp-id>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
       <xpdr-network-attributes
         </tail-equipment-id>
       </xpdr-network-attributes>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK2</tp-id>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
       <xpdr-network-attributes
         </tail-equipment-id>
       </xpdr-network-attributes>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK4</tp-id>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
       <dest-tp>XPDR1-NETWORK1</dest-tp>
       <dest-node>SPDR-SC1-XPDR1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">SPDR-SC1-XPDR1-XPDR1-NETWORK1toROADM-C1-SRG1-SRG1-PP2-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">SPDR-SC1-XPDR1-XPDR1-NETWORK1toROADM-C1-SRG1-SRG1-PP2-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">XPONDER-INPUT</link-type>
   </link>
       <source-node>ROADM-A1-DEG2</source-node>
       <source-tp>DEG2-TTP-TXRX</source-tp>
     </source>
-    <OMS-attributes xmlns="http://org/openroadm/network/topology">
+    <OMS-attributes
+      xmlns="http://org/openroadm/network/topology">
       <opposite-link>ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX
       </opposite-link>
     </OMS-attributes>
       <dest-tp>DEG1-TTP-TXRX</dest-tp>
       <dest-node>ROADM-C1-DEG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">ROADM-TO-ROADM</link-type>
   </link>
+  <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <link-id>XPDR-C1-XPDR1-XPDR1-NETWORK1toROADM-C1-SRG1-SRG1-PP1-TXRX
+    </link-id>
+    <source>
+      <source-node>XPDR-C1-XPDR1</source-node>
+      <source-tp>XPDR1-NETWORK1</source-tp>
+    </source>
+    <destination>
+      <dest-tp>SRG1-PP1-TXRX</dest-tp>
+      <dest-node>ROADM-C1-SRG1</dest-node>
+    </destination>
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-PP1-TXRXtoXPDR-C1-XPDR1-XPDR1-NETWORK1
+    </opposite-link>
+    <link-type xmlns="http://org/openroadm/common/network">XPONDER-OUTPUT</link-type>
+  </link>
   <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
     <link-id>ROADM-C1-SRG1-SRG1-PP3-TXRXtoSPDR-SC1-XPDR2-XPDR2-NETWORK2
     </link-id>
       <dest-tp>XPDR2-NETWORK2</dest-tp>
       <dest-node>SPDR-SC1-XPDR2</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">SPDR-SC1-XPDR2-XPDR2-NETWORK2toROADM-C1-SRG1-SRG1-PP3-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">SPDR-SC1-XPDR2-XPDR2-NETWORK2toROADM-C1-SRG1-SRG1-PP3-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">XPONDER-INPUT</link-type>
   </link>
       <dest-tp>XPDR2-NETWORK3</dest-tp>
       <dest-node>SPDR-SA1-XPDR2</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">SPDR-SA1-XPDR2-XPDR2-NETWORK3toROADM-A1-SRG1-SRG1-PP4-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">SPDR-SA1-XPDR2-XPDR2-NETWORK3toROADM-A1-SRG1-SRG1-PP4-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">XPONDER-INPUT</link-type>
   </link>
       <dest-tp>SRG1-CP-TXRX</dest-tp>
       <dest-node>ROADM-C1-SRG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">DROP-LINK</link-type>
   </link>
       <dest-tp>SRG1-PP4-TXRX</dest-tp>
       <dest-node>ROADM-A1-SRG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-PP4-TXRXtoSPDR-SA1-XPDR2-XPDR2-NETWORK3
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-PP4-TXRXtoSPDR-SA1-XPDR2-XPDR2-NETWORK3
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">XPONDER-OUTPUT</link-type>
   </link>
       <dest-tp>SRG1-PP2-TXRX</dest-tp>
       <dest-node>ROADM-C1-SRG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-PP2-TXRXtoSPDR-SC1-XPDR1-XPDR1-NETWORK1
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-PP2-TXRXtoSPDR-SC1-XPDR1-XPDR1-NETWORK1
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">XPONDER-OUTPUT</link-type>
   </link>
       <dest-tp>DEG1-CTP-TXRX</dest-tp>
       <dest-node>ROADM-A1-DEG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">ADD-LINK</link-type>
   </link>
       <dest-tp>SRG1-PP3-TXRX</dest-tp>
       <dest-node>ROADM-C1-SRG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-PP3-TXRXtoSPDR-SC1-XPDR2-XPDR2-NETWORK2
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-PP3-TXRXtoSPDR-SC1-XPDR2-XPDR2-NETWORK2
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">XPONDER-OUTPUT</link-type>
   </link>
       <dest-tp>DEG2-CTP-TXRX</dest-tp>
       <dest-node>ROADM-A1-DEG2</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">ADD-LINK</link-type>
   </link>
       <dest-tp>XPDR2-NETWORK3</dest-tp>
       <dest-node>SPDR-SC1-XPDR2</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">SPDR-SC1-XPDR2-XPDR2-NETWORK3toROADM-C1-SRG1-SRG1-PP4-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">SPDR-SC1-XPDR2-XPDR2-NETWORK3toROADM-C1-SRG1-SRG1-PP4-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">XPONDER-INPUT</link-type>
   </link>
       <dest-tp>SRG3-CP-TXRX</dest-tp>
       <dest-node>ROADM-A1-SRG3</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">DROP-LINK</link-type>
   </link>
   <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-    <link-id>SPDR-SA1-XPDR1-XPDR1-NETWORK1toROADM-A1-SRG1-SRG1-PP2-TXRX
+    <link-id>ROADM-A1-SRG1-SRG1-PP1-TXRXtoXPDR-A1-XPDR1-XPDR1-NETWORK1
     </link-id>
     <source>
-      <source-node>SPDR-SA1-XPDR1</source-node>
-      <source-tp>XPDR1-NETWORK1</source-tp>
+      <source-node>ROADM-A1-SRG1</source-node>
+      <source-tp>SRG1-PP1-TXRX</source-tp>
     </source>
     <destination>
-      <dest-tp>SRG1-PP2-TXRX</dest-tp>
-      <dest-node>ROADM-A1-SRG1</dest-node>
+      <dest-tp>XPDR1-NETWORK1</dest-tp>
+      <dest-node>XPDR-A1-XPDR1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-PP2-TXRXtoSPDR-SA1-XPDR1-XPDR1-NETWORK1
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">XPDR-A1-XPDR1-XPDR1-NETWORK1toROADM-A1-SRG1-SRG1-PP1-TXRX
     </opposite-link>
-    <link-type xmlns="http://org/openroadm/common/network">XPONDER-OUTPUT</link-type>
+    <link-type xmlns="http://org/openroadm/common/network">XPONDER-INPUT</link-type>
   </link>
   <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-    <link-id>ROADM-A1-SRG1-SRG1-PP2-TXRXtoSPDR-SA1-XPDR1-XPDR1-NETWORK1
+    <link-id>SPDR-SA1-XPDR1-XPDR1-NETWORK1toROADM-A1-SRG1-SRG1-PP2-TXRX
     </link-id>
     <source>
-      <source-node>ROADM-A1-SRG1</source-node>
-      <source-tp>SRG1-PP2-TXRX</source-tp>
+      <source-node>SPDR-SA1-XPDR1</source-node>
+      <source-tp>XPDR1-NETWORK1</source-tp>
     </source>
     <destination>
-      <dest-tp>XPDR1-NETWORK1</dest-tp>
-      <dest-node>SPDR-SA1-XPDR1</dest-node>
+      <dest-tp>SRG1-PP2-TXRX</dest-tp>
+      <dest-node>ROADM-A1-SRG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">SPDR-SA1-XPDR1-XPDR1-NETWORK1toROADM-A1-SRG1-SRG1-PP2-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-PP2-TXRXtoSPDR-SA1-XPDR1-XPDR1-NETWORK1
     </opposite-link>
-    <link-type xmlns="http://org/openroadm/common/network">XPONDER-INPUT</link-type>
+    <link-type xmlns="http://org/openroadm/common/network">XPONDER-OUTPUT</link-type>
   </link>
   <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
     <link-id>ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX
       <source-node>ROADM-C1-DEG1</source-node>
       <source-tp>DEG1-TTP-TXRX</source-tp>
     </source>
-    <OMS-attributes xmlns="http://org/openroadm/network/topology">
+    <OMS-attributes
+      xmlns="http://org/openroadm/network/topology">
       <opposite-link>ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX
       </opposite-link>
     </OMS-attributes>
       <dest-tp>DEG2-TTP-TXRX</dest-tp>
       <dest-node>ROADM-A1-DEG2</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">ROADM-TO-ROADM</link-type>
   </link>
+  <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <link-id>ROADM-A1-SRG1-SRG1-PP2-TXRXtoSPDR-SA1-XPDR1-XPDR1-NETWORK1
+    </link-id>
+    <source>
+      <source-node>ROADM-A1-SRG1</source-node>
+      <source-tp>SRG1-PP2-TXRX</source-tp>
+    </source>
+    <destination>
+      <dest-tp>XPDR1-NETWORK1</dest-tp>
+      <dest-node>SPDR-SA1-XPDR1</dest-node>
+    </destination>
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">SPDR-SA1-XPDR1-XPDR1-NETWORK1toROADM-A1-SRG1-SRG1-PP2-TXRX
+    </opposite-link>
+    <link-type xmlns="http://org/openroadm/common/network">XPONDER-INPUT</link-type>
+  </link>
   <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
     <link-id>ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX
     </link-id>
       <dest-tp>DEG1-CTP-TXRX</dest-tp>
       <dest-node>ROADM-C1-DEG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">EXPRESS-LINK</link-type>
   </link>
       <dest-tp>SRG1-CP-TXRX</dest-tp>
       <dest-node>ROADM-C1-SRG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">DROP-LINK</link-type>
   </link>
       <dest-tp>SRG1-CP-TXRX</dest-tp>
       <dest-node>ROADM-A1-SRG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">DROP-LINK</link-type>
   </link>
       <dest-tp>DEG2-CTP-TXRX</dest-tp>
       <dest-node>ROADM-C1-DEG2</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">EXPRESS-LINK</link-type>
   </link>
       <dest-tp>SRG1-PP4-TXRX</dest-tp>
       <dest-node>ROADM-C1-SRG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-PP4-TXRXtoSPDR-SC1-XPDR2-XPDR2-NETWORK3
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-PP4-TXRXtoSPDR-SC1-XPDR2-XPDR2-NETWORK3
+    </opposite-link>
+    <link-type xmlns="http://org/openroadm/common/network">XPONDER-OUTPUT</link-type>
+  </link>
+  <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <link-id>XPDR-A1-XPDR1-XPDR1-NETWORK1toROADM-A1-SRG1-SRG1-PP1-TXRX
+    </link-id>
+    <source>
+      <source-node>XPDR-A1-XPDR1</source-node>
+      <source-tp>XPDR1-NETWORK1</source-tp>
+    </source>
+    <destination>
+      <dest-tp>SRG1-PP1-TXRX</dest-tp>
+      <dest-node>ROADM-A1-SRG1</dest-node>
+    </destination>
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-PP1-TXRXtoXPDR-A1-XPDR1-XPDR1-NETWORK1
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">XPONDER-OUTPUT</link-type>
   </link>
       <dest-tp>DEG1-CTP-TXRX</dest-tp>
       <dest-node>ROADM-A1-DEG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">EXPRESS-LINK</link-type>
   </link>
       <dest-tp>DEG1-CTP-TXRX</dest-tp>
       <dest-node>ROADM-A1-DEG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">ADD-LINK</link-type>
   </link>
+  <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <link-id>ROADM-C1-SRG1-SRG1-PP1-TXRXtoXPDR-C1-XPDR1-XPDR1-NETWORK1
+    </link-id>
+    <source>
+      <source-node>ROADM-C1-SRG1</source-node>
+      <source-tp>SRG1-PP1-TXRX</source-tp>
+    </source>
+    <destination>
+      <dest-tp>XPDR1-NETWORK1</dest-tp>
+      <dest-node>XPDR-C1-XPDR1</dest-node>
+    </destination>
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">XPDR-C1-XPDR1-XPDR1-NETWORK1toROADM-C1-SRG1-SRG1-PP1-TXRX
+    </opposite-link>
+    <link-type xmlns="http://org/openroadm/common/network">XPONDER-INPUT</link-type>
+  </link>
   <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
     <link-id>ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX
     </link-id>
       <dest-tp>SRG3-CP-TXRX</dest-tp>
       <dest-node>ROADM-A1-SRG3</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">DROP-LINK</link-type>
   </link>
       <dest-tp>DEG2-CTP-TXRX</dest-tp>
       <dest-node>ROADM-A1-DEG2</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">ADD-LINK</link-type>
   </link>
       <dest-tp>SRG1-PP3-TXRX</dest-tp>
       <dest-node>ROADM-A1-SRG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-PP3-TXRXtoSPDR-SA1-XPDR2-XPDR2-NETWORK2
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-PP3-TXRXtoSPDR-SA1-XPDR2-XPDR2-NETWORK2
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">XPONDER-OUTPUT</link-type>
   </link>
       <dest-tp>XPDR2-NETWORK2</dest-tp>
       <dest-node>SPDR-SA1-XPDR2</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">SPDR-SA1-XPDR2-XPDR2-NETWORK2toROADM-A1-SRG1-SRG1-PP3-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">SPDR-SA1-XPDR2-XPDR2-NETWORK2toROADM-A1-SRG1-SRG1-PP3-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">XPONDER-INPUT</link-type>
   </link>
       <dest-tp>DEG2-CTP-TXRX</dest-tp>
       <dest-node>ROADM-C1-DEG2</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">ADD-LINK</link-type>
   </link>
       <dest-tp>SRG1-CP-TXRX</dest-tp>
       <dest-node>ROADM-A1-SRG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">DROP-LINK</link-type>
   </link>
       <dest-tp>DEG1-CTP-TXRX</dest-tp>
       <dest-node>ROADM-C1-DEG1</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">ADD-LINK</link-type>
   </link>
       <dest-tp>DEG2-CTP-TXRX</dest-tp>
       <dest-node>ROADM-A1-DEG2</dest-node>
     </destination>
-    <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">EXPRESS-LINK</link-type>
   </link>
similarity index 59%
rename from tapi/src/test/resources/otn-topology-with-otn-links.xml
rename to tapi/src/test/resources/otn-topology.xml
index 9005a8705d7344f8186a8f7e523f3afa006d1122..bf7e734ce5a80fe915af5549a9c52e11d890ef3e 100644 (file)
 <network>
   <network-id>otn-topology</network-id>
   <network-types>
-    <openroadm-common-network xmlns="http://org/openroadm/common/network" />
+    <openroadm-common-network
+      xmlns="http://org/openroadm/common/network" />
   </network-types>
+  <node>
+    <node-id>XPDR-C1-XPDR1</node-id>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-CLIENT1</tp-id>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-NETWORK1</associated-connection-map-port>
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology" />
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
+        <supported-interface-capability>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-100GE</if-cap-type>
+        </supported-interface-capability>
+      </tp-supported-interfaces>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-CLIENT2</tp-id>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-NETWORK2</associated-connection-map-port>
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology" />
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
+        <supported-interface-capability>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-100GE</if-cap-type>
+        </supported-interface-capability>
+      </tp-supported-interfaces>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-NETWORK2</tp-id>
+      <supporting-termination-point>
+        <network-ref>openroadm-topology</network-ref>
+        <node-ref>XPDR-C1-XPDR1</node-ref>
+        <tp-ref>XPDR1-NETWORK2</tp-ref>
+      </supporting-termination-point>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-CLIENT2</associated-connection-map-port>
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
+        <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
+      </xpdr-tp-port-connection-attributes>
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
+        <supported-interface-capability>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+        </supported-interface-capability>
+      </tp-supported-interfaces>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-NETWORK1</tp-id>
+      <supporting-termination-point>
+        <network-ref>openroadm-topology</network-ref>
+        <node-ref>XPDR-C1-XPDR1</node-ref>
+        <tp-ref>XPDR1-NETWORK1</tp-ref>
+      </supporting-termination-point>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
+        <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
+      </xpdr-tp-port-connection-attributes>
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
+        <supported-interface-capability>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+        </supported-interface-capability>
+      </tp-supported-interfaces>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
+    </termination-point>
+    <supporting-node>
+      <network-ref>clli-network</network-ref>
+      <node-ref>NodeC</node-ref>
+    </supporting-node>
+    <supporting-node>
+      <network-ref>openroadm-network</network-ref>
+      <node-ref>XPDR-C1</node-ref>
+    </supporting-node>
+    <supporting-node>
+      <network-ref>openroadm-topology</network-ref>
+      <node-ref>XPDR-C1-XPDR1</node-ref>
+    </supporting-node>
+    <node-type xmlns="http://org/openroadm/common/network">TPDR</node-type>
+    <xpdr-attributes
+      xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-number>1</xpdr-number>
+    </xpdr-attributes>
+  </node>
   <node>
     <node-id>SPDR-SA1-XPDR1</node-id>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR1-CLIENT1</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU2e</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR1-CLIENT3</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU2e</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR1-CLIENT2</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU2e</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR1-NETWORK1</tp-id>
       <supporting-termination-point>
         <network-ref>openroadm-topology</network-ref>
         <node-ref>SPDR-SA1-XPDR1</node-ref>
         <tp-ref>XPDR1-NETWORK1</tp-ref>
       </supporting-termination-point>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <odtu-tpn-pool>
-          <odtu-type xmlns:x="http://org/openroadm/otn-common-types">x:ODTU4.ts-Allocated</odtu-type>
+          <odtu-type
+            xmlns:x="http://org/openroadm/otn-common-types">x:ODTU4.ts-Allocated</odtu-type>
           <tpn-pool>2</tpn-pool>
           <tpn-pool>1</tpn-pool>
           <tpn-pool>12</tpn-pool>
         <ts-pool>26</ts-pool>
         <ts-pool>27</ts-pool>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR1-CLIENT4</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU2e</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
       <node-ref>SPDR-SA1-XPDR1</node-ref>
     </supporting-node>
     <node-type xmlns="http://org/openroadm/common/network">MUXPDR</node-type>
-    <switching-pools xmlns="http://org/openroadm/otn/network/topology">
+    <switching-pools
+      xmlns="http://org/openroadm/otn/network/topology">
       <odu-switching-pools>
         <switching-pool-number>1</switching-pool-number>
         <non-blocking-list>
         <switching-pool-type>non-blocking</switching-pool-type>
       </odu-switching-pools>
     </switching-pools>
-    <tp-bandwidth-sharing xmlns="http://org/openroadm/otn/network/topology" />
-    <xpdr-attributes xmlns="http://org/openroadm/otn/network/topology">
+    <tp-bandwidth-sharing
+      xmlns="http://org/openroadm/otn/network/topology" />
+    <xpdr-attributes
+      xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-number>1</xpdr-number>
+    </xpdr-attributes>
+  </node>
+  <node>
+    <node-id>XPDR-A1-XPDR1</node-id>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-CLIENT1</tp-id>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-NETWORK1</associated-connection-map-port>
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology" />
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
+        <supported-interface-capability>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-100GE</if-cap-type>
+        </supported-interface-capability>
+      </tp-supported-interfaces>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-CLIENT2</tp-id>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-NETWORK2</associated-connection-map-port>
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology" />
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
+        <supported-interface-capability>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-100GE</if-cap-type>
+        </supported-interface-capability>
+      </tp-supported-interfaces>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-NETWORK2</tp-id>
+      <supporting-termination-point>
+        <network-ref>openroadm-topology</network-ref>
+        <node-ref>XPDR-A1-XPDR1</node-ref>
+        <tp-ref>XPDR1-NETWORK2</tp-ref>
+      </supporting-termination-point>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-CLIENT2</associated-connection-map-port>
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
+        <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
+      </xpdr-tp-port-connection-attributes>
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
+        <supported-interface-capability>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+        </supported-interface-capability>
+      </tp-supported-interfaces>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
+    </termination-point>
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+      <tp-id>XPDR1-NETWORK1</tp-id>
+      <supporting-termination-point>
+        <network-ref>openroadm-topology</network-ref>
+        <node-ref>XPDR-A1-XPDR1</node-ref>
+        <tp-ref>XPDR1-NETWORK1</tp-ref>
+      </supporting-termination-point>
+      <associated-connection-map-port
+        xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
+        <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
+      </xpdr-tp-port-connection-attributes>
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
+        <supported-interface-capability>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+        </supported-interface-capability>
+      </tp-supported-interfaces>
+      <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
+    </termination-point>
+    <supporting-node>
+      <network-ref>openroadm-network</network-ref>
+      <node-ref>XPDR-A1</node-ref>
+    </supporting-node>
+    <supporting-node>
+      <network-ref>clli-network</network-ref>
+      <node-ref>NodeA</node-ref>
+    </supporting-node>
+    <supporting-node>
+      <network-ref>openroadm-topology</network-ref>
+      <node-ref>XPDR-A1-XPDR1</node-ref>
+    </supporting-node>
+    <node-type xmlns="http://org/openroadm/common/network">TPDR</node-type>
+    <xpdr-attributes
+      xmlns="http://org/openroadm/otn/network/topology">
       <xpdr-number>1</xpdr-number>
     </xpdr-attributes>
   </node>
   <node>
     <node-id>SPDR-SC1-XPDR1</node-id>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR1-CLIENT1</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU2e</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR1-CLIENT3</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU2e</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR1-CLIENT2</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU2e</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR1-NETWORK1</tp-id>
       <supporting-termination-point>
         <network-ref>openroadm-topology</network-ref>
         <node-ref>SPDR-SC1-XPDR1</node-ref>
         <tp-ref>XPDR1-NETWORK1</tp-ref>
       </supporting-termination-point>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <odtu-tpn-pool>
-          <odtu-type xmlns:x="http://org/openroadm/otn-common-types">x:ODTU4.ts-Allocated</odtu-type>
+          <odtu-type
+            xmlns:x="http://org/openroadm/otn-common-types">x:ODTU4.ts-Allocated</odtu-type>
           <tpn-pool>2</tpn-pool>
           <tpn-pool>1</tpn-pool>
           <tpn-pool>12</tpn-pool>
         <ts-pool>26</ts-pool>
         <ts-pool>27</ts-pool>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR1-CLIENT4</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU2e</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
       <node-ref>SPDR-SC1-XPDR1</node-ref>
     </supporting-node>
     <node-type xmlns="http://org/openroadm/common/network">MUXPDR</node-type>
-    <switching-pools xmlns="http://org/openroadm/otn/network/topology">
+    <switching-pools
+      xmlns="http://org/openroadm/otn/network/topology">
       <odu-switching-pools>
         <switching-pool-number>1</switching-pool-number>
         <non-blocking-list>
         <switching-pool-type>non-blocking</switching-pool-type>
       </odu-switching-pools>
     </switching-pools>
-    <tp-bandwidth-sharing xmlns="http://org/openroadm/otn/network/topology" />
-    <xpdr-attributes xmlns="http://org/openroadm/otn/network/topology">
+    <tp-bandwidth-sharing
+      xmlns="http://org/openroadm/otn/network/topology" />
+    <xpdr-attributes
+      xmlns="http://org/openroadm/otn/network/topology">
       <xpdr-number>1</xpdr-number>
     </xpdr-attributes>
   </node>
   <node>
     <node-id>SPDR-SA1-XPDR2</node-id>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK1</tp-id>
       <supporting-termination-point>
         <network-ref>openroadm-topology</network-ref>
         <node-ref>SPDR-SA1-XPDR2</node-ref>
         <tp-ref>XPDR2-NETWORK1</tp-ref>
       </supporting-termination-point>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK3</tp-id>
       <supporting-termination-point>
         <network-ref>openroadm-topology</network-ref>
         <node-ref>SPDR-SA1-XPDR2</node-ref>
         <tp-ref>XPDR2-NETWORK3</tp-ref>
       </supporting-termination-point>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK2</tp-id>
       <supporting-termination-point>
         <network-ref>openroadm-topology</network-ref>
         <node-ref>SPDR-SA1-XPDR2</node-ref>
         <tp-ref>XPDR2-NETWORK2</tp-ref>
       </supporting-termination-point>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK4</tp-id>
       <supporting-termination-point>
         <network-ref>openroadm-topology</network-ref>
         <node-ref>SPDR-SA1-XPDR2</node-ref>
         <tp-ref>XPDR2-NETWORK4</tp-ref>
       </supporting-termination-point>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-CLIENT3</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-CLIENT4</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-CLIENT1</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-CLIENT2</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
       <node-ref>SPDR-SA1-XPDR2</node-ref>
     </supporting-node>
     <node-type xmlns="http://org/openroadm/common/network">SWITCH</node-type>
-    <switching-pools xmlns="http://org/openroadm/otn/network/topology">
+    <switching-pools
+      xmlns="http://org/openroadm/otn/network/topology">
       <odu-switching-pools>
         <switching-pool-number>1</switching-pool-number>
         <non-blocking-list>
         <switching-pool-type>non-blocking</switching-pool-type>
       </odu-switching-pools>
     </switching-pools>
-    <tp-bandwidth-sharing xmlns="http://org/openroadm/otn/network/topology" />
-    <xpdr-attributes xmlns="http://org/openroadm/otn/network/topology">
+    <tp-bandwidth-sharing
+      xmlns="http://org/openroadm/otn/network/topology" />
+    <xpdr-attributes
+      xmlns="http://org/openroadm/otn/network/topology">
       <xpdr-number>2</xpdr-number>
     </xpdr-attributes>
   </node>
   <node>
     <node-id>SPDR-SC1-XPDR2</node-id>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK1</tp-id>
       <supporting-termination-point>
         <network-ref>openroadm-topology</network-ref>
         <node-ref>SPDR-SC1-XPDR2</node-ref>
         <tp-ref>XPDR2-NETWORK1</tp-ref>
       </supporting-termination-point>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK3</tp-id>
       <supporting-termination-point>
         <network-ref>openroadm-topology</network-ref>
         <node-ref>SPDR-SC1-XPDR2</node-ref>
         <tp-ref>XPDR2-NETWORK3</tp-ref>
       </supporting-termination-point>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK2</tp-id>
       <supporting-termination-point>
         <network-ref>openroadm-topology</network-ref>
         <node-ref>SPDR-SC1-XPDR2</node-ref>
         <tp-ref>XPDR2-NETWORK2</tp-ref>
       </supporting-termination-point>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-NETWORK4</tp-id>
       <supporting-termination-point>
         <network-ref>openroadm-topology</network-ref>
         <node-ref>SPDR-SC1-XPDR2</node-ref>
         <tp-ref>XPDR2-NETWORK4</tp-ref>
       </supporting-termination-point>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-CLIENT3</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-CLIENT4</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-CLIENT1</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
     </termination-point>
-    <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+    <termination-point
+      xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
       <tp-id>XPDR2-CLIENT2</tp-id>
-      <xpdr-tp-port-connection-attributes xmlns="http://org/openroadm/otn/network/topology">
+      <xpdr-tp-port-connection-attributes
+        xmlns="http://org/openroadm/otn/network/topology">
         <rate xmlns:x="http://org/openroadm/otn-common-types">x:ODU4</rate>
       </xpdr-tp-port-connection-attributes>
-      <tp-supported-interfaces xmlns="http://org/openroadm/otn/network/topology">
+      <tp-supported-interfaces
+        xmlns="http://org/openroadm/otn/network/topology">
         <supported-interface-capability>
-          <if-cap-type xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
+          <if-cap-type
+            xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</if-cap-type>
         </supported-interface-capability>
       </tp-supported-interfaces>
       <tp-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
       <node-ref>NodeSC</node-ref>
     </supporting-node>
     <node-type xmlns="http://org/openroadm/common/network">SWITCH</node-type>
-    <switching-pools xmlns="http://org/openroadm/otn/network/topology">
+    <switching-pools
+      xmlns="http://org/openroadm/otn/network/topology">
       <odu-switching-pools>
         <switching-pool-number>1</switching-pool-number>
         <non-blocking-list>
         <switching-pool-type>non-blocking</switching-pool-type>
       </odu-switching-pools>
     </switching-pools>
-    <tp-bandwidth-sharing xmlns="http://org/openroadm/otn/network/topology" />
-    <xpdr-attributes xmlns="http://org/openroadm/otn/network/topology">
+    <tp-bandwidth-sharing
+      xmlns="http://org/openroadm/otn/network/topology" />
+    <xpdr-attributes
+      xmlns="http://org/openroadm/otn/network/topology">
       <xpdr-number>2</xpdr-number>
     </xpdr-attributes>
   </node>
   <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-    <link-id>OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1
+    <link-id>OTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1
     </link-id>
     <source>
-      <source-node>SPDR-SA1-XPDR1</source-node>
+      <source-node>SPDR-SC1-XPDR1</source-node>
       <source-tp>XPDR1-NETWORK1</source-tp>
     </source>
     <otn-link-type xmlns="http://transportpce/topology">OTU4</otn-link-type>
     <destination>
       <dest-tp>XPDR1-NETWORK1</dest-tp>
-      <dest-node>SPDR-SC1-XPDR1</dest-node>
+      <dest-node>SPDR-SA1-XPDR1</dest-node>
     </destination>
-    <available-bandwidth xmlns="http://org/openroadm/otn/network/topology">0</available-bandwidth>
-    <used-bandwidth xmlns="http://org/openroadm/otn/network/topology">100000</used-bandwidth>
-    <opposite-link xmlns="http://org/openroadm/common/network">OTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1
+    <available-bandwidth
+      xmlns="http://org/openroadm/otn/network/topology">0</available-bandwidth>
+    <used-bandwidth
+      xmlns="http://org/openroadm/otn/network/topology">100000</used-bandwidth>
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">OTN-LINK</link-type>
   </link>
   <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-    <link-id>OTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1
+    <link-id>OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1
     </link-id>
     <source>
-      <source-node>SPDR-SC1-XPDR1</source-node>
+      <source-node>SPDR-SA1-XPDR1</source-node>
       <source-tp>XPDR1-NETWORK1</source-tp>
     </source>
     <otn-link-type xmlns="http://transportpce/topology">OTU4</otn-link-type>
     <destination>
       <dest-tp>XPDR1-NETWORK1</dest-tp>
-      <dest-node>SPDR-SA1-XPDR1</dest-node>
+      <dest-node>SPDR-SC1-XPDR1</dest-node>
     </destination>
-    <available-bandwidth xmlns="http://org/openroadm/otn/network/topology">0</available-bandwidth>
-    <used-bandwidth xmlns="http://org/openroadm/otn/network/topology">100000</used-bandwidth>
-    <opposite-link xmlns="http://org/openroadm/common/network">OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1
+    <available-bandwidth
+      xmlns="http://org/openroadm/otn/network/topology">0</available-bandwidth>
+    <used-bandwidth
+      xmlns="http://org/openroadm/otn/network/topology">100000</used-bandwidth>
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">OTU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">OTN-LINK</link-type>
   </link>
   <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-    <link-id>ODU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1
+    <link-id>ODU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1
     </link-id>
     <source>
-      <source-node>SPDR-SA1-XPDR1</source-node>
+      <source-node>SPDR-SC1-XPDR1</source-node>
       <source-tp>XPDR1-NETWORK1</source-tp>
     </source>
     <otn-link-type xmlns="http://transportpce/topology">ODTU4</otn-link-type>
     <destination>
       <dest-tp>XPDR1-NETWORK1</dest-tp>
-      <dest-node>SPDR-SC1-XPDR1</dest-node>
+      <dest-node>SPDR-SA1-XPDR1</dest-node>
     </destination>
-    <available-bandwidth xmlns="http://org/openroadm/otn/network/topology">100000</available-bandwidth>
-    <used-bandwidth xmlns="http://org/openroadm/otn/network/topology">0</used-bandwidth>
-    <opposite-link xmlns="http://org/openroadm/common/network">ODU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1
+    <available-bandwidth
+      xmlns="http://org/openroadm/otn/network/topology">100000</available-bandwidth>
+    <used-bandwidth
+      xmlns="http://org/openroadm/otn/network/topology">0</used-bandwidth>
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ODU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">OTN-LINK</link-type>
   </link>
   <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
-    <link-id>ODU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1
+    <link-id>ODU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1
     </link-id>
     <source>
-      <source-node>SPDR-SC1-XPDR1</source-node>
+      <source-node>SPDR-SA1-XPDR1</source-node>
       <source-tp>XPDR1-NETWORK1</source-tp>
     </source>
     <otn-link-type xmlns="http://transportpce/topology">ODTU4</otn-link-type>
     <destination>
       <dest-tp>XPDR1-NETWORK1</dest-tp>
-      <dest-node>SPDR-SA1-XPDR1</dest-node>
+      <dest-node>SPDR-SC1-XPDR1</dest-node>
     </destination>
-    <available-bandwidth xmlns="http://org/openroadm/otn/network/topology">100000</available-bandwidth>
-    <used-bandwidth xmlns="http://org/openroadm/otn/network/topology">0</used-bandwidth>
-    <opposite-link xmlns="http://org/openroadm/common/network">ODU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1
+    <available-bandwidth
+      xmlns="http://org/openroadm/otn/network/topology">100000</available-bandwidth>
+    <used-bandwidth
+      xmlns="http://org/openroadm/otn/network/topology">0</used-bandwidth>
+    <opposite-link
+      xmlns="http://org/openroadm/common/network">ODU4-SPDR-SC1-XPDR1-XPDR1-NETWORK1toSPDR-SA1-XPDR1-XPDR1-NETWORK1
     </opposite-link>
     <link-type xmlns="http://org/openroadm/common/network">OTN-LINK</link-type>
   </link>
similarity index 79%
rename from tapi/src/test/resources/get_portmapping.xml
rename to tapi/src/test/resources/portmapping.xml
index b5dea0ae40c0d30047fac68c97166275983ba85d..d165489a1b640511cc07430a3f409e181bcbf572 100644 (file)
@@ -7,7 +7,8 @@
       <port-qual>xpdr-client</port-qual>
       <supporting-port>C1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
       <connection-map-lcp>XPDR1-NETWORK2</connection-map-lcp>
       <lcp-hash-val>fHpE8JbDyn4=</lcp-hash-val>
       <supporting-circuit-pack-name>1/0/2-PLUG-CLIENT
@@ -19,7 +20,8 @@
       <port-qual>xpdr-network</port-qual>
       <supporting-port>1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
       <connection-map-lcp>XPDR1-CLIENT2</connection-map-lcp>
       <lcp-hash-val>AJUlmCIYKpQh</lcp-hash-val>
       <supporting-circuit-pack-name>1/0/2-PLUG-NET
@@ -30,7 +32,8 @@
       <port-qual>xpdr-client</port-qual>
       <supporting-port>C1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
       <connection-map-lcp>XPDR1-NETWORK1</connection-map-lcp>
       <lcp-hash-val>fHpE8JbDyn0=</lcp-hash-val>
       <supporting-circuit-pack-name>1/0/1-PLUG-CLIENT
@@ -42,7 +45,8 @@
       <port-qual>xpdr-network</port-qual>
       <supporting-port>1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
       <connection-map-lcp>XPDR1-CLIENT1</connection-map-lcp>
       <lcp-hash-val>AJUlmCIYKpQi</lcp-hash-val>
       <supporting-circuit-pack-name>1/0/1-PLUG-NET
       <port-qual>switch-client</port-qual>
       <supporting-port>CP2-QSFP3-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
       <lcp-hash-val>BVSiXSSYUCI=</lcp-hash-val>
       <supporting-circuit-pack-name>CP2-QSFP3
       </supporting-circuit-pack-name>
       <port-qual>switch-client</port-qual>
       <supporting-port>CP2-QSFP4-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
       <lcp-hash-val>BVSiXSSYUCU=</lcp-hash-val>
       <supporting-circuit-pack-name>CP2-QSFP4
       </supporting-circuit-pack-name>
       <port-qual>switch-client</port-qual>
       <supporting-port>CP2-QSFP1-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
       <lcp-hash-val>BVSiXSSYUCA=</lcp-hash-val>
       <supporting-circuit-pack-name>CP2-QSFP1
       </supporting-circuit-pack-name>
       <port-qual>switch-client</port-qual>
       <supporting-port>CP2-QSFP2-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
       <lcp-hash-val>BVSiXSSYUCM=</lcp-hash-val>
       <supporting-circuit-pack-name>CP2-QSFP2
       </supporting-circuit-pack-name>
       <port-qual>xpdr-client</port-qual>
       <supporting-port>CP1-SFP3-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE</supported-interface-capability>
       <lcp-hash-val>L0PHYLgz3+E=</lcp-hash-val>
       <supporting-circuit-pack-name>CP1-SFP3
       </supporting-circuit-pack-name>
       <port-qual>xpdr-client</port-qual>
       <supporting-port>CP1-SFP2-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
       <lcp-hash-val>L0PHYLgz3+A=</lcp-hash-val>
       <supporting-circuit-pack-name>CP1-SFP2
       </supporting-circuit-pack-name>
       <port-qual>xpdr-client</port-qual>
       <supporting-port>CP1-SFP4-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE</supported-interface-capability>
       <lcp-hash-val>L0PHYLgz3+Y=</lcp-hash-val>
       <supporting-circuit-pack-name>CP1-SFP4
       </supporting-circuit-pack-name>
       <port-qual>xpdr-client</port-qual>
       <supporting-port>CP1-SFP1-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
       <lcp-hash-val>L0PHYLgz3+M=</lcp-hash-val>
       <supporting-circuit-pack-name>CP1-SFP1
       </supporting-circuit-pack-name>
       <port-qual>switch-network</port-qual>
       <supporting-port>CP8-CFP-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
       <lcp-hash-val>ALx70DYYfGTz</lcp-hash-val>
       <xponder-type>switch</xponder-type>
       <supporting-circuit-pack-name>CP8-CFP
       <port-qual>switch-network</port-qual>
       <supporting-port>CP7-CFP-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
       <lcp-hash-val>ALx70DYYfGTy</lcp-hash-val>
       <xponder-type>switch</xponder-type>
       <supporting-circuit-pack-name>CP7-CFP
       <port-qual>switch-network</port-qual>
       <supporting-port>CP5-CFP-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
       <lcp-hash-val>ALx70DYYfGT0</lcp-hash-val>
       <xponder-type>switch</xponder-type>
       <supporting-circuit-pack-name>CP5-CFP
       <port-qual>switch-network</port-qual>
       <supporting-port>CP6-CFP-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
       <lcp-hash-val>ALx70DYYfGTx</lcp-hash-val>
       <xponder-type>switch</xponder-type>
       <supporting-circuit-pack-name>CP6-CFP
       <port-qual>xpdr-network</port-qual>
       <supporting-port>CP1-CFP0-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
       <lcp-hash-val>fuYZwEO660g=</lcp-hash-val>
       <xponder-type>mpdr</xponder-type>
       <supporting-circuit-pack-name>CP1-CFP0
       <port-qual>switch-client</port-qual>
       <supporting-port>CP2-QSFP3-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
       <lcp-hash-val>AN/WSSRXne3s</lcp-hash-val>
       <supporting-circuit-pack-name>CP2-QSFP3
       </supporting-circuit-pack-name>
       <port-qual>switch-client</port-qual>
       <supporting-port>CP2-QSFP4-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
       <lcp-hash-val>AN/WSSRXne3r</lcp-hash-val>
       <supporting-circuit-pack-name>CP2-QSFP4
       </supporting-circuit-pack-name>
       <port-qual>switch-client</port-qual>
       <supporting-port>CP2-QSFP1-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
       <lcp-hash-val>AN/WSSRXne3u</lcp-hash-val>
       <supporting-circuit-pack-name>CP2-QSFP1
       </supporting-circuit-pack-name>
       <port-qual>switch-client</port-qual>
       <supporting-port>CP2-QSFP2-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
       <lcp-hash-val>AN/WSSRXne3t</lcp-hash-val>
       <supporting-circuit-pack-name>CP2-QSFP2
       </supporting-circuit-pack-name>
       <port-qual>xpdr-client</port-qual>
       <supporting-port>CP1-SFP3-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE</supported-interface-capability>
       <lcp-hash-val>FqlcrxV7p38=</lcp-hash-val>
       <supporting-circuit-pack-name>CP1-SFP3
       </supporting-circuit-pack-name>
       <port-qual>xpdr-client</port-qual>
       <supporting-port>CP1-SFP2-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
       <lcp-hash-val>FqlcrxV7p34=</lcp-hash-val>
       <supporting-circuit-pack-name>CP1-SFP2
       </supporting-circuit-pack-name>
       <port-qual>xpdr-client</port-qual>
       <supporting-port>CP1-SFP4-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE</supported-interface-capability>
       <lcp-hash-val>FqlcrxV7p3g=</lcp-hash-val>
       <supporting-circuit-pack-name>CP1-SFP4
       </supporting-circuit-pack-name>
       <port-qual>xpdr-client</port-qual>
       <supporting-port>CP1-SFP1-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-10GE-ODU2e</supported-interface-capability>
       <lcp-hash-val>FqlcrxV7p30=</lcp-hash-val>
       <supporting-circuit-pack-name>CP1-SFP1
       </supporting-circuit-pack-name>
       <port-qual>switch-network</port-qual>
       <supporting-port>CP8-CFP-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
       <lcp-hash-val>exT821pFtOU=</lcp-hash-val>
       <xponder-type>switch</xponder-type>
       <supporting-circuit-pack-name>CP8-CFP
       <port-qual>switch-network</port-qual>
       <supporting-port>CP7-CFP-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
       <lcp-hash-val>exT821pFtOQ=</lcp-hash-val>
       <xponder-type>switch</xponder-type>
       <supporting-circuit-pack-name>CP7-CFP
       <port-qual>switch-network</port-qual>
       <supporting-port>CP5-CFP-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
       <lcp-hash-val>exT821pFtOI=</lcp-hash-val>
       <xponder-type>switch</xponder-type>
       <supporting-circuit-pack-name>CP5-CFP
       <port-qual>switch-network</port-qual>
       <supporting-port>CP6-CFP-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
       <lcp-hash-val>exT821pFtOc=</lcp-hash-val>
       <xponder-type>switch</xponder-type>
       <supporting-circuit-pack-name>CP6-CFP
       <port-qual>xpdr-network</port-qual>
       <supporting-port>CP1-CFP0-P1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH-OTU4-ODU4</supported-interface-capability>
       <lcp-hash-val>Swfw02qXGyI=</lcp-hash-val>
       <xponder-type>mpdr</xponder-type>
       <supporting-circuit-pack-name>CP1-CFP0
       <port-qual>xpdr-client</port-qual>
       <supporting-port>C1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
       <connection-map-lcp>XPDR1-NETWORK2</connection-map-lcp>
       <lcp-hash-val>AJUUr6I5fALg</lcp-hash-val>
       <supporting-circuit-pack-name>1/0/2-PLUG-CLIENT
       <port-qual>xpdr-network</port-qual>
       <supporting-port>1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
       <connection-map-lcp>XPDR1-CLIENT2</connection-map-lcp>
       <lcp-hash-val>AMkDwQ7xTmRL</lcp-hash-val>
       <supporting-circuit-pack-name>1/0/2-PLUG-NET
       <port-qual>xpdr-client</port-qual>
       <supporting-port>C1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
       <connection-map-lcp>XPDR1-NETWORK1</connection-map-lcp>
       <lcp-hash-val>AJUUr6I5fALj</lcp-hash-val>
       <supporting-circuit-pack-name>1/0/1-PLUG-CLIENT
       <port-qual>xpdr-network</port-qual>
       <supporting-port>1</supporting-port>
       <port-direction>bidirectional</port-direction>
-      <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
+      <supported-interface-capability
+        xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
       <connection-map-lcp>XPDR1-CLIENT1</connection-map-lcp>
       <lcp-hash-val>AMkDwQ7xTmRI</lcp-hash-val>
       <supporting-circuit-pack-name>1/0/1-PLUG-NET