X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=common%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Fcommon%2Fmapping%2FPortMappingVersion710.java;h=9eb0cf9f6048c41db228e857129f8638794782d1;hb=9732c621dfe6aa4901d2bc763a17a667a386ed07;hp=077c949550ee54e3a8053534405cf4ff5b603e79;hpb=36238ab5a0c451835fe613f01f53608151345c89;p=transportpce.git diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java index 077c94955..9eb0cf9f6 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java @@ -89,16 +89,14 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev191129.OtnO import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev200529.Protocols1; import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev200529.lldp.container.Lldp; import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev200529.lldp.container.lldp.PortConfig; -import org.opendaylight.yang.gen.v1.http.org.openroadm.port.capability.rev200529.Ports1; -import org.opendaylight.yang.gen.v1.http.org.openroadm.port.capability.rev200529.port.capability.grp.port.capabilities.SupportedInterfaceCapability; -import org.opendaylight.yang.gen.v1.http.org.openroadm.port.capability.rev200529.port.capability.grp.port.capabilities.SupportedInterfaceCapabilityKey; -import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327.SupportedIfCapability; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.Uint16; import org.opendaylight.yangtools.yang.common.Uint32; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +// FIXME: many common pieces of code between PortMapping Versions 121 and 221 and 710 +// some mutualization would be helpful public class PortMappingVersion710 { private static final Logger LOG = LoggerFactory.getLogger(PortMappingVersion710.class); @@ -121,14 +119,12 @@ public class PortMappingVersion710 { Optional deviceInfoOptional = this.deviceTransactionManager.getDataFromDevice( nodeId, LogicalDatastoreType.OPERATIONAL, infoIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - Info deviceInfo; - NodeInfo nodeInfo; if (!deviceInfoOptional.isPresent()) { LOG.warn("Device info subtree is absent for {}", nodeId); return false; } - deviceInfo = deviceInfoOptional.get(); - nodeInfo = createNodeInfo(deviceInfo, nodeId); + Info deviceInfo = deviceInfoOptional.get(); + NodeInfo nodeInfo = createNodeInfo(deviceInfo); if (nodeInfo == null) { return false; } @@ -211,25 +207,22 @@ public class PortMappingVersion710 { Optional deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - OrgOpenroadmDevice device = null; if (!deviceObject.isPresent()) { LOG.error("Impossible to get device configuration for node {}", nodeId); return false; } - device = deviceObject.get(); + OrgOpenroadmDevice device = deviceObject.get(); + if (device.getCircuitPacks() == null) { + LOG.warn("Circuit Packs are not present for {}", nodeId); + return false; + } // Variable to keep track of number of line ports int line = 1; // Variable to keep track of number of client ports int client = 1; Map lcpMap = new HashMap<>(); Map mappingMap = new HashMap<>(); - - List circuitPackList = null; - if (device.getCircuitPacks() == null) { - LOG.warn("Circuit Packs are not present for {}", nodeId); - return false; - } - circuitPackList = new ArrayList<>(deviceObject.get().nonnullCircuitPacks().values()); + List circuitPackList = new ArrayList<>(device.nonnullCircuitPacks().values()); circuitPackList.sort(Comparator.comparing(CircuitPack::getCircuitPackName)); if (device.getXponder() == null) { @@ -424,31 +417,33 @@ public class PortMappingVersion710 { } } - if (device.getConnectionMap() != null) { + if (device.getConnectionMap() == null) { + LOG.warn("No connection-map inside device configuration"); + } else { Collection connectionMap = deviceObject.get().nonnullConnectionMap().values(); - String slcp = null; - String dlcp = null; for (ConnectionMap cm : connectionMap) { + String slcp = null; + String dlcp = null; String skey = cm.getSource().getCircuitPackName() + "+" + cm.getSource().getPortName(); if (lcpMap.containsKey(skey)) { slcp = lcpMap.get(skey); } Destination destination0 = cm.nonnullDestination().values().iterator().next(); String dkey = destination0.getCircuitPackName() + "+" + destination0.getPortName(); + if (slcp == null) { + LOG.error("Error in connection-map analysis for source {} and destination (circuitpack+port) {}", + skey, dkey); + continue; + } if (lcpMap.containsKey(dkey)) { dlcp = lcpMap.get(dkey); } - if (slcp != null) { - Mapping mapping = mappingMap.get(slcp); - mappingMap.remove(slcp); - portMapList.add(createXpdrMappingObject(nodeId, null, null, null, null, mapping, dlcp, null)); - } else { - LOG.error("Error in connection-map analysis"); - } + Mapping mapping = mappingMap.get(slcp); + mappingMap.remove(slcp); + portMapList.add(createXpdrMappingObject(nodeId, null, null, null, null, mapping, dlcp, null)); } - } else { - LOG.warn("No connection-map inside device configuration"); } + if (device.getOduSwitchingPools() != null) { Collection oduSwithcingPools = device.nonnullOduSwitchingPools().values(); List switchingPoolList = new ArrayList<>(); @@ -857,11 +852,10 @@ public class PortMappingVersion710 { Nodes nodes = nodesBldr.build(); nodesList.put(nodes.key(),nodes); - NetworkBuilder nwBldr = new NetworkBuilder().setNodes(nodesList); + Network network = new NetworkBuilder().setNodes(nodesList).build(); final WriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction(); InstanceIdentifier nodesIID = InstanceIdentifier.builder(Network.class).build(); - Network network = nwBldr.build(); writeTransaction.merge(LogicalDatastoreType.CONFIGURATION, nodesIID, network); FluentFuture commit = writeTransaction.commit(); try { @@ -884,24 +878,12 @@ public class PortMappingVersion710 { } private List createMcCapDegreeObject(List degrees, - Map mcCapabilityProfileMap, String nodeId) { + Map mcCapabilityProfileMap, String nodeId) { + List mcCapabilitiesList = new ArrayList<>(); for (Degree degree : degrees) { - if (!degree.getMcCapabilityProfileName().isEmpty()) { - for (String mcCapabilityProfileName : degree.getMcCapabilityProfileName()) { - McCapabilityProfileKey mcKey = new McCapabilityProfileKey(mcCapabilityProfileName); - McCapabilityProfile mcCapabilityProfile = mcCapabilityProfileMap.get(mcKey); - String mcNodeName = "DEG" + degree.getDegreeNumber().toString() + "-TTP-" + mcCapabilityProfile; - McCapabilitiesBuilder mcCapabilitiesBuilder = new McCapabilitiesBuilder() - .withKey(new McCapabilitiesKey(mcNodeName)) - .setMcNodeName(mcNodeName); - mcCapabilitiesBuilder - .setCenterFreqGranularity(mcCapabilityProfile.getCenterFreqGranularity()) - .setSlotWidthGranularity(mcCapabilityProfile.getSlotWidthGranularity()); - mcCapabilitiesList.add(mcCapabilitiesBuilder.build()); - } // end for - } - else { + + if ((degree.getMcCapabilityProfileName() == null) || (degree.getMcCapabilityProfileName().isEmpty())) { LOG.warn("No MC profiles are found for node {} on degree {}", nodeId, degree.getDegreeNumber()); LOG.warn("Assuming the fixed grid capabilities for degree {}", degree.getDegreeNumber()); LOG.warn("Assuming a default MC profile-name for degree {}", degree.getDegreeNumber()); @@ -912,30 +894,34 @@ public class PortMappingVersion710 { mcCapabilitiesBuilder .setCenterFreqGranularity(FrequencyGHz.getDefaultInstance("50")) .setSlotWidthGranularity(FrequencyGHz.getDefaultInstance("50")); + mcCapabilitiesList.add(mcCapabilitiesBuilder.build()); + continue; + } + + for (String mcCapabilityProfileName : degree.getMcCapabilityProfileName()) { + McCapabilityProfileKey mcKey = new McCapabilityProfileKey(mcCapabilityProfileName); + McCapabilityProfile mcCapabilityProfile = mcCapabilityProfileMap.get(mcKey); + String mcNodeName = "DEG" + degree.getDegreeNumber().toString() + "-TTP-" + mcCapabilityProfile; + McCapabilitiesBuilder mcCapabilitiesBuilder = new McCapabilitiesBuilder() + .withKey(new McCapabilitiesKey(mcNodeName)) + .setMcNodeName(mcNodeName); + mcCapabilitiesBuilder + .setCenterFreqGranularity(mcCapabilityProfile.getCenterFreqGranularity()) + .setSlotWidthGranularity(mcCapabilityProfile.getSlotWidthGranularity()); + mcCapabilitiesList.add(mcCapabilitiesBuilder.build()); } + } return mcCapabilitiesList; } private List createMcCapSrgObject(List srgs, - Map mcCapabilityProfileMap, String nodeId) { + Map mcCapabilityProfileMap, String nodeId) { + List mcCapabilitiesList = new ArrayList<>(); for (SharedRiskGroup srg : srgs) { - if (!srg.getMcCapabilityProfileName().isEmpty()) { - for (String mcCapabilityProfileName : srg.getMcCapabilityProfileName()) { - McCapabilityProfileKey mcKey = new McCapabilityProfileKey(mcCapabilityProfileName); - McCapabilityProfile mcCapabilityProfile = mcCapabilityProfileMap.get(mcKey); - String mcNodeName = "SRG" + srg.getSrgNumber().toString() + "-PP-" + mcCapabilityProfile; - McCapabilitiesBuilder mcCapabilitiesBuilder = new McCapabilitiesBuilder() - .withKey(new McCapabilitiesKey(mcNodeName)) - .setMcNodeName(mcNodeName); - mcCapabilitiesBuilder - .setCenterFreqGranularity(mcCapabilityProfile.getCenterFreqGranularity()) - .setSlotWidthGranularity(mcCapabilityProfile.getSlotWidthGranularity()); - mcCapabilitiesList.add(mcCapabilitiesBuilder.build()); - } // end for - } - else { + + if ((srg.getMcCapabilityProfileName() == null) || (srg.getMcCapabilityProfileName().isEmpty())) { LOG.warn("No MC profiles are found for node {} on SRG {}", nodeId, srg.getSrgNumber()); LOG.warn("Assuming the fixed grid capabilities for SRG {}", srg.getSrgNumber()); LOG.warn("Assuming a default MC profile-name for SRG {}", srg.getSrgNumber()); @@ -946,17 +932,35 @@ public class PortMappingVersion710 { mcCapabilitiesBuilder .setCenterFreqGranularity(FrequencyGHz.getDefaultInstance("50")) .setSlotWidthGranularity(FrequencyGHz.getDefaultInstance("50")); + mcCapabilitiesList.add(mcCapabilitiesBuilder.build()); + continue; + } + + for (String mcCapabilityProfileName : srg.getMcCapabilityProfileName()) { + McCapabilityProfileKey mcKey = new McCapabilityProfileKey(mcCapabilityProfileName); + McCapabilityProfile mcCapabilityProfile = mcCapabilityProfileMap.get(mcKey); + String mcNodeName = "SRG" + srg.getSrgNumber().toString() + "-PP-" + mcCapabilityProfile; + McCapabilitiesBuilder mcCapabilitiesBuilder = new McCapabilitiesBuilder() + .withKey(new McCapabilitiesKey(mcNodeName)) + .setMcNodeName(mcNodeName); + mcCapabilitiesBuilder + .setCenterFreqGranularity(mcCapabilityProfile.getCenterFreqGranularity()) + .setSlotWidthGranularity(mcCapabilityProfile.getSlotWidthGranularity()); + mcCapabilitiesList.add(mcCapabilitiesBuilder.build()); } } return mcCapabilitiesList; } private Mapping createMappingObject(String nodeId, Ports port, String circuitPackName, - String logicalConnectionPoint) { - MappingBuilder mpBldr = new MappingBuilder(); - mpBldr.withKey(new MappingKey(logicalConnectionPoint)).setLogicalConnectionPoint(logicalConnectionPoint) - .setSupportingCircuitPackName(circuitPackName).setSupportingPort(port.getPortName()) - .setPortDirection(port.getPortDirection().getName()); + String logicalConnectionPoint) { + + MappingBuilder mpBldr = new MappingBuilder() + .withKey(new MappingKey(logicalConnectionPoint)) + .setLogicalConnectionPoint(logicalConnectionPoint) + .setSupportingCircuitPackName(circuitPackName) + .setSupportingPort(port.getPortName()) + .setPortDirection(port.getPortDirection().getName()); // Get OMS and OTS interface provisioned on the TTP's if ((logicalConnectionPoint.contains(StringConstants.TTP_TOKEN) @@ -993,51 +997,35 @@ public class PortMappingVersion710 { } private Mapping createXpdrMappingObject(String nodeId, Ports ports, String circuitPackName, - String logicalConnectionPoint, String partnerLcp, Mapping mapping, String connectionMapLcp, - XpdrNodeTypes xpdrNodeType) { - MappingBuilder mpBldr; + String logicalConnectionPoint, String partnerLcp, Mapping mapping, String connectionMapLcp, + XpdrNodeTypes xpdrNodeType) { + if (mapping != null && connectionMapLcp != null) { // update existing mapping - mpBldr = new MappingBuilder(mapping).setConnectionMapLcp(connectionMapLcp); - } else { - // create a new mapping - String nodeIdLcp = nodeId + "-" + logicalConnectionPoint; - mpBldr = new MappingBuilder() + return new MappingBuilder(mapping).setConnectionMapLcp(connectionMapLcp).build(); + } + + // create a new mapping + String nodeIdLcp = nodeId + "-" + logicalConnectionPoint; + MappingBuilder mpBldr = new MappingBuilder() .withKey(new MappingKey(logicalConnectionPoint)) .setLogicalConnectionPoint(logicalConnectionPoint) .setSupportingCircuitPackName(circuitPackName) .setSupportingPort(ports.getPortName()) .setPortDirection(ports.getPortDirection().getName()) .setLcpHashVal(FnvUtils.fnv1_64(nodeIdLcp)); - - if (ports.getPortQual() != null) { - mpBldr.setPortQual(ports.getPortQual().getName()); - } - - if (ports.augmentation(Ports1.class).getPortCapabilities().getSupportedInterfaceCapability() != null) { - mpBldr.setSupportedInterfaceCapability(getSupportedIfCapability(ports)); - } - - if (xpdrNodeType != null) { - mpBldr.setXponderType(xpdrNodeType); - } - if (partnerLcp != null) { - mpBldr.setPartnerLcp(partnerLcp); - } + if (ports.getPortQual() != null) { + mpBldr.setPortQual(ports.getPortQual().getName()); + } + if (xpdrNodeType != null) { + mpBldr.setXponderType(xpdrNodeType); + } + if (partnerLcp != null) { + mpBldr.setPartnerLcp(partnerLcp); } return mpBldr.build(); } - - private List> getSupportedIfCapability(Ports ports) { - Map supportedInterfaceCapabilityMap = - ports.augmentation(Ports1.class).getPortCapabilities().getSupportedInterfaceCapability(); - List> supportedInterfaceCapabilityList = new ArrayList<>(); - - supportedInterfaceCapabilityMap.forEach((k, v) -> supportedInterfaceCapabilityList.add(k.getIfCapType())); - return supportedInterfaceCapabilityList; - } - private boolean createMcCapabilitiesList(String nodeId, Info deviceInfo, List mcCapabilitiesList) { List degrees = getDegrees(nodeId, deviceInfo); List srgs = getSrgs(nodeId, deviceInfo); @@ -1179,29 +1167,29 @@ public class PortMappingVersion710 { return true; } - private NodeInfo createNodeInfo(Info deviceInfo, String nodeId) { - NodeInfoBuilder nodeInfoBldr = new NodeInfoBuilder(); + private NodeInfo createNodeInfo(Info deviceInfo) { + if (deviceInfo.getNodeType() == null) { // TODO make mandatory in yang LOG.error("Node type field is missing"); return null; } - nodeInfoBldr.setOpenroadmVersion(OpenroadmVersion._710).setNodeType(deviceInfo.getNodeType()); + NodeInfoBuilder nodeInfoBldr = new NodeInfoBuilder() + .setOpenroadmVersion(OpenroadmVersion._710) + .setNodeType(deviceInfo.getNodeType()); + // TODO: 221 versions expects an int value - need to check whether it is bug or an evolution here if (deviceInfo.getClli() != null && !deviceInfo.getClli().isEmpty()) { nodeInfoBldr.setNodeClli(deviceInfo.getClli()); } else { nodeInfoBldr.setNodeClli("defaultCLLI"); } - if (deviceInfo.getModel() != null) { nodeInfoBldr.setNodeModel(deviceInfo.getModel()); } - if (deviceInfo.getVendor() != null) { nodeInfoBldr.setNodeVendor(deviceInfo.getVendor()); } - if (deviceInfo.getIpAddress() != null) { nodeInfoBldr.setNodeIpAddress(deviceInfo.getIpAddress()); }