X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pce%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fpce%2Fnetworkanalyzer%2FPceOpticalNode.java;h=59732b95613b38da187e9e1afb8b9093dd37d08c;hb=refs%2Fchanges%2F45%2F93745%2F10;hp=80574e4cf62170024cf0460107f03c77fe3bf1e7;hpb=12832542e72d836f57041ba5d21d7e7493faedbd;p=transportpce.git diff --git a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNode.java b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNode.java index 80574e4cf..59732b956 100644 --- a/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNode.java +++ b/pce/src/main/java/org/opendaylight/transportpce/pce/networkanalyzer/PceOpticalNode.java @@ -14,12 +14,15 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.TreeMap; +import org.opendaylight.transportpce.common.fixedflex.FixedGridConstant; +import org.opendaylight.transportpce.common.fixedflex.GridConstant; import org.opendaylight.transportpce.pce.SortPortsByName; -import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev181130.TerminationPoint1; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.Node1; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.networks.network.node.termination.point.pp.attributes.UsedWavelength; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmNodeType; -import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev181130.OpenroadmTpType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev200529.TerminationPoint1; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.Node1; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.networks.network.node.termination.point.pp.attributes.UsedWavelength; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmNodeType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.OpenroadmTpType; +import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev200529.available.freq.map.AvailFreqMapsKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.service.format.rev190531.ServiceFormat; 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.Node; @@ -45,6 +48,7 @@ public class PceOpticalNode implements PceNode { private List usedXpndrNWTps = new ArrayList<>(); private List outgoingLinks = new ArrayList<>(); private Map clientPerNwTp = new HashMap<>(); + private final AvailFreqMapsKey freqMapKey = new AvailFreqMapsKey(GridConstant.C_BAND); public PceOpticalNode(Node node, OpenroadmNodeType nodeType, NodeId nodeId, ServiceFormat serviceFormat, String pceNodeType) { @@ -80,8 +84,8 @@ public class PceOpticalNode implements PceNode { for (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network .node.TerminationPoint tp : allTps) { TerminationPoint1 cntp1 = tp.augmentation(TerminationPoint1.class); - org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1 nttp1 = tp - .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.TerminationPoint1 nttp1 = tp + .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529 .TerminationPoint1.class); OpenroadmTpType type = cntp1.getTpType(); LOG.info("type = {} for tp {}", type.getName(), tp); @@ -134,40 +138,30 @@ public class PceOpticalNode implements PceNode { return; } Node1 node1 = this.node.augmentation(Node1.class); + byte[] freqMap; + switch (this.nodeType) { case SRG : - List srgAvailableWL = - new ArrayList<>(node1.getSrgAttributes().nonnullAvailableWavelengths().values()); - if (srgAvailableWL.isEmpty()) { + if (!node1.getSrgAttributes().nonnullAvailFreqMaps().containsKey(freqMapKey)) { + LOG.error("initWLlist: SRG no cband available freq maps for node {}", this); this.valid = false; - LOG.error("initWLlist: SRG AvailableWavelengths is empty for node {}", this); return; } - for (org.opendaylight.yang.gen.v1.http.org.openroadm.srg.rev181130.srg.node.attributes - .AvailableWavelengths awl : srgAvailableWL) { - this.availableWLindex.add(awl.getIndex().toJava()); - LOG.debug("initWLlist: SRG next = {} in {}", awl.getIndex(), this); - } + freqMap = node1.getSrgAttributes().nonnullAvailFreqMaps().get(freqMapKey).getFreqMap(); + updateAvailableWlIndex(freqMap); break; case DEGREE : - List degAvailableWL = - new ArrayList<>(node1.getDegreeAttributes().nonnullAvailableWavelengths().values()); - if (degAvailableWL.isEmpty()) { + if (!node1.getDegreeAttributes().nonnullAvailFreqMaps().containsKey(freqMapKey)) { + LOG.error("initWLlist: DEG no cband available freq maps for node {}", this); this.valid = false; - LOG.error("initWLlist: DEG AvailableWavelengths is empty for node {}", this); return; } - for (org.opendaylight.yang.gen.v1.http.org.openroadm.degree.rev181130.degree.node.attributes - .AvailableWavelengths awl : degAvailableWL) { - this.availableWLindex.add(awl.getIndex().toJava()); - LOG.debug("initWLlist: DEGREE next = {} in {}", awl.getIndex(), this); - } + freqMap = node1.getDegreeAttributes().nonnullAvailFreqMaps().get(freqMapKey).getFreqMap(); + updateAvailableWlIndex(freqMap); break; case XPONDER : // HARD CODED 96 - for (long i = 1; i <= 96; i++) { + for (long i = 1; i <= FixedGridConstant.NB_CHANNELS; i++) { this.availableWLindex.add(i); } break; @@ -201,8 +195,8 @@ public class PceOpticalNode implements PceNode { for (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.networks.network .node.TerminationPoint tp : allTps) { TerminationPoint1 cntp1 = tp.augmentation(TerminationPoint1.class); - org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130.TerminationPoint1 nttp1 = tp - .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev181130 + org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529.TerminationPoint1 nttp1 = tp + .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev200529 .TerminationPoint1.class); if (cntp1.getTpType() == OpenroadmTpType.XPONDERNETWORK) { if (nttp1 != null && nttp1.getXpdrNetworkAttributes().getWavelength() != null) { @@ -213,8 +207,8 @@ public class PceOpticalNode implements PceNode { } // find Client of this network TP String client; - org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129.TerminationPoint1 tpceTp1 = - tp.augmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev200129 + org.opendaylight.yang.gen.v1.http.transportpce.topology.rev201019.TerminationPoint1 tpceTp1 = + tp.augmentation(org.opendaylight.yang.gen.v1.http.transportpce.topology.rev201019 .TerminationPoint1.class); if (tpceTp1 != null) { client = tpceTp1.getAssociatedConnectionMapPort(); @@ -370,4 +364,24 @@ public class PceOpticalNode implements PceNode { public Map> getAvailableTribSlots() { return null; } + + /** + * Get available wave length from frequency map array. + * @param freqMap byte[] + */ + private void updateAvailableWlIndex(byte[] freqMap) { + if (freqMap == null) { + LOG.warn("No frequency map for node {}", node); + this.valid = false; + return; + } + long wlIndex = 1; + for (int i = 0; i < freqMap.length; i++) { + if (freqMap[i] == (byte)GridConstant.AVAILABLE_SLOT_VALUE) { + LOG.debug("Adding channel {} to available wave length index",wlIndex); + this.availableWLindex.add(wlIndex); + } + wlIndex++; + } + } }