X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pce%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2Fnetworkanalyzer%2FMapUtils.java;h=4db6dbb5baed4b59cdbd8c4a9c97d55279d15a31;hb=62fc6625966276207a38955eaf07988f77f6984f;hp=de9f0e72431b697637f36e54890d53c1daff6505;hpb=66ccddbe00692f230350a19e1a222f09d6abd9a7;p=transportpce.git diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/MapUtils.java b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/MapUtils.java index de9f0e724..4db6dbb5b 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/MapUtils.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/MapUtils.java @@ -10,14 +10,15 @@ package org.opendaylight.transportpce.pce.networkanalyzer; import java.util.ArrayList; import java.util.Arrays; import java.util.List; - +import java.util.TreeMap; +import org.opendaylight.transportpce.common.NetworkUtils; import org.opendaylight.transportpce.pce.constraints.PceConstraints; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1; import org.opendaylight.yang.gen.v1.http.org.openroadm.link.rev181130.span.attributes.LinkConcatenation; - import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.link.oms.attributes.Span; import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmLinkType; 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.node.SupportingNode; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.LinkId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network.Link; import org.slf4j.Logger; @@ -47,7 +48,7 @@ public final class MapUtils { if (excNodes.contains(node.getNodeId().getValue())) { LOG.debug("mapDiversityConstraints setExcludeSupNodes for node {}", node.getNodeId().getValue()); - pceHardConstraints.setExcludeSupNodes(Arrays.asList(getSupNode(node))); + pceHardConstraints.setExcludeSupNodes(Arrays.asList(getSupNetworkNode(node))); } } @@ -91,9 +92,100 @@ public final class MapUtils { return srlgList; } - public static String getSupNode(Node node) { - // TODO: supporting IDs exist as a List. this code takes just the first element - return node.getSupportingNode().get(0).getNodeRef().getValue(); + public static List getSRLGfromLink(Link link) { + List srlgList = new ArrayList(); + org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1 linkC = + link.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.Link1.class); + if (linkC == null) { + LOG.error("MapUtils: No Link augmentation available. {}", link.getLinkId().getValue()); + + } else { + try { + List linkConcatenation = linkC.getLinkConcatenation(); + + + for (org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.networks.network.link + .LinkConcatenation lc : linkConcatenation) { + srlgList.add(lc.getSRLGId()); + } + } catch (NullPointerException e) { + LOG.debug("No concatenation for this link"); + } + } + return srlgList; + } + + public static String getSupNetworkNode(Node node) { + List supNodes = node.getSupportingNode(); + for (SupportingNode snode : supNodes) { + if (NetworkUtils.UNDERLAY_NETWORK_ID.equals(snode.getNetworkRef().getValue())) { + return snode.getNodeRef().getValue(); + } + } + return null; + } + + public static String getSupClliNode(Node node) { + List supNodes = node.getSupportingNode(); + for (SupportingNode snode : supNodes) { + if (NetworkUtils.CLLI_NETWORK_ID.equals(snode.getNetworkRef().getValue())) { + return snode.getNodeRef().getValue(); + } + } + return null; + } + + public static TreeMap getAllSupNode(Node node) { + TreeMap allSupNodes = new TreeMap(); + List supNodes = new ArrayList(); + try { + supNodes = node.getSupportingNode(); + } catch (NullPointerException e) { + LOG.debug("No Supporting Node for the node {}", node); + } + for (SupportingNode supnode :supNodes) { + allSupNodes.put(supnode.getNetworkRef().getValue(), + supnode.getNodeRef().getValue()); + } + return allSupNodes; + } + + public static String getSupLink(Link link) { + String supLink = ""; + try { + supLink = link.getSupportingLink().get(0).getLinkRef().toString(); + } catch (NullPointerException e) { + LOG.debug("No Supporting Link for the link {}", link); + } + return supLink; + } + + + public static Long getAvailableBandwidth(Link link) { + if (link.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + .Link1.class) != null + && link.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + .Link1.class).getAvailableBandwidth() != null) { + return link.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + .Link1.class).getAvailableBandwidth(); + } else { + LOG.warn("MapUtils: no Available Bandwidth available for link {}", link.getLinkId()); + return 0L; + } + } + + public static Long getUsedBandwidth(Link link) { + if (link.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + .Link1.class) != null + && link.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + .Link1.class).getUsedBandwidth() != null) { + return link.augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev181130 + .Link1.class).getUsedBandwidth(); + } else { + LOG.warn("MapUtils: no Available Bandwidth available for link {}", link.getLinkId()); + return 0L; + } } public static OpenroadmLinkType calcType(Link link) {