X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=common%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fcommon%2Fmapping%2FPortMappingVersion221.java;h=6bff30368cdce312ebf56f06f9a7056f2b0e84ef;hb=15197bf3dcde69a90f01963ffa524fbf6354555c;hp=3f404ebc004bb52076f22038f51a5f969e7e8b27;hpb=9d49e1da85f9e18f8682f6ebdb502390b3a81d3e;p=transportpce.git diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java index 3f404ebc0..6bff30368 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java @@ -31,29 +31,29 @@ import org.opendaylight.transportpce.common.Timeouts; import org.opendaylight.transportpce.common.device.DeviceTransactionManager; import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException; import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.Network; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.NetworkBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.Nodes; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.NodesBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.NodesKey; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.CpToDegree; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.CpToDegreeBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.CpToDegreeKey; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.Mapping; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.MappingBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.MappingKey; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.McCapabilities; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.McCapabilitiesBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.McCapabilitiesKey; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.NodeInfo; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.NodeInfo.OpenroadmVersion; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.NodeInfoBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.SwitchingPoolLcp; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.SwitchingPoolLcpBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.SwitchingPoolLcpKey; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.switching.pool.lcp.NonBlockingList; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.switching.pool.lcp.NonBlockingListBuilder; -import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.switching.pool.lcp.NonBlockingListKey; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.Network; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.NetworkBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.Nodes; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.NodesBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.NodesKey; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.CpToDegree; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.CpToDegreeBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.CpToDegreeKey; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.Mapping; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.MappingBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.MappingKey; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.McCapabilities; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.McCapabilitiesBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.McCapabilitiesKey; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.NodeInfo; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.NodeInfo.OpenroadmVersion; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.NodeInfoBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.SwitchingPoolLcp; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.SwitchingPoolLcpBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.SwitchingPoolLcpKey; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.switching.pool.lcp.NonBlockingList; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.switching.pool.lcp.NonBlockingListBuilder; +import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.switching.pool.lcp.NonBlockingListKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyGHz; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.Direction; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.PortQual; @@ -123,7 +123,7 @@ public class PortMappingVersion221 { public boolean createMappingData(String nodeId) { LOG.info("{} : OpenROADM version 2.2.1 node - Creating Mapping Data", nodeId); List portMapList = new ArrayList<>(); - List mcCapabilitiesList = new ArrayList<>(); + Map mcCapabilities = new HashMap<>(); InstanceIdentifier infoIID = InstanceIdentifier.create(OrgOpenroadmDevice.class).child(Info.class); Optional deviceInfoOptional = this.deviceTransactionManager.getDataFromDevice( nodeId, LogicalDatastoreType.OPERATIONAL, infoIID, @@ -156,7 +156,7 @@ public class PortMappingVersion221 { return false; } // Get MC capabilities - if (!createMcCapabilitiesList(nodeId, deviceInfo, mcCapabilitiesList)) { + if (!createMcCapabilitiesList(nodeId, deviceInfo, mcCapabilities)) { // return false if MC capabilites failed LOG.warn("{} : Unable to create MC capabilities", nodeId); return false; @@ -173,7 +173,7 @@ public class PortMappingVersion221 { break; } - return postPortMapping(nodeId, nodeInfo, portMapList, null, null, mcCapabilitiesList); + return postPortMapping(nodeId, nodeInfo, portMapList, null, null, mcCapabilities); } public boolean updateMapping(String nodeId, Mapping oldMapping) { @@ -247,66 +247,11 @@ public class PortMappingVersion221 { List portList = new ArrayList<>(cp.nonnullPorts().values()); portList.sort(Comparator.comparing(Ports::getPortName)); for (Ports port : portList) { - if (port.getPortQual() == null) { - LOG.warn("{} : port {} on {} - PortQual was not found", - nodeId, port.getPortName(), circuitPackName); - continue; - } - - switch (port.getPortQual()) { - - case XpdrClient: - case SwitchClient: - String lcp0 = createXpdrLogicalConnectionPort(1, client, StringConstants.CLIENT_TOKEN); - lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp0); - mappingMap.put(lcp0, - createXpdrMappingObject(nodeId, port, circuitPackName, lcp0, null, null, null, null)); - client++; - //continue; - break; - - case XpdrNetwork: - case SwitchNetwork: - switch (port.getPortDirection()) { - - case Bidirectional: - String lcp = - createXpdrLogicalConnectionPort(1, line, StringConstants.NETWORK_TOKEN); - lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp); - mappingMap.put(lcp, - createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null, null, - null) - ); - line++; - break; - - case Rx: - case Tx: - StringBuilder circuitPackName2 = new StringBuilder(); - Ports port2 = getPort2(port, nodeId, circuitPackName, circuitPackName2, - circuitPackList, lcpMap); - - if (port2 == null) { - //key already present or an error occured and was logged - continue; - } - - putXpdrLcpsInMaps(line, nodeId, 1, null, - circuitPackName, circuitPackName2.toString(), port, port2, - lcpMap, mappingMap); - line += 2; - break; - - default: - LOG.error("{} : port {} on {} - unsupported Direction {}", - nodeId, port.getPortName(), circuitPackName, port.getPortDirection()); - } - break; - - default: - LOG.error("{} : port {} on {} - unsupported PortQual {}", - nodeId, port.getPortName(), circuitPackName, port.getPortQual()); - } + int[] counters = fillXpdrLcpsMaps(line, client, nodeId, + 1, null, circuitPackName, port, + circuitPackList, lcpMap, mappingMap); + line = counters[0]; + client = counters[1]; } } } else { @@ -343,66 +288,11 @@ public class PortMappingVersion221 { .findFirst().get().nonnullPorts().values().stream() .filter(p -> p.getPortName().equals(portName)) .findFirst().get(); - if (port.getPortQual() == null) { - LOG.warn("{} : port {} on {} - PortQual was not found", - nodeId, port.getPortName(), circuitPackName); - continue; - } - - switch (port.getPortQual()) { - - case XpdrClient: - case SwitchClient: - String lcp0 = - createXpdrLogicalConnectionPort(xponderNb, client, StringConstants.CLIENT_TOKEN); - lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp0); - mappingMap.put(lcp0, - createXpdrMappingObject(nodeId, port, circuitPackName, lcp0, null, null, null, null)); - client++; - //continue; - break; - - case XpdrNetwork: - case SwitchNetwork: - switch (port.getPortDirection()) { - - case Bidirectional: - String lcp = - createXpdrLogicalConnectionPort(xponderNb, line, StringConstants.NETWORK_TOKEN); - lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp); - mappingMap.put(lcp, - createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null, null, - xponderType)); - line++; - break; - - case Rx: - case Tx: - StringBuilder circuitPackName2 = new StringBuilder(); - Ports port2 = getPort2(port, nodeId, circuitPackName, circuitPackName2, - circuitPackList, lcpMap); - - if (port2 == null) { - //key already present or an error occured and was logged - continue; - } - - putXpdrLcpsInMaps(line, nodeId, xponderNb, xponderType, - circuitPackName, circuitPackName2.toString(), port, port2, - lcpMap, mappingMap); - line += 2; - break; - - default: - LOG.error("{} : port {} on {} - unsupported Direction {}", - nodeId, port.getPortName(), circuitPackName, port.getPortDirection()); - } - break; - - default: - LOG.error("{} : port {} on {} - unsupported PortQual {}", - nodeId, port.getPortName(), circuitPackName, port.getPortQual()); - } + int[] counters = fillXpdrLcpsMaps(line, client, nodeId, + xponderNb, xponderType, circuitPackName, port, + circuitPackList, lcpMap, mappingMap); + line = counters[0]; + client = counters[1]; } } } @@ -758,20 +648,22 @@ public class PortMappingVersion221 { return cpToDegreeList; } - private List getMcCapabilitiesList(Map degrees, List srgs, - String nodeId) { + private Map getMcCapabilities(Map degrees, + List srgs, String nodeId) { LOG.info("{} : Getting the MC capabilities for degrees", nodeId); - List mcCapabilitiesList = degrees.values().stream() - .map(degree -> createMcCapDegreeObject(degree, nodeId)).collect(Collectors.toList()); + Map mcCapabilities = degrees.values().stream() + .map(degree -> createMcCapDegreeObject(degree, nodeId)) + .collect(Collectors.toMap(McCapabilities::key, mcc -> mcc)); // Add the SRG mc-capabilities LOG.info("{} : Getting the MC capabilities for SRGs", nodeId); - mcCapabilitiesList.addAll(srgs.stream().map(srg -> createMcCapSrgObject(srg, nodeId)) - .collect(Collectors.toList())); - return mcCapabilitiesList; + mcCapabilities.putAll(srgs.stream().map(srg -> createMcCapSrgObject(srg, nodeId)) + .collect(Collectors.toMap(McCapabilities::key, mcCapabilities2 -> mcCapabilities2))); + return mcCapabilities; } private boolean postPortMapping(String nodeId, NodeInfo nodeInfo, List portMapList, - List cp2DegreeList, List splList, List mcCapList) { + List cp2DegreeList, List splList, + Map mcCapabilities) { NodesBuilder nodesBldr = new NodesBuilder().withKey(new NodesKey(nodeId)).setNodeId(nodeId); if (nodeInfo != null) { nodesBldr.setNodeInfo(nodeInfo); @@ -801,8 +693,8 @@ public class PortMappingVersion221 { } nodesBldr.setSwitchingPoolLcp(splMap); } - if (mcCapList != null) { - nodesBldr.setMcCapabilities(mcCapList); + if (mcCapabilities != null) { + nodesBldr.setMcCapabilities(mcCapabilities); } Map nodesList = new HashMap<>(); Nodes nodes = nodesBldr.build(); @@ -882,6 +774,12 @@ public class PortMappingVersion221 { .setSupportingCircuitPackName(circuitPackName) .setSupportingPort(port.getPortName()) .setPortDirection(port.getPortDirection().getName()); + if (port.getAdministrativeState() != null) { + mpBldr.setPortAdminState(port.getAdministrativeState().name()); + } + if (port.getOperationalState() != null) { + mpBldr.setPortOperState(port.getOperationalState().name()); + } if ((port.getInterfaces() == null) || (!logicalConnectionPoint.contains(StringConstants.TTP_TOKEN) @@ -960,6 +858,12 @@ public class PortMappingVersion221 { } mpBldr.setSupportedInterfaceCapability(supportedIntf); } + if (port.getAdministrativeState() != null) { + mpBldr.setPortAdminState(port.getAdministrativeState().name()); + } + if (port.getOperationalState() != null) { + mpBldr.setPortOperState(port.getOperationalState().name()); + } return mpBldr.build(); } @@ -1021,11 +925,87 @@ public class PortMappingVersion221 { return; } + private int[] fillXpdrLcpsMaps(int line, int client, String nodeId, + Integer xponderNb, XpdrNodeTypes xponderType, + String circuitPackName, Ports port, + List circuitPackList, Map lcpMap, Map mappingMap) { + if (port.getPortQual() == null) { + LOG.warn("{} : port {} on {} - PortQual was not found", + nodeId, port.getPortName(), circuitPackName); + return new int[] {line, client}; + } + + switch (port.getPortQual()) { + + case XpdrClient: + case SwitchClient: + String lcp0 = createXpdrLogicalConnectionPort(xponderNb, client, StringConstants.CLIENT_TOKEN); + lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp0); + mappingMap.put(lcp0, + createXpdrMappingObject(nodeId, port, circuitPackName, lcp0, null, null, null, null)); + client++; + break; + + case XpdrNetwork: + case SwitchNetwork: + line = fillXpdrNetworkLcpsMaps(line, nodeId, + xponderNb, xponderType, + circuitPackName, port, + circuitPackList, lcpMap, mappingMap); + break; + + default: + LOG.error("{} : port {} on {} - unsupported PortQual {}", + nodeId, port.getPortName(), circuitPackName, port.getPortQual()); + } + return new int[] {line, client}; + } + + private int fillXpdrNetworkLcpsMaps(int line, String nodeId, + Integer xponderNb, XpdrNodeTypes xponderType, + String circuitPackName, Ports port, + List circuitPackList, Map lcpMap, Map mappingMap) { + + switch (port.getPortDirection()) { + + case Bidirectional: + String lcp = createXpdrLogicalConnectionPort(xponderNb, line, StringConstants.NETWORK_TOKEN); + lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp); + mappingMap.put(lcp, + createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null, null, xponderType)); + line++; + break; + + case Rx: + case Tx: + StringBuilder circuitPackName2 = new StringBuilder(); + Ports port2 = getPort2(port, nodeId, circuitPackName, circuitPackName2, + circuitPackList, lcpMap); + + if (port2 == null) { + //key already present or an error occured and was logged + return line; + } + + putXpdrLcpsInMaps(line, nodeId, xponderNb, xponderType, + circuitPackName, circuitPackName2.toString(), port, port2, + lcpMap, mappingMap); + line += 2; + break; + + default: + LOG.error("{} : port {} on {} - unsupported Direction {}", + nodeId, port.getPortName(), circuitPackName, port.getPortDirection()); + } + + return line; + } - private boolean createMcCapabilitiesList(String nodeId, Info deviceInfo, List mcCapabilitiesList) { + private boolean createMcCapabilitiesList(String nodeId, Info deviceInfo, + Map mcCapabilitiesMap) { Map degrees = getDegreesMap(nodeId, deviceInfo); List srgs = getSrgs(nodeId, deviceInfo); - mcCapabilitiesList.addAll(getMcCapabilitiesList(degrees, srgs, nodeId)); + mcCapabilitiesMap.putAll(getMcCapabilities(degrees, srgs, nodeId)); return true; }