import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.UUID;
import java.util.stream.Collectors;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1;
import org.slf4j.LoggerFactory;
-public class ConvertORTopoObjectToTapiTopoObject {
+public class ConvertORTopoToTapiTopo {
private static final String DSR = "DSR";
private static final String OTSI = "OTSi";
private static final String E_OTSI = "eOTSi";
private static final String I_OTSI = "iOTSi";
- private static final Logger LOG = LoggerFactory.getLogger(ConvertORTopoObjectToTapiTopoObject.class);
+ private static final String RDM_INFRA = "ROADM-infra";
+ private static final Logger LOG = LoggerFactory.getLogger(ConvertORTopoToTapiTopo.class);
private String ietfNodeId;
private List<TerminationPoint> oorClientPortList;
private List<TerminationPoint> oorNetworkPortList;
private Map<String, Uuid> uuidMap;
- public ConvertORTopoObjectToTapiTopoObject(Uuid tapiTopoUuid) {
+ public ConvertORTopoToTapiTopo(Uuid tapiTopoUuid) {
this.tapiTopoUuid = tapiTopoUuid;
this.tapiNodes = new HashMap<>();
this.tapiLinks = new HashMap<>();
this.uuidMap = new HashMap<>();
}
- public void convertNode(Node ietfNode) {
+ public void convertNode(Node ietfNode, List<String> networkPorts) {
this.ietfNodeId = ietfNode.getNodeId().getValue();
this.oorClientPortList = ietfNode.augmentation(
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1.class)
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())
+ == OpenroadmTpType.XPONDERNETWORK.getIntValue()
+ && networkPorts.contains(tp.getTpId().getValue()))
.sorted((tp1, tp2) -> tp1.getTpId().getValue().compareTo(tp2.getTpId().getValue()))
.collect(Collectors.toList());
this.oorOduSwitchingPool = ietfNode.augmentation(Node1.class).getSwitchingPools().getOduSwitchingPools()
}
}
+ public void convertRoadmInfrastructure() {
+ LOG.info("abstraction of the ROADM infrastructure towards a photonic node");
+ Uuid nodeUuid = new Uuid(UUID.nameUUIDFromBytes(RDM_INFRA.getBytes(Charset.forName("UTF-8"))).toString());
+ Name nodeName = new NameBuilder().setValueName("otsi node name").setValue(RDM_INFRA).build();
+ List<LayerProtocolName> nodeLayerProtocols = Arrays.asList(LayerProtocolName.PHOTONICMEDIA);
+
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiPhotonicNodes
+ = pruneTapiPhotonicNodes();
+ Map<String, String> photonicNepUuisMap = convertListNodeWithListNepToMapForUuidAndName(tapiPhotonicNodes);
+ // nep creation for rdm infra abstraction node
+ Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepMap = createNepForRdmNode(photonicNepUuisMap.size());
+ // node rule group creation
+ Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupList
+ = createNodeRuleGroupForRdmNode(nodeUuid, onepMap.values());
+ // build RDM infra node abstraction
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node rdmNode = new NodeBuilder()
+ .setUuid(nodeUuid)
+ .setName(Map.of(nodeName.key(), nodeName))
+ .setLayerProtocolName(nodeLayerProtocols)
+ .setAdministrativeState(AdministrativeState.UNLOCKED)
+ .setOperationalState(OperationalState.ENABLED)
+ .setLifecycleState(LifecycleState.INSTALLED)
+ .setOwnedNodeEdgePoint(onepMap)
+ .setNodeRuleGroup(nodeRuleGroupList)
+ .build();
+ tapiNodes.put(rdmNode.key(), rdmNode);
+
+ // OMS link creation between photonoci nodes and RDM infra abstraction node
+ Map<String, String> rdmInfraNepUuisMap = convertListNodeWithListNepToMapForUuidAndName(List.of(rdmNode));
+ if (photonicNepUuisMap.size() != rdmInfraNepUuisMap.size()) {
+ LOG.warn("Unable to build OMS links between photonics nodes and RDM infrasctructure abstraction");
+ } else {
+ createTapiOmsLinks(photonicNepUuisMap, rdmInfraNepUuisMap);
+ }
+ }
+
+ 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>
+ prunedTapiPhotonicNodes = new ArrayList<>();
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiPhotonicNodes
+ = this.tapiNodes.values().stream()
+ .filter(n -> LayerProtocolName.PHOTONICMEDIA.equals(n.getLayerProtocolName().get(0)))
+ .collect(Collectors.toList());
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node
+ : tapiPhotonicNodes) {
+ Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepM = new HashMap<>();
+ for (Map.Entry<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> entry : node.getOwnedNodeEdgePoint().entrySet()) {
+ if (entry.getValue().getName().values().stream()
+ .filter(name -> name.getValueName().startsWith("eNodeEdgePoint"))
+ .count() > 0) {
+ onepM.put(entry.getKey(), entry.getValue());
+ }
+ }
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node prunedNode
+ = new NodeBuilder(node).setOwnedNodeEdgePoint(onepM).build();
+ prunedTapiPhotonicNodes.add(prunedNode);
+ }
+ return prunedTapiPhotonicNodes;
+ }
+
+ private Map<String, String> convertListNodeWithListNepToMapForUuidAndName(
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> nodes) {
+ Map<String, String> uuidNameMap = new HashMap<>();
+ for (org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node : nodes) {
+ for (OwnedNodeEdgePoint nep : node.nonnullOwnedNodeEdgePoint().values()) {
+ String nodeUuid = node.getUuid().getValue();
+ String nepUuid = nep.getUuid().getValue();
+ String nodeName = node.getName().get(new NameKey("otsi node name")).getValue();
+ String nepName = nep.getName().get(new NameKey(nep.getName().keySet().stream().findFirst().get()))
+ .getValue();
+ uuidNameMap.put(String.join("--", nodeUuid, nepUuid), String.join("--", nodeName, nepName));
+ }
+ }
+ 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) {
Uuid nodeUuid = null;
LOG.error("Undefined LayerProtocolName for {} node {}", nodeNames.get(nodeNames.keySet().iterator().next())
.getValueName(), nodeNames.get(nodeNames.keySet().iterator().next()).getValue());
}
-
- // create tapi node
-
return new NodeBuilder()
.setUuid(nodeUuid)
.setName(nodeNames)
org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint>
nepList = new HashMap<>();
for (TpId tp : nbl.getTpList()) {
- org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
- .NodeEdgePoint nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
- .node.rule.group.NodeEdgePointBuilder()
- .setTopologyUuid(tapiTopoUuid)
- .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, DSR)))
- .setNodeEdgePointUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, DSR, tp.getValue())))
- .build();
- nepList.put(nep.key(), nep);
+ if (this.uuidMap.containsKey(String.join("+", this.ietfNodeId, DSR, tp.getValue()))) {
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint
+ nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
+ .NodeEdgePointBuilder()
+ .setTopologyUuid(tapiTopoUuid)
+ .setNodeUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, DSR)))
+ .setNodeEdgePointUuid(this.uuidMap.get(String.join("+", this.ietfNodeId, DSR, tp.getValue())))
+ .build();
+ nepList.put(nep.key(), nep);
+ }
}
NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
.setUuid(new Uuid(
return onepBldr.build();
}
+ private Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> createNepForRdmNode(int nbNep) {
+ Map<OwnedNodeEdgePointKey, OwnedNodeEdgePoint> onepMap = new HashMap<>();
+ for (int i = 1; i <= nbNep; i++) {
+ Uuid nepUuid = new Uuid(UUID.nameUUIDFromBytes((String.join("+", "roadm node", "nep", String.valueOf(i)))
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Name nepName = new NameBuilder()
+ .setValueName("NodeEdgePoint name")
+ .setValue(new StringBuilder("NodeEdgePoint_").append(i).toString())
+ .build();
+ OwnedNodeEdgePoint onep = new OwnedNodeEdgePointBuilder()
+ .setUuid(nepUuid)
+ .setLayerProtocolName(LayerProtocolName.PHOTONICMEDIA)
+ .setName(Map.of(nepName.key(), nepName))
+ .setSupportedCepLayerProtocolQualifier(List.of(PHOTONICLAYERQUALIFIEROMS.class))
+ .setLinkPortDirection(PortDirection.BIDIRECTIONAL).setLinkPortRole(PortRole.SYMMETRIC)
+ .setAdministrativeState(AdministrativeState.UNLOCKED).setOperationalState(OperationalState.ENABLED)
+ .setLifecycleState(LifecycleState.INSTALLED).setTerminationDirection(TerminationDirection.BIDIRECTIONAL)
+ .setTerminationState(TerminationState.TERMINATEDBIDIRECTIONAL)
+ .build();
+ onepMap.put(onep.key(), onep);
+ }
+ return onepMap;
+ }
+
+ private Map<NodeRuleGroupKey, NodeRuleGroup> createNodeRuleGroupForRdmNode(Uuid nodeUuid,
+ Collection<OwnedNodeEdgePoint> onepl) {
+ 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>
+ nepMap = new HashMap<>();
+ for (OwnedNodeEdgePoint onep : onepl) {
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint
+ nep = new org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group
+ .NodeEdgePointBuilder()
+ .setTopologyUuid(tapiTopoUuid)
+ .setNodeUuid(nodeUuid)
+ .setNodeEdgePointUuid(onep.key().getUuid())
+ .build();
+ nepMap.put(nep.key(), nep);
+ }
+ Map<NodeRuleGroupKey, NodeRuleGroup> nodeRuleGroupMap = new HashMap<>();
+ Map<RuleKey, Rule> ruleList = new HashMap<>();
+ Rule rule = new RuleBuilder()
+ .setLocalId("forward")
+ .setForwardingRule(ForwardingRule.MAYFORWARDACROSSGROUP)
+ .setRuleType(RuleType.FORWARDING)
+ .build();
+ ruleList.put(rule.key(), rule);
+ NodeRuleGroup nodeRuleGroup = new NodeRuleGroupBuilder()
+ .setUuid(new Uuid(UUID.nameUUIDFromBytes(("rdm infra node rule group").getBytes(Charset.forName("UTF-8")))
+ .toString()))
+ .setRule(ruleList)
+ .setNodeEdgePoint(nepMap)
+ .build();
+ nodeRuleGroupMap.put(nodeRuleGroup.key(), nodeRuleGroup);
+ return nodeRuleGroupMap;
+ }
+
private Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> createSIP(int nb) {
Map<MappedServiceInterfacePointKey, MappedServiceInterfacePoint> msipl = new HashMap<>();
for (int i = 0; i < nb; i++) {
}
}
+ private void createTapiOmsLinks(Map<String, String> photonicNepUuisMap, Map<String, String> rdmInfraNepUuisMap) {
+ Iterator<Entry<String, String>> it1 = photonicNepUuisMap.entrySet().iterator();
+ Iterator<Entry<String, String>> it2 = rdmInfraNepUuisMap.entrySet().iterator();
+ while (it1.hasNext()) {
+ Map<NodeEdgePointKey, NodeEdgePoint> nepMap = new HashMap<>();
+ Map.Entry<String, String> photonicEntry = it1.next();
+ Map.Entry<String, String> rdmEntry = it2.next();
+ Uuid sourceUuidTp = new Uuid(photonicEntry.getKey().split("--")[1]);
+ Uuid sourceUuidNode = new Uuid(photonicEntry.getKey().split("--")[0]);
+ Uuid destUuidTp = new Uuid(rdmEntry.getKey().split("--")[1]);
+ Uuid destUuidNode = new Uuid(rdmEntry.getKey().split("--")[0]);
+ NodeEdgePoint sourceNep = new NodeEdgePointBuilder()
+ .setTopologyUuid(this.tapiTopoUuid)
+ .setNodeUuid(sourceUuidNode)
+ .setNodeEdgePointUuid(sourceUuidTp)
+ .build();
+ nepMap.put(sourceNep.key(), sourceNep);
+ NodeEdgePoint destNep = new NodeEdgePointBuilder()
+ .setTopologyUuid(this.tapiTopoUuid)
+ .setNodeUuid(destUuidNode)
+ .setNodeEdgePointUuid(destUuidTp)
+ .build();
+ nepMap.put(destNep.key(), destNep);
+ Name linkName = new NameBuilder().setValueName("OMS link name")
+ .setValue(String.join(" and ", photonicEntry.getValue(), rdmEntry.getValue()))
+ .build();
+ Link omsLink = new LinkBuilder()
+ .setUuid(new Uuid(
+ UUID.nameUUIDFromBytes((String.join(" and ", photonicEntry.getValue(), rdmEntry.getValue()))
+ .getBytes(Charset.forName("UTF-8")))
+ .toString()))
+ .setName(Map.of(linkName.key(), linkName))
+ .setLayerProtocolName(List.of(LayerProtocolName.PHOTONICMEDIA))
+ .setNodeEdgePoint(nepMap)
+ .setDirection(ForwardingDirection.BIDIRECTIONAL)
+ .build();
+ this.tapiLinks.put(omsLink.key(), omsLink);
+ }
+ }
+
public Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
getTapiNodes() {
return tapiNodes;
public Map<LinkKey, Link> getTapiLinks() {
return tapiLinks;
}
-
- public Map<String, Uuid> getUuidMap() {
- return uuidMap;
- }
-
}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright © 2020 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;
+
+
+public class TapiTopologyException extends Exception {
+
+ public TapiTopologyException(String message) {
+ super(message);
+ }
+
+ public TapiTopologyException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.NoSuchElementException;
+import java.util.Map.Entry;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType;
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.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.Network;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1;
@Override
public ListenableFuture<RpcResult<GetTopologyDetailsOutput>> getTopologyDetails(GetTopologyDetailsInput input) {
- LOG.info("Building TAPI Topology abstraction from {}", input.getTopologyIdOrName());
- Topology topology = null;
- switch (input.getTopologyIdOrName()) {
- case NetworkUtils.OVERLAY_NETWORK_ID:
- topology = createAbstractedOpenroadmTopology();
- break;
- case NetworkUtils.OTN_NETWORK_ID:
- topology = createAbstractedOtnTopology();
- break;
- default:
- LOG.error("{} unknown - can not be abstracted", input.getTopologyIdOrName());
- break;
- }
- if (topology != null) {
+ try {
+ LOG.info("Building TAPI Topology abstraction from {}", input.getTopologyIdOrName());
+ Topology topology = null;
+ switch (input.getTopologyIdOrName()) {
+ case NetworkUtils.OVERLAY_NETWORK_ID:
+ topology = createAbstractedOpenroadmTopology();
+ break;
+ case NetworkUtils.OTN_NETWORK_ID:
+ topology = createAbstractedOtnTopology();
+ break;
+ default:
+ LOG.error("{} unknown - can not be abstracted", input.getTopologyIdOrName());
+ break;
+ }
return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder().setTopology(topology).build())
.buildFuture();
- } else {
+ } catch (TapiTopologyException e) {
return RpcResultBuilder.success(new GetTopologyDetailsOutputBuilder().build()).buildFuture();
}
}
- private Topology createAbstractedOpenroadmTopology() {
+ private Topology createAbstractedOpenroadmTopology() throws TapiTopologyException {
// read openroadm-topology
- @NonNull
- FluentFuture<Optional<Network>> openroadmTopoOpt = dataBroker.newReadOnlyTransaction()
- .read(LogicalDatastoreType.CONFIGURATION, InstanceIdentifiers.OVERLAY_NETWORK_II);
- if (!openroadmTopoOpt.isDone()) {
- LOG.warn("Cannot get openroadm topology, returning null");
- return null;
- }
- Optional<Network> optionalOpenroadmTop = null;
- try {
- optionalOpenroadmTop = openroadmTopoOpt.get();
- } catch (InterruptedException e) {
- //sonar : "InterruptedException" should not be ignored (java:S2142)
- //https://www.ibm.com/developerworks/java/library/j-jtp05236/index.html?ca=drs-#2.1
- Thread.currentThread().interrupt();
- return null;
- } catch (ExecutionException | NoSuchElementException e) {
- LOG.error("Impossible to retrieve openroadm-topology from mdsal", e);
- return null;
- }
-
- if (!optionalOpenroadmTop.isPresent()) {
- LOG.warn("Openroadm topology is not present, returning null");
- return null;
- }
- Network openroadmTopo = optionalOpenroadmTop.get();
- List<Node> nodeList = new ArrayList<>(openroadmTopo.getNode().values());
+ Network openroadmTopo = readTopology(InstanceIdentifiers.OVERLAY_NETWORK_II);
+ List<Node> xpdrNodeList = pruneOpenroadmNodes(openroadmTopo);
List<Link> linkList = null;
if (openroadmTopo.augmentation(Network1.class) != null) {
linkList = new ArrayList<>(openroadmTopo.augmentation(Network1.class).getLink().values());
List<Link> xponderInLinkList = linkList.stream()
.filter(lk -> lk.augmentation(Link1.class).getLinkType().equals(OpenroadmLinkType.XPONDERINPUT))
.collect(Collectors.toList());
-
- List<Node> xpdrNodeList = nodeList
- .stream()
- .filter(nt -> nt
- .augmentation(org.opendaylight.yang.gen.v1
- .http.org.openroadm.common.network.rev181130.Node1.class)
- .getNodeType().equals(OpenroadmNodeType.XPONDER)).collect(Collectors.toList());
Map<String, List<String>> clientPortMap = new HashMap<>();
for (Node node : xpdrNodeList) {
String nodeId = node.getSupportingNode().values().stream()
= createTapiNode(goodTpList);
tapiNodeList.put(node.key(), node);
return new TopologyBuilder().setName(names).setUuid(uuid).setNode(tapiNodeList).build();
+ }
+ private Network readTopology(InstanceIdentifier<Network> networkIID)
+ throws TapiTopologyException {
+ Network topology = null;
+ FluentFuture<Optional<Network>> topologyFuture = dataBroker.newReadOnlyTransaction()
+ .read(LogicalDatastoreType.CONFIGURATION, networkIID);
+ try {
+ topology = topologyFuture.get().get();
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new TapiTopologyException("Unable to get from mdsal topology: " + networkIID
+ .firstKeyOf(Network.class).getNetworkId().getValue(), e);
+ } catch (ExecutionException e) {
+ throw new TapiTopologyException("Unable to get from mdsal topology: " + networkIID
+ .firstKeyOf(Network.class).getNetworkId().getValue(), e);
+ }
+ return topology;
+ }
+
+ private List<Node> pruneOpenroadmNodes(Network openroadmTopo) {
+ return openroadmTopo.getNode().values().stream().filter(nt -> nt
+ .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class)
+ .getNodeType().equals(OpenroadmNodeType.XPONDER)).collect(Collectors.toList());
}
private List<String> extractGoodTpList(Map<String, List<String>> clientPortMap) {
return goodTpList;
}
- private Topology createAbstractedOtnTopology() {
+ private Topology createAbstractedOtnTopology() throws TapiTopologyException {
+ // read openroadm-topology
+ Network openroadmTopo = readTopology(InstanceIdentifiers.OVERLAY_NETWORK_II);
+ List<Link> linkList = new ArrayList<>();
+ if (openroadmTopo.augmentation(Network1.class) != null) {
+ linkList.addAll(openroadmTopo.augmentation(Network1.class).getLink().values());
+ }
+ List<Link> xponderOutLinkList = linkList.stream()
+ .filter(lk -> lk.augmentation(Link1.class).getLinkType().equals(OpenroadmLinkType.XPONDEROUTPUT))
+ .collect(Collectors.toList());
+ List<Link> xponderInLinkList = linkList.stream()
+ .filter(lk -> lk.augmentation(Link1.class).getLinkType().equals(OpenroadmLinkType.XPONDERINPUT))
+ .collect(Collectors.toList());
// read otn-topology
- @NonNull
- FluentFuture<Optional<Network>> otnTopoOpt = dataBroker.newReadOnlyTransaction().read(
- LogicalDatastoreType.CONFIGURATION, InstanceIdentifiers.OTN_NETWORK_II);
- if (otnTopoOpt.isDone()) {
- Network otnTopo = null;
- try {
- otnTopo = otnTopoOpt.get().get();
- } catch (InterruptedException | ExecutionException | NoSuchElementException e) {
- LOG.error("Impossible to retreive otn-topology from mdsal",e);
- return null;
- }
- List<Node> nodeList = new ArrayList<>(otnTopo.getNode().values());
- List<Node> otnNodeList = nodeList.stream().filter(nt -> nt.augmentation(
+ 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.SWITCH) || nt.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class)
- .getNodeType().equals(OpenroadmNodeType.MUXPDR)).collect(Collectors.toList());
- Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
- tapiNodeList = new HashMap<>();
- Map<LinkKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link>
- tapiLinkList = new HashMap<>();
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(T0_MULTI_LAYER_TOPO.getBytes(Charset.forName("UTF-8")))
- .toString());
- ConvertORTopoObjectToTapiTopoObject tapiFactory = new ConvertORTopoObjectToTapiTopoObject(topoUuid);
- for (Node node : otnNodeList) {
- tapiFactory.convertNode(node);
- tapiNodeList.putAll(tapiFactory.getTapiNodes());
- tapiLinkList.putAll(tapiFactory.getTapiLinks());
+ .getNodeType().equals(OpenroadmNodeType.MUXPDR))
+ .collect(Collectors.toMap(Node::getNodeId, node -> node));
+
+ Map<String, List<String>> networkPortMap = new HashMap<>();
+ Iterator<Entry<NodeId, Node>> itOtnNodeMap = otnNodeMap.entrySet().iterator();
+ while (itOtnNodeMap.hasNext()) {
+ Entry<NodeId, Node> entry = itOtnNodeMap.next();
+ String portMappingNodeId = entry.getValue().getSupportingNode().values().stream()
+ .filter(sn -> sn.getNetworkRef().getValue().equals(NetworkUtils.UNDERLAY_NETWORK_ID))
+ .findFirst()
+ .get().getNodeRef().getValue();
+ List<String> networkPortList = new ArrayList<>();
+ for (TerminationPoint tp : entry.getValue().augmentation(Node1.class).getTerminationPoint().values()) {
+ if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)
+ &&
+ checkTp(entry.getKey().getValue(), portMappingNodeId, tp, xponderOutLinkList, xponderInLinkList)) {
+ networkPortList.add(tp.getTpId().getValue());
+ }
}
- if (otnTopo.augmentation(Network1.class) != null) {
- List<Link> otnLinkList = new ArrayList<>(otnTopo.augmentation(Network1.class).getLink().values());
- Collections.sort(otnLinkList, (l1, l2) -> l1.getLinkId().getValue()
- .compareTo(l2.getLinkId().getValue()));
- tapiFactory.convertLinks(otnLinkList);
- tapiLinkList.putAll(tapiFactory.getTapiLinks());
+ if (!networkPortList.isEmpty()) {
+ networkPortMap.put(entry.getKey().getValue(), networkPortList);
}
- Name name = new NameBuilder().setValue(T0_MULTI_LAYER_TOPO).setValueName("TAPI Topology Name").build();
- return new TopologyBuilder()
- .setName(Map.of(name.key(), name))
- .setUuid(topoUuid)
- .setNode(tapiNodeList)
- .setLink(tapiLinkList).build();
+ }
+ Map<NodeKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node>
+ tapiNodeList = new HashMap<>();
+ Map<LinkKey, org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link>
+ tapiLinkList = new HashMap<>();
+ Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes(T0_MULTI_LAYER_TOPO.getBytes(Charset.forName("UTF-8")))
+ .toString());
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topoUuid);
+ Iterator<Entry<String, List<String>>> it = networkPortMap.entrySet().iterator();
+ while (it.hasNext()) {
+ String nodeId = it.next().getKey();
+ tapiFactory.convertNode(otnNodeMap.get(new NodeId(nodeId)), networkPortMap.get(nodeId));
+ tapiNodeList.putAll(tapiFactory.getTapiNodes());
+ tapiLinkList.putAll(tapiFactory.getTapiLinks());
+ }
+ if (openroadmTopo.nonnullNode().values().stream().filter(nt ->
+ nt.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Node1.class)
+ .getNodeType().equals(OpenroadmNodeType.SRG)).count() > 0) {
+ tapiFactory.convertRoadmInfrastructure();
+ tapiNodeList.putAll(tapiFactory.getTapiNodes());
+ tapiLinkList.putAll(tapiFactory.getTapiLinks());
} else {
- return null;
+ LOG.warn("Unable to abstract an ROADM infrasctructure from openroadm-topology");
+ }
+ if (otnTopo.augmentation(Network1.class) != null) {
+ List<Link> otnLinkList = new ArrayList<>(otnTopo.augmentation(Network1.class).getLink().values());
+ Collections.sort(otnLinkList, (l1, l2) -> l1.getLinkId().getValue()
+ .compareTo(l2.getLinkId().getValue()));
+ tapiFactory.convertLinks(otnLinkList);
+ tapiLinkList.putAll(tapiFactory.getTapiLinks());
}
+ Name name = new NameBuilder().setValue(T0_MULTI_LAYER_TOPO).setValueName("TAPI Topology Name").build();
+ return new TopologyBuilder()
+ .setName(Map.of(name.key(), name))
+ .setUuid(topoUuid)
+ .setNode(tapiNodeList)
+ .setLink(tapiLinkList).build();
}
@Override
private boolean checkTp(String nodeIdTopo, String nodeIdPortMap, TerminationPoint tp, List<Link> xpdOut, List<
Link> xpdIn) {
- @Nullable
- String networkLcp = tp.augmentation(
- org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.TerminationPoint1.class)
- .getAssociatedConnectionMapPort();
+ String networkLcp;
+ if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERCLIENT)) {
+ networkLcp = tp.augmentation(
+ org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.TerminationPoint1.class)
+ .getAssociatedConnectionMapPort();
+ } else {
+ networkLcp = tp.getTpId().getValue();
+ }
@NonNull
KeyedInstanceIdentifier<Mapping, MappingKey> pmIID = InstanceIdentifier.create(
org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200827.Network.class)
--- /dev/null
+/*
+ * Copyright © 2020 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.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.either;
+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 com.google.common.util.concurrent.FluentFuture;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+import java.util.concurrent.ExecutionException;
+import java.util.stream.Collectors;
+import org.eclipse.jdt.annotation.Nullable;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
+import org.opendaylight.transportpce.common.InstanceIdentifiers;
+import org.opendaylight.transportpce.tapi.utils.TopologyDataUtils;
+import org.opendaylight.transportpce.test.AbstractTest;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NetworkId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.Networks;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.NetworkKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Network1;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.Node1;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.node.TerminationPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.AdministrativeState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.RuleType;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Uint64;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ConvertORTopoObjectToTapiTooObjectTest extends AbstractTest {
+ private static final Logger LOG = LoggerFactory.getLogger(ConvertORTopoObjectToTapiTooObjectTest.class);
+
+ private static Node otnMuxA;
+ private static Node otnMuxC;
+ private static Node otnSwitch;
+ 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;
+ private static DataBroker dataBroker = getDataBroker();
+
+ @BeforeClass
+ public static void setUp() throws InterruptedException, ExecutionException {
+ 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.writePortmappingFromFileToDatastore(getDataStoreContextUtil());
+
+ KeyedInstanceIdentifier<Node, NodeKey> muxAIID = 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("SPDR-SA1-XPDR1")));
+ FluentFuture<Optional<Node>> muxAFuture = dataBroker.newReadOnlyTransaction()
+ .read(LogicalDatastoreType.CONFIGURATION, muxAIID);
+ KeyedInstanceIdentifier<Node, NodeKey> muxCIID = 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("SPDR-SC1-XPDR1")));
+ FluentFuture<Optional<Node>> muxCFuture = dataBroker.newReadOnlyTransaction()
+ .read(LogicalDatastoreType.CONFIGURATION, muxCIID);
+ KeyedInstanceIdentifier<Node, NodeKey> switchIID = 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("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();
+
+ 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")))
+ .augmentation(Network1.class);
+ FluentFuture<Optional<Network1>> linksFuture = dataBroker.newReadOnlyTransaction()
+ .read(LogicalDatastoreType.CONFIGURATION, linksIID);
+ otnLinks = linksFuture.get().get().getLink().values().stream().collect(Collectors.toList());
+ Collections.sort(otnLinks, (l1, l2) -> l1.getLinkId().getValue().compareTo(l2.getLinkId().getValue()));
+ topologyUuid = new Uuid(UUID.nameUUIDFromBytes("T0 - Multi-layer topology".getBytes(Charset.forName("UTF-8")))
+ .toString());
+ LOG.info("TEST SETUP READY");
+ }
+
+ @Test
+ public void convertNodeForOtnMuxponder() {
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ List<String> networkPortList = new ArrayList<>();
+ for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
+ if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
+ networkPortList.add(tp.getTpId().getValue());
+ }
+ }
+ tapiFactory.convertNode(otnMuxA, 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 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");
+ 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");
+
+ List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
+ .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
+ .collect(Collectors.toList());
+ checkTransitionalLink(tapiLinks.get(0), dsrNodeUuid, otsiNodeUuid,
+ "SPDR-SA1-XPDR1+DSR+XPDR1-NETWORK1", "SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1", "SPDR-SA1-XPDR1");
+ }
+
+ @Test
+ public void convertNodeForOtnSwitch() {
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ List<String> networkPortList = new ArrayList<>();
+ for (TerminationPoint tp : otnSwitch.augmentation(Node1.class).getTerminationPoint().values()) {
+ if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
+ networkPortList.add(tp.getTpId().getValue());
+ }
+ }
+ tapiFactory.convertNode(otnSwitch, 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 4", 4, tapiFactory.getTapiLinks().size());
+
+ 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");
+ 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");
+
+ List<Link> tapiLinks = tapiFactory.getTapiLinks().values().stream()
+ .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
+ .collect(Collectors.toList());
+ checkTransitionalLink(tapiLinks.get(0), dsrNodeUuid, otsiNodeUuid,
+ "SPDR-SA1-XPDR2+DSR+XPDR2-NETWORK4", "SPDR-SA1-XPDR2+iOTSi+XPDR2-NETWORK4", "SPDR-SA1-XPDR2");
+ }
+
+ @Test
+ public void convertOtnLink() {
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ List<String> networkPortListA = new ArrayList<>();
+ for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
+ if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
+ networkPortListA.add(tp.getTpId().getValue());
+ }
+ }
+ tapiFactory.convertNode(otnMuxA, networkPortListA);
+ List<String> networkPortListC = new ArrayList<>();
+ for (TerminationPoint tp : otnMuxC.augmentation(Node1.class).getTerminationPoint().values()) {
+ if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
+ networkPortListC.add(tp.getTpId().getValue());
+ }
+ }
+ tapiFactory.convertNode(otnMuxC, networkPortListC);
+ tapiFactory.convertLinks(otnLinks);
+ assertEquals("Link list size should be 4", 4, tapiFactory.getTapiLinks().size());
+
+ Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ .toString());
+ Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
+ .toString());
+ Uuid node3Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
+ .toString());
+ Uuid node4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
+ .toString());
+ Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR+XPDR1-NETWORK1"
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+DSR+XPDR1-NETWORK1"
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid tp3Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1"
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid tp4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+iOTSi+XPDR1-NETWORK1"
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid link1Uuid =
+ new Uuid(UUID.nameUUIDFromBytes("ODU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid link2Uuid =
+ new Uuid(UUID.nameUUIDFromBytes("OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1"
+ .getBytes(Charset.forName("UTF-8"))).toString());
+
+ List<Link> links = tapiFactory.getTapiLinks().values().stream()
+ .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
+ .collect(Collectors.toList());
+ checkOtnLink(links.get(0), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
+ "ODU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
+ checkOtnLink(links.get(2), node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
+ "OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
+ }
+
+ @Test
+ public void convertRoadmInfrastructureWhenNoXponderAttached() {
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ tapiFactory.convertRoadmInfrastructure();
+
+ assertEquals("Node list size should be 1", 1, tapiFactory.getTapiNodes().size());
+ assertEquals("Link list size should be empty", 0, tapiFactory.getTapiLinks().size());
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node> tapiNodes
+ = tapiFactory.getTapiNodes().values().stream().collect(Collectors.toList());
+ Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8")))
+ .toString());
+ checkOtsiNode(tapiNodes.get(0), otsiNodeUuid, "infra", "ROADM-infra");
+ }
+
+ @Test
+ public void convertRoadmInfrastructureWhenOtnMuxAttached() {
+ ConvertORTopoToTapiTopo tapiFactory = new ConvertORTopoToTapiTopo(topologyUuid);
+ List<String> networkPortListA = new ArrayList<>();
+ for (TerminationPoint tp : otnMuxA.augmentation(Node1.class).getTerminationPoint().values()) {
+ if (tp.augmentation(TerminationPoint1.class).getTpType().equals(OpenroadmTpType.XPONDERNETWORK)) {
+ networkPortListA.add(tp.getTpId().getValue());
+ }
+ }
+ tapiFactory.convertNode(otnMuxA, networkPortListA);
+ tapiFactory.convertRoadmInfrastructure();
+
+ assertEquals("Node list size should be 3", 3, tapiFactory.getTapiNodes().size());
+ assertEquals("Link list size should be 2", 2, tapiFactory.getTapiLinks().size());
+ 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());
+ Uuid otsiNodeUuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8")))
+ .toString());
+ checkOtsiNode(tapiNodes.get(2), otsiNodeUuid, "infra", "ROADM-infra");
+
+ List<Link> links = tapiFactory.getTapiLinks().values().stream()
+ .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
+ .collect(Collectors.toList());
+ Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
+ .toString());
+ Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("ROADM-infra".getBytes(Charset.forName("UTF-8")))
+ .toString());
+ Uuid tp1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+eOTSi+XPDR1-NETWORK1"
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid tp2Uuid = new Uuid(UUID.nameUUIDFromBytes(("roadm node+nep+1")
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid linkUuid =
+ new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1--XPDR1-NETWORK1 and ROADM-infra--NodeEdgePoint_1"
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ checkOmsLink(links.get(0), node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, linkUuid,
+ "SPDR-SA1-XPDR1--XPDR1-NETWORK1 and ROADM-infra--NodeEdgePoint_1");
+ }
+
+ private void checkDsrNode(org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node,
+ Uuid nodeUuid, boolean isSwitch, 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",
+ AdministrativeState.UNLOCKED, node.getAdministrativeState());
+ assertEquals("life-cycle state should be INSTALLED", LifecycleState.INSTALLED, node.getLifecycleState());
+ assertEquals("operational state should be ENABLED", OperationalState.ENABLED, node.getOperationalState());
+ assertEquals("value-name should be 'dsr/odu node name'",
+ "dsr/odu node name", node.nonnullName().values().stream().findFirst().get().getValueName());
+ assertEquals("dsr node should manage 2 protocol layers : dsr and odu",
+ 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()
+ .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);
+ }
+ }
+
+ private void checkOtsiNode(
+ org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node node,
+ Uuid nodeUuid, String otsiNodeType, String nodeId) {
+ assertEquals("incorrect node uuid", nodeUuid, node.getUuid());
+ assertEquals("incorrect node name", nodeId, node.getName().get(new NameKey("otsi node name")).getValue());
+ assertEquals("administrative state should be UNLOCKED",
+ AdministrativeState.UNLOCKED, node.getAdministrativeState());
+ assertEquals("life-cycle state should be INSTALLED", LifecycleState.INSTALLED, node.getLifecycleState());
+ assertEquals("operational state should be ENABLED", OperationalState.ENABLED, node.getOperationalState());
+ assertEquals("value-name should be 'dsr/odu node name'",
+ "otsi node name", node.nonnullName().values().stream().findFirst().get().getValueName());
+ assertEquals("otsi node should manage a single protocol layer : PHOTONIC_MEDIA",
+ 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()
+ .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);
+ 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);
+ Uuid enepUuid = new Uuid(
+ UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR2-NETWORK2").getBytes(Charset.forName("UTF-8")))
+ .toString());
+ checkNepOtsiNode(nep2, enepUuid, "XPDR2-NETWORK2", "eNodeEdgePoint_2");
+ 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);
+ 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);
+ Uuid inepUuid2 = new Uuid(
+ UUID.nameUUIDFromBytes((nodeId + "+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
+ .toString());
+ checkNepOtsiNode(nep4, inepUuid2, "XPDR1-NETWORK1", "iNodeEdgePoint_1");
+ 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;
+ default:
+ Iterator<OwnedNodeEdgePoint> nepIterator = node.nonnullOwnedNodeEdgePoint().values().iterator();
+ int count = 1;
+ while (nepIterator.hasNext()) {
+ OwnedNodeEdgePoint nep = nepIterator.next();
+ Uuid nepUuid = new Uuid(
+ UUID.nameUUIDFromBytes((String.join("+", "roadm node", "nep", String.valueOf(count)))
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ checkNepOtsiRdmNode(nep, nepUuid, new StringBuilder("NodeEdgePoint_").append(count).toString(),
+ "NodeEdgePoint name");
+ count++;
+ }
+ break;
+ }
+ }
+
+ private void checkNepClient10G(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName) {
+ assertEquals("bad uuid for " + portName, nepUuid, nep.getUuid());
+ List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
+ Name name = nameList.get(0);
+ assertEquals("value of client nep should be '" + portName + "'",
+ portName, name.getValue());
+ assertEquals("value-name of client nep for '" + portName + "' should be '" + nepName + "'",
+ nepName, name.getValueName());
+ assertEquals("Client nep should support 2 kind of cep",
+ 2, nep.getSupportedCepLayerProtocolQualifier().size());
+ assertThat("client nep should support 2 kind of cep",
+ nep.getSupportedCepLayerProtocolQualifier(),
+ hasItems(ODUTYPEODU2E.class, DIGITALSIGNALTYPE10GigELAN.class));
+ assertEquals("client nep should be of ETH protocol type", LayerProtocolName.ETH, nep.getLayerProtocolName());
+ checkCommonPartOfNep(nep, false);
+ }
+
+ private void checkNepNetworkODU4(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName) {
+ assertEquals("bad uuid for " + portName, nepUuid, nep.getUuid());
+ List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
+ Name name = nameList.get(0);
+ assertEquals("value of network nep should be '" + portName + "'",
+ portName, name.getValue());
+ assertEquals("value-name of client nep for '" + portName + "' should be '" + nepName + "'",
+ nepName, name.getValueName());
+ assertEquals("Network nep should support 1 kind of cep",
+ 1, nep.getSupportedCepLayerProtocolQualifier().size());
+ assertThat("network nep should support 1 kind of cep",
+ nep.getSupportedCepLayerProtocolQualifier(),
+ hasItem(ODUTYPEODU4.class));
+ assertEquals("network nep should be of ODU protocol type", LayerProtocolName.ODU, nep.getLayerProtocolName());
+ checkCommonPartOfNep(nep, false);
+ }
+
+ private void checkNodeRuleGroupForMuxDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
+ Uuid nodeUuid) {
+ assertEquals("muxponder DSR should contain 4 node rule group", 4, nrgList.size());
+ for (NodeRuleGroup nodeRuleGroup : nrgList) {
+ assertEquals("each node-rule-group should contain 2 NEP for muxponder DSR",
+ 2, nodeRuleGroup.getNodeEdgePoint().size());
+ }
+ 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(),
+ 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(),
+ either(containsString(networkNepUuid.getValue())).or(containsString(clientNepUuid.getValue())));
+ assertEquals("node-rule-group nb 2 should be between nep-client4 and nep-network1 of the same node",
+ nodeEdgePointList.get(0).getNodeUuid(), nodeUuid);
+ assertEquals("node-rule-group nb 2 should be between nep-client4 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 2 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 checkNodeRuleGroupForSwitchDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
+ Uuid nodeUuid) {
+ assertEquals("Switch-DSR should contain a single node rule group", 1, nrgList.size());
+ assertEquals("Switch-DSR node-rule-group should contain 8 NEP", 8, nrgList.get(0).getNodeEdgePoint().size());
+ List<NodeEdgePoint> nrg = nrgList.get(0).nonnullNodeEdgePoint().values().stream()
+ .sorted((nrg1, nrg2) -> nrg1.getNodeEdgePointUuid().getValue()
+ .compareTo(nrg2.getNodeEdgePointUuid().getValue()))
+ .collect(Collectors.toList());
+ assertEquals("in the sorted node-rule-group, nep number 2 should be XPDR2-NETWORK1",
+ networkNepUuid, nrg.get(4).getNodeEdgePointUuid());
+ assertEquals("in the sorted node-rule-group, nep number 6 should be XPDR2-CLIENT4",
+ clientNepUuid, nrg.get(3).getNodeEdgePointUuid());
+ assertEquals("any item of the node-rule-group should have the same nodeUuid",
+ nodeUuid, nrg.get(4).getNodeUuid());
+ assertEquals("any item of the node-rule-group should have the same nodeUuid",
+ nodeUuid, nrg.get(3).getNodeUuid());
+ @Nullable
+ 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());
+ List<NodeEdgePoint> nodeEdgePointList = new ArrayList<>(nrgList.get(0).getNodeEdgePoint().values());
+ assertEquals("Mux-OTSi node-rule-group should contain 2 NEP", 2, nodeEdgePointList.size());
+ assertThat("Mux-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("Mux-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 checkNodeRuleGroupForSwitchOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
+ Uuid nodeUuid) {
+ assertEquals("Switch-OTSi should contain 4 node rule group", 4, nrgList.size());
+ for (NodeRuleGroup nodeRuleGroup : nrgList) {
+ assertEquals("each node-rule-group should contain 2 NEP for Switch-OTSi",
+ 2, nodeRuleGroup.getNodeEdgePoint().size());
+ }
+ List<NodeEdgePoint> nodeEdgePointList1 = new ArrayList<>(nrgList.get(3).nonnullNodeEdgePoint().values());
+ assertThat("Switch-OTSi node-rule-group nb 4 should be between eNEP and iNEP of XPDR2-NETWORK2",
+ nodeEdgePointList1.get(0).getNodeEdgePointUuid().getValue(),
+ either(containsString(enepUuid.getValue())).or(containsString(inepUuid.getValue())));
+ assertThat("Switch-OTSi node-rule-group nb 4 should be between eNEP and iNEP of XPDR2-NETWORK2",
+ nodeEdgePointList1.get(1).getNodeEdgePointUuid().getValue(),
+ either(containsString(enepUuid.getValue())).or(containsString(inepUuid.getValue())));
+ List<NodeEdgePoint> nodeEdgePointList0 = new ArrayList<>(nrgList.get(0).getNodeEdgePoint().values());
+ assertEquals("any item of the node-rule-group should have the same nodeUuid",
+ nodeUuid, nodeEdgePointList0.get(0).getNodeUuid());
+ assertEquals("any item of the node-rule-group should have the same nodeUuid",
+ nodeUuid, nodeEdgePointList0.get(1).getNodeUuid());
+ List<Rule> ruleList0 = new ArrayList<>(nrgList.get(0).nonnullRule().values());
+ assertEquals("node-rule-group should contain a single rule", 1, ruleList0.size());
+ assertEquals("local-id of the rule should be 'forward'",
+ "forward", ruleList0.get(0).getLocalId());
+ assertEquals("the forwarding rule should be 'MAYFORWARDACROSSGROUP'",
+ ForwardingRule.MAYFORWARDACROSSGROUP, ruleList0.get(0).getForwardingRule());
+ assertEquals("the rule type should be 'FORWARDING'",
+ RuleType.FORWARDING, ruleList0.get(0).getRuleType());
+ }
+
+ private void checkNepClient100G(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 '" + nepName + "'",
+ nepName, nameList.get(0).getValueName());
+ assertEquals("Client nep should support 2 kind of cep",
+ 2, nep.getSupportedCepLayerProtocolQualifier().size());
+ assertThat("client nep should support 2 kind of cep",
+ nep.getSupportedCepLayerProtocolQualifier(),
+ hasItems(ODUTYPEODU4.class, 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());
+ assertEquals("value of OTSi nep should be '" + portName + "'",
+ portName, nameList.get(0).getValue());
+ assertEquals("value-name of OTSi nep should be '" + nepName + "'",
+ nepName, nameList.get(0).getValueName());
+ assertEquals("OTSi nep should support 2 kind of cep",
+ 2, nep.getSupportedCepLayerProtocolQualifier().size());
+ assertThat("OTSi nep should support 2 kind of cep",
+ nep.getSupportedCepLayerProtocolQualifier(),
+ hasItems(PHOTONICLAYERQUALIFIEROMS.class, PHOTONICLAYERQUALIFIEROTSi.class));
+ assertEquals("OTSi nep should be of PHOTONIC_MEDIA protocol type",
+ LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName());
+ assertEquals("OTSi nep should support one SIP", 1, nep.getMappedServiceInterfacePoint().size());
+ checkCommonPartOfNep(nep, false);
+ }
+
+ private void checkNepOtsiRdmNode(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 OTSi nep should be '" + portName + "'",
+ portName, nameList.get(0).getValue());
+ assertEquals("value-name of OTSi nep should be '" + nepName + "'",
+ nepName, nameList.get(0).getValueName());
+ assertEquals("OTSi nep of RDM infra node should support only 1 kind of cep",
+ 1, nep.getSupportedCepLayerProtocolQualifier().size());
+ assertThat("OTSi nep should support 2 kind of cep",
+ nep.getSupportedCepLayerProtocolQualifier(),
+ hasItems(PHOTONICLAYERQUALIFIEROMS.class));
+ assertEquals("OTSi nep should be of PHOTONIC_MEDIA protocol type",
+ LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName());
+ assertEquals("OTSi nep of RDM infra should support no SIP", 0, nep.nonnullMappedServiceInterfacePoint().size());
+ checkCommonPartOfNep(nep, true);
+ }
+
+ private void checkCommonPartOfNep(OwnedNodeEdgePoint nep, boolean isRdm) {
+ assertEquals("link port direction should be DIRECTIONAL",
+ PortDirection.BIDIRECTIONAL, nep.getLinkPortDirection());
+ assertEquals("administrative state should be UNLOCKED",
+ AdministrativeState.UNLOCKED, nep.getAdministrativeState());
+ assertEquals("termination state should be TERMINATED BIDIRECTIONAL",
+ TerminationState.TERMINATEDBIDIRECTIONAL, nep.getTerminationState());
+ assertEquals("life-cycle state should be INSTALLED", LifecycleState.INSTALLED, nep.getLifecycleState());
+ if (!isRdm) {
+ assertEquals("client nep should support 1 SIP", 1, nep.getMappedServiceInterfacePoint().size());
+ }
+ assertEquals("termination direction should be BIDIRECTIONAL",
+ TerminationDirection.BIDIRECTIONAL, nep.getTerminationDirection());
+ assertEquals("operational state of client nep should be ENABLED",
+ OperationalState.ENABLED, nep.getOperationalState());
+ assertEquals("link-port-role of client nep should be SYMMETRIC",
+ PortRole.SYMMETRIC, nep.getLinkPortRole());
+ }
+
+ private void checkTransitionalLink(Link link, Uuid node1Uuid, Uuid node2Uuid, String tp1, String tp2,
+ String ietfNodeId) {
+ Uuid linkUuid = new Uuid(UUID.nameUUIDFromBytes((ietfNodeId + "--" + tp1 + "--" + tp2)
+ .getBytes(Charset.forName("UTF-8"))).toString());
+ assertEquals("bad uuid for link between DSR node " + tp1 + " and iOTSI port " + tp2, linkUuid, link.getUuid());
+ assertEquals("Available capacity unit should be GBPS",
+ CapacityUnit.GBPS, link.getAvailableCapacity().getTotalSize().getUnit());
+ assertEquals("Available capacity -total size value should be 100",
+ Uint64.valueOf(100), link.getAvailableCapacity().getTotalSize().getValue());
+ assertEquals("transitional link should be between 2 nodes of protocol layers ODU and PHOTONIC_MEDIA",
+ 2, link.getTransitionedLayerProtocolName().size());
+ assertThat("transitional link should be between 2 nodes of protocol layers ODU and PHOTONIC_MEDIA",
+ link.getTransitionedLayerProtocolName(),
+ hasItems(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()));
+ assertEquals("transitional link should be BIDIRECTIONAL",
+ ForwardingDirection.BIDIRECTIONAL, link.getDirection());
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
+ .link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
+ assertEquals("topology uuid should be the same for the two termination point of the link",
+ topologyUuid, nodeEdgePointList.get(0).getTopologyUuid());
+ assertEquals("topology uuid should be the same for the two termination point of the link",
+ topologyUuid, nodeEdgePointList.get(1).getTopologyUuid());
+ assertThat("transitional links should terminate on DSR node and Photonic node",
+ nodeEdgePointList.get(0).getNodeUuid().getValue(),
+ either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
+ assertThat("transitional links should terminate on DSR node and Photonic node",
+ nodeEdgePointList.get(1).getNodeUuid().getValue(),
+ either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
+ Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(tp1.getBytes(Charset.forName("UTF-8"))).toString());
+ Uuid nep2Uuid = new Uuid(UUID.nameUUIDFromBytes(tp2.getBytes(Charset.forName("UTF-8"))).toString());
+ assertThat("transitional links should terminate on " + tp1 + " and " + tp2 + " neps",
+ nodeEdgePointList.get(0).getNodeEdgePointUuid().getValue(),
+ either(containsString(nep1Uuid.getValue())).or(containsString(nep2Uuid.getValue())));
+ assertThat("transitional links should terminate on DSR node and Photonic node",
+ nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
+ either(containsString(nep1Uuid.getValue())).or(containsString(nep2Uuid.getValue())));
+ }
+
+ private void checkOtnLink(Link link, Uuid node1Uuid, Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid, Uuid linkUuid,
+ String linkName) {
+ assertEquals("bad name for the link", linkName, link.getName().get(new NameKey("otn link name")).getValue());
+ assertEquals("bad uuid for link", linkUuid, link.getUuid());
+ assertEquals("Available capacity unit should be MBPS",
+ CapacityUnit.MBPS, link.getAvailableCapacity().getTotalSize().getUnit());
+ String prefix = linkName.split("-")[0];
+ if ("OTU4".equals(prefix)) {
+ assertEquals("Available capacity -total size value should be 0",
+ Uint64.valueOf(0), link.getAvailableCapacity().getTotalSize().getValue());
+ } else if ("ODU4".equals(prefix)) {
+ assertEquals("Available capacity -total size value should be 100 000",
+ Uint64.valueOf(100000), link.getAvailableCapacity().getTotalSize().getValue());
+ }
+ assertEquals("Total capacity unit should be GBPS",
+ CapacityUnit.GBPS, link.getTotalPotentialCapacity().getTotalSize().getUnit());
+ assertEquals("Total capacity -total size value should be 100",
+ Uint64.valueOf(100), link.getTotalPotentialCapacity().getTotalSize().getValue());
+ if ("OTU4".equals(prefix)) {
+ assertEquals("otn link should be between 2 nodes of protocol layers PHOTONIC_MEDIA",
+ LayerProtocolName.PHOTONICMEDIA.getName(), link.getLayerProtocolName().get(0).getName());
+ } else if ("ODU4".equals(prefix)) {
+ assertEquals("otn link should be between 2 nodes of protocol layers ODU",
+ LayerProtocolName.ODU.getName(), link.getLayerProtocolName().get(0).getName());
+ }
+ assertEquals("otn tapi link should be BIDIRECTIONAL",
+ ForwardingDirection.BIDIRECTIONAL, link.getDirection());
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
+ .link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
+ assertEquals("topology uuid should be the same for the two termination point of the link",
+ topologyUuid, nodeEdgePointList.get(0).getTopologyUuid());
+ assertEquals("topology uuid should be the same for the two termination point of the link",
+ topologyUuid, nodeEdgePointList.get(1).getTopologyUuid());
+ assertThat("otn links should terminate on two distinct nodes",
+ nodeEdgePointList.get(0).getNodeUuid().getValue(),
+ either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
+ assertThat("otn links should terminate on two distinct nodes",
+ nodeEdgePointList.get(1).getNodeUuid().getValue(),
+ either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
+ assertThat("otn links should terminate on two distinct tps",
+ nodeEdgePointList.get(0).getNodeEdgePointUuid().getValue(),
+ either(containsString(tp1Uuid.getValue())).or(containsString(tp2Uuid.getValue())));
+ assertThat("otn links should terminate on two distinct tps",
+ nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
+ either(containsString(tp1Uuid.getValue())).or(containsString(tp2Uuid.getValue())));
+ assertEquals("operational state should be ENABLED",
+ OperationalState.ENABLED, link.getOperationalState());
+ assertEquals("administrative state should be UNLOCKED",
+ AdministrativeState.UNLOCKED, link.getAdministrativeState());
+ }
+
+ private void checkOmsLink(Link link, Uuid node1Uuid, Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid, Uuid linkUuid,
+ String linkName) {
+ assertEquals("bad name for the link", linkName, link.getName().get(new NameKey("OMS link name")).getValue());
+ assertEquals("bad uuid for link", linkUuid, link.getUuid());
+ assertEquals("oms link should be between 2 nodes of protocol layers PHOTONIC_MEDIA",
+ LayerProtocolName.PHOTONICMEDIA.getName(), link.getLayerProtocolName().get(0).getName());
+ assertEquals("otn tapi link should be BIDIRECTIONAL",
+ ForwardingDirection.BIDIRECTIONAL, link.getDirection());
+ List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
+ .link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
+ assertEquals("oms link should be between 2 neps",2 , nodeEdgePointList.size());
+ assertEquals("topology uuid should be the same for the two termination point of the link",
+ topologyUuid, nodeEdgePointList.get(0).getTopologyUuid());
+ assertEquals("topology uuid should be the same for the two termination point of the link",
+ topologyUuid, nodeEdgePointList.get(1).getTopologyUuid());
+ assertThat("oms links should terminate on two distinct nodes",
+ nodeEdgePointList.get(0).getNodeUuid().getValue(),
+ either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
+ assertThat("oms links should terminate on two distinct nodes",
+ nodeEdgePointList.get(1).getNodeUuid().getValue(),
+ either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
+ assertThat("oms links should terminate on two distinct tps",
+ nodeEdgePointList.get(0).getNodeEdgePointUuid().getValue(),
+ either(containsString(tp1Uuid.getValue())).or(containsString(tp2Uuid.getValue())));
+ assertThat("oms links should terminate on two distinct tps",
+ nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
+ either(containsString(tp1Uuid.getValue())).or(containsString(tp2Uuid.getValue())));
+ }
+
+}
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.either;
-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.assertNotNull;
+import static org.junit.Assert.assertNull;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import org.eclipse.jdt.annotation.Nullable;
-import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Test;
import org.opendaylight.transportpce.common.InstanceIdentifiers;
import org.opendaylight.transportpce.common.NetworkUtils;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.CapacityUnit;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.ForwardingDirection;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LifecycleState;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.OperationalState;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.PortRole;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.TerminationState;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameKey;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE100GigE;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.dsr.rev181210.DIGITALSIGNALTYPE10GigELAN;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU2E;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.odu.rev181210.ODUTYPEODU4;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROMS;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.photonic.media.rev181210.PHOTONICLAYERQUALIFIEROTSi;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.ForwardingRule;
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.RuleType;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.get.topology.details.output.Topology;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.NodeRuleGroup;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.OwnedNodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.NodeEdgePoint;
-import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.node.rule.group.Rule;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Link;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210.topology.Node;
import org.opendaylight.yangtools.yang.common.RpcResult;
private static CountDownLatch endSignal;
private static final int NUM_THREADS = 3;
- @Before
- public void setUp() throws InterruptedException, ExecutionException {
+ @BeforeClass
+ public static void setUp() throws InterruptedException, ExecutionException {
executorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(NUM_THREADS));
endSignal = new CountDownLatch(1);
TopologyDataUtils.writeTopologyFromFileToDatastore(getDataStoreContextUtil(),
TopologyDataUtils.OPENROADM_TOPOLOGY_FILE, InstanceIdentifiers.OVERLAY_NETWORK_II);
TopologyDataUtils.writeTopologyFromFileToDatastore(getDataStoreContextUtil(),
- TopologyDataUtils.OTN_TOPOLOGY_FILE, InstanceIdentifiers.OTN_NETWORK_II);
+ TopologyDataUtils.OTN_TOPOLOGY_WITH_OTN_LINKS_FILE, InstanceIdentifiers.OTN_NETWORK_II);
TopologyDataUtils.writePortmappingFromFileToDatastore(getDataStoreContextUtil());
LOG.info("setup done");
}
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());
- Uuid onep1Uuid = new Uuid(UUID.nameUUIDFromBytes("OwnedNodeEdgePoint 0".getBytes()).toString());
- Uuid onep2Uuid = new Uuid(UUID.nameUUIDFromBytes("OwnedNodeEdgePoint 1".getBytes()).toString());
- List<OwnedNodeEdgePoint> edgePointList = new ArrayList<>(topologyNodeList.get(0)
- .nonnullOwnedNodeEdgePoint().values());
- assertEquals("incorrect uuid for nep1",
- onep1Uuid, edgePointList.get(1).getUuid());
- assertEquals("incorrect uuid for nep1",
- onep2Uuid, edgePointList.get(0).getUuid());
+ assertNull("TAPI Ethernet Node should have no nep", topologyNodeList.get(0).getOwnedNodeEdgePoint());
}
+
@Test
- public void getTopologyDetailsForOtnTopologyWhenSuccessful() throws ExecutionException, InterruptedException {
+ public void getTopologyDetailsForOtnTopologyWithOtnLinksWhenSuccessful()
+ throws ExecutionException, InterruptedException {
GetTopologyDetailsInput input = TopologyDataUtils.buildGetTopologyDetailsInput(NetworkUtils.OTN_NETWORK_ID);
TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker());
ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
@Nullable
Topology topology = rpcResult.getResult().getTopology();
assertNotNull("Topology should not be null", topology);
- assertEquals("Node list size should be 4", 4, topology.getNode().size());
- assertEquals("Link list size should be 5", 5, topology.getLink().size());
+ assertEquals("Node list size should be 9", 9, topology.getNode().size());
+ assertEquals("Link list size should be 14", 14, 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",
"T0 - Multi-layer topology",
topology.nonnullName().values().stream().findFirst().get().getValue());
- List<Node> nodes = topology.nonnullNode().values().stream()
- .sorted((n1,n2) -> n1.getUuid().getValue().compareTo(n2.getUuid().getValue()))
- .collect(Collectors.toList());
- Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkDsrNode(nodes.get(0), node1Uuid, false, "SPDR-SA1-XPDR1");
- Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+DSR".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkDsrNode(nodes.get(1), node2Uuid, true, "SPDR-SA1-XPDR2");
- Uuid node3Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkOtsiNode(nodes.get(2), node3Uuid, false, "SPDR-SA1-XPDR1");
- Uuid node4Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR2+OTSi".getBytes(Charset.forName("UTF-8")))
- .toString());
- checkOtsiNode(nodes.get(3), node4Uuid, true, "SPDR-SA1-XPDR2");
-
- List<Link> links = topology.nonnullLink().values().stream()
- .sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkTransitionalLink(links.get(4), topoUuid, node1Uuid, node3Uuid, "SPDR-SA1-XPDR1+DSR+XPDR1-NETWORK1",
- "SPDR-SA1-XPDR1+iOTSi+XPDR1-NETWORK1", "SPDR-SA1-XPDR1");
- checkTransitionalLink(links.get(2), topoUuid, node2Uuid, node4Uuid, "SPDR-SA1-XPDR2+DSR+XPDR2-NETWORK1",
- "SPDR-SA1-XPDR2+iOTSi+XPDR2-NETWORK1", "SPDR-SA1-XPDR2");
- }
-
- @Test
- public void getTopologyDetailsForOtnTopologyWithOtnLinksWhenSuccessful()
- throws ExecutionException, InterruptedException {
- executorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(NUM_THREADS));
- endSignal = new CountDownLatch(1);
- TopologyDataUtils.writeTopologyFromFileToDatastore(getDataStoreContextUtil(),
- TopologyDataUtils.OTN_TOPOLOGY_WITH_OTN_LINKS_FILE, InstanceIdentifiers.OTN_NETWORK_II);
-
- GetTopologyDetailsInput input = TopologyDataUtils.buildGetTopologyDetailsInput(NetworkUtils.OTN_NETWORK_ID);
- TapiTopologyImpl tapiTopoImpl = new TapiTopologyImpl(getDataBroker());
- ListenableFuture<RpcResult<GetTopologyDetailsOutput>> result = tapiTopoImpl.getTopologyDetails(input);
- result.addListener(new Runnable() {
- @Override
- public void run() {
- endSignal.countDown();
- }
- }, executorService);
- endSignal.await();
- RpcResult<GetTopologyDetailsOutput> rpcResult = result.get();
- @Nullable
- Topology topology = rpcResult.getResult().getTopology();
- assertNotNull("Topology should not be null", topology);
- assertEquals("Node list size should be 8", 8, topology.getNode().size());
- assertEquals("Link list size should be 12", 12, topology.getLink().size());
+ long nbDsrOduNodes = topology.nonnullNode().values().stream()
+ .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);
+ 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 2 OTN links", 2, nbOtnLinks);
- Uuid topoUuid = new Uuid(UUID.nameUUIDFromBytes("T0 - Multi-layer topology".getBytes()).toString());
Uuid node1Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SA1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
.toString());
Uuid node2Uuid = new Uuid(UUID.nameUUIDFromBytes("SPDR-SC1-XPDR1+DSR".getBytes(Charset.forName("UTF-8")))
List<Link> links = topology.nonnullLink().values().stream()
.sorted((l1, l2) -> l1.getUuid().getValue().compareTo(l2.getUuid().getValue()))
.collect(Collectors.toList());
- checkOtnLink(links.get(3), topoUuid, node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
+ checkOtnLink(links.get(4), topoUuid, node1Uuid, node2Uuid, tp1Uuid, tp2Uuid, link1Uuid,
"ODU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
- checkOtnLink(links.get(9), topoUuid, node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
+ checkOtnLink(links.get(11), topoUuid, node3Uuid, node4Uuid, tp3Uuid, tp4Uuid, link2Uuid,
"OTU4-SPDR-SA1-XPDR1-XPDR1-NETWORK1toSPDR-SC1-XPDR1-XPDR1-NETWORK1");
}
- private void checkDsrNode(Node node, Uuid nodeUuid, boolean isSwitch, String nodeId) {
- assertEquals("incorrect node uuid", nodeUuid, node.getUuid());
- assertEquals("administrative state should be UNLOCKED",
- AdministrativeState.UNLOCKED, node.getAdministrativeState());
- assertEquals("life-cycle state should be INSTALLED", LifecycleState.INSTALLED, node.getLifecycleState());
- assertEquals("operational state should be ENABLED", OperationalState.ENABLED, node.getOperationalState());
- assertEquals("value-name should be 'dsr/odu node name'",
- "dsr/odu node name", node.nonnullName().values().stream().findFirst().get().getValueName());
- assertEquals("dsr node should manage 2 protocol layers : dsr and odu",
- 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()
- .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);
- }
- }
-
- private void checkOtsiNode(Node node, Uuid nodeUuid, boolean isSwitch, String nodeId) {
- assertEquals("incorrect node uuid", nodeUuid, node.getUuid());
- assertEquals("administrative state should be UNLOCKED",
- AdministrativeState.UNLOCKED, node.getAdministrativeState());
- assertEquals("life-cycle state should be INSTALLED", LifecycleState.INSTALLED, node.getLifecycleState());
- assertEquals("operational state should be ENABLED", OperationalState.ENABLED, node.getOperationalState());
- assertEquals("value-name should be 'dsr/odu node name'",
- "otsi node name", node.nonnullName().values().stream().findFirst().get().getValueName());
- assertEquals("otsi node should manage a single protocol layer : PHOTONIC_MEDIA",
- 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()
- .sorted((nep1, nep2) -> nep1.getUuid().getValue().compareTo(nep2.getUuid().getValue()))
- .collect(Collectors.toList());
- if (isSwitch) {
- assertEquals("Switch-OTSi node should have 8 NEPs", 8, neps.size());
- OwnedNodeEdgePoint nep1 = neps.get(2);
- 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);
- Uuid enepUuid = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR2-NETWORK2").getBytes(Charset.forName("UTF-8")))
- .toString());
- checkNepOtsiNode(nep2, enepUuid, "XPDR2-NETWORK2", "eNodeEdgePoint_2");
- 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);
- } else {
- assertEquals("Mux-OTSi node should have 2 NEPs", 2, neps.size());
- OwnedNodeEdgePoint nep1 = neps.get(0);
- Uuid enepUuid = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+eOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- checkNepOtsiNode(nep1, enepUuid, "XPDR1-NETWORK1", "eNodeEdgePoint_1");
- OwnedNodeEdgePoint nep2 = neps.get(1);
- Uuid inepUuid = new Uuid(
- UUID.nameUUIDFromBytes((nodeId + "+iOTSi+XPDR1-NETWORK1").getBytes(Charset.forName("UTF-8")))
- .toString());
- checkNepOtsiNode(nep2, inepUuid, "XPDR1-NETWORK1", "iNodeEdgePoint_1");
- List<NodeRuleGroup> nrgList = node.nonnullNodeRuleGroup().values().stream()
- .sorted((nrg1, nrg2) -> nrg1.getUuid().getValue().compareTo(nrg2.getUuid().getValue()))
- .collect(Collectors.toList());
- checkNodeRuleGroupForMuxOTSi(nrgList, enepUuid, inepUuid, nodeUuid);
- }
- }
-
- private void checkNepClient10G(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName) {
- assertEquals("bad uuid for " + portName, nepUuid, nep.getUuid());
- List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
- Name name = nameList.get(0);
- assertEquals("value of client nep should be '" + portName + "'",
- portName, name.getValue());
- assertEquals("value-name of client nep for '" + portName + "' should be '" + nepName + "'",
- nepName, name.getValueName());
- assertEquals("Client nep should support 2 kind of cep",
- 2, nep.getSupportedCepLayerProtocolQualifier().size());
- assertThat("client nep should support 2 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
- hasItems(ODUTYPEODU2E.class, DIGITALSIGNALTYPE10GigELAN.class));
- assertEquals("client nep should be of ETH protocol type", LayerProtocolName.ETH, nep.getLayerProtocolName());
- checkCommonPartOfNep(nep);
- }
-
- private void checkNepNetworkODU4(OwnedNodeEdgePoint nep, Uuid nepUuid, String portName, String nepName) {
- assertEquals("bad uuid for " + portName, nepUuid, nep.getUuid());
- List<Name> nameList = new ArrayList<>(nep.nonnullName().values());
- Name name = nameList.get(0);
- assertEquals("value of network nep should be '" + portName + "'",
- portName, name.getValue());
- assertEquals("value-name of client nep for '" + portName + "' should be '" + nepName + "'",
- nepName, name.getValueName());
- assertEquals("Network nep should support 1 kind of cep",
- 1, nep.getSupportedCepLayerProtocolQualifier().size());
- assertThat("network nep should support 1 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
- hasItem(ODUTYPEODU4.class));
- assertEquals("network nep should be of ODU protocol type", LayerProtocolName.ODU, nep.getLayerProtocolName());
- checkCommonPartOfNep(nep);
- }
-
- private void checkNodeRuleGroupForMuxDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
- Uuid nodeUuid) {
- assertEquals("muxponder DSR should contain 4 node rule group", 4, nrgList.size());
- for (NodeRuleGroup nodeRuleGroup : nrgList) {
- assertEquals("each node-rule-group should contain 2 NEP for muxponder DSR",
- 2, nodeRuleGroup.getNodeEdgePoint().size());
- }
- 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(),
- 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(),
- either(containsString(networkNepUuid.getValue())).or(containsString(clientNepUuid.getValue())));
- assertEquals("node-rule-group nb 2 should be between nep-client4 and nep-network1 of the same node",
- nodeEdgePointList.get(0).getNodeUuid(), nodeUuid);
- assertEquals("node-rule-group nb 2 should be between nep-client4 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 2 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 checkNodeRuleGroupForSwitchDSR(List<NodeRuleGroup> nrgList, Uuid clientNepUuid, Uuid networkNepUuid,
- Uuid nodeUuid) {
- assertEquals("Switch-DSR should contain a single node rule group", 1, nrgList.size());
- assertEquals("Switch-DSR node-rule-group should contain 8 NEP", 8, nrgList.get(0).getNodeEdgePoint().size());
- List<NodeEdgePoint> nrg = nrgList.get(0).nonnullNodeEdgePoint().values().stream()
- .sorted((nrg1, nrg2) -> nrg1.getNodeEdgePointUuid().getValue()
- .compareTo(nrg2.getNodeEdgePointUuid().getValue()))
- .collect(Collectors.toList());
- assertEquals("in the sorted node-rule-group, nep number 2 should be XPDR2-NETWORK1",
- networkNepUuid, nrg.get(4).getNodeEdgePointUuid());
- assertEquals("in the sorted node-rule-group, nep number 6 should be XPDR2-CLIENT4",
- clientNepUuid, nrg.get(3).getNodeEdgePointUuid());
- assertEquals("any item of the node-rule-group should have the same nodeUuid",
- nodeUuid, nrg.get(4).getNodeUuid());
- assertEquals("any item of the node-rule-group should have the same nodeUuid",
- nodeUuid, nrg.get(3).getNodeUuid());
- @Nullable
- 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());
- List<NodeEdgePoint> nodeEdgePointList = new ArrayList<>(nrgList.get(0).getNodeEdgePoint().values());
- assertEquals("Mux-OTSi node-rule-group should contain 2 NEP", 2, nodeEdgePointList.size());
- assertThat("Mux-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("Mux-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 checkNodeRuleGroupForSwitchOTSi(List<NodeRuleGroup> nrgList, Uuid enepUuid, Uuid inepUuid,
- Uuid nodeUuid) {
- assertEquals("Switch-OTSi should contain 4 node rule group", 4, nrgList.size());
- for (NodeRuleGroup nodeRuleGroup : nrgList) {
- assertEquals("each node-rule-group should contain 2 NEP for Switch-OTSi",
- 2, nodeRuleGroup.getNodeEdgePoint().size());
- }
- List<NodeEdgePoint> nodeEdgePointList1 = new ArrayList<>(nrgList.get(3).nonnullNodeEdgePoint().values());
- assertThat("Switch-OTSi node-rule-group nb 4 should be between eNEP and iNEP of XPDR2-NETWORK2",
- nodeEdgePointList1.get(0).getNodeEdgePointUuid().getValue(),
- either(containsString(enepUuid.getValue())).or(containsString(inepUuid.getValue())));
- assertThat("Switch-OTSi node-rule-group nb 4 should be between eNEP and iNEP of XPDR2-NETWORK2",
- nodeEdgePointList1.get(1).getNodeEdgePointUuid().getValue(),
- either(containsString(enepUuid.getValue())).or(containsString(inepUuid.getValue())));
- List<NodeEdgePoint> nodeEdgePointList0 = new ArrayList<>(nrgList.get(0).getNodeEdgePoint().values());
- assertEquals("any item of the node-rule-group should have the same nodeUuid",
- nodeUuid, nodeEdgePointList0.get(0).getNodeUuid());
- assertEquals("any item of the node-rule-group should have the same nodeUuid",
- nodeUuid, nodeEdgePointList0.get(1).getNodeUuid());
- List<Rule> ruleList0 = new ArrayList<>(nrgList.get(0).nonnullRule().values());
- assertEquals("node-rule-group should contain a single rule", 1, ruleList0.size());
- assertEquals("local-id of the rule should be 'forward'",
- "forward", ruleList0.get(0).getLocalId());
- assertEquals("the forwarding rule should be 'MAYFORWARDACROSSGROUP'",
- ForwardingRule.MAYFORWARDACROSSGROUP, ruleList0.get(0).getForwardingRule());
- assertEquals("the rule type should be 'FORWARDING'",
- RuleType.FORWARDING, ruleList0.get(0).getRuleType());
- }
-
- private void checkNepClient100G(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 '" + nepName + "'",
- nepName, nameList.get(0).getValueName());
- assertEquals("Client nep should support 2 kind of cep",
- 2, nep.getSupportedCepLayerProtocolQualifier().size());
- assertThat("client nep should support 2 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
- hasItems(ODUTYPEODU4.class, DIGITALSIGNALTYPE100GigE.class));
- assertEquals("client nep should be of ETH protocol type", LayerProtocolName.ETH, nep.getLayerProtocolName());
- checkCommonPartOfNep(nep);
- }
-
- 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());
- assertEquals("value of OTSi nep should be '" + portName + "'",
- portName, nameList.get(0).getValue());
- assertEquals("value-name of OTSi nep should be '" + nepName + "'",
- nepName, nameList.get(0).getValueName());
- assertEquals("OTSi nep should support 2 kind of cep",
- 2, nep.getSupportedCepLayerProtocolQualifier().size());
- assertThat("OTSi nep should support 2 kind of cep",
- nep.getSupportedCepLayerProtocolQualifier(),
- hasItems(PHOTONICLAYERQUALIFIEROMS.class, PHOTONICLAYERQUALIFIEROTSi.class));
- assertEquals("OTSi nep should be of PHOTONIC_MEDIA protocol type",
- LayerProtocolName.PHOTONICMEDIA, nep.getLayerProtocolName());
- assertEquals("OTSi nep should support one SIP", 1, nep.getMappedServiceInterfacePoint().size());
- checkCommonPartOfNep(nep);
- }
-
- private void checkCommonPartOfNep(OwnedNodeEdgePoint nep) {
- assertEquals("link port direction should be DIRECTIONAL",
- PortDirection.BIDIRECTIONAL, nep.getLinkPortDirection());
- assertEquals("administrative state should be UNLOCKED",
- AdministrativeState.UNLOCKED, nep.getAdministrativeState());
- assertEquals("termination state should be TERMINATED BIDIRECTIONAL",
- TerminationState.TERMINATEDBIDIRECTIONAL, nep.getTerminationState());
- assertEquals("life-cycle state should be INSTALLED", LifecycleState.INSTALLED, nep.getLifecycleState());
- assertEquals("client nep should support 1 SIP", 1, nep.getMappedServiceInterfacePoint().size());
- assertEquals("termination direction should be BIDIRECTIONAL",
- TerminationDirection.BIDIRECTIONAL, nep.getTerminationDirection());
- assertEquals("operational state of client nep should be ENABLED",
- OperationalState.ENABLED, nep.getOperationalState());
- assertEquals("link-port-role of client nep should be SYMMETRIC",
- PortRole.SYMMETRIC, nep.getLinkPortRole());
- }
-
- private void checkTransitionalLink(Link link, Uuid topoUuid, Uuid node1Uuid, Uuid node2Uuid, String tp1,
- String tp2, String ietfNodeId) {
- Uuid linkUuid = new Uuid(UUID.nameUUIDFromBytes((ietfNodeId + "--" + tp1 + "--" + tp2)
- .getBytes(Charset.forName("UTF-8"))).toString());
- assertEquals("bad uuid for link between DSR node " + tp1 + " and iOTSI port " + tp2, linkUuid, link.getUuid());
- assertEquals("Available capacity unit should be GBPS",
- CapacityUnit.GBPS, link.getAvailableCapacity().getTotalSize().getUnit());
- assertEquals("Available capacity -total size value should be 100",
- Uint64.valueOf(100), link.getAvailableCapacity().getTotalSize().getValue());
- assertEquals("transitional link should be between 2 nodes of protocol layers ODU and PHOTONIC_MEDIA",
- 2, link.getTransitionedLayerProtocolName().size());
- assertThat("transitional link should be between 2 nodes of protocol layers ODU and PHOTONIC_MEDIA",
- link.getTransitionedLayerProtocolName(),
- hasItems(LayerProtocolName.ODU.getName(), LayerProtocolName.PHOTONICMEDIA.getName()));
- assertEquals("transitional link should be BIDIRECTIONAL",
- ForwardingDirection.BIDIRECTIONAL, link.getDirection());
- List<org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.topology.rev181210
- .link.NodeEdgePoint> nodeEdgePointList = new ArrayList<>(link.nonnullNodeEdgePoint().values());
- assertEquals("topology uuid should be the same for the two termination point of the link",
- topoUuid, nodeEdgePointList.get(0).getTopologyUuid());
- assertEquals("topology uuid should be the same for the two termination point of the link",
- topoUuid, nodeEdgePointList.get(1).getTopologyUuid());
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(0).getNodeUuid().getValue(),
- either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(1).getNodeUuid().getValue(),
- either(containsString(node1Uuid.getValue())).or(containsString(node2Uuid.getValue())));
- Uuid nep1Uuid = new Uuid(UUID.nameUUIDFromBytes(tp1.getBytes(Charset.forName("UTF-8"))).toString());
- Uuid nep2Uuid = new Uuid(UUID.nameUUIDFromBytes(tp2.getBytes(Charset.forName("UTF-8"))).toString());
- assertThat("transitional links should terminate on " + tp1 + " and " + tp2 + " neps",
- nodeEdgePointList.get(0).getNodeEdgePointUuid().getValue(),
- either(containsString(nep1Uuid.getValue())).or(containsString(nep2Uuid.getValue())));
- assertThat("transitional links should terminate on DSR node and Photonic node",
- nodeEdgePointList.get(1).getNodeEdgePointUuid().getValue(),
- either(containsString(nep1Uuid.getValue())).or(containsString(nep2Uuid.getValue())));
- }
-
private void checkOtnLink(Link link, Uuid topoUuid, Uuid node1Uuid, Uuid node2Uuid, Uuid tp1Uuid, Uuid tp2Uuid,
Uuid linkUuid, String linkName) {
assertEquals("bad name for the link", linkName, link.getName().get(new NameKey("otn link name")).getValue());
assertEquals("administrative state should be UNLOCKED",
AdministrativeState.UNLOCKED, link.getAdministrativeState());
}
-
}
public final class TopologyDataUtils {
private static final Logger LOG = LoggerFactory.getLogger(TopologyDataUtils.class);
- public static final String OPENROADM_TOPOLOGY_FILE = "src/test/resources/openroadm-topology2.xml";
- public static final String OTN_TOPOLOGY_FILE = "src/test/resources/otn-topology.xml";
+ 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/portmapping-example.xml";
+ public static final String PORTMAPPING_FILE = "src/test/resources/get_portmapping.xml";
public static GetTopologyDetailsInput buildGetTopologyDetailsInput(String topoName) {
GetTopologyDetailsInputBuilder builtInput = new GetTopologyDetailsInputBuilder();
<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">
<available-wavelengths>
- <index>94</index>
+ <index>95</index>
</available-wavelengths>
<available-wavelengths>
- <index>93</index>
+ <index>94</index>
</available-wavelengths>
<available-wavelengths>
<index>96</index>
</available-wavelengths>
<available-wavelengths>
- <index>95</index>
+ <index>43</index>
</available-wavelengths>
<available-wavelengths>
<index>42</index>
</available-wavelengths>
<available-wavelengths>
- <index>41</index>
+ <index>45</index>
</available-wavelengths>
<available-wavelengths>
<index>44</index>
</available-wavelengths>
<available-wavelengths>
- <index>43</index>
+ <index>39</index>
</available-wavelengths>
<available-wavelengths>
<index>38</index>
</available-wavelengths>
<available-wavelengths>
- <index>37</index>
+ <index>41</index>
</available-wavelengths>
<available-wavelengths>
<index>40</index>
</available-wavelengths>
<available-wavelengths>
- <index>39</index>
+ <index>35</index>
</available-wavelengths>
<available-wavelengths>
<index>34</index>
</available-wavelengths>
<available-wavelengths>
- <index>33</index>
+ <index>37</index>
</available-wavelengths>
<available-wavelengths>
<index>36</index>
</available-wavelengths>
<available-wavelengths>
- <index>35</index>
+ <index>31</index>
</available-wavelengths>
<available-wavelengths>
<index>30</index>
</available-wavelengths>
<available-wavelengths>
- <index>29</index>
+ <index>33</index>
</available-wavelengths>
<available-wavelengths>
<index>32</index>
</available-wavelengths>
<available-wavelengths>
- <index>31</index>
+ <index>59</index>
</available-wavelengths>
<available-wavelengths>
<index>58</index>
</available-wavelengths>
<available-wavelengths>
- <index>57</index>
+ <index>61</index>
</available-wavelengths>
<available-wavelengths>
<index>60</index>
</available-wavelengths>
<available-wavelengths>
- <index>59</index>
+ <index>55</index>
</available-wavelengths>
<available-wavelengths>
<index>54</index>
</available-wavelengths>
<available-wavelengths>
- <index>53</index>
+ <index>57</index>
</available-wavelengths>
<available-wavelengths>
<index>56</index>
</available-wavelengths>
<available-wavelengths>
- <index>55</index>
+ <index>51</index>
</available-wavelengths>
<available-wavelengths>
<index>50</index>
</available-wavelengths>
<available-wavelengths>
- <index>49</index>
+ <index>53</index>
</available-wavelengths>
<available-wavelengths>
<index>52</index>
</available-wavelengths>
<available-wavelengths>
- <index>51</index>
+ <index>47</index>
</available-wavelengths>
<available-wavelengths>
<index>46</index>
</available-wavelengths>
<available-wavelengths>
- <index>45</index>
+ <index>49</index>
</available-wavelengths>
<available-wavelengths>
<index>48</index>
</available-wavelengths>
<available-wavelengths>
- <index>47</index>
+ <index>75</index>
</available-wavelengths>
<available-wavelengths>
<index>74</index>
</available-wavelengths>
<available-wavelengths>
- <index>73</index>
+ <index>77</index>
</available-wavelengths>
<available-wavelengths>
<index>76</index>
</available-wavelengths>
<available-wavelengths>
- <index>75</index>
+ <index>71</index>
</available-wavelengths>
<available-wavelengths>
<index>70</index>
</available-wavelengths>
<available-wavelengths>
- <index>69</index>
+ <index>73</index>
</available-wavelengths>
<available-wavelengths>
<index>72</index>
</available-wavelengths>
<available-wavelengths>
- <index>71</index>
+ <index>67</index>
</available-wavelengths>
<available-wavelengths>
<index>66</index>
</available-wavelengths>
<available-wavelengths>
- <index>65</index>
+ <index>69</index>
</available-wavelengths>
<available-wavelengths>
<index>68</index>
</available-wavelengths>
<available-wavelengths>
- <index>67</index>
+ <index>63</index>
</available-wavelengths>
<available-wavelengths>
<index>62</index>
</available-wavelengths>
<available-wavelengths>
- <index>61</index>
+ <index>65</index>
</available-wavelengths>
<available-wavelengths>
<index>64</index>
</available-wavelengths>
<available-wavelengths>
- <index>63</index>
+ <index>91</index>
</available-wavelengths>
<available-wavelengths>
<index>90</index>
</available-wavelengths>
<available-wavelengths>
- <index>89</index>
+ <index>93</index>
</available-wavelengths>
<available-wavelengths>
<index>92</index>
</available-wavelengths>
<available-wavelengths>
- <index>91</index>
+ <index>87</index>
</available-wavelengths>
<available-wavelengths>
<index>86</index>
</available-wavelengths>
<available-wavelengths>
- <index>85</index>
+ <index>89</index>
</available-wavelengths>
<available-wavelengths>
<index>88</index>
</available-wavelengths>
<available-wavelengths>
- <index>87</index>
+ <index>83</index>
</available-wavelengths>
<available-wavelengths>
<index>82</index>
</available-wavelengths>
<available-wavelengths>
- <index>81</index>
+ <index>85</index>
</available-wavelengths>
<available-wavelengths>
<index>84</index>
</available-wavelengths>
<available-wavelengths>
- <index>83</index>
+ <index>79</index>
</available-wavelengths>
<available-wavelengths>
<index>78</index>
</available-wavelengths>
<available-wavelengths>
- <index>77</index>
+ <index>81</index>
</available-wavelengths>
<available-wavelengths>
<index>80</index>
</available-wavelengths>
<available-wavelengths>
- <index>79</index>
+ <index>11</index>
</available-wavelengths>
<available-wavelengths>
<index>10</index>
</available-wavelengths>
<available-wavelengths>
- <index>9</index>
+ <index>13</index>
</available-wavelengths>
<available-wavelengths>
<index>12</index>
</available-wavelengths>
<available-wavelengths>
- <index>11</index>
+ <index>7</index>
</available-wavelengths>
<available-wavelengths>
<index>6</index>
</available-wavelengths>
<available-wavelengths>
- <index>5</index>
+ <index>9</index>
</available-wavelengths>
<available-wavelengths>
<index>8</index>
</available-wavelengths>
<available-wavelengths>
- <index>7</index>
+ <index>3</index>
</available-wavelengths>
<available-wavelengths>
<index>2</index>
</available-wavelengths>
<available-wavelengths>
- <index>1</index>
+ <index>5</index>
</available-wavelengths>
<available-wavelengths>
<index>4</index>
</available-wavelengths>
<available-wavelengths>
- <index>3</index>
+ <index>1</index>
+ </available-wavelengths>
+ <available-wavelengths>
+ <index>27</index>
</available-wavelengths>
<available-wavelengths>
<index>26</index>
</available-wavelengths>
<available-wavelengths>
- <index>25</index>
+ <index>29</index>
</available-wavelengths>
<available-wavelengths>
<index>28</index>
</available-wavelengths>
<available-wavelengths>
- <index>27</index>
+ <index>23</index>
</available-wavelengths>
<available-wavelengths>
<index>22</index>
</available-wavelengths>
<available-wavelengths>
- <index>21</index>
+ <index>25</index>
</available-wavelengths>
<available-wavelengths>
<index>24</index>
</available-wavelengths>
<available-wavelengths>
- <index>23</index>
+ <index>19</index>
</available-wavelengths>
<available-wavelengths>
<index>18</index>
</available-wavelengths>
<available-wavelengths>
- <index>17</index>
+ <index>21</index>
</available-wavelengths>
<available-wavelengths>
<index>20</index>
</available-wavelengths>
<available-wavelengths>
- <index>19</index>
+ <index>15</index>
</available-wavelengths>
<available-wavelengths>
<index>14</index>
</available-wavelengths>
<available-wavelengths>
- <index>13</index>
+ <index>17</index>
</available-wavelengths>
<available-wavelengths>
<index>16</index>
</available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
</srg-attributes>
<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>
+ <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-PP4-TXRX</tp-id>
- <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+ <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-PP3-TXRX</tp-id>
+ <tp-id>SRG3-PP4-TXRX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
</termination-point>
- <node-type xmlns="http://org/openroadm/common/network">SRG</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-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-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>ROADM-C1-DEG2</node-id>
- <degree-attributes xmlns="http://org/openroadm/network/topology">
- <degree-number>2</degree-number>
+ <node-id>ROADM-C1-SRG1</node-id>
+ <srg-attributes xmlns="http://org/openroadm/network/topology">
<available-wavelengths>
- <index>94</index>
+ <index>95</index>
</available-wavelengths>
<available-wavelengths>
- <index>93</index>
+ <index>94</index>
</available-wavelengths>
<available-wavelengths>
<index>96</index>
</available-wavelengths>
<available-wavelengths>
- <index>95</index>
+ <index>43</index>
</available-wavelengths>
<available-wavelengths>
<index>42</index>
</available-wavelengths>
<available-wavelengths>
- <index>41</index>
+ <index>45</index>
</available-wavelengths>
<available-wavelengths>
<index>44</index>
</available-wavelengths>
<available-wavelengths>
- <index>43</index>
+ <index>39</index>
</available-wavelengths>
<available-wavelengths>
<index>38</index>
</available-wavelengths>
<available-wavelengths>
- <index>37</index>
+ <index>41</index>
</available-wavelengths>
<available-wavelengths>
<index>40</index>
</available-wavelengths>
<available-wavelengths>
- <index>39</index>
+ <index>35</index>
</available-wavelengths>
<available-wavelengths>
<index>34</index>
</available-wavelengths>
<available-wavelengths>
- <index>33</index>
+ <index>37</index>
</available-wavelengths>
<available-wavelengths>
<index>36</index>
</available-wavelengths>
<available-wavelengths>
- <index>35</index>
+ <index>31</index>
</available-wavelengths>
<available-wavelengths>
<index>30</index>
</available-wavelengths>
<available-wavelengths>
- <index>29</index>
+ <index>33</index>
</available-wavelengths>
<available-wavelengths>
<index>32</index>
</available-wavelengths>
<available-wavelengths>
- <index>31</index>
+ <index>59</index>
</available-wavelengths>
<available-wavelengths>
<index>58</index>
</available-wavelengths>
<available-wavelengths>
- <index>57</index>
+ <index>61</index>
</available-wavelengths>
<available-wavelengths>
<index>60</index>
</available-wavelengths>
<available-wavelengths>
- <index>59</index>
+ <index>55</index>
</available-wavelengths>
<available-wavelengths>
<index>54</index>
</available-wavelengths>
<available-wavelengths>
- <index>53</index>
+ <index>57</index>
</available-wavelengths>
<available-wavelengths>
<index>56</index>
</available-wavelengths>
<available-wavelengths>
- <index>55</index>
+ <index>51</index>
</available-wavelengths>
<available-wavelengths>
<index>50</index>
</available-wavelengths>
<available-wavelengths>
- <index>49</index>
+ <index>53</index>
</available-wavelengths>
<available-wavelengths>
<index>52</index>
</available-wavelengths>
<available-wavelengths>
- <index>51</index>
+ <index>47</index>
</available-wavelengths>
<available-wavelengths>
<index>46</index>
</available-wavelengths>
<available-wavelengths>
- <index>45</index>
+ <index>49</index>
</available-wavelengths>
<available-wavelengths>
<index>48</index>
</available-wavelengths>
<available-wavelengths>
- <index>47</index>
+ <index>75</index>
</available-wavelengths>
<available-wavelengths>
<index>74</index>
</available-wavelengths>
<available-wavelengths>
- <index>73</index>
+ <index>77</index>
</available-wavelengths>
<available-wavelengths>
<index>76</index>
</available-wavelengths>
<available-wavelengths>
- <index>75</index>
+ <index>71</index>
</available-wavelengths>
<available-wavelengths>
<index>70</index>
</available-wavelengths>
<available-wavelengths>
- <index>69</index>
+ <index>73</index>
</available-wavelengths>
<available-wavelengths>
<index>72</index>
</available-wavelengths>
<available-wavelengths>
- <index>71</index>
+ <index>67</index>
</available-wavelengths>
<available-wavelengths>
<index>66</index>
</available-wavelengths>
<available-wavelengths>
- <index>65</index>
+ <index>69</index>
</available-wavelengths>
<available-wavelengths>
<index>68</index>
</available-wavelengths>
<available-wavelengths>
- <index>67</index>
+ <index>63</index>
</available-wavelengths>
<available-wavelengths>
<index>62</index>
</available-wavelengths>
<available-wavelengths>
- <index>61</index>
+ <index>65</index>
</available-wavelengths>
<available-wavelengths>
<index>64</index>
</available-wavelengths>
<available-wavelengths>
- <index>63</index>
+ <index>91</index>
</available-wavelengths>
<available-wavelengths>
<index>90</index>
</available-wavelengths>
<available-wavelengths>
- <index>89</index>
+ <index>93</index>
</available-wavelengths>
<available-wavelengths>
<index>92</index>
</available-wavelengths>
<available-wavelengths>
- <index>91</index>
+ <index>87</index>
</available-wavelengths>
<available-wavelengths>
<index>86</index>
</available-wavelengths>
<available-wavelengths>
- <index>85</index>
+ <index>89</index>
</available-wavelengths>
<available-wavelengths>
<index>88</index>
</available-wavelengths>
<available-wavelengths>
- <index>87</index>
+ <index>83</index>
</available-wavelengths>
<available-wavelengths>
<index>82</index>
</available-wavelengths>
<available-wavelengths>
- <index>81</index>
+ <index>85</index>
</available-wavelengths>
<available-wavelengths>
<index>84</index>
</available-wavelengths>
<available-wavelengths>
- <index>83</index>
+ <index>79</index>
</available-wavelengths>
<available-wavelengths>
<index>78</index>
</available-wavelengths>
<available-wavelengths>
- <index>77</index>
+ <index>81</index>
</available-wavelengths>
<available-wavelengths>
<index>80</index>
</available-wavelengths>
<available-wavelengths>
- <index>79</index>
+ <index>11</index>
</available-wavelengths>
<available-wavelengths>
<index>10</index>
</available-wavelengths>
<available-wavelengths>
- <index>9</index>
+ <index>13</index>
</available-wavelengths>
<available-wavelengths>
<index>12</index>
</available-wavelengths>
<available-wavelengths>
- <index>11</index>
+ <index>7</index>
</available-wavelengths>
<available-wavelengths>
<index>6</index>
</available-wavelengths>
<available-wavelengths>
- <index>5</index>
+ <index>9</index>
</available-wavelengths>
<available-wavelengths>
<index>8</index>
</available-wavelengths>
<available-wavelengths>
- <index>7</index>
+ <index>3</index>
</available-wavelengths>
<available-wavelengths>
<index>2</index>
</available-wavelengths>
<available-wavelengths>
- <index>1</index>
+ <index>5</index>
</available-wavelengths>
<available-wavelengths>
<index>4</index>
</available-wavelengths>
<available-wavelengths>
- <index>3</index>
+ <index>1</index>
+ </available-wavelengths>
+ <available-wavelengths>
+ <index>27</index>
</available-wavelengths>
<available-wavelengths>
<index>26</index>
</available-wavelengths>
<available-wavelengths>
- <index>25</index>
+ <index>29</index>
</available-wavelengths>
<available-wavelengths>
<index>28</index>
</available-wavelengths>
<available-wavelengths>
- <index>27</index>
+ <index>23</index>
</available-wavelengths>
<available-wavelengths>
<index>22</index>
</available-wavelengths>
<available-wavelengths>
- <index>21</index>
+ <index>25</index>
</available-wavelengths>
<available-wavelengths>
<index>24</index>
</available-wavelengths>
<available-wavelengths>
- <index>23</index>
+ <index>19</index>
</available-wavelengths>
<available-wavelengths>
<index>18</index>
</available-wavelengths>
<available-wavelengths>
- <index>17</index>
+ <index>21</index>
</available-wavelengths>
<available-wavelengths>
<index>20</index>
</available-wavelengths>
<available-wavelengths>
- <index>19</index>
+ <index>15</index>
</available-wavelengths>
<available-wavelengths>
<index>14</index>
</available-wavelengths>
<available-wavelengths>
- <index>13</index>
+ <index>17</index>
</available-wavelengths>
<available-wavelengths>
<index>16</index>
</available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
- </degree-attributes>
+ </srg-attributes>
<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>
+ <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>DEG2-TTP-TXRX</tp-id>
- <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-TTP</tp-type>
+ <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>
- <node-type xmlns="http://org/openroadm/common/network">DEGREE</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-C1</node-ref>
- </supporting-node>
<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>ROADM-C1</node-ref>
+ </supporting-node>
+ <node-type xmlns="http://org/openroadm/common/network">SRG</node-type>
</node>
<node>
- <node-id>ROADM-C1-SRG1</node-id>
+ <node-id>ROADM-A1-SRG1</node-id>
<srg-attributes xmlns="http://org/openroadm/network/topology">
<available-wavelengths>
- <index>94</index>
+ <index>95</index>
</available-wavelengths>
<available-wavelengths>
- <index>93</index>
+ <index>94</index>
</available-wavelengths>
<available-wavelengths>
<index>96</index>
</available-wavelengths>
<available-wavelengths>
- <index>95</index>
+ <index>43</index>
</available-wavelengths>
<available-wavelengths>
<index>42</index>
</available-wavelengths>
<available-wavelengths>
- <index>41</index>
+ <index>45</index>
</available-wavelengths>
<available-wavelengths>
<index>44</index>
</available-wavelengths>
<available-wavelengths>
- <index>43</index>
+ <index>39</index>
</available-wavelengths>
<available-wavelengths>
<index>38</index>
</available-wavelengths>
<available-wavelengths>
- <index>37</index>
+ <index>41</index>
</available-wavelengths>
<available-wavelengths>
<index>40</index>
</available-wavelengths>
<available-wavelengths>
- <index>39</index>
+ <index>35</index>
</available-wavelengths>
<available-wavelengths>
<index>34</index>
</available-wavelengths>
<available-wavelengths>
- <index>33</index>
+ <index>37</index>
</available-wavelengths>
<available-wavelengths>
<index>36</index>
</available-wavelengths>
<available-wavelengths>
- <index>35</index>
+ <index>31</index>
</available-wavelengths>
<available-wavelengths>
<index>30</index>
</available-wavelengths>
<available-wavelengths>
- <index>29</index>
+ <index>33</index>
</available-wavelengths>
<available-wavelengths>
<index>32</index>
</available-wavelengths>
<available-wavelengths>
- <index>31</index>
+ <index>59</index>
</available-wavelengths>
<available-wavelengths>
<index>58</index>
</available-wavelengths>
<available-wavelengths>
- <index>57</index>
+ <index>61</index>
</available-wavelengths>
<available-wavelengths>
<index>60</index>
</available-wavelengths>
<available-wavelengths>
- <index>59</index>
+ <index>55</index>
</available-wavelengths>
<available-wavelengths>
<index>54</index>
</available-wavelengths>
<available-wavelengths>
- <index>53</index>
+ <index>57</index>
</available-wavelengths>
<available-wavelengths>
<index>56</index>
</available-wavelengths>
<available-wavelengths>
- <index>55</index>
+ <index>51</index>
</available-wavelengths>
<available-wavelengths>
<index>50</index>
</available-wavelengths>
<available-wavelengths>
- <index>49</index>
+ <index>53</index>
</available-wavelengths>
<available-wavelengths>
<index>52</index>
</available-wavelengths>
<available-wavelengths>
- <index>51</index>
+ <index>47</index>
</available-wavelengths>
<available-wavelengths>
<index>46</index>
</available-wavelengths>
<available-wavelengths>
- <index>45</index>
+ <index>49</index>
</available-wavelengths>
<available-wavelengths>
<index>48</index>
</available-wavelengths>
<available-wavelengths>
- <index>47</index>
+ <index>75</index>
</available-wavelengths>
<available-wavelengths>
<index>74</index>
</available-wavelengths>
<available-wavelengths>
- <index>73</index>
+ <index>77</index>
</available-wavelengths>
<available-wavelengths>
<index>76</index>
</available-wavelengths>
<available-wavelengths>
- <index>75</index>
+ <index>71</index>
</available-wavelengths>
<available-wavelengths>
<index>70</index>
</available-wavelengths>
<available-wavelengths>
- <index>69</index>
+ <index>73</index>
</available-wavelengths>
<available-wavelengths>
<index>72</index>
</available-wavelengths>
<available-wavelengths>
- <index>71</index>
+ <index>67</index>
</available-wavelengths>
<available-wavelengths>
<index>66</index>
</available-wavelengths>
<available-wavelengths>
- <index>65</index>
+ <index>69</index>
</available-wavelengths>
<available-wavelengths>
<index>68</index>
</available-wavelengths>
<available-wavelengths>
- <index>67</index>
+ <index>63</index>
</available-wavelengths>
<available-wavelengths>
<index>62</index>
</available-wavelengths>
<available-wavelengths>
- <index>61</index>
+ <index>65</index>
</available-wavelengths>
<available-wavelengths>
<index>64</index>
</available-wavelengths>
<available-wavelengths>
- <index>63</index>
+ <index>91</index>
</available-wavelengths>
<available-wavelengths>
<index>90</index>
</available-wavelengths>
<available-wavelengths>
- <index>89</index>
+ <index>93</index>
</available-wavelengths>
<available-wavelengths>
<index>92</index>
</available-wavelengths>
<available-wavelengths>
- <index>91</index>
+ <index>87</index>
</available-wavelengths>
<available-wavelengths>
<index>86</index>
</available-wavelengths>
<available-wavelengths>
- <index>85</index>
+ <index>89</index>
</available-wavelengths>
<available-wavelengths>
<index>88</index>
</available-wavelengths>
<available-wavelengths>
- <index>87</index>
+ <index>83</index>
</available-wavelengths>
<available-wavelengths>
<index>82</index>
</available-wavelengths>
<available-wavelengths>
- <index>81</index>
+ <index>85</index>
</available-wavelengths>
<available-wavelengths>
<index>84</index>
</available-wavelengths>
<available-wavelengths>
- <index>83</index>
+ <index>79</index>
</available-wavelengths>
<available-wavelengths>
<index>78</index>
</available-wavelengths>
<available-wavelengths>
- <index>77</index>
+ <index>81</index>
</available-wavelengths>
<available-wavelengths>
<index>80</index>
</available-wavelengths>
<available-wavelengths>
- <index>79</index>
+ <index>11</index>
</available-wavelengths>
<available-wavelengths>
<index>10</index>
</available-wavelengths>
<available-wavelengths>
- <index>9</index>
+ <index>13</index>
</available-wavelengths>
<available-wavelengths>
<index>12</index>
</available-wavelengths>
<available-wavelengths>
- <index>11</index>
+ <index>7</index>
</available-wavelengths>
<available-wavelengths>
<index>6</index>
</available-wavelengths>
<available-wavelengths>
- <index>5</index>
+ <index>9</index>
</available-wavelengths>
<available-wavelengths>
<index>8</index>
</available-wavelengths>
<available-wavelengths>
- <index>7</index>
+ <index>3</index>
</available-wavelengths>
<available-wavelengths>
<index>2</index>
</available-wavelengths>
<available-wavelengths>
- <index>1</index>
+ <index>5</index>
</available-wavelengths>
<available-wavelengths>
<index>4</index>
</available-wavelengths>
<available-wavelengths>
- <index>3</index>
+ <index>1</index>
+ </available-wavelengths>
+ <available-wavelengths>
+ <index>27</index>
</available-wavelengths>
<available-wavelengths>
<index>26</index>
</available-wavelengths>
<available-wavelengths>
- <index>25</index>
+ <index>29</index>
</available-wavelengths>
<available-wavelengths>
<index>28</index>
</available-wavelengths>
<available-wavelengths>
- <index>27</index>
+ <index>23</index>
</available-wavelengths>
<available-wavelengths>
<index>22</index>
</available-wavelengths>
<available-wavelengths>
- <index>21</index>
+ <index>25</index>
</available-wavelengths>
<available-wavelengths>
<index>24</index>
</available-wavelengths>
<available-wavelengths>
- <index>23</index>
+ <index>19</index>
</available-wavelengths>
<available-wavelengths>
<index>18</index>
</available-wavelengths>
<available-wavelengths>
- <index>17</index>
+ <index>21</index>
</available-wavelengths>
<available-wavelengths>
<index>20</index>
</available-wavelengths>
<available-wavelengths>
- <index>19</index>
+ <index>15</index>
</available-wavelengths>
<available-wavelengths>
<index>14</index>
</available-wavelengths>
<available-wavelengths>
- <index>13</index>
+ <index>17</index>
</available-wavelengths>
<available-wavelengths>
<index>16</index>
</available-wavelengths>
- <available-wavelengths>
- <index>15</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-CP-TXRX</tp-id>
- <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-CP</tp-type>
+ <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-PP1-TXRX</tp-id>
+ <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-PP3-TXRX</tp-id>
- <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
+ <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>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>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-A1-SRG1--SRG1-PP2-TXRX
+ </tail-equipment-id>
+ </xpdr-network-attributes>
+ </termination-point>
<supporting-node>
<network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-C1</node-ref>
+ <node-ref>SPDR-SA1</node-ref>
</supporting-node>
<supporting-node>
<network-ref>clli-network</network-ref>
- <node-ref>NodeC</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-A1-SRG1</node-id>
- <srg-attributes xmlns="http://org/openroadm/network/topology">
+ <node-id>ROADM-A1-DEG1</node-id>
+ <degree-attributes xmlns="http://org/openroadm/network/topology">
+ <degree-number>1</degree-number>
<available-wavelengths>
- <index>94</index>
+ <index>95</index>
</available-wavelengths>
<available-wavelengths>
- <index>93</index>
+ <index>94</index>
</available-wavelengths>
<available-wavelengths>
<index>96</index>
</available-wavelengths>
<available-wavelengths>
- <index>95</index>
+ <index>43</index>
</available-wavelengths>
<available-wavelengths>
<index>42</index>
</available-wavelengths>
<available-wavelengths>
- <index>41</index>
+ <index>45</index>
</available-wavelengths>
<available-wavelengths>
<index>44</index>
</available-wavelengths>
<available-wavelengths>
- <index>43</index>
+ <index>39</index>
</available-wavelengths>
<available-wavelengths>
<index>38</index>
</available-wavelengths>
<available-wavelengths>
- <index>37</index>
+ <index>41</index>
</available-wavelengths>
<available-wavelengths>
<index>40</index>
</available-wavelengths>
<available-wavelengths>
- <index>39</index>
+ <index>35</index>
</available-wavelengths>
<available-wavelengths>
<index>34</index>
</available-wavelengths>
<available-wavelengths>
- <index>33</index>
+ <index>37</index>
</available-wavelengths>
<available-wavelengths>
<index>36</index>
</available-wavelengths>
<available-wavelengths>
- <index>35</index>
+ <index>31</index>
</available-wavelengths>
<available-wavelengths>
<index>30</index>
</available-wavelengths>
<available-wavelengths>
- <index>29</index>
+ <index>33</index>
</available-wavelengths>
<available-wavelengths>
<index>32</index>
</available-wavelengths>
<available-wavelengths>
- <index>31</index>
+ <index>59</index>
</available-wavelengths>
<available-wavelengths>
<index>58</index>
</available-wavelengths>
<available-wavelengths>
- <index>57</index>
+ <index>61</index>
</available-wavelengths>
<available-wavelengths>
<index>60</index>
</available-wavelengths>
<available-wavelengths>
- <index>59</index>
+ <index>55</index>
</available-wavelengths>
<available-wavelengths>
<index>54</index>
</available-wavelengths>
<available-wavelengths>
- <index>53</index>
+ <index>57</index>
</available-wavelengths>
<available-wavelengths>
<index>56</index>
</available-wavelengths>
<available-wavelengths>
- <index>55</index>
+ <index>51</index>
</available-wavelengths>
<available-wavelengths>
<index>50</index>
</available-wavelengths>
<available-wavelengths>
- <index>49</index>
+ <index>53</index>
</available-wavelengths>
<available-wavelengths>
<index>52</index>
</available-wavelengths>
<available-wavelengths>
- <index>51</index>
+ <index>47</index>
</available-wavelengths>
<available-wavelengths>
<index>46</index>
</available-wavelengths>
<available-wavelengths>
- <index>45</index>
+ <index>49</index>
</available-wavelengths>
<available-wavelengths>
<index>48</index>
</available-wavelengths>
<available-wavelengths>
- <index>47</index>
+ <index>75</index>
</available-wavelengths>
<available-wavelengths>
<index>74</index>
</available-wavelengths>
<available-wavelengths>
- <index>73</index>
+ <index>77</index>
</available-wavelengths>
<available-wavelengths>
<index>76</index>
</available-wavelengths>
<available-wavelengths>
- <index>75</index>
+ <index>71</index>
</available-wavelengths>
<available-wavelengths>
<index>70</index>
</available-wavelengths>
<available-wavelengths>
- <index>69</index>
+ <index>73</index>
</available-wavelengths>
<available-wavelengths>
<index>72</index>
</available-wavelengths>
<available-wavelengths>
- <index>71</index>
+ <index>67</index>
</available-wavelengths>
<available-wavelengths>
<index>66</index>
</available-wavelengths>
<available-wavelengths>
- <index>65</index>
+ <index>69</index>
</available-wavelengths>
<available-wavelengths>
<index>68</index>
</available-wavelengths>
<available-wavelengths>
- <index>67</index>
+ <index>63</index>
</available-wavelengths>
<available-wavelengths>
<index>62</index>
</available-wavelengths>
<available-wavelengths>
- <index>61</index>
+ <index>65</index>
</available-wavelengths>
<available-wavelengths>
<index>64</index>
</available-wavelengths>
<available-wavelengths>
- <index>63</index>
+ <index>91</index>
</available-wavelengths>
<available-wavelengths>
<index>90</index>
</available-wavelengths>
<available-wavelengths>
- <index>89</index>
+ <index>93</index>
</available-wavelengths>
<available-wavelengths>
<index>92</index>
</available-wavelengths>
<available-wavelengths>
- <index>91</index>
+ <index>87</index>
</available-wavelengths>
<available-wavelengths>
<index>86</index>
</available-wavelengths>
<available-wavelengths>
- <index>85</index>
+ <index>89</index>
</available-wavelengths>
<available-wavelengths>
<index>88</index>
</available-wavelengths>
<available-wavelengths>
- <index>87</index>
+ <index>83</index>
</available-wavelengths>
<available-wavelengths>
<index>82</index>
</available-wavelengths>
<available-wavelengths>
- <index>81</index>
+ <index>85</index>
</available-wavelengths>
<available-wavelengths>
<index>84</index>
</available-wavelengths>
<available-wavelengths>
- <index>83</index>
+ <index>79</index>
</available-wavelengths>
<available-wavelengths>
<index>78</index>
</available-wavelengths>
<available-wavelengths>
- <index>77</index>
+ <index>81</index>
</available-wavelengths>
<available-wavelengths>
<index>80</index>
</available-wavelengths>
<available-wavelengths>
- <index>79</index>
+ <index>11</index>
</available-wavelengths>
<available-wavelengths>
<index>10</index>
</available-wavelengths>
<available-wavelengths>
- <index>9</index>
+ <index>13</index>
</available-wavelengths>
<available-wavelengths>
<index>12</index>
</available-wavelengths>
<available-wavelengths>
- <index>11</index>
+ <index>7</index>
</available-wavelengths>
<available-wavelengths>
<index>6</index>
</available-wavelengths>
<available-wavelengths>
- <index>5</index>
+ <index>9</index>
</available-wavelengths>
<available-wavelengths>
<index>8</index>
</available-wavelengths>
<available-wavelengths>
- <index>7</index>
+ <index>3</index>
</available-wavelengths>
<available-wavelengths>
<index>2</index>
</available-wavelengths>
<available-wavelengths>
- <index>1</index>
+ <index>5</index>
</available-wavelengths>
<available-wavelengths>
<index>4</index>
</available-wavelengths>
<available-wavelengths>
- <index>3</index>
+ <index>1</index>
+ </available-wavelengths>
+ <available-wavelengths>
+ <index>27</index>
</available-wavelengths>
<available-wavelengths>
<index>26</index>
</available-wavelengths>
<available-wavelengths>
- <index>25</index>
+ <index>29</index>
</available-wavelengths>
<available-wavelengths>
<index>28</index>
</available-wavelengths>
<available-wavelengths>
- <index>27</index>
+ <index>23</index>
</available-wavelengths>
<available-wavelengths>
<index>22</index>
</available-wavelengths>
<available-wavelengths>
- <index>21</index>
+ <index>25</index>
</available-wavelengths>
<available-wavelengths>
<index>24</index>
</available-wavelengths>
<available-wavelengths>
- <index>23</index>
+ <index>19</index>
</available-wavelengths>
<available-wavelengths>
<index>18</index>
</available-wavelengths>
<available-wavelengths>
- <index>17</index>
+ <index>21</index>
</available-wavelengths>
<available-wavelengths>
<index>20</index>
</available-wavelengths>
<available-wavelengths>
- <index>19</index>
+ <index>15</index>
</available-wavelengths>
<available-wavelengths>
<index>14</index>
</available-wavelengths>
<available-wavelengths>
- <index>13</index>
+ <index>17</index>
</available-wavelengths>
<available-wavelengths>
<index>16</index>
</available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
- </srg-attributes>
+ </degree-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>
+ <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>SRG1-CP-TXRX</tp-id>
- <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-CP</tp-type>
+ <tp-id>DEG1-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>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-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-PP3-TXRX</tp-id>
- <tp-type xmlns="http://org/openroadm/common/network">SRG-TXRX-PP</tp-type>
- </termination-point>
- <node-type xmlns="http://org/openroadm/common/network">SRG</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-A1</node-ref>
- </supporting-node>
<supporting-node>
<network-ref>clli-network</network-ref>
<node-ref>NodeA</node-ref>
</supporting-node>
- </node>
- <node>
- <node-id>XPDR-A1-XPDR1</node-id>
- <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-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-NETWORK1</tp-id>
- <xpdr-network-attributes xmlns="http://org/openroadm/network/topology">
- <tail-equipment-id>ROADM-A1-SRG1--SRG1-PP1-TXRX</tail-equipment-id>
- </xpdr-network-attributes>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
- <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
- </termination-point>
- <node-type xmlns="http://org/openroadm/common/network">XPONDER</node-type>
<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>
+ <node-ref>ROADM-A1</node-ref>
</supporting-node>
+ <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>
<available-wavelengths>
- <index>94</index>
+ <index>95</index>
</available-wavelengths>
<available-wavelengths>
- <index>93</index>
+ <index>94</index>
</available-wavelengths>
<available-wavelengths>
<index>96</index>
</available-wavelengths>
<available-wavelengths>
- <index>95</index>
+ <index>43</index>
</available-wavelengths>
<available-wavelengths>
<index>42</index>
</available-wavelengths>
<available-wavelengths>
- <index>41</index>
+ <index>45</index>
</available-wavelengths>
<available-wavelengths>
<index>44</index>
</available-wavelengths>
<available-wavelengths>
- <index>43</index>
+ <index>39</index>
</available-wavelengths>
<available-wavelengths>
<index>38</index>
</available-wavelengths>
<available-wavelengths>
- <index>37</index>
+ <index>41</index>
</available-wavelengths>
<available-wavelengths>
<index>40</index>
</available-wavelengths>
<available-wavelengths>
- <index>39</index>
+ <index>35</index>
</available-wavelengths>
<available-wavelengths>
<index>34</index>
</available-wavelengths>
<available-wavelengths>
- <index>33</index>
+ <index>37</index>
</available-wavelengths>
<available-wavelengths>
<index>36</index>
</available-wavelengths>
<available-wavelengths>
- <index>35</index>
+ <index>31</index>
</available-wavelengths>
<available-wavelengths>
<index>30</index>
</available-wavelengths>
<available-wavelengths>
- <index>29</index>
+ <index>33</index>
</available-wavelengths>
<available-wavelengths>
<index>32</index>
</available-wavelengths>
<available-wavelengths>
- <index>31</index>
+ <index>59</index>
</available-wavelengths>
<available-wavelengths>
<index>58</index>
</available-wavelengths>
<available-wavelengths>
- <index>57</index>
+ <index>61</index>
</available-wavelengths>
<available-wavelengths>
<index>60</index>
</available-wavelengths>
<available-wavelengths>
- <index>59</index>
+ <index>55</index>
</available-wavelengths>
<available-wavelengths>
<index>54</index>
</available-wavelengths>
<available-wavelengths>
- <index>53</index>
+ <index>57</index>
</available-wavelengths>
<available-wavelengths>
<index>56</index>
</available-wavelengths>
<available-wavelengths>
- <index>55</index>
+ <index>51</index>
</available-wavelengths>
<available-wavelengths>
<index>50</index>
</available-wavelengths>
<available-wavelengths>
- <index>49</index>
+ <index>53</index>
</available-wavelengths>
<available-wavelengths>
<index>52</index>
</available-wavelengths>
<available-wavelengths>
- <index>51</index>
+ <index>47</index>
</available-wavelengths>
<available-wavelengths>
<index>46</index>
</available-wavelengths>
<available-wavelengths>
- <index>45</index>
+ <index>49</index>
</available-wavelengths>
<available-wavelengths>
<index>48</index>
</available-wavelengths>
<available-wavelengths>
- <index>47</index>
+ <index>75</index>
</available-wavelengths>
<available-wavelengths>
<index>74</index>
</available-wavelengths>
<available-wavelengths>
- <index>73</index>
+ <index>77</index>
</available-wavelengths>
<available-wavelengths>
<index>76</index>
</available-wavelengths>
<available-wavelengths>
- <index>75</index>
+ <index>71</index>
</available-wavelengths>
<available-wavelengths>
<index>70</index>
</available-wavelengths>
<available-wavelengths>
- <index>69</index>
+ <index>73</index>
</available-wavelengths>
<available-wavelengths>
<index>72</index>
</available-wavelengths>
<available-wavelengths>
- <index>71</index>
+ <index>67</index>
</available-wavelengths>
<available-wavelengths>
<index>66</index>
</available-wavelengths>
<available-wavelengths>
- <index>65</index>
+ <index>69</index>
</available-wavelengths>
<available-wavelengths>
<index>68</index>
</available-wavelengths>
<available-wavelengths>
- <index>67</index>
+ <index>63</index>
</available-wavelengths>
<available-wavelengths>
<index>62</index>
</available-wavelengths>
<available-wavelengths>
- <index>61</index>
+ <index>65</index>
</available-wavelengths>
<available-wavelengths>
<index>64</index>
</available-wavelengths>
<available-wavelengths>
- <index>63</index>
+ <index>91</index>
</available-wavelengths>
<available-wavelengths>
<index>90</index>
</available-wavelengths>
<available-wavelengths>
- <index>89</index>
+ <index>93</index>
</available-wavelengths>
<available-wavelengths>
<index>92</index>
</available-wavelengths>
<available-wavelengths>
- <index>91</index>
+ <index>87</index>
</available-wavelengths>
<available-wavelengths>
<index>86</index>
</available-wavelengths>
<available-wavelengths>
- <index>85</index>
+ <index>89</index>
</available-wavelengths>
<available-wavelengths>
<index>88</index>
</available-wavelengths>
<available-wavelengths>
- <index>87</index>
+ <index>83</index>
</available-wavelengths>
<available-wavelengths>
<index>82</index>
</available-wavelengths>
<available-wavelengths>
- <index>81</index>
+ <index>85</index>
</available-wavelengths>
<available-wavelengths>
<index>84</index>
</available-wavelengths>
<available-wavelengths>
- <index>83</index>
+ <index>79</index>
</available-wavelengths>
<available-wavelengths>
<index>78</index>
</available-wavelengths>
<available-wavelengths>
- <index>77</index>
+ <index>81</index>
</available-wavelengths>
<available-wavelengths>
<index>80</index>
</available-wavelengths>
<available-wavelengths>
- <index>79</index>
+ <index>11</index>
</available-wavelengths>
<available-wavelengths>
<index>10</index>
</available-wavelengths>
<available-wavelengths>
- <index>9</index>
+ <index>13</index>
</available-wavelengths>
<available-wavelengths>
<index>12</index>
</available-wavelengths>
<available-wavelengths>
- <index>11</index>
+ <index>7</index>
</available-wavelengths>
<available-wavelengths>
<index>6</index>
</available-wavelengths>
<available-wavelengths>
- <index>5</index>
+ <index>9</index>
</available-wavelengths>
<available-wavelengths>
<index>8</index>
</available-wavelengths>
<available-wavelengths>
- <index>7</index>
+ <index>3</index>
</available-wavelengths>
<available-wavelengths>
<index>2</index>
</available-wavelengths>
<available-wavelengths>
- <index>1</index>
+ <index>5</index>
</available-wavelengths>
<available-wavelengths>
<index>4</index>
</available-wavelengths>
<available-wavelengths>
- <index>3</index>
+ <index>1</index>
+ </available-wavelengths>
+ <available-wavelengths>
+ <index>27</index>
</available-wavelengths>
<available-wavelengths>
<index>26</index>
</available-wavelengths>
<available-wavelengths>
- <index>25</index>
+ <index>29</index>
</available-wavelengths>
<available-wavelengths>
<index>28</index>
</available-wavelengths>
<available-wavelengths>
- <index>27</index>
+ <index>23</index>
</available-wavelengths>
<available-wavelengths>
<index>22</index>
</available-wavelengths>
<available-wavelengths>
- <index>21</index>
+ <index>25</index>
</available-wavelengths>
<available-wavelengths>
<index>24</index>
</available-wavelengths>
<available-wavelengths>
- <index>23</index>
+ <index>19</index>
</available-wavelengths>
<available-wavelengths>
<index>18</index>
</available-wavelengths>
<available-wavelengths>
- <index>17</index>
+ <index>21</index>
</available-wavelengths>
<available-wavelengths>
<index>20</index>
</available-wavelengths>
<available-wavelengths>
- <index>19</index>
+ <index>15</index>
</available-wavelengths>
<available-wavelengths>
<index>14</index>
</available-wavelengths>
<available-wavelengths>
- <index>13</index>
+ <index>17</index>
</available-wavelengths>
<available-wavelengths>
<index>16</index>
</available-wavelengths>
- <available-wavelengths>
- <index>15</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>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">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>DEG2-TTP-TXRX</tp-id>
- <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-TTP</tp-type>
+ <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>
- <node-type xmlns="http://org/openroadm/common/network">DEGREE</node-type>
<supporting-node>
<network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-A1</node-ref>
+ <node-ref>SPDR-SC1</node-ref>
</supporting-node>
<supporting-node>
<network-ref>clli-network</network-ref>
- <node-ref>NodeA</node-ref>
+ <node-ref>NodeSC</node-ref>
</supporting-node>
+ <node-type xmlns="http://org/openroadm/common/network">XPONDER</node-type>
</node>
<node>
- <node-id>ROADM-A1-DEG1</node-id>
+ <node-id>ROADM-C1-DEG1</node-id>
<degree-attributes xmlns="http://org/openroadm/network/topology">
<degree-number>1</degree-number>
<available-wavelengths>
- <index>94</index>
+ <index>95</index>
</available-wavelengths>
<available-wavelengths>
- <index>93</index>
+ <index>94</index>
</available-wavelengths>
<available-wavelengths>
<index>96</index>
</available-wavelengths>
<available-wavelengths>
- <index>95</index>
+ <index>43</index>
</available-wavelengths>
<available-wavelengths>
<index>42</index>
</available-wavelengths>
<available-wavelengths>
- <index>41</index>
+ <index>45</index>
</available-wavelengths>
<available-wavelengths>
<index>44</index>
</available-wavelengths>
<available-wavelengths>
- <index>43</index>
+ <index>39</index>
</available-wavelengths>
<available-wavelengths>
<index>38</index>
</available-wavelengths>
<available-wavelengths>
- <index>37</index>
+ <index>41</index>
</available-wavelengths>
<available-wavelengths>
<index>40</index>
</available-wavelengths>
<available-wavelengths>
- <index>39</index>
+ <index>35</index>
</available-wavelengths>
<available-wavelengths>
<index>34</index>
</available-wavelengths>
<available-wavelengths>
- <index>33</index>
+ <index>37</index>
</available-wavelengths>
<available-wavelengths>
<index>36</index>
</available-wavelengths>
<available-wavelengths>
- <index>35</index>
+ <index>31</index>
</available-wavelengths>
<available-wavelengths>
<index>30</index>
</available-wavelengths>
<available-wavelengths>
- <index>29</index>
+ <index>33</index>
</available-wavelengths>
<available-wavelengths>
<index>32</index>
</available-wavelengths>
<available-wavelengths>
- <index>31</index>
+ <index>59</index>
</available-wavelengths>
<available-wavelengths>
<index>58</index>
</available-wavelengths>
<available-wavelengths>
- <index>57</index>
+ <index>61</index>
</available-wavelengths>
<available-wavelengths>
<index>60</index>
</available-wavelengths>
<available-wavelengths>
- <index>59</index>
+ <index>55</index>
</available-wavelengths>
<available-wavelengths>
<index>54</index>
</available-wavelengths>
<available-wavelengths>
- <index>53</index>
+ <index>57</index>
</available-wavelengths>
<available-wavelengths>
<index>56</index>
</available-wavelengths>
<available-wavelengths>
- <index>55</index>
+ <index>51</index>
</available-wavelengths>
<available-wavelengths>
<index>50</index>
</available-wavelengths>
<available-wavelengths>
- <index>49</index>
+ <index>53</index>
</available-wavelengths>
<available-wavelengths>
<index>52</index>
</available-wavelengths>
<available-wavelengths>
- <index>51</index>
+ <index>47</index>
</available-wavelengths>
<available-wavelengths>
<index>46</index>
</available-wavelengths>
<available-wavelengths>
- <index>45</index>
+ <index>49</index>
</available-wavelengths>
<available-wavelengths>
<index>48</index>
</available-wavelengths>
<available-wavelengths>
- <index>47</index>
+ <index>75</index>
</available-wavelengths>
<available-wavelengths>
<index>74</index>
</available-wavelengths>
<available-wavelengths>
- <index>73</index>
+ <index>77</index>
</available-wavelengths>
<available-wavelengths>
<index>76</index>
</available-wavelengths>
<available-wavelengths>
- <index>75</index>
+ <index>71</index>
</available-wavelengths>
<available-wavelengths>
<index>70</index>
</available-wavelengths>
<available-wavelengths>
- <index>69</index>
+ <index>73</index>
</available-wavelengths>
<available-wavelengths>
<index>72</index>
</available-wavelengths>
<available-wavelengths>
- <index>71</index>
+ <index>67</index>
</available-wavelengths>
<available-wavelengths>
<index>66</index>
</available-wavelengths>
<available-wavelengths>
- <index>65</index>
+ <index>69</index>
</available-wavelengths>
<available-wavelengths>
<index>68</index>
</available-wavelengths>
<available-wavelengths>
- <index>67</index>
+ <index>63</index>
</available-wavelengths>
<available-wavelengths>
<index>62</index>
</available-wavelengths>
<available-wavelengths>
- <index>61</index>
+ <index>65</index>
</available-wavelengths>
<available-wavelengths>
<index>64</index>
</available-wavelengths>
<available-wavelengths>
- <index>63</index>
+ <index>91</index>
</available-wavelengths>
<available-wavelengths>
<index>90</index>
</available-wavelengths>
<available-wavelengths>
- <index>89</index>
+ <index>93</index>
</available-wavelengths>
<available-wavelengths>
<index>92</index>
</available-wavelengths>
<available-wavelengths>
- <index>91</index>
+ <index>87</index>
</available-wavelengths>
<available-wavelengths>
<index>86</index>
</available-wavelengths>
<available-wavelengths>
- <index>85</index>
+ <index>89</index>
</available-wavelengths>
<available-wavelengths>
<index>88</index>
</available-wavelengths>
<available-wavelengths>
- <index>87</index>
+ <index>83</index>
</available-wavelengths>
<available-wavelengths>
<index>82</index>
</available-wavelengths>
<available-wavelengths>
- <index>81</index>
+ <index>85</index>
</available-wavelengths>
<available-wavelengths>
<index>84</index>
</available-wavelengths>
<available-wavelengths>
- <index>83</index>
+ <index>79</index>
</available-wavelengths>
<available-wavelengths>
<index>78</index>
</available-wavelengths>
<available-wavelengths>
- <index>77</index>
+ <index>81</index>
</available-wavelengths>
<available-wavelengths>
<index>80</index>
</available-wavelengths>
<available-wavelengths>
- <index>79</index>
+ <index>11</index>
</available-wavelengths>
<available-wavelengths>
<index>10</index>
</available-wavelengths>
<available-wavelengths>
- <index>9</index>
+ <index>13</index>
</available-wavelengths>
<available-wavelengths>
<index>12</index>
</available-wavelengths>
<available-wavelengths>
- <index>11</index>
+ <index>7</index>
</available-wavelengths>
<available-wavelengths>
<index>6</index>
</available-wavelengths>
<available-wavelengths>
- <index>5</index>
+ <index>9</index>
</available-wavelengths>
<available-wavelengths>
<index>8</index>
</available-wavelengths>
<available-wavelengths>
- <index>7</index>
+ <index>3</index>
</available-wavelengths>
<available-wavelengths>
<index>2</index>
</available-wavelengths>
<available-wavelengths>
- <index>1</index>
+ <index>5</index>
</available-wavelengths>
<available-wavelengths>
<index>4</index>
</available-wavelengths>
<available-wavelengths>
- <index>3</index>
+ <index>1</index>
+ </available-wavelengths>
+ <available-wavelengths>
+ <index>27</index>
</available-wavelengths>
<available-wavelengths>
<index>26</index>
</available-wavelengths>
<available-wavelengths>
- <index>25</index>
+ <index>29</index>
</available-wavelengths>
<available-wavelengths>
<index>28</index>
</available-wavelengths>
<available-wavelengths>
- <index>27</index>
+ <index>23</index>
</available-wavelengths>
<available-wavelengths>
<index>22</index>
</available-wavelengths>
<available-wavelengths>
- <index>21</index>
+ <index>25</index>
</available-wavelengths>
<available-wavelengths>
<index>24</index>
</available-wavelengths>
<available-wavelengths>
- <index>23</index>
+ <index>19</index>
</available-wavelengths>
<available-wavelengths>
<index>18</index>
</available-wavelengths>
<available-wavelengths>
- <index>17</index>
+ <index>21</index>
</available-wavelengths>
<available-wavelengths>
<index>20</index>
</available-wavelengths>
<available-wavelengths>
- <index>19</index>
+ <index>15</index>
</available-wavelengths>
<available-wavelengths>
<index>14</index>
</available-wavelengths>
<available-wavelengths>
- <index>13</index>
+ <index>17</index>
</available-wavelengths>
<available-wavelengths>
<index>16</index>
</available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
</degree-attributes>
- <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>
<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>
- <node-type xmlns="http://org/openroadm/common/network">DEGREE</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-A1</node-ref>
- </supporting-node>
- <supporting-node>
- <network-ref>clli-network</network-ref>
- <node-ref>NodeA</node-ref>
- </supporting-node>
- </node>
- <node>
- <node-id>XPDR-C1-XPDR1</node-id>
- <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-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-NETWORK1</tp-id>
- <xpdr-network-attributes xmlns="http://org/openroadm/network/topology">
- <tail-equipment-id>ROADM-C1-SRG1--SRG1-PP1-TXRX</tail-equipment-id>
- </xpdr-network-attributes>
- <associated-connection-map-port xmlns="http://transportpce/topology">XPDR1-CLIENT1</associated-connection-map-port>
- <tp-type xmlns="http://org/openroadm/common/network">XPONDER-NETWORK</tp-type>
+ <tp-id>DEG1-TTP-TXRX</tp-id>
+ <tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-TTP</tp-type>
</termination-point>
- <node-type xmlns="http://org/openroadm/common/network">XPONDER</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>XPDR-C1</node-ref>
- </supporting-node>
<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>ROADM-C1</node-ref>
+ </supporting-node>
+ <node-type xmlns="http://org/openroadm/common/network">DEGREE</node-type>
</node>
<node>
- <node-id>ROADM-C1-DEG1</node-id>
+ <node-id>ROADM-C1-DEG2</node-id>
<degree-attributes xmlns="http://org/openroadm/network/topology">
- <degree-number>1</degree-number>
+ <degree-number>2</degree-number>
<available-wavelengths>
- <index>94</index>
+ <index>95</index>
</available-wavelengths>
<available-wavelengths>
- <index>93</index>
+ <index>94</index>
</available-wavelengths>
<available-wavelengths>
<index>96</index>
</available-wavelengths>
<available-wavelengths>
- <index>95</index>
+ <index>43</index>
</available-wavelengths>
<available-wavelengths>
<index>42</index>
</available-wavelengths>
<available-wavelengths>
- <index>41</index>
+ <index>45</index>
</available-wavelengths>
<available-wavelengths>
<index>44</index>
</available-wavelengths>
<available-wavelengths>
- <index>43</index>
+ <index>39</index>
</available-wavelengths>
<available-wavelengths>
<index>38</index>
</available-wavelengths>
<available-wavelengths>
- <index>37</index>
+ <index>41</index>
</available-wavelengths>
<available-wavelengths>
<index>40</index>
</available-wavelengths>
<available-wavelengths>
- <index>39</index>
+ <index>35</index>
</available-wavelengths>
<available-wavelengths>
<index>34</index>
</available-wavelengths>
<available-wavelengths>
- <index>33</index>
+ <index>37</index>
</available-wavelengths>
<available-wavelengths>
<index>36</index>
</available-wavelengths>
<available-wavelengths>
- <index>35</index>
+ <index>31</index>
</available-wavelengths>
<available-wavelengths>
<index>30</index>
</available-wavelengths>
<available-wavelengths>
- <index>29</index>
+ <index>33</index>
</available-wavelengths>
<available-wavelengths>
<index>32</index>
</available-wavelengths>
<available-wavelengths>
- <index>31</index>
+ <index>59</index>
</available-wavelengths>
<available-wavelengths>
<index>58</index>
</available-wavelengths>
<available-wavelengths>
- <index>57</index>
+ <index>61</index>
</available-wavelengths>
<available-wavelengths>
<index>60</index>
</available-wavelengths>
<available-wavelengths>
- <index>59</index>
+ <index>55</index>
</available-wavelengths>
<available-wavelengths>
<index>54</index>
</available-wavelengths>
<available-wavelengths>
- <index>53</index>
+ <index>57</index>
</available-wavelengths>
<available-wavelengths>
<index>56</index>
</available-wavelengths>
<available-wavelengths>
- <index>55</index>
+ <index>51</index>
</available-wavelengths>
<available-wavelengths>
<index>50</index>
</available-wavelengths>
<available-wavelengths>
- <index>49</index>
+ <index>53</index>
</available-wavelengths>
<available-wavelengths>
<index>52</index>
</available-wavelengths>
<available-wavelengths>
- <index>51</index>
+ <index>47</index>
</available-wavelengths>
<available-wavelengths>
<index>46</index>
</available-wavelengths>
<available-wavelengths>
- <index>45</index>
+ <index>49</index>
</available-wavelengths>
<available-wavelengths>
<index>48</index>
</available-wavelengths>
<available-wavelengths>
- <index>47</index>
+ <index>75</index>
</available-wavelengths>
<available-wavelengths>
<index>74</index>
</available-wavelengths>
<available-wavelengths>
- <index>73</index>
+ <index>77</index>
</available-wavelengths>
<available-wavelengths>
<index>76</index>
</available-wavelengths>
<available-wavelengths>
- <index>75</index>
+ <index>71</index>
</available-wavelengths>
<available-wavelengths>
<index>70</index>
</available-wavelengths>
<available-wavelengths>
- <index>69</index>
+ <index>73</index>
</available-wavelengths>
<available-wavelengths>
<index>72</index>
</available-wavelengths>
<available-wavelengths>
- <index>71</index>
+ <index>67</index>
</available-wavelengths>
<available-wavelengths>
<index>66</index>
</available-wavelengths>
<available-wavelengths>
- <index>65</index>
+ <index>69</index>
</available-wavelengths>
<available-wavelengths>
<index>68</index>
</available-wavelengths>
<available-wavelengths>
- <index>67</index>
+ <index>63</index>
</available-wavelengths>
<available-wavelengths>
<index>62</index>
</available-wavelengths>
<available-wavelengths>
- <index>61</index>
+ <index>65</index>
</available-wavelengths>
<available-wavelengths>
<index>64</index>
</available-wavelengths>
<available-wavelengths>
- <index>63</index>
+ <index>91</index>
</available-wavelengths>
<available-wavelengths>
<index>90</index>
</available-wavelengths>
<available-wavelengths>
- <index>89</index>
+ <index>93</index>
</available-wavelengths>
<available-wavelengths>
<index>92</index>
</available-wavelengths>
<available-wavelengths>
- <index>91</index>
+ <index>87</index>
</available-wavelengths>
<available-wavelengths>
<index>86</index>
</available-wavelengths>
<available-wavelengths>
- <index>85</index>
+ <index>89</index>
</available-wavelengths>
<available-wavelengths>
<index>88</index>
</available-wavelengths>
<available-wavelengths>
- <index>87</index>
+ <index>83</index>
</available-wavelengths>
<available-wavelengths>
<index>82</index>
</available-wavelengths>
<available-wavelengths>
- <index>81</index>
+ <index>85</index>
</available-wavelengths>
<available-wavelengths>
<index>84</index>
</available-wavelengths>
<available-wavelengths>
- <index>83</index>
+ <index>79</index>
</available-wavelengths>
<available-wavelengths>
<index>78</index>
</available-wavelengths>
<available-wavelengths>
- <index>77</index>
+ <index>81</index>
</available-wavelengths>
<available-wavelengths>
<index>80</index>
</available-wavelengths>
<available-wavelengths>
- <index>79</index>
+ <index>11</index>
</available-wavelengths>
<available-wavelengths>
<index>10</index>
</available-wavelengths>
<available-wavelengths>
- <index>9</index>
+ <index>13</index>
</available-wavelengths>
<available-wavelengths>
<index>12</index>
</available-wavelengths>
<available-wavelengths>
- <index>11</index>
+ <index>7</index>
</available-wavelengths>
<available-wavelengths>
<index>6</index>
</available-wavelengths>
<available-wavelengths>
- <index>5</index>
+ <index>9</index>
</available-wavelengths>
<available-wavelengths>
<index>8</index>
</available-wavelengths>
<available-wavelengths>
- <index>7</index>
+ <index>3</index>
</available-wavelengths>
<available-wavelengths>
<index>2</index>
</available-wavelengths>
<available-wavelengths>
- <index>1</index>
+ <index>5</index>
</available-wavelengths>
<available-wavelengths>
<index>4</index>
</available-wavelengths>
<available-wavelengths>
- <index>3</index>
+ <index>1</index>
+ </available-wavelengths>
+ <available-wavelengths>
+ <index>27</index>
</available-wavelengths>
<available-wavelengths>
<index>26</index>
</available-wavelengths>
<available-wavelengths>
- <index>25</index>
+ <index>29</index>
</available-wavelengths>
<available-wavelengths>
<index>28</index>
</available-wavelengths>
<available-wavelengths>
- <index>27</index>
+ <index>23</index>
</available-wavelengths>
<available-wavelengths>
<index>22</index>
</available-wavelengths>
<available-wavelengths>
- <index>21</index>
+ <index>25</index>
</available-wavelengths>
<available-wavelengths>
<index>24</index>
</available-wavelengths>
<available-wavelengths>
- <index>23</index>
+ <index>19</index>
</available-wavelengths>
<available-wavelengths>
<index>18</index>
</available-wavelengths>
<available-wavelengths>
- <index>17</index>
+ <index>21</index>
</available-wavelengths>
<available-wavelengths>
<index>20</index>
</available-wavelengths>
<available-wavelengths>
- <index>19</index>
+ <index>15</index>
</available-wavelengths>
<available-wavelengths>
<index>14</index>
</available-wavelengths>
<available-wavelengths>
- <index>13</index>
+ <index>17</index>
</available-wavelengths>
<available-wavelengths>
<index>16</index>
</available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
</degree-attributes>
<termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <tp-id>DEG1-TTP-TXRX</tp-id>
+ <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>DEG1-CTP-TXRX</tp-id>
+ <tp-id>DEG2-CTP-TXRX</tp-id>
<tp-type xmlns="http://org/openroadm/common/network">DEGREE-TXRX-CTP</tp-type>
</termination-point>
- <node-type xmlns="http://org/openroadm/common/network">DEGREE</node-type>
+ <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>ROADM-C1</node-ref>
</supporting-node>
+ <node-type xmlns="http://org/openroadm/common/network">DEGREE</node-type>
+ </node>
+ <node>
+ <node-id>SPDR-SA1-XPDR2</node-id>
+ <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">
+ <tp-id>XPDR2-NETWORK3</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-A1-SRG1--SRG1-PP4-TXRX
+ </tail-equipment-id>
+ </xpdr-network-attributes>
+ </termination-point>
+ <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
+ xmlns="http://org/openroadm/network/topology">
+ <tail-equipment-id>ROADM-A1-SRG1--SRG1-PP3-TXRX
+ </tail-equipment-id>
+ </xpdr-network-attributes>
+ </termination-point>
+ <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>
+ <supporting-node>
+ <network-ref>openroadm-network</network-ref>
+ <node-ref>SPDR-SA1</node-ref>
+ </supporting-node>
<supporting-node>
<network-ref>clli-network</network-ref>
- <node-ref>NodeC</node-ref>
+ <node-ref>NodeSA</node-ref>
</supporting-node>
+ <node-type xmlns="http://org/openroadm/common/network">XPONDER</node-type>
+ </node>
+ <node>
+ <node-id>SPDR-SC1-XPDR2</node-id>
+ <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">
+ <tp-id>XPDR2-NETWORK3</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-PP4-TXRX
+ </tail-equipment-id>
+ </xpdr-network-attributes>
+ </termination-point>
+ <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
+ xmlns="http://org/openroadm/network/topology">
+ <tail-equipment-id>ROADM-C1-SRG1--SRG1-PP3-TXRX
+ </tail-equipment-id>
+ </xpdr-network-attributes>
+ </termination-point>
+ <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>
+ <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>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX</link-id>
+ <link-id>ROADM-C1-SRG1-SRG1-PP2-TXRXtoSPDR-SC1-XPDR1-XPDR1-NETWORK1
+ </link-id>
<source>
- <source-node>ROADM-A1-DEG1</source-node>
- <source-tp>DEG1-CTP-TXRX</source-tp>
+ <source-node>ROADM-C1-SRG1</source-node>
+ <source-tp>SRG1-PP2-TXRX</source-tp>
</source>
<destination>
- <dest-node>ROADM-A1-SRG3</dest-node>
- <dest-tp>SRG3-CP-TXRX</dest-tp>
+ <dest-tp>XPDR1-NETWORK1</dest-tp>
+ <dest-node>SPDR-SC1-XPDR1</dest-node>
</destination>
- <link-type xmlns="http://org/openroadm/common/network">DROP-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX</opposite-link>
+ <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>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX</link-id>
+ <link-id>ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX
+ </link-id>
<source>
- <source-node>ROADM-A1-SRG3</source-node>
- <source-tp>SRG3-CP-TXRX</source-tp>
+ <source-node>ROADM-A1-DEG2</source-node>
+ <source-tp>DEG2-TTP-TXRX</source-tp>
</source>
+ <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>
<destination>
- <dest-node>ROADM-A1-DEG2</dest-node>
- <dest-tp>DEG2-CTP-TXRX</dest-tp>
+ <dest-tp>DEG1-TTP-TXRX</dest-tp>
+ <dest-node>ROADM-C1-DEG1</dest-node>
</destination>
- <link-type xmlns="http://org/openroadm/common/network">ADD-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX</opposite-link>
+ <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>ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX</link-id>
+ <link-id>ROADM-C1-SRG1-SRG1-PP3-TXRXtoSPDR-SC1-XPDR2-XPDR2-NETWORK2
+ </link-id>
<source>
- <source-node>ROADM-C1-DEG1</source-node>
- <source-tp>DEG1-TTP-TXRX</source-tp>
+ <source-node>ROADM-C1-SRG1</source-node>
+ <source-tp>SRG1-PP3-TXRX</source-tp>
</source>
- <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>
<destination>
- <dest-node>ROADM-A1-DEG2</dest-node>
- <dest-tp>DEG2-TTP-TXRX</dest-tp>
+ <dest-tp>XPDR2-NETWORK2</dest-tp>
+ <dest-node>SPDR-SC1-XPDR2</dest-node>
</destination>
- <link-type xmlns="http://org/openroadm/common/network">ROADM-TO-ROADM</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX</opposite-link>
+ <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>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX</link-id>
+ <link-id>ROADM-A1-SRG1-SRG1-PP4-TXRXtoSPDR-SA1-XPDR2-XPDR2-NETWORK3
+ </link-id>
<source>
- <source-node>ROADM-C1-DEG2</source-node>
- <source-tp>DEG2-CTP-TXRX</source-tp>
+ <source-node>ROADM-A1-SRG1</source-node>
+ <source-tp>SRG1-PP4-TXRX</source-tp>
+ </source>
+ <destination>
+ <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>
+ <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-DEG1-DEG1-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX
+ </link-id>
+ <source>
+ <source-node>ROADM-C1-DEG1</source-node>
+ <source-tp>DEG1-CTP-TXRX</source-tp>
</source>
<destination>
- <dest-node>ROADM-C1-SRG1</dest-node>
<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>
<link-type xmlns="http://org/openroadm/common/network">DROP-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX</opposite-link>
</link>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX</link-id>
+ <link-id>SPDR-SA1-XPDR2-XPDR2-NETWORK3toROADM-A1-SRG1-SRG1-PP4-TXRX
+ </link-id>
<source>
- <source-node>ROADM-A1-DEG2</source-node>
- <source-tp>DEG2-TTP-TXRX</source-tp>
+ <source-node>SPDR-SA1-XPDR2</source-node>
+ <source-tp>XPDR2-NETWORK3</source-tp>
</source>
- <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>
<destination>
- <dest-node>ROADM-C1-DEG1</dest-node>
- <dest-tp>DEG1-TTP-TXRX</dest-tp>
+ <dest-tp>SRG1-PP4-TXRX</dest-tp>
+ <dest-node>ROADM-A1-SRG1</dest-node>
</destination>
- <link-type xmlns="http://org/openroadm/common/network">ROADM-TO-ROADM</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX</opposite-link>
+ <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>
<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>
+ <link-id>SPDR-SC1-XPDR1-XPDR1-NETWORK1toROADM-C1-SRG1-SRG1-PP2-TXRX
+ </link-id>
<source>
- <source-node>ROADM-C1-DEG2</source-node>
- <source-tp>DEG2-CTP-TXRX</source-tp>
+ <source-node>SPDR-SC1-XPDR1</source-node>
+ <source-tp>XPDR1-NETWORK1</source-tp>
+ </source>
+ <destination>
+ <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>
+ <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-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX
+ </link-id>
+ <source>
+ <source-node>ROADM-A1-SRG3</source-node>
+ <source-tp>SRG3-CP-TXRX</source-tp>
</source>
<destination>
- <dest-node>ROADM-C1-DEG1</dest-node>
<dest-tp>DEG1-CTP-TXRX</dest-tp>
+ <dest-node>ROADM-A1-DEG1</dest-node>
</destination>
- <link-type xmlns="http://org/openroadm/common/network">EXPRESS-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX</opposite-link>
+ <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>
<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>
+ <link-id>SPDR-SC1-XPDR2-XPDR2-NETWORK2toROADM-C1-SRG1-SRG1-PP3-TXRX
+ </link-id>
<source>
- <source-node>XPDR-A1-XPDR1</source-node>
- <source-tp>XPDR1-NETWORK1</source-tp>
+ <source-node>SPDR-SC1-XPDR2</source-node>
+ <source-tp>XPDR2-NETWORK2</source-tp>
</source>
<destination>
- <dest-node>ROADM-A1-SRG1</dest-node>
- <dest-tp>SRG1-PP1-TXRX</dest-tp>
+ <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>
<link-type xmlns="http://org/openroadm/common/network">XPONDER-OUTPUT</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-PP1-TXRXtoXPDR-A1-XPDR1-XPDR1-NETWORK1</opposite-link>
</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>
+ <link-id>ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX
+ </link-id>
+ <source>
+ <source-node>ROADM-A1-SRG3</source-node>
+ <source-tp>SRG3-CP-TXRX</source-tp>
+ </source>
+ <destination>
+ <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>
+ <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-PP4-TXRXtoSPDR-SC1-XPDR2-XPDR2-NETWORK3
+ </link-id>
+ <source>
+ <source-node>ROADM-C1-SRG1</source-node>
+ <source-tp>SRG1-PP4-TXRX</source-tp>
+ </source>
+ <destination>
+ <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>
+ <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-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX
+ </link-id>
+ <source>
+ <source-node>ROADM-A1-DEG1</source-node>
+ <source-tp>DEG1-CTP-TXRX</source-tp>
+ </source>
+ <destination>
+ <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>
+ <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>
<source>
- <source-node>XPDR-C1-XPDR1</source-node>
+ <source-node>SPDR-SA1-XPDR1</source-node>
<source-tp>XPDR1-NETWORK1</source-tp>
</source>
<destination>
- <dest-node>ROADM-C1-SRG1</dest-node>
- <dest-tp>SRG1-PP1-TXRX</dest-tp>
+ <dest-tp>SRG1-PP2-TXRX</dest-tp>
+ <dest-node>ROADM-A1-SRG1</dest-node>
</destination>
+ <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-OUTPUT</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-PP1-TXRXtoXPDR-C1-XPDR1-XPDR1-NETWORK1</opposite-link>
</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>
+ <link-id>ROADM-A1-SRG1-SRG1-PP2-TXRXtoSPDR-SA1-XPDR1-XPDR1-NETWORK1
+ </link-id>
<source>
- <source-node>ROADM-C1-SRG1</source-node>
- <source-tp>SRG1-PP1-TXRX</source-tp>
+ <source-node>ROADM-A1-SRG1</source-node>
+ <source-tp>SRG1-PP2-TXRX</source-tp>
</source>
<destination>
- <dest-node>XPDR-C1-XPDR1</dest-node>
<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>
- <opposite-link xmlns="http://org/openroadm/common/network">XPDR-C1-XPDR1-XPDR1-NETWORK1toROADM-C1-SRG1-SRG1-PP1-TXRX</opposite-link>
</link>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX</link-id>
+ <link-id>ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX
+ </link-id>
+ <source>
+ <source-node>ROADM-C1-DEG1</source-node>
+ <source-tp>DEG1-TTP-TXRX</source-tp>
+ </source>
+ <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>
+ <destination>
+ <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>
+ <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-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX
+ </link-id>
+ <source>
+ <source-node>ROADM-C1-DEG2</source-node>
+ <source-tp>DEG2-CTP-TXRX</source-tp>
+ </source>
+ <destination>
+ <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>
+ <link-type xmlns="http://org/openroadm/common/network">EXPRESS-LINK</link-type>
+ </link>
+ <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+ <link-id>ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX
+ </link-id>
+ <source>
+ <source-node>ROADM-C1-DEG2</source-node>
+ <source-tp>DEG2-CTP-TXRX</source-tp>
+ </source>
+ <destination>
+ <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>
+ <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>ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX
+ </link-id>
<source>
<source-node>ROADM-A1-DEG2</source-node>
<source-tp>DEG2-CTP-TXRX</source-tp>
</source>
<destination>
- <dest-node>ROADM-A1-SRG1</dest-node>
<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>
<link-type xmlns="http://org/openroadm/common/network">DROP-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX</opposite-link>
</link>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX</link-id>
+ <link-id>ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX
+ </link-id>
<source>
<source-node>ROADM-C1-DEG1</source-node>
<source-tp>DEG1-CTP-TXRX</source-tp>
</source>
<destination>
- <dest-node>ROADM-C1-DEG2</dest-node>
<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>
<link-type xmlns="http://org/openroadm/common/network">EXPRESS-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX</opposite-link>
</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>
+ <link-id>SPDR-SC1-XPDR2-XPDR2-NETWORK3toROADM-C1-SRG1-SRG1-PP4-TXRX
+ </link-id>
<source>
- <source-node>ROADM-A1-DEG2</source-node>
- <source-tp>DEG2-CTP-TXRX</source-tp>
+ <source-node>SPDR-SC1-XPDR2</source-node>
+ <source-tp>XPDR2-NETWORK3</source-tp>
</source>
<destination>
- <dest-node>ROADM-A1-SRG3</dest-node>
- <dest-tp>SRG3-CP-TXRX</dest-tp>
+ <dest-tp>SRG1-PP4-TXRX</dest-tp>
+ <dest-node>ROADM-C1-SRG1</dest-node>
</destination>
- <link-type xmlns="http://org/openroadm/common/network">DROP-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX</opposite-link>
+ <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>ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX</link-id>
+ <link-id>ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX
+ </link-id>
<source>
<source-node>ROADM-A1-DEG2</source-node>
<source-tp>DEG2-CTP-TXRX</source-tp>
</source>
<destination>
- <dest-node>ROADM-A1-DEG1</dest-node>
<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>
<link-type xmlns="http://org/openroadm/common/network">EXPRESS-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX</opposite-link>
</link>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX</link-id>
+ <link-id>ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX
+ </link-id>
<source>
<source-node>ROADM-A1-SRG1</source-node>
<source-tp>SRG1-CP-TXRX</source-tp>
</source>
<destination>
- <dest-node>ROADM-A1-DEG1</dest-node>
<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>
<link-type xmlns="http://org/openroadm/common/network">ADD-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX</opposite-link>
</link>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX</link-id>
+ <link-id>ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX
+ </link-id>
<source>
- <source-node>ROADM-C1-DEG1</source-node>
- <source-tp>DEG1-CTP-TXRX</source-tp>
+ <source-node>ROADM-A1-DEG2</source-node>
+ <source-tp>DEG2-CTP-TXRX</source-tp>
</source>
<destination>
- <dest-node>ROADM-C1-SRG1</dest-node>
- <dest-tp>SRG1-CP-TXRX</dest-tp>
+ <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>
<link-type xmlns="http://org/openroadm/common/network">DROP-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX</opposite-link>
</link>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX</link-id>
+ <link-id>ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX
+ </link-id>
<source>
- <source-node>ROADM-C1-SRG1</source-node>
+ <source-node>ROADM-A1-SRG1</source-node>
<source-tp>SRG1-CP-TXRX</source-tp>
</source>
<destination>
- <dest-node>ROADM-C1-DEG2</dest-node>
<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>
<link-type xmlns="http://org/openroadm/common/network">ADD-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX</opposite-link>
</link>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX</link-id>
+ <link-id>SPDR-SA1-XPDR2-XPDR2-NETWORK2toROADM-A1-SRG1-SRG1-PP3-TXRX
+ </link-id>
<source>
- <source-node>ROADM-A1-SRG1</source-node>
- <source-tp>SRG1-CP-TXRX</source-tp>
+ <source-node>SPDR-SA1-XPDR2</source-node>
+ <source-tp>XPDR2-NETWORK2</source-tp>
</source>
<destination>
- <dest-node>ROADM-A1-DEG2</dest-node>
- <dest-tp>DEG2-CTP-TXRX</dest-tp>
+ <dest-tp>SRG1-PP3-TXRX</dest-tp>
+ <dest-node>ROADM-A1-SRG1</dest-node>
</destination>
- <link-type xmlns="http://org/openroadm/common/network">ADD-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX</opposite-link>
+ <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>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-SRG1-SRG1-PP1-TXRXtoXPDR-A1-XPDR1-XPDR1-NETWORK1</link-id>
+ <link-id>ROADM-A1-SRG1-SRG1-PP3-TXRXtoSPDR-SA1-XPDR2-XPDR2-NETWORK2
+ </link-id>
<source>
<source-node>ROADM-A1-SRG1</source-node>
- <source-tp>SRG1-PP1-TXRX</source-tp>
+ <source-tp>SRG1-PP3-TXRX</source-tp>
</source>
<destination>
- <dest-node>XPDR-A1-XPDR1</dest-node>
- <dest-tp>XPDR1-NETWORK1</dest-tp>
+ <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>
<link-type xmlns="http://org/openroadm/common/network">XPONDER-INPUT</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">XPDR-A1-XPDR1-XPDR1-NETWORK1toROADM-A1-SRG1-SRG1-PP1-TXRX</opposite-link>
</link>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX</link-id>
+ <link-id>ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX
+ </link-id>
<source>
- <source-node>ROADM-A1-DEG1</source-node>
- <source-tp>DEG1-CTP-TXRX</source-tp>
+ <source-node>ROADM-C1-SRG1</source-node>
+ <source-tp>SRG1-CP-TXRX</source-tp>
</source>
<destination>
- <dest-node>ROADM-A1-DEG2</dest-node>
<dest-tp>DEG2-CTP-TXRX</dest-tp>
+ <dest-node>ROADM-C1-DEG2</dest-node>
</destination>
- <link-type xmlns="http://org/openroadm/common/network">EXPRESS-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX</link-id>
- <source>
- <source-node>ROADM-A1-SRG3</source-node>
- <source-tp>SRG3-CP-TXRX</source-tp>
- </source>
- <destination>
- <dest-node>ROADM-A1-DEG1</dest-node>
- <dest-tp>DEG1-CTP-TXRX</dest-tp>
- </destination>
+ <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>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX</opposite-link>
</link>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX</link-id>
+ <link-id>ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX
+ </link-id>
<source>
<source-node>ROADM-A1-DEG1</source-node>
<source-tp>DEG1-CTP-TXRX</source-tp>
</source>
<destination>
- <dest-node>ROADM-A1-SRG1</dest-node>
<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>
<link-type xmlns="http://org/openroadm/common/network">DROP-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX</opposite-link>
</link>
<link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX</link-id>
+ <link-id>ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX
+ </link-id>
<source>
<source-node>ROADM-C1-SRG1</source-node>
<source-tp>SRG1-CP-TXRX</source-tp>
</source>
<destination>
- <dest-node>ROADM-C1-DEG1</dest-node>
<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>
<link-type xmlns="http://org/openroadm/common/network">ADD-LINK</link-type>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX</opposite-link>
+ </link>
+ <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
+ <link-id>ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX
+ </link-id>
+ <source>
+ <source-node>ROADM-A1-DEG1</source-node>
+ <source-tp>DEG1-CTP-TXRX</source-tp>
+ </source>
+ <destination>
+ <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>
+ <link-type xmlns="http://org/openroadm/common/network">EXPRESS-LINK</link-type>
</link>
</network>
</networks>
--- /dev/null
+<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+<network xmlns="http://org/opendaylight/transportpce/portmapping">
+ <nodes>
+ <node-id>XPDR-C1</node-id>
+ <mapping>
+ <logical-connection-point>XPDR1-CLIENT2</logical-connection-point>
+ <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>
+ <connection-map-lcp>XPDR1-NETWORK2</connection-map-lcp>
+ <lcp-hash-val>fHpE8JbDyn4=</lcp-hash-val>
+ <supporting-circuit-pack-name>1/0/2-PLUG-CLIENT
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-NETWORK2
+ </logical-connection-point>
+ <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>
+ <connection-map-lcp>XPDR1-CLIENT2</connection-map-lcp>
+ <lcp-hash-val>AJUlmCIYKpQh</lcp-hash-val>
+ <supporting-circuit-pack-name>1/0/2-PLUG-NET
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-CLIENT1</logical-connection-point>
+ <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>
+ <connection-map-lcp>XPDR1-NETWORK1</connection-map-lcp>
+ <lcp-hash-val>fHpE8JbDyn0=</lcp-hash-val>
+ <supporting-circuit-pack-name>1/0/1-PLUG-CLIENT
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-NETWORK1
+ </logical-connection-point>
+ <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>
+ <connection-map-lcp>XPDR1-CLIENT1</connection-map-lcp>
+ <lcp-hash-val>AJUlmCIYKpQi</lcp-hash-val>
+ <supporting-circuit-pack-name>1/0/1-PLUG-NET
+ </supporting-circuit-pack-name>
+ </mapping>
+ <node-info>
+ <node-clli>NodeC</node-clli>
+ <node-vendor>vendorA</node-vendor>
+ <node-model>model2</node-model>
+ <node-ip-address>1.2.3.5</node-ip-address>
+ <node-type>xpdr</node-type>
+ <openroadm-version>2.2.1</openroadm-version>
+ </node-info>
+ </nodes>
+ <nodes>
+ <node-id>SPDR-SC1</node-id>
+ <node-info>
+ <node-clli>NodeSC</node-clli>
+ <node-vendor>vendorC</node-vendor>
+ <node-model>universal-switchponder</node-model>
+ <node-ip-address>1.2.3.6</node-ip-address>
+ <node-type>xpdr</node-type>
+ <openroadm-version>2.2.1</openroadm-version>
+ </node-info>
+ <switching-pool-lcp>
+ <switching-pool-number>1</switching-pool-number>
+ <switching-pool-type>non-blocking</switching-pool-type>
+ <non-blocking-list>
+ <nbl-number>11</nbl-number>
+ <lcp-list>XPDR1-NETWORK1</lcp-list>
+ <lcp-list>XPDR1-CLIENT1</lcp-list>
+ <interconnect-bandwidth>0</interconnect-bandwidth>
+ <interconnect-bandwidth-unit>1000000000
+ </interconnect-bandwidth-unit>
+ </non-blocking-list>
+ <non-blocking-list>
+ <nbl-number>12</nbl-number>
+ <lcp-list>XPDR1-NETWORK1</lcp-list>
+ <lcp-list>XPDR1-CLIENT2</lcp-list>
+ <interconnect-bandwidth>0</interconnect-bandwidth>
+ <interconnect-bandwidth-unit>1000000000
+ </interconnect-bandwidth-unit>
+ </non-blocking-list>
+ <non-blocking-list>
+ <nbl-number>13</nbl-number>
+ <lcp-list>XPDR1-NETWORK1</lcp-list>
+ <lcp-list>XPDR1-CLIENT3</lcp-list>
+ <interconnect-bandwidth>0</interconnect-bandwidth>
+ <interconnect-bandwidth-unit>1000000000
+ </interconnect-bandwidth-unit>
+ </non-blocking-list>
+ <non-blocking-list>
+ <nbl-number>14</nbl-number>
+ <lcp-list>XPDR1-CLIENT4</lcp-list>
+ <lcp-list>XPDR1-NETWORK1</lcp-list>
+ <interconnect-bandwidth>0</interconnect-bandwidth>
+ <interconnect-bandwidth-unit>1000000000
+ </interconnect-bandwidth-unit>
+ </non-blocking-list>
+ </switching-pool-lcp>
+ <switching-pool-lcp>
+ <switching-pool-number>2</switching-pool-number>
+ <switching-pool-type>non-blocking</switching-pool-type>
+ <non-blocking-list>
+ <nbl-number>2</nbl-number>
+ <lcp-list>XPDR2-NETWORK1</lcp-list>
+ <lcp-list>XPDR2-CLIENT4</lcp-list>
+ <lcp-list>XPDR2-CLIENT3</lcp-list>
+ <lcp-list>XPDR2-CLIENT2</lcp-list>
+ <lcp-list>XPDR2-CLIENT1</lcp-list>
+ <lcp-list>XPDR2-NETWORK3</lcp-list>
+ <lcp-list>XPDR2-NETWORK2</lcp-list>
+ <lcp-list>XPDR2-NETWORK4</lcp-list>
+ <interconnect-bandwidth>0</interconnect-bandwidth>
+ <interconnect-bandwidth-unit>1000000000
+ </interconnect-bandwidth-unit>
+ </non-blocking-list>
+ </switching-pool-lcp>
+ <mapping>
+ <logical-connection-point>XPDR2-CLIENT3</logical-connection-point>
+ <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>
+ <lcp-hash-val>BVSiXSSYUCI=</lcp-hash-val>
+ <supporting-circuit-pack-name>CP2-QSFP3
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-CLIENT4</logical-connection-point>
+ <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>
+ <lcp-hash-val>BVSiXSSYUCU=</lcp-hash-val>
+ <supporting-circuit-pack-name>CP2-QSFP4
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-CLIENT1</logical-connection-point>
+ <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>
+ <lcp-hash-val>BVSiXSSYUCA=</lcp-hash-val>
+ <supporting-circuit-pack-name>CP2-QSFP1
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-CLIENT2</logical-connection-point>
+ <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>
+ <lcp-hash-val>BVSiXSSYUCM=</lcp-hash-val>
+ <supporting-circuit-pack-name>CP2-QSFP2
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-CLIENT3</logical-connection-point>
+ <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>
+ <lcp-hash-val>L0PHYLgz3+E=</lcp-hash-val>
+ <supporting-circuit-pack-name>CP1-SFP3
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-CLIENT2</logical-connection-point>
+ <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>
+ <lcp-hash-val>L0PHYLgz3+A=</lcp-hash-val>
+ <supporting-circuit-pack-name>CP1-SFP2
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-CLIENT4</logical-connection-point>
+ <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>
+ <lcp-hash-val>L0PHYLgz3+Y=</lcp-hash-val>
+ <supporting-circuit-pack-name>CP1-SFP4
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-CLIENT1</logical-connection-point>
+ <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>
+ <lcp-hash-val>L0PHYLgz3+M=</lcp-hash-val>
+ <supporting-circuit-pack-name>CP1-SFP1
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-NETWORK3
+ </logical-connection-point>
+ <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>
+ <lcp-hash-val>ALx70DYYfGTz</lcp-hash-val>
+ <xponder-type>switch</xponder-type>
+ <supporting-circuit-pack-name>CP8-CFP
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-NETWORK2
+ </logical-connection-point>
+ <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>
+ <lcp-hash-val>ALx70DYYfGTy</lcp-hash-val>
+ <xponder-type>switch</xponder-type>
+ <supporting-circuit-pack-name>CP7-CFP
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-NETWORK4
+ </logical-connection-point>
+ <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>
+ <lcp-hash-val>ALx70DYYfGT0</lcp-hash-val>
+ <xponder-type>switch</xponder-type>
+ <supporting-circuit-pack-name>CP5-CFP
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-NETWORK1
+ </logical-connection-point>
+ <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>
+ <lcp-hash-val>ALx70DYYfGTx</lcp-hash-val>
+ <xponder-type>switch</xponder-type>
+ <supporting-circuit-pack-name>CP6-CFP
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-NETWORK1
+ </logical-connection-point>
+ <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>
+ <lcp-hash-val>fuYZwEO660g=</lcp-hash-val>
+ <xponder-type>mpdr</xponder-type>
+ <supporting-circuit-pack-name>CP1-CFP0
+ </supporting-circuit-pack-name>
+ </mapping>
+ </nodes>
+ <nodes>
+ <node-id>SPDR-SA1</node-id>
+ <node-info>
+ <node-clli>NodeSA</node-clli>
+ <node-vendor>vendorA</node-vendor>
+ <node-model>universal-switchponder</node-model>
+ <node-ip-address>1.2.3.4</node-ip-address>
+ <node-type>xpdr</node-type>
+ <openroadm-version>2.2.1</openroadm-version>
+ </node-info>
+ <switching-pool-lcp>
+ <switching-pool-number>1</switching-pool-number>
+ <switching-pool-type>non-blocking</switching-pool-type>
+ <non-blocking-list>
+ <nbl-number>11</nbl-number>
+ <lcp-list>XPDR1-NETWORK1</lcp-list>
+ <lcp-list>XPDR1-CLIENT1</lcp-list>
+ <interconnect-bandwidth>0</interconnect-bandwidth>
+ <interconnect-bandwidth-unit>1000000000
+ </interconnect-bandwidth-unit>
+ </non-blocking-list>
+ <non-blocking-list>
+ <nbl-number>12</nbl-number>
+ <lcp-list>XPDR1-NETWORK1</lcp-list>
+ <lcp-list>XPDR1-CLIENT2</lcp-list>
+ <interconnect-bandwidth>0</interconnect-bandwidth>
+ <interconnect-bandwidth-unit>1000000000
+ </interconnect-bandwidth-unit>
+ </non-blocking-list>
+ <non-blocking-list>
+ <nbl-number>13</nbl-number>
+ <lcp-list>XPDR1-NETWORK1</lcp-list>
+ <lcp-list>XPDR1-CLIENT3</lcp-list>
+ <interconnect-bandwidth>0</interconnect-bandwidth>
+ <interconnect-bandwidth-unit>1000000000
+ </interconnect-bandwidth-unit>
+ </non-blocking-list>
+ <non-blocking-list>
+ <nbl-number>14</nbl-number>
+ <lcp-list>XPDR1-CLIENT4</lcp-list>
+ <lcp-list>XPDR1-NETWORK1</lcp-list>
+ <interconnect-bandwidth>0</interconnect-bandwidth>
+ <interconnect-bandwidth-unit>1000000000
+ </interconnect-bandwidth-unit>
+ </non-blocking-list>
+ </switching-pool-lcp>
+ <switching-pool-lcp>
+ <switching-pool-number>2</switching-pool-number>
+ <switching-pool-type>non-blocking</switching-pool-type>
+ <non-blocking-list>
+ <nbl-number>2</nbl-number>
+ <lcp-list>XPDR2-NETWORK1</lcp-list>
+ <lcp-list>XPDR2-CLIENT4</lcp-list>
+ <lcp-list>XPDR2-CLIENT3</lcp-list>
+ <lcp-list>XPDR2-CLIENT2</lcp-list>
+ <lcp-list>XPDR2-CLIENT1</lcp-list>
+ <lcp-list>XPDR2-NETWORK3</lcp-list>
+ <lcp-list>XPDR2-NETWORK2</lcp-list>
+ <lcp-list>XPDR2-NETWORK4</lcp-list>
+ <interconnect-bandwidth>0</interconnect-bandwidth>
+ <interconnect-bandwidth-unit>1000000000
+ </interconnect-bandwidth-unit>
+ </non-blocking-list>
+ </switching-pool-lcp>
+ <mapping>
+ <logical-connection-point>XPDR2-CLIENT3</logical-connection-point>
+ <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>
+ <lcp-hash-val>AN/WSSRXne3s</lcp-hash-val>
+ <supporting-circuit-pack-name>CP2-QSFP3
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-CLIENT4</logical-connection-point>
+ <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>
+ <lcp-hash-val>AN/WSSRXne3r</lcp-hash-val>
+ <supporting-circuit-pack-name>CP2-QSFP4
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-CLIENT1</logical-connection-point>
+ <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>
+ <lcp-hash-val>AN/WSSRXne3u</lcp-hash-val>
+ <supporting-circuit-pack-name>CP2-QSFP1
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-CLIENT2</logical-connection-point>
+ <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>
+ <lcp-hash-val>AN/WSSRXne3t</lcp-hash-val>
+ <supporting-circuit-pack-name>CP2-QSFP2
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-CLIENT3</logical-connection-point>
+ <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>
+ <lcp-hash-val>FqlcrxV7p38=</lcp-hash-val>
+ <supporting-circuit-pack-name>CP1-SFP3
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-CLIENT2</logical-connection-point>
+ <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>
+ <lcp-hash-val>FqlcrxV7p34=</lcp-hash-val>
+ <supporting-circuit-pack-name>CP1-SFP2
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-CLIENT4</logical-connection-point>
+ <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>
+ <lcp-hash-val>FqlcrxV7p3g=</lcp-hash-val>
+ <supporting-circuit-pack-name>CP1-SFP4
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-CLIENT1</logical-connection-point>
+ <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>
+ <lcp-hash-val>FqlcrxV7p30=</lcp-hash-val>
+ <supporting-circuit-pack-name>CP1-SFP1
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-NETWORK3
+ </logical-connection-point>
+ <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>
+ <lcp-hash-val>exT821pFtOU=</lcp-hash-val>
+ <xponder-type>switch</xponder-type>
+ <supporting-circuit-pack-name>CP8-CFP
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-NETWORK2
+ </logical-connection-point>
+ <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>
+ <lcp-hash-val>exT821pFtOQ=</lcp-hash-val>
+ <xponder-type>switch</xponder-type>
+ <supporting-circuit-pack-name>CP7-CFP
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-NETWORK4
+ </logical-connection-point>
+ <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>
+ <lcp-hash-val>exT821pFtOI=</lcp-hash-val>
+ <xponder-type>switch</xponder-type>
+ <supporting-circuit-pack-name>CP5-CFP
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR2-NETWORK1
+ </logical-connection-point>
+ <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>
+ <lcp-hash-val>exT821pFtOc=</lcp-hash-val>
+ <xponder-type>switch</xponder-type>
+ <supporting-circuit-pack-name>CP6-CFP
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-NETWORK1
+ </logical-connection-point>
+ <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>
+ <lcp-hash-val>Swfw02qXGyI=</lcp-hash-val>
+ <xponder-type>mpdr</xponder-type>
+ <supporting-circuit-pack-name>CP1-CFP0
+ </supporting-circuit-pack-name>
+ </mapping>
+ </nodes>
+ <nodes>
+ <node-id>XPDR-A1</node-id>
+ <mapping>
+ <logical-connection-point>XPDR1-CLIENT2</logical-connection-point>
+ <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>
+ <connection-map-lcp>XPDR1-NETWORK2</connection-map-lcp>
+ <lcp-hash-val>AJUUr6I5fALg</lcp-hash-val>
+ <supporting-circuit-pack-name>1/0/2-PLUG-CLIENT
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-NETWORK2
+ </logical-connection-point>
+ <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>
+ <connection-map-lcp>XPDR1-CLIENT2</connection-map-lcp>
+ <lcp-hash-val>AMkDwQ7xTmRL</lcp-hash-val>
+ <supporting-circuit-pack-name>1/0/2-PLUG-NET
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-CLIENT1</logical-connection-point>
+ <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>
+ <connection-map-lcp>XPDR1-NETWORK1</connection-map-lcp>
+ <lcp-hash-val>AJUUr6I5fALj</lcp-hash-val>
+ <supporting-circuit-pack-name>1/0/1-PLUG-CLIENT
+ </supporting-circuit-pack-name>
+ </mapping>
+ <mapping>
+ <logical-connection-point>XPDR1-NETWORK1
+ </logical-connection-point>
+ <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>
+ <connection-map-lcp>XPDR1-CLIENT1</connection-map-lcp>
+ <lcp-hash-val>AMkDwQ7xTmRI</lcp-hash-val>
+ <supporting-circuit-pack-name>1/0/1-PLUG-NET
+ </supporting-circuit-pack-name>
+ </mapping>
+ <node-info>
+ <node-clli>NodeA</node-clli>
+ <node-vendor>vendorA</node-vendor>
+ <node-model>model2</node-model>
+ <node-ip-address>1.2.3.4</node-ip-address>
+ <node-type>xpdr</node-type>
+ <openroadm-version>2.2.1</openroadm-version>
+ </node-info>
+ </nodes>
+ <nodes>
+ <node-id>ROADM-C1</node-id>
+ <node-info>
+ <node-clli>NodeC</node-clli>
+ <node-vendor>vendorA</node-vendor>
+ <node-model>model2</node-model>
+ <node-ip-address>127.0.0.13</node-ip-address>
+ <node-type>rdm</node-type>
+ <openroadm-version>2.2.1</openroadm-version>
+ </node-info>
+ <cp-to-degree>
+ <circuit-pack-name>1/0/ETH-PLUG</circuit-pack-name>
+ <degree-number>1</degree-number>
+ <interface-name>1GE-interface-1</interface-name>
+ </cp-to-degree>
+ <cp-to-degree>
+ <circuit-pack-name>2/0</circuit-pack-name>
+ <degree-number>2</degree-number>
+ <interface-name>1GE-interface-2</interface-name>
+ </cp-to-degree>
+ <cp-to-degree>
+ <circuit-pack-name>2/0/ETH-PLUG</circuit-pack-name>
+ <degree-number>2</degree-number>
+ <interface-name>1GE-interface-2</interface-name>
+ </cp-to-degree>
+ <cp-to-degree>
+ <circuit-pack-name>1/0</circuit-pack-name>
+ <degree-number>1</degree-number>
+ <interface-name>1GE-interface-1</interface-name>
+ </cp-to-degree>
+ <mapping>
+ <logical-connection-point>DEG2-TTP-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>2/0</supporting-circuit-pack-name>
+ <supporting-port>L1</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>SRG1-PP3-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
+ <supporting-port>C3</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>DEG1-TTP-TXRX</logical-connection-point>
+ <supporting-ots>OTS-DEG1-TTP-TXRX</supporting-ots>
+ <supporting-oms>OMS-DEG1-TTP-TXRX</supporting-oms>
+ <supporting-circuit-pack-name>1/0</supporting-circuit-pack-name>
+ <supporting-port>L1</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>SRG1-PP1-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
+ <supporting-port>C1</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>SRG1-PP2-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
+ <supporting-port>C2</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>SRG1-PP4-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
+ <supporting-port>C4</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mc-capabilities>
+ <mc-node-name>SRG1-PP</mc-node-name>
+ <slot-width-granularity>50</slot-width-granularity>
+ <center-freq-granularity>50</center-freq-granularity>
+ </mc-capabilities>
+ <mc-capabilities>
+ <mc-node-name>DEG2-TTP</mc-node-name>
+ <slot-width-granularity>50</slot-width-granularity>
+ <center-freq-granularity>50</center-freq-granularity>
+ </mc-capabilities>
+ <mc-capabilities>
+ <mc-node-name>DEG1-TTP</mc-node-name>
+ <slot-width-granularity>50</slot-width-granularity>
+ <center-freq-granularity>50</center-freq-granularity>
+ </mc-capabilities>
+ </nodes>
+ <nodes>
+ <node-id>ROADM-A1</node-id>
+ <node-info>
+ <node-clli>NodeA</node-clli>
+ <node-vendor>vendorA</node-vendor>
+ <node-model>model2</node-model>
+ <node-ip-address>127.0.0.11</node-ip-address>
+ <node-type>rdm</node-type>
+ <openroadm-version>2.2.1</openroadm-version>
+ </node-info>
+ <cp-to-degree>
+ <circuit-pack-name>1/0/ETH-PLUG</circuit-pack-name>
+ <degree-number>1</degree-number>
+ <interface-name>1GE-interface-1</interface-name>
+ </cp-to-degree>
+ <cp-to-degree>
+ <circuit-pack-name>2/0</circuit-pack-name>
+ <degree-number>2</degree-number>
+ <interface-name>1GE-interface-2</interface-name>
+ </cp-to-degree>
+ <cp-to-degree>
+ <circuit-pack-name>2/0/ETH-PLUG</circuit-pack-name>
+ <degree-number>2</degree-number>
+ <interface-name>1GE-interface-2</interface-name>
+ </cp-to-degree>
+ <cp-to-degree>
+ <circuit-pack-name>1/0</circuit-pack-name>
+ <degree-number>1</degree-number>
+ <interface-name>1GE-interface-1</interface-name>
+ </cp-to-degree>
+ <mapping>
+ <logical-connection-point>SRG3-PP3-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>5/0</supporting-circuit-pack-name>
+ <supporting-port>C3</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>DEG2-TTP-TXRX</logical-connection-point>
+ <supporting-ots>OTS-DEG2-TTP-TXRX</supporting-ots>
+ <supporting-oms>OMS-DEG2-TTP-TXRX</supporting-oms>
+ <supporting-circuit-pack-name>2/0</supporting-circuit-pack-name>
+ <supporting-port>L1</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>SRG1-PP3-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
+ <supporting-port>C3</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>DEG1-TTP-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>1/0</supporting-circuit-pack-name>
+ <supporting-port>L1</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>SRG1-PP1-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
+ <supporting-port>C1</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>SRG3-PP2-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>5/0</supporting-circuit-pack-name>
+ <supporting-port>C2</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>SRG1-PP2-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
+ <supporting-port>C2</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>SRG3-PP1-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>5/0</supporting-circuit-pack-name>
+ <supporting-port>C1</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>SRG1-PP4-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
+ <supporting-port>C4</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mapping>
+ <logical-connection-point>SRG3-PP4-TXRX</logical-connection-point>
+ <supporting-circuit-pack-name>5/0</supporting-circuit-pack-name>
+ <supporting-port>C4</supporting-port>
+ <port-direction>bidirectional</port-direction>
+ </mapping>
+ <mc-capabilities>
+ <mc-node-name>SRG1-PP</mc-node-name>
+ <slot-width-granularity>50</slot-width-granularity>
+ <center-freq-granularity>50</center-freq-granularity>
+ </mc-capabilities>
+ <mc-capabilities>
+ <mc-node-name>DEG2-TTP</mc-node-name>
+ <slot-width-granularity>50</slot-width-granularity>
+ <center-freq-granularity>50</center-freq-granularity>
+ </mc-capabilities>
+ <mc-capabilities>
+ <mc-node-name>DEG1-TTP</mc-node-name>
+ <slot-width-granularity>50</slot-width-granularity>
+ <center-freq-granularity>50</center-freq-granularity>
+ </mc-capabilities>
+ <mc-capabilities>
+ <mc-node-name>SRG3-PP</mc-node-name>
+ <slot-width-granularity>50</slot-width-granularity>
+ <center-freq-granularity>50</center-freq-granularity>
+ </mc-capabilities>
+ </nodes>
+</network>
+</data>
\ No newline at end of file
+++ /dev/null
-<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
- <networks xmlns="urn:ietf:params:xml:ns:yang:ietf-network">
- <network>
- <network-id>openroadm-topology</network-id>
- <node>
- <node-id>ROADM-A1-SRG3</node-id>
- <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/network/topology">SRG-TXRX-CP</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/network/topology">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/network/topology">SRG-TXRX-PP</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/network/topology">SRG-TXRX-PP</tp-type>
- </termination-point>
- <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/network/topology">SRG-TXRX-PP</tp-type>
- </termination-point>
- <srg-attributes xmlns="http://org/openroadm/network/topology">
- <available-wavelengths>
- <index>94</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>93</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>96</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>95</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>42</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>41</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>44</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>43</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>38</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>37</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>40</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>39</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>34</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>33</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>36</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>35</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>30</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>29</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>32</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>31</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>58</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>57</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>60</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>59</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>54</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>53</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>56</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>55</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>50</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>49</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>52</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>51</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>46</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>45</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>48</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>47</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>74</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>73</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>76</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>75</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>70</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>69</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>72</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>71</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>66</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>65</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>68</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>67</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>62</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>61</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>64</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>63</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>90</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>89</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>92</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>91</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>86</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>85</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>88</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>87</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>82</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>81</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>84</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>83</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>78</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>77</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>80</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>79</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>10</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>9</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>12</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>11</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>6</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>5</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>8</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>7</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>2</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>1</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>4</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>3</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>26</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>25</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>28</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>27</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>22</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>21</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>24</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>23</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>18</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>17</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>20</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>19</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>14</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>13</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>16</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
- </srg-attributes>
- <node-type xmlns="http://org/openroadm/network/topology">SRG</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-A1</node-ref>
- </supporting-node>
- </node>
- <node>
- <node-id>ROADM-C1-DEG2</node-id>
- <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/network/topology">DEGREE-TXRX-CTP</tp-type>
- </termination-point>
- <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/network/topology">DEGREE-TXRX-TTP</tp-type>
- </termination-point>
- <degree-attributes xmlns="http://org/openroadm/network/topology">
- <degree-number>2</degree-number>
- <available-wavelengths>
- <index>94</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>93</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>96</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>95</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>42</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>41</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>44</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>43</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>38</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>37</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>40</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>39</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>34</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>33</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>36</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>35</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>30</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>29</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>32</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>31</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>58</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>57</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>60</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>59</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>54</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>53</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>56</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>55</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>50</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>49</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>52</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>51</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>46</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>45</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>48</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>47</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>74</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>73</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>76</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>75</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>70</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>69</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>72</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>71</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>66</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>65</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>68</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>67</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>62</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>61</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>64</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>63</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>90</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>89</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>92</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>91</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>86</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>85</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>88</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>87</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>82</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>81</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>84</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>83</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>78</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>77</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>80</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>79</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>10</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>9</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>12</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>11</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>6</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>5</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>8</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>7</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>2</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>1</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>4</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>3</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>26</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>25</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>28</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>27</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>22</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>21</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>24</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>23</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>18</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>17</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>20</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>19</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>14</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>13</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>16</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
- </degree-attributes>
- <node-type xmlns="http://org/openroadm/network/topology">DEGREE</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-C1</node-ref>
- </supporting-node>
- </node>
- <node>
- <node-id>ROADM-B1-DEG1</node-id>
- <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/network/topology">DEGREE-TXRX-TTP</tp-type>
- </termination-point>
- <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/network/topology">DEGREE-TXRX-CTP</tp-type>
- </termination-point>
- <degree-attributes xmlns="http://org/openroadm/network/topology">
- <degree-number>1</degree-number>
- <available-wavelengths>
- <index>94</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>93</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>96</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>95</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>42</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>41</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>44</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>43</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>38</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>37</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>40</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>39</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>34</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>33</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>36</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>35</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>30</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>29</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>32</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>31</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>58</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>57</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>60</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>59</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>54</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>53</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>56</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>55</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>50</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>49</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>52</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>51</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>46</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>45</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>48</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>47</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>74</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>73</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>76</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>75</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>70</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>69</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>72</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>71</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>66</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>65</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>68</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>67</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>62</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>61</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>64</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>63</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>90</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>89</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>92</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>91</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>86</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>85</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>88</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>87</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>82</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>81</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>84</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>83</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>78</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>77</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>80</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>79</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>10</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>9</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>12</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>11</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>6</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>5</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>8</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>7</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>2</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>1</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>4</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>3</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>26</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>25</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>28</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>27</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>22</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>21</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>24</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>23</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>18</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>17</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>20</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>19</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>14</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>13</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>16</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
- </degree-attributes>
- <node-type xmlns="http://org/openroadm/network/topology">DEGREE</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-B1</node-ref>
- </supporting-node>
- </node>
- <node>
- <node-id>ROADM-B1-DEG2</node-id>
- <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/network/topology">DEGREE-TXRX-CTP</tp-type>
- </termination-point>
- <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/network/topology">DEGREE-TXRX-TTP</tp-type>
- </termination-point>
- <degree-attributes xmlns="http://org/openroadm/network/topology">
- <degree-number>2</degree-number>
- <available-wavelengths>
- <index>94</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>93</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>96</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>95</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>42</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>41</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>44</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>43</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>38</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>37</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>40</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>39</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>34</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>33</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>36</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>35</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>30</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>29</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>32</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>31</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>58</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>57</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>60</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>59</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>54</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>53</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>56</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>55</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>50</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>49</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>52</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>51</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>46</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>45</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>48</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>47</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>74</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>73</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>76</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>75</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>70</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>69</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>72</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>71</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>66</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>65</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>68</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>67</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>62</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>61</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>64</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>63</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>90</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>89</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>92</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>91</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>86</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>85</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>88</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>87</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>82</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>81</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>84</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>83</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>78</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>77</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>80</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>79</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>10</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>9</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>12</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>11</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>6</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>5</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>8</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>7</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>2</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>1</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>4</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>3</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>26</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>25</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>28</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>27</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>22</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>21</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>24</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>23</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>18</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>17</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>20</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>19</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>14</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>13</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>16</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
- </degree-attributes>
- <node-type xmlns="http://org/openroadm/network/topology">DEGREE</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-B1</node-ref>
- </supporting-node>
- </node>
- <node>
- <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/network/topology">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/network/topology">SRG-TXRX-CP</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/network/topology">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/network/topology">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/network/topology">SRG-TXRX-PP</tp-type>
- </termination-point>
- <srg-attributes xmlns="http://org/openroadm/network/topology">
- <available-wavelengths>
- <index>94</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>93</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>96</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>95</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>42</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>41</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>44</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>43</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>38</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>37</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>40</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>39</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>34</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>33</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>36</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>35</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>30</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>29</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>32</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>31</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>58</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>57</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>60</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>59</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>54</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>53</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>56</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>55</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>50</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>49</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>52</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>51</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>46</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>45</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>48</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>47</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>74</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>73</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>76</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>75</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>70</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>69</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>72</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>71</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>66</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>65</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>68</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>67</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>62</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>61</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>64</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>63</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>90</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>89</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>92</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>91</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>86</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>85</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>88</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>87</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>82</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>81</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>84</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>83</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>78</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>77</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>80</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>79</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>10</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>9</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>12</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>11</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>6</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>5</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>8</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>7</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>2</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>1</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>4</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>3</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>26</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>25</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>28</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>27</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>22</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>21</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>24</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>23</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>18</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>17</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>20</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>19</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>14</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>13</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>16</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
- </srg-attributes>
- <node-type xmlns="http://org/openroadm/network/topology">SRG</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-C1</node-ref>
- </supporting-node>
- </node>
- <node>
- <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/network/topology">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/network/topology">SRG-TXRX-CP</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/network/topology">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/network/topology">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/network/topology">SRG-TXRX-PP</tp-type>
- </termination-point>
- <srg-attributes xmlns="http://org/openroadm/network/topology">
- <available-wavelengths>
- <index>94</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>93</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>96</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>95</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>42</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>41</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>44</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>43</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>38</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>37</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>40</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>39</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>34</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>33</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>36</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>35</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>30</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>29</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>32</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>31</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>58</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>57</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>60</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>59</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>54</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>53</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>56</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>55</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>50</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>49</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>52</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>51</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>46</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>45</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>48</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>47</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>74</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>73</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>76</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>75</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>70</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>69</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>72</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>71</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>66</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>65</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>68</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>67</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>62</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>61</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>64</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>63</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>90</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>89</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>92</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>91</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>86</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>85</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>88</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>87</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>82</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>81</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>84</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>83</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>78</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>77</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>80</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>79</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>10</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>9</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>12</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>11</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>6</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>5</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>8</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>7</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>2</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>1</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>4</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>3</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>26</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>25</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>28</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>27</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>22</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>21</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>24</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>23</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>18</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>17</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>20</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>19</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>14</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>13</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>16</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
- </srg-attributes>
- <node-type xmlns="http://org/openroadm/network/topology">SRG</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-A1</node-ref>
- </supporting-node>
- </node>
- <node>
- <node-id>ROADM-A1-DEG2</node-id>
- <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/network/topology">DEGREE-TXRX-CTP</tp-type>
- </termination-point>
- <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/network/topology">DEGREE-TXRX-TTP</tp-type>
- </termination-point>
- <degree-attributes xmlns="http://org/openroadm/network/topology">
- <degree-number>2</degree-number>
- <available-wavelengths>
- <index>94</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>93</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>96</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>95</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>42</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>41</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>44</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>43</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>38</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>37</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>40</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>39</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>34</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>33</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>36</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>35</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>30</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>29</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>32</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>31</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>58</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>57</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>60</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>59</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>54</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>53</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>56</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>55</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>50</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>49</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>52</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>51</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>46</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>45</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>48</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>47</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>74</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>73</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>76</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>75</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>70</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>69</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>72</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>71</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>66</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>65</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>68</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>67</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>62</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>61</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>64</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>63</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>90</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>89</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>92</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>91</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>86</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>85</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>88</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>87</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>82</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>81</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>84</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>83</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>78</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>77</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>80</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>79</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>10</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>9</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>12</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>11</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>6</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>5</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>8</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>7</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>2</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>1</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>4</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>3</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>26</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>25</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>28</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>27</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>22</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>21</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>24</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>23</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>18</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>17</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>20</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>19</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>14</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>13</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>16</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
- </degree-attributes>
- <node-type xmlns="http://org/openroadm/network/topology">DEGREE</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-A1</node-ref>
- </supporting-node>
- </node>
- <node>
- <node-id>XPDR-A1-XPDR1</node-id>
- <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-client-attributes xmlns="http://org/openroadm/network/topology">
- <tail-equipment-id>XPDR1-NETWORK2</tail-equipment-id>
- </xpdr-client-attributes>
- <tp-type xmlns="http://org/openroadm/network/topology">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/network/topology">XPONDER-NETWORK</tp-type>
- <xpdr-network-attributes xmlns="http://org/openroadm/network/topology">
- <tail-equipment-id>XPDR1-CLIENT2</tail-equipment-id>
- </xpdr-network-attributes>
- </termination-point>
- <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-client-attributes xmlns="http://org/openroadm/network/topology">
- <tail-equipment-id>XPDR1-NETWORK1</tail-equipment-id>
- </xpdr-client-attributes>
- <tp-type xmlns="http://org/openroadm/network/topology">XPONDER-CLIENT</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>
- <tp-type xmlns="http://org/openroadm/network/topology">XPONDER-NETWORK</tp-type>
- <xpdr-network-attributes xmlns="http://org/openroadm/network/topology">
- <tail-equipment-id>XPDR1-CLIENT1</tail-equipment-id>
- </xpdr-network-attributes>
- </termination-point>
- <node-type xmlns="http://org/openroadm/network/topology">XPONDER</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>XPDR-A1</node-ref>
- </supporting-node>
- </node>
- <node>
- <node-id>ROADM-A1-DEG1</node-id>
- <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/network/topology">DEGREE-TXRX-TTP</tp-type>
- </termination-point>
- <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/network/topology">DEGREE-TXRX-CTP</tp-type>
- </termination-point>
- <degree-attributes xmlns="http://org/openroadm/network/topology">
- <degree-number>1</degree-number>
- <available-wavelengths>
- <index>94</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>93</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>96</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>95</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>42</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>41</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>44</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>43</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>38</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>37</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>40</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>39</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>34</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>33</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>36</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>35</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>30</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>29</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>32</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>31</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>58</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>57</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>60</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>59</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>54</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>53</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>56</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>55</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>50</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>49</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>52</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>51</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>46</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>45</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>48</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>47</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>74</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>73</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>76</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>75</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>70</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>69</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>72</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>71</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>66</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>65</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>68</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>67</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>62</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>61</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>64</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>63</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>90</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>89</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>92</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>91</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>86</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>85</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>88</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>87</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>82</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>81</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>84</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>83</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>78</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>77</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>80</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>79</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>10</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>9</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>12</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>11</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>6</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>5</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>8</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>7</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>2</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>1</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>4</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>3</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>26</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>25</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>28</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>27</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>22</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>21</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>24</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>23</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>18</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>17</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>20</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>19</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>14</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>13</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>16</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
- </degree-attributes>
- <node-type xmlns="http://org/openroadm/network/topology">DEGREE</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-A1</node-ref>
- </supporting-node>
- </node>
- <node>
- <node-id>XPDR-C1-XPDR1</node-id>
- <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-client-attributes xmlns="http://org/openroadm/network/topology">
- <tail-equipment-id>XPDR1-NETWORK2</tail-equipment-id>
- </xpdr-client-attributes>
- <tp-type xmlns="http://org/openroadm/network/topology">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/network/topology">XPONDER-NETWORK</tp-type>
- <xpdr-network-attributes xmlns="http://org/openroadm/network/topology">
- <tail-equipment-id>XPDR1-CLIENT2</tail-equipment-id>
- </xpdr-network-attributes>
- </termination-point>
- <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-client-attributes xmlns="http://org/openroadm/network/topology">
- <tail-equipment-id>XPDR1-NETWORK1</tail-equipment-id>
- </xpdr-client-attributes>
- <tp-type xmlns="http://org/openroadm/network/topology">XPONDER-CLIENT</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>
- <tp-type xmlns="http://org/openroadm/network/topology">XPONDER-NETWORK</tp-type>
- <xpdr-network-attributes xmlns="http://org/openroadm/network/topology">
- <tail-equipment-id>XPDR1-CLIENT1</tail-equipment-id>
- </xpdr-network-attributes>
- </termination-point>
- <node-type xmlns="http://org/openroadm/network/topology">XPONDER</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>XPDR-C1</node-ref>
- </supporting-node>
- </node>
- <node>
- <node-id>ROADM-C1-DEG1</node-id>
- <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/network/topology">DEGREE-TXRX-TTP</tp-type>
- </termination-point>
- <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/network/topology">DEGREE-TXRX-CTP</tp-type>
- </termination-point>
- <degree-attributes xmlns="http://org/openroadm/network/topology">
- <degree-number>1</degree-number>
- <available-wavelengths>
- <index>94</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>93</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>96</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>95</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>42</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>41</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>44</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>43</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>38</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>37</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>40</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>39</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>34</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>33</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>36</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>35</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>30</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>29</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>32</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>31</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>58</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>57</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>60</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>59</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>54</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>53</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>56</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>55</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>50</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>49</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>52</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>51</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>46</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>45</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>48</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>47</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>74</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>73</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>76</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>75</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>70</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>69</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>72</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>71</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>66</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>65</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>68</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>67</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>62</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>61</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>64</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>63</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>90</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>89</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>92</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>91</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>86</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>85</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>88</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>87</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>82</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>81</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>84</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>83</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>78</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>77</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>80</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>79</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>10</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>9</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>12</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>11</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>6</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>5</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>8</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>7</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>2</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>1</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>4</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>3</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>26</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>25</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>28</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>27</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>22</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>21</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>24</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>23</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>18</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>17</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>20</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>19</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>14</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>13</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>16</index>
- </available-wavelengths>
- <available-wavelengths>
- <index>15</index>
- </available-wavelengths>
- </degree-attributes>
- <node-type xmlns="http://org/openroadm/network/topology">DEGREE</node-type>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>ROADM-C1</node-ref>
- </supporting-node>
- </node>
- <network-types>
- <openroadm-common-network xmlns="http://org/openroadm/common/network"/>
- </network-types>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX</link-id>
- <source>
- <source-node>ROADM-A1-DEG1</source-node>
- <source-tp>DEG1-CTP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">DROP-LINK</link-type>
- <destination>
- <dest-node>ROADM-A1-SRG3</dest-node>
- <dest-tp>SRG3-CP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX</link-id>
- <source>
- <source-node>ROADM-A1-SRG3</source-node>
- <source-tp>SRG3-CP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">ADD-LINK</link-type>
- <destination>
- <dest-node>ROADM-A1-DEG2</dest-node>
- <dest-tp>DEG2-CTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX</opposite-link>
- </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</link-id>
- <source>
- <source-node>ROADM-C1-DEG1</source-node>
- <source-tp>DEG1-TTP-TXRX</source-tp>
- </source>
- <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>
- <link-type xmlns="http://org/openroadm/network/topology">ROADM-TO-ROADM</link-type>
- <destination>
- <dest-node>ROADM-A1-DEG2</dest-node>
- <dest-tp>DEG2-TTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX</link-id>
- <source>
- <source-node>ROADM-C1-DEG2</source-node>
- <source-tp>DEG2-CTP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">DROP-LINK</link-type>
- <destination>
- <dest-node>ROADM-C1-SRG1</dest-node>
- <dest-tp>SRG1-CP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX</link-id>
- <source>
- <source-node>ROADM-A1-DEG1</source-node>
- <source-tp>DEG1-TTP-TXRX</source-tp>
- </source>
- <OMS-attributes xmlns="http://org/openroadm/network/topology">
- <opposite-link>ROADM-B1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG1-DEG1-TTP-TXRX</opposite-link>
- </OMS-attributes>
- <link-type xmlns="http://org/openroadm/network/topology">ROADM-TO-ROADM</link-type>
- <destination>
- <dest-node>ROADM-B1-DEG1</dest-node>
- <dest-tp>DEG1-TTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-B1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG1-DEG1-TTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG1-DEG1-TTP-TXRX</link-id>
- <source>
- <source-node>ROADM-A1-DEG2</source-node>
- <source-tp>DEG2-TTP-TXRX</source-tp>
- </source>
- <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>
- <link-type xmlns="http://org/openroadm/network/topology">ROADM-TO-ROADM</link-type>
- <destination>
- <dest-node>ROADM-C1-DEG1</dest-node>
- <dest-tp>DEG1-TTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG2-DEG2-TTP-TXRX</opposite-link>
- </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>
- <source>
- <source-node>ROADM-C1-DEG2</source-node>
- <source-tp>DEG2-CTP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">EXPRESS-LINK</link-type>
- <destination>
- <dest-node>ROADM-C1-DEG1</dest-node>
- <dest-tp>DEG1-CTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-C1-DEG2-DEG2-TTP-TXRXtoROADM-B1-DEG2-DEG2-TTP-TXRX</link-id>
- <source>
- <source-node>ROADM-C1-DEG2</source-node>
- <source-tp>DEG2-TTP-TXRX</source-tp>
- </source>
- <OMS-attributes xmlns="http://org/openroadm/network/topology">
- <opposite-link>ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX</opposite-link>
- </OMS-attributes>
- <link-type xmlns="http://org/openroadm/network/topology">ROADM-TO-ROADM</link-type>
- <destination>
- <dest-node>ROADM-B1-DEG2</dest-node>
- <dest-tp>DEG2-TTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX</link-id>
- <source>
- <source-node>ROADM-C1-DEG1</source-node>
- <source-tp>DEG1-CTP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">EXPRESS-LINK</link-type>
- <destination>
- <dest-node>ROADM-C1-DEG2</dest-node>
- <dest-tp>DEG2-CTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX</link-id>
- <source>
- <source-node>ROADM-A1-DEG2</source-node>
- <source-tp>DEG2-CTP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">DROP-LINK</link-type>
- <destination>
- <dest-node>ROADM-A1-SRG1</dest-node>
- <dest-tp>SRG1-CP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX</opposite-link>
- </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>
- <source>
- <source-node>ROADM-A1-DEG2</source-node>
- <source-tp>DEG2-CTP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">DROP-LINK</link-type>
- <destination>
- <dest-node>ROADM-A1-SRG3</dest-node>
- <dest-tp>SRG3-CP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-B1-DEG2-DEG2-CTP-TXRXtoROADM-B1-DEG1-DEG1-CTP-TXRX</link-id>
- <source>
- <source-node>ROADM-B1-DEG2</source-node>
- <source-tp>DEG2-CTP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">EXPRESS-LINK</link-type>
- <destination>
- <dest-node>ROADM-B1-DEG1</dest-node>
- <dest-tp>DEG1-CTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-B1-DEG1-DEG1-CTP-TXRXtoROADM-B1-DEG2-DEG2-CTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX</link-id>
- <source>
- <source-node>ROADM-C1-DEG1</source-node>
- <source-tp>DEG1-CTP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">DROP-LINK</link-type>
- <destination>
- <dest-node>ROADM-C1-SRG1</dest-node>
- <dest-tp>SRG1-CP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX</link-id>
- <source>
- <source-node>ROADM-A1-DEG2</source-node>
- <source-tp>DEG2-CTP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">EXPRESS-LINK</link-type>
- <destination>
- <dest-node>ROADM-A1-DEG1</dest-node>
- <dest-tp>DEG1-CTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX</link-id>
- <source>
- <source-node>ROADM-A1-SRG1</source-node>
- <source-tp>SRG1-CP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">ADD-LINK</link-type>
- <destination>
- <dest-node>ROADM-A1-DEG1</dest-node>
- <dest-tp>DEG1-CTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG2-DEG2-CTP-TXRX</link-id>
- <source>
- <source-node>ROADM-C1-SRG1</source-node>
- <source-tp>SRG1-CP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">ADD-LINK</link-type>
- <destination>
- <dest-node>ROADM-C1-DEG2</dest-node>
- <dest-tp>DEG2-CTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG2-DEG2-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-B1-DEG1-DEG1-TTP-TXRXtoROADM-A1-DEG1-DEG1-TTP-TXRX</link-id>
- <source>
- <source-node>ROADM-B1-DEG1</source-node>
- <source-tp>DEG1-TTP-TXRX</source-tp>
- </source>
- <OMS-attributes xmlns="http://org/openroadm/network/topology">
- <opposite-link>ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX</opposite-link>
- </OMS-attributes>
- <link-type xmlns="http://org/openroadm/network/topology">ROADM-TO-ROADM</link-type>
- <destination>
- <dest-node>ROADM-A1-DEG1</dest-node>
- <dest-tp>DEG1-TTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG1-DEG1-TTP-TXRXtoROADM-B1-DEG1-DEG1-TTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX</link-id>
- <source>
- <source-node>ROADM-A1-SRG1</source-node>
- <source-tp>SRG1-CP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">ADD-LINK</link-type>
- <destination>
- <dest-node>ROADM-A1-DEG2</dest-node>
- <dest-tp>DEG2-CTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-B1-DEG1-DEG1-CTP-TXRXtoROADM-B1-DEG2-DEG2-CTP-TXRX</link-id>
- <source>
- <source-node>ROADM-B1-DEG1</source-node>
- <source-tp>DEG1-CTP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">EXPRESS-LINK</link-type>
- <destination>
- <dest-node>ROADM-B1-DEG2</dest-node>
- <dest-tp>DEG2-CTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-B1-DEG2-DEG2-CTP-TXRXtoROADM-B1-DEG1-DEG1-CTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-B1-DEG2-DEG2-TTP-TXRXtoROADM-C1-DEG2-DEG2-TTP-TXRX</link-id>
- <source>
- <source-node>ROADM-B1-DEG2</source-node>
- <source-tp>DEG2-TTP-TXRX</source-tp>
- </source>
- <OMS-attributes xmlns="http://org/openroadm/network/topology">
- <opposite-link>ROADM-C1-DEG2-DEG2-TTP-TXRXtoROADM-B1-DEG2-DEG2-TTP-TXRX</opposite-link>
- </OMS-attributes>
- <link-type xmlns="http://org/openroadm/network/topology">ROADM-TO-ROADM</link-type>
- <destination>
- <dest-node>ROADM-C1-DEG2</dest-node>
- <dest-tp>DEG2-TTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG2-DEG2-TTP-TXRXtoROADM-B1-DEG2-DEG2-TTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-DEG2-DEG2-CTP-TXRX</link-id>
- <source>
- <source-node>ROADM-A1-DEG1</source-node>
- <source-tp>DEG1-CTP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">EXPRESS-LINK</link-type>
- <destination>
- <dest-node>ROADM-A1-DEG2</dest-node>
- <dest-tp>DEG2-CTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG2-DEG2-CTP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-SRG3-SRG3-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX</link-id>
- <source>
- <source-node>ROADM-A1-SRG3</source-node>
- <source-tp>SRG3-CP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">ADD-LINK</link-type>
- <destination>
- <dest-node>ROADM-A1-DEG1</dest-node>
- <dest-tp>DEG1-CTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG3-SRG3-CP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-C1-SRG1-SRG1-CP-TXRXtoROADM-C1-DEG1-DEG1-CTP-TXRX</link-id>
- <source>
- <source-node>ROADM-C1-SRG1</source-node>
- <source-tp>SRG1-CP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">ADD-LINK</link-type>
- <destination>
- <dest-node>ROADM-C1-DEG1</dest-node>
- <dest-tp>DEG1-CTP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-C1-DEG1-DEG1-CTP-TXRXtoROADM-C1-SRG1-SRG1-CP-TXRX</opposite-link>
- </link>
- <link xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <link-id>ROADM-A1-DEG1-DEG1-CTP-TXRXtoROADM-A1-SRG1-SRG1-CP-TXRX</link-id>
- <source>
- <source-node>ROADM-A1-DEG1</source-node>
- <source-tp>DEG1-CTP-TXRX</source-tp>
- </source>
- <link-type xmlns="http://org/openroadm/network/topology">DROP-LINK</link-type>
- <destination>
- <dest-node>ROADM-A1-SRG1</dest-node>
- <dest-tp>SRG1-CP-TXRX</dest-tp>
- </destination>
- <opposite-link xmlns="http://org/openroadm/common/network">ROADM-A1-SRG1-SRG1-CP-TXRXtoROADM-A1-DEG1-DEG1-CTP-TXRX</opposite-link>
- </link>
- </network>
- </networks>
-</data>
\ No newline at end of file
</xpdr-attributes>
</node>
<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
+ <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>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
+ <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>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
+ <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>
<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
+ <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>
+++ /dev/null
-<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-<networks xmlns="urn:ietf:params:xml:ns:yang:ietf-network">
-<network>
- <network-id>otn-topology</network-id>
- <network-types>
- <openroadm-common-network xmlns="http://org/openroadm/common/network"/>
- </network-types>
- <node>
- <node-id>SPDR-SA1-XPDR2</node-id>
- <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>
- <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>
- <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-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>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>
- <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>
- <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-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>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>
- <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>
- <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-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>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>
- <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>
- <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-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>XPDR2-CLIENT4</tp-id>
- <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>
- </supported-interface-capability>
- </tp-supported-interfaces>
- <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-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>XPDR2-CLIENT2</tp-id>
- <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>
- </supported-interface-capability>
- </tp-supported-interfaces>
- <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-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>XPDR2-CLIENT3</tp-id>
- <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>
- </supported-interface-capability>
- </tp-supported-interfaces>
- <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-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>XPDR2-CLIENT1</tp-id>
- <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>
- </supported-interface-capability>
- </tp-supported-interfaces>
- <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-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- </termination-point>
- <node-type xmlns="http://org/openroadm/common/network">SWITCH</node-type>
- <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>
- <switching-pools xmlns="http://org/openroadm/otn/network/topology">
- <odu-switching-pools>
- <switching-pool-number>1</switching-pool-number>
- <switching-pool-type>non-blocking</switching-pool-type>
- <non-blocking-list>
- <nbl-number>1</nbl-number>
- <tp-list>XPDR2-NETWORK4</tp-list>
- <tp-list>XPDR2-CLIENT1</tp-list>
- <tp-list>XPDR2-NETWORK3</tp-list>
- <tp-list>XPDR2-CLIENT4</tp-list>
- <tp-list>XPDR2-CLIENT2</tp-list>
- <tp-list>XPDR2-NETWORK2</tp-list>
- <tp-list>XPDR2-CLIENT3</tp-list>
- <tp-list>XPDR2-NETWORK1</tp-list>
- </non-blocking-list>
- </odu-switching-pools>
- </switching-pools>
- <supporting-node>
- <network-ref>clli-network</network-ref>
- <node-ref>NodeSA</node-ref>
- </supporting-node>
- <supporting-node>
- <network-ref>openroadm-topology</network-ref>
- <node-ref>SPDR-SA1-XPDR2</node-ref>
- </supporting-node>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>SPDR-SA1</node-ref>
- </supporting-node>
- </node>
- <node>
- <node-id>SPDR-SA1-XPDR1</node-id>
- <termination-point xmlns="urn:ietf:params:xml:ns:yang:ietf-network-topology">
- <tp-id>XPDR1-CLIENT2</tp-id>
- <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>
- </supported-interface-capability>
- </tp-supported-interfaces>
- <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-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-CLIENT1</tp-id>
- <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>
- </supported-interface-capability>
- </tp-supported-interfaces>
- <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-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-CLIENT4</tp-id>
- <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>
- </supported-interface-capability>
- </tp-supported-interfaces>
- <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-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-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>
- <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>
- <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-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-CLIENT3</tp-id>
- <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>
- </supported-interface-capability>
- </tp-supported-interfaces>
- <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-type xmlns="http://org/openroadm/common/network">XPONDER-CLIENT</tp-type>
- </termination-point>
- <node-type xmlns="http://org/openroadm/common/network">MUXPDR</node-type>
- <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>
- <switching-pools xmlns="http://org/openroadm/otn/network/topology">
- <odu-switching-pools>
- <switching-pool-number>1</switching-pool-number>
- <switching-pool-type>non-blocking</switching-pool-type>
- <non-blocking-list>
- <nbl-number>3</nbl-number>
- <available-interconnect-bandwidth>10</available-interconnect-bandwidth>
- <interconnect-bandwidth-unit>1000000000</interconnect-bandwidth-unit>
- <tp-list>XPDR1-NETWORK1</tp-list>
- <tp-list>XPDR1-CLIENT3</tp-list>
- </non-blocking-list>
- <non-blocking-list>
- <nbl-number>4</nbl-number>
- <available-interconnect-bandwidth>10</available-interconnect-bandwidth>
- <interconnect-bandwidth-unit>1000000000</interconnect-bandwidth-unit>
- <tp-list>XPDR1-CLIENT4</tp-list>
- <tp-list>XPDR1-NETWORK1</tp-list>
- </non-blocking-list>
- <non-blocking-list>
- <nbl-number>1</nbl-number>
- <available-interconnect-bandwidth>10</available-interconnect-bandwidth>
- <interconnect-bandwidth-unit>1000000000</interconnect-bandwidth-unit>
- <tp-list>XPDR1-NETWORK1</tp-list>
- <tp-list>XPDR1-CLIENT1</tp-list>
- </non-blocking-list>
- <non-blocking-list>
- <nbl-number>2</nbl-number>
- <available-interconnect-bandwidth>10</available-interconnect-bandwidth>
- <interconnect-bandwidth-unit>1000000000</interconnect-bandwidth-unit>
- <tp-list>XPDR1-NETWORK1</tp-list>
- <tp-list>XPDR1-CLIENT2</tp-list>
- </non-blocking-list>
- </odu-switching-pools>
- </switching-pools>
- <supporting-node>
- <network-ref>clli-network</network-ref>
- <node-ref>NodeSA</node-ref>
- </supporting-node>
- <supporting-node>
- <network-ref>openroadm-topology</network-ref>
- <node-ref>SPDR-SA1-XPDR1</node-ref>
- </supporting-node>
- <supporting-node>
- <network-ref>openroadm-network</network-ref>
- <node-ref>SPDR-SA1</node-ref>
- </supporting-node>
- </node>
-</network>
-</networks>
-</data>
\ No newline at end of file
+++ /dev/null
-<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-<network xmlns="http://org/opendaylight/transportpce/portmapping">
- <nodes>
- <node-id>XPDR-A1</node-id>
- <node-info>
- <openroadm-version>2.2.1</openroadm-version>
- <node-model>model2</node-model>
- <node-clli>NodeA</node-clli>
- <node-type>xpdr</node-type>
- <node-vendor>vendorA</node-vendor>
- <node-ip-address>1.2.3.4</node-ip-address>
- </node-info>
- <mapping>
- <logical-connection-point>XPDR1-NETWORK2</logical-connection-point>
- <port-qual>xpdr-network</port-qual>
- <connection-map-lcp>XPDR1-CLIENT2</connection-map-lcp>
- <supporting-circuit-pack-name>1/0/2-PLUG-NET</supporting-circuit-pack-name>
- <supporting-port>1</supporting-port>
- <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>XPDR1-NETWORK1</logical-connection-point>
- <port-qual>xpdr-network</port-qual>
- <connection-map-lcp>XPDR1-CLIENT1</connection-map-lcp>
- <supporting-circuit-pack-name>1/0/1-PLUG-NET</supporting-circuit-pack-name>
- <supporting-port>1</supporting-port>
- <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>XPDR1-CLIENT1</logical-connection-point>
- <port-qual>xpdr-client</port-qual>
- <connection-map-lcp>XPDR1-NETWORK1</connection-map-lcp>
- <supporting-circuit-pack-name>1/0/1-PLUG-CLIENT</supporting-circuit-pack-name>
- <supporting-port>C1</supporting-port>
- <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>XPDR1-CLIENT2</logical-connection-point>
- <port-qual>xpdr-client</port-qual>
- <connection-map-lcp>XPDR1-NETWORK2</connection-map-lcp>
- <supporting-circuit-pack-name>1/0/2-PLUG-CLIENT</supporting-circuit-pack-name>
- <supporting-port>C1</supporting-port>
- <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
- <port-direction>bidirectional</port-direction>
- </mapping>
- </nodes>
- <nodes>
- <node-id>ROADM-A1</node-id>
- <node-info>
- <openroadm-version>2.2.1</openroadm-version>
- <node-model>model2</node-model>
- <node-clli>NodeA</node-clli>
- <node-type>rdm</node-type>
- <node-vendor>vendorA</node-vendor>
- <node-ip-address>127.0.0.11</node-ip-address>
- </node-info>
- <cp-to-degree>
- <circuit-pack-name>2/0</circuit-pack-name>
- <degree-number>2</degree-number>
- <interface-name>1GE-interface-2</interface-name>
- </cp-to-degree>
- <cp-to-degree>
- <circuit-pack-name>1/0/ETH-PLUG</circuit-pack-name>
- <degree-number>1</degree-number>
- <interface-name>1GE-interface-1</interface-name>
- </cp-to-degree>
- <cp-to-degree>
- <circuit-pack-name>1/0</circuit-pack-name>
- <degree-number>1</degree-number>
- <interface-name>1GE-interface-1</interface-name>
- </cp-to-degree>
- <cp-to-degree>
- <circuit-pack-name>2/0/ETH-PLUG</circuit-pack-name>
- <degree-number>2</degree-number>
- <interface-name>1GE-interface-2</interface-name>
- </cp-to-degree>
- <mapping>
- <logical-connection-point>SRG3-PP1-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>5/0</supporting-circuit-pack-name>
- <supporting-port>C1</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>SRG1-PP2-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
- <supporting-port>C2</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>SRG3-PP4-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>5/0</supporting-circuit-pack-name>
- <supporting-port>C4</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>SRG1-PP4-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
- <supporting-port>C4</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>SRG3-PP3-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>5/0</supporting-circuit-pack-name>
- <supporting-port>C3</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>DEG2-TTP-TXRX</logical-connection-point>
- <supporting-ots>OTS-DEG2-TTP-TXRX</supporting-ots>
- <supporting-circuit-pack-name>2/0</supporting-circuit-pack-name>
- <supporting-oms>OMS-DEG2-TTP-TXRX</supporting-oms>
- <supporting-port>L1</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>SRG1-PP3-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
- <supporting-port>C3</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>SRG3-PP2-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>5/0</supporting-circuit-pack-name>
- <supporting-port>C2</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>DEG1-TTP-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>1/0</supporting-circuit-pack-name>
- <supporting-port>L1</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>SRG1-PP1-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
- <supporting-port>C1</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- </nodes>
- <nodes>
- <node-id>XPDR-C1</node-id>
- <node-info>
- <openroadm-version>2.2.1</openroadm-version>
- <node-model>model2</node-model>
- <node-clli>NodeC</node-clli>
- <node-type>xpdr</node-type>
- <node-vendor>vendorA</node-vendor>
- <node-ip-address>1.2.3.4</node-ip-address>
- </node-info>
- <mapping>
- <logical-connection-point>XPDR1-NETWORK2</logical-connection-point>
- <port-qual>xpdr-network</port-qual>
- <connection-map-lcp>XPDR1-CLIENT2</connection-map-lcp>
- <supporting-circuit-pack-name>1/0/2-PLUG-NET</supporting-circuit-pack-name>
- <supporting-port>1</supporting-port>
- <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>XPDR1-NETWORK1</logical-connection-point>
- <port-qual>xpdr-network</port-qual>
- <connection-map-lcp>XPDR1-CLIENT1</connection-map-lcp>
- <supporting-circuit-pack-name>1/0/1-PLUG-NET</supporting-circuit-pack-name>
- <supporting-port>1</supporting-port>
- <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-OCH</supported-interface-capability>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>XPDR1-CLIENT1</logical-connection-point>
- <port-qual>xpdr-client</port-qual>
- <connection-map-lcp>XPDR1-NETWORK1</connection-map-lcp>
- <supporting-circuit-pack-name>1/0/1-PLUG-CLIENT</supporting-circuit-pack-name>
- <supporting-port>C1</supporting-port>
- <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>XPDR1-CLIENT2</logical-connection-point>
- <port-qual>xpdr-client</port-qual>
- <connection-map-lcp>XPDR1-NETWORK2</connection-map-lcp>
- <supporting-circuit-pack-name>1/0/2-PLUG-CLIENT</supporting-circuit-pack-name>
- <supporting-port>C1</supporting-port>
- <supported-interface-capability xmlns:x="http://org/openroadm/port/types">x:if-100GE</supported-interface-capability>
- <port-direction>bidirectional</port-direction>
- </mapping>
- </nodes>
- <nodes>
- <node-id>ROADM-C1</node-id>
- <node-info>
- <openroadm-version>2.2.1</openroadm-version>
- <node-model>model2</node-model>
- <node-clli>NodeC</node-clli>
- <node-type>rdm</node-type>
- <node-vendor>vendorA</node-vendor>
- <node-ip-address>127.0.0.11</node-ip-address>
- </node-info>
- <cp-to-degree>
- <circuit-pack-name>2/0</circuit-pack-name>
- <degree-number>2</degree-number>
- <interface-name>1GE-interface-2</interface-name>
- </cp-to-degree>
- <cp-to-degree>
- <circuit-pack-name>1/0/ETH-PLUG</circuit-pack-name>
- <degree-number>1</degree-number>
- <interface-name>1GE-interface-1</interface-name>
- </cp-to-degree>
- <cp-to-degree>
- <circuit-pack-name>1/0</circuit-pack-name>
- <degree-number>1</degree-number>
- <interface-name>1GE-interface-1</interface-name>
- </cp-to-degree>
- <cp-to-degree>
- <circuit-pack-name>2/0/ETH-PLUG</circuit-pack-name>
- <degree-number>2</degree-number>
- <interface-name>1GE-interface-2</interface-name>
- </cp-to-degree>
- <mapping>
- <logical-connection-point>SRG1-PP2-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
- <supporting-port>C2</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>SRG1-PP4-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
- <supporting-port>C4</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>DEG2-TTP-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>2/0</supporting-circuit-pack-name>
- <supporting-port>L1</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>SRG1-PP3-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
- <supporting-port>C3</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>DEG1-TTP-TXRX</logical-connection-point>
- <supporting-ots>OTS-DEG1-TTP-TXRX</supporting-ots>
- <supporting-circuit-pack-name>1/0</supporting-circuit-pack-name>
- <supporting-oms>OMS-DEG1-TTP-TXRX</supporting-oms>
- <supporting-port>L1</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- <mapping>
- <logical-connection-point>SRG1-PP1-TXRX</logical-connection-point>
- <supporting-circuit-pack-name>3/0</supporting-circuit-pack-name>
- <supporting-port>C1</supporting-port>
- <port-direction>bidirectional</port-direction>
- </mapping>
- </nodes>
-</network>
-</data>
\ No newline at end of file
{py3,otnrenderer}: nosetests --with-xunit transportpce_tests/2.2.1/test_otn_renderer.py
{py3,otnshrenderer}: nosetests --with-xunit transportpce_tests/2.2.1/test_otn_sh_renderer.py
{py3,olm221}: nosetests --with-xunit transportpce_tests/2.2.1/test_olm.py
- {py3,tapi221}: nosetests --with-xunit transportpce_tests/2.2.1/test_tapi.py
+ #{py3,tapi221}: nosetests --with-xunit transportpce_tests/2.2.1/test_tapi.py
{py3,otnend2end}: nosetests --with-xunit transportpce_tests/2.2.1/test_otn_end2end.py
{py3,end2end}: nosetests --with-xunit transportpce_tests/1.2.1/test_end2end.py
{py3,end2end221}: nosetests --with-xunit transportpce_tests/2.2.1/test_end2end.py