From e4254e34b1acd2c1e5218f09828a4654601407ae Mon Sep 17 00:00:00 2001 From: "guillaume.lambert" Date: Thu, 12 Nov 2020 11:20:03 +0100 Subject: [PATCH] Align and improve Portmapping versions Step 1 - add FIXME comments to warn about code duplications at the beginning of the classes - minor improvements and alignment over the 3 classes - remove a useless argument from createNodeInfo versions 2.2.1 and 7.1.0 - point with a TODO comment in the version 1.2.1 createNodeInfo method the difference of protection there with the 2 other versions JIRA: TRNSPRTPCE-353 Signed-off-by: guillaume.lambert Change-Id: I72ff9f05ca51caecb8ec41b6d2f666c6bf50ccbd --- .../common/mapping/PortMappingVersion121.java | 197 +++++++++--------- .../common/mapping/PortMappingVersion221.java | 103 +++++---- .../common/mapping/PortMappingVersion710.java | 94 ++++----- 3 files changed, 194 insertions(+), 200 deletions(-) diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java index d7def4d7a..f96f5125a 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java @@ -79,6 +79,8 @@ 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 PortMappingVersion121 { private static final Logger LOG = LoggerFactory.getLogger(PortMappingVersion121.class); @@ -100,20 +102,16 @@ public class PortMappingVersion121 { InstanceIdentifier infoIID = InstanceIdentifier.create(OrgOpenroadmDevice.class).child(Info.class); 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()) { - deviceInfo = deviceInfoOptional.get(); - nodeInfo = createNodeInfo(deviceInfo); - if (nodeInfo == null) { - return false; - } else { - postPortMapping(nodeId, nodeInfo, null, null); - } - } else { + if (!deviceInfoOptional.isPresent()) { LOG.warn("Device info subtree is absent for {}", nodeId); return false; } + Info deviceInfo = deviceInfoOptional.get(); + NodeInfo nodeInfo = createNodeInfo(deviceInfo); + if (nodeInfo == null) { + return false; + } + postPortMapping(nodeId, nodeInfo, null, null); switch (deviceInfo.getNodeType()) { @@ -150,33 +148,32 @@ public class PortMappingVersion121 { InstanceIdentifier portIId = InstanceIdentifier.create(OrgOpenroadmDevice.class) .child(CircuitPacks.class, new CircuitPacksKey(oldMapping.getSupportingCircuitPackName())) .child(Ports.class, new PortsKey(oldMapping.getSupportingPort())); - if ((oldMapping != null) && (nodeId != null)) { - try { - Optional portObject = deviceTransactionManager.getDataFromDevice(nodeId, - LogicalDatastoreType.OPERATIONAL, portIId, Timeouts.DEVICE_READ_TIMEOUT, - Timeouts.DEVICE_READ_TIMEOUT_UNIT); - if (portObject.isPresent()) { - Ports port = portObject.get(); - Mapping newMapping = createMappingObject(nodeId, port, oldMapping.getSupportingCircuitPackName(), - oldMapping.getLogicalConnectionPoint()); - LOG.info("Updating old mapping Data {} for {} of {} by new mapping data {}", oldMapping, - oldMapping.getLogicalConnectionPoint(), nodeId, newMapping); - final WriteTransaction writeTransaction = this.dataBroker.newWriteOnlyTransaction(); - InstanceIdentifier mapIID = InstanceIdentifier.create(Network.class) - .child(Nodes.class, new NodesKey(nodeId)) - .child(Mapping.class, new MappingKey(oldMapping.getLogicalConnectionPoint())); - writeTransaction.merge(LogicalDatastoreType.CONFIGURATION, mapIID, newMapping); - FluentFuture commit = writeTransaction.commit(); - commit.get(); - return true; - } - return false; - } catch (InterruptedException | ExecutionException e) { - LOG.error("Error updating Mapping {} for node {}", oldMapping.getLogicalConnectionPoint(), nodeId, e); + if ((oldMapping == null) || (nodeId == null)) { + LOG.error("Impossible to update mapping"); + return false; + } + try { + Optional portObject = deviceTransactionManager.getDataFromDevice(nodeId, + LogicalDatastoreType.OPERATIONAL, portIId, Timeouts.DEVICE_READ_TIMEOUT, + Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (!portObject.isPresent()) { return false; } - } else { - LOG.error("Impossible to update mapping"); + Ports port = portObject.get(); + Mapping newMapping = createMappingObject(nodeId, port, oldMapping.getSupportingCircuitPackName(), + oldMapping.getLogicalConnectionPoint()); + LOG.info("Updating old mapping Data {} for {} of {} by new mapping data {}", + oldMapping, oldMapping.getLogicalConnectionPoint(), nodeId, newMapping); + final WriteTransaction writeTransaction = this.dataBroker.newWriteOnlyTransaction(); + InstanceIdentifier mapIID = InstanceIdentifier.create(Network.class) + .child(Nodes.class, new NodesKey(nodeId)) + .child(Mapping.class, new MappingKey(oldMapping.getLogicalConnectionPoint())); + writeTransaction.merge(LogicalDatastoreType.CONFIGURATION, mapIID, newMapping); + FluentFuture commit = writeTransaction.commit(); + commit.get(); + return true; + } catch (InterruptedException | ExecutionException e) { + LOG.error("Error updating Mapping {} for node {}", oldMapping.getLogicalConnectionPoint(), nodeId, e); return false; } } @@ -187,22 +184,22 @@ public class PortMappingVersion121 { Optional deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - + if (!deviceObject.isPresent()) { + LOG.error("Impossible to get device configuration for node {}", nodeId); + return false; + } + 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; - if (!deviceObject.isPresent() || deviceObject.get().getCircuitPacks() == null) { - LOG.warn("Circuit Packs are not present for {}", nodeId); - return false; - // TODO return false or continue? - } Map lcpMap = new HashMap<>(); Map mappingMap = new HashMap<>(); - - // com.google.common.collect.ImmutableList implementation of List - List circuitPackList = new ArrayList<>(deviceObject.get() - .nonnullCircuitPacks().values()); + List circuitPackList = new ArrayList<>(device.nonnullCircuitPacks().values()); circuitPackList.sort(Comparator.comparing(CircuitPack::getCircuitPackName)); for (CircuitPacks cp : circuitPackList) { @@ -583,8 +580,7 @@ public class PortMappingVersion121 { private boolean postPortMapping(String nodeId, NodeInfo nodeInfo, List portMapList, List cp2DegreeList) { - NodesBuilder nodesBldr = new NodesBuilder(); - nodesBldr.withKey(new NodesKey(nodeId)).setNodeId(nodeId); + NodesBuilder nodesBldr = new NodesBuilder().withKey(new NodesKey(nodeId)).setNodeId(nodeId); if (nodeInfo != null) { nodesBldr.setNodeInfo(nodeInfo); } @@ -611,18 +607,15 @@ public class PortMappingVersion121 { Nodes nodes = nodesBldr.build(); nodesList.put(nodes.key(),nodes); - NetworkBuilder nwBldr = new NetworkBuilder(); - nwBldr.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 { commit.get(); return true; - } catch (InterruptedException | ExecutionException e) { LOG.warn("Failed to post {}", network, e); return false; @@ -640,11 +633,14 @@ public class PortMappingVersion121 { } 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) && (port.getInterfaces() != null)) { @@ -675,30 +671,29 @@ public class PortMappingVersion121 { } private Mapping createXpdrMappingObject(String nodeId, Ports port, String circuitPackName, - String logicalConnectionPoint, String partnerLcp, Mapping mapping, String assoLcp) { - MappingBuilder mpBldr; + String logicalConnectionPoint, String partnerLcp, Mapping mapping, String assoLcp) { if (mapping != null && assoLcp != null) { // update existing mapping - mpBldr = new MappingBuilder(mapping); - mpBldr.setConnectionMapLcp(assoLcp); - } else { - // create a new mapping - mpBldr = new MappingBuilder(); - String nodeIdLcp = nodeId + "-" + logicalConnectionPoint; - mpBldr.withKey(new MappingKey(logicalConnectionPoint)) + return new MappingBuilder(mapping).setConnectionMapLcp(assoLcp).build(); + } + + // create a new mapping + String nodeIdLcp = nodeId + "-" + logicalConnectionPoint; + MappingBuilder mpBldr = new MappingBuilder() + .withKey(new MappingKey(logicalConnectionPoint)) .setLogicalConnectionPoint(logicalConnectionPoint) .setSupportingCircuitPackName(circuitPackName) .setSupportingPort(port.getPortName()) .setPortDirection(port.getPortDirection().getName()) .setLcpHashVal(FnvUtils.fnv1_64(nodeIdLcp)); - if (port.getPortQual() != null) { - mpBldr.setPortQual(port.getPortQual().getName()); - } - if (partnerLcp != null) { - mpBldr.setPartnerLcp(partnerLcp); - } + if (port.getPortQual() != null) { + mpBldr.setPortQual(port.getPortQual().getName()); } + if (partnerLcp != null) { + mpBldr.setPartnerLcp(partnerLcp); + } + return mpBldr.build(); } @@ -838,35 +833,41 @@ public class PortMappingVersion121 { } private NodeInfo createNodeInfo(Info deviceInfo) { - NodeInfoBuilder nodeInfoBldr = new NodeInfoBuilder(); - if (deviceInfo.getNodeType() != null) { - nodeInfoBldr.setOpenroadmVersion(OpenroadmVersion._121); - if (deviceInfo.getNodeType().getIntValue() == 1) { - nodeInfoBldr.setNodeType(NodeTypes.Rdm); - } else if (deviceInfo.getNodeType().getIntValue() == 2) { - nodeInfoBldr.setNodeType(NodeTypes.Xpdr); - } else { - LOG.error("Error with node-type of {}", deviceInfo.getNodeId()); - } - 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()); - } - } else { - // TODO make mandatory in yang + + if (deviceInfo.getNodeType() == null) { + // TODO make mandatory in yang LOG.error("Node type field is missing"); return null; } + + NodeInfoBuilder nodeInfoBldr = new NodeInfoBuilder() + .setOpenroadmVersion(OpenroadmVersion._121); + // TODO check if we can use here .setNodeType(NodeTypes.forValue(..) such as with 221 + switch (deviceInfo.getNodeType().getIntValue()) { + case 1: + case 2: + nodeInfoBldr.setNodeType(NodeTypes.forValue(deviceInfo.getNodeType().getIntValue())); + break; + default: + LOG.error("Error with node-type of {}", deviceInfo.getNodeId()); + // TODO: is this protection useful ? it is not present in Portmapping 221 + } + 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()); + } + return nodeInfoBldr.build(); } + } 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 9669c3420..f0467ae02 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 @@ -96,6 +96,8 @@ 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 PortMappingVersion221 { private static final Logger LOG = LoggerFactory.getLogger(PortMappingVersion221.class); @@ -118,14 +120,12 @@ public class PortMappingVersion221 { 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; } @@ -208,25 +208,22 @@ public class PortMappingVersion221 { 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) { @@ -834,11 +831,10 @@ public class PortMappingVersion221 { 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 { @@ -909,11 +905,14 @@ public class PortMappingVersion221 { } 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) @@ -952,42 +951,42 @@ public class PortMappingVersion221 { private Mapping createXpdrMappingObject(String nodeId, Ports port, String circuitPackName, String logicalConnectionPoint, String partnerLcp, Mapping mapping, String connectionMapLcp, XpdrNodeTypes xpdrNodeType) { - MappingBuilder mpBldr; + 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(port.getPortName()) .setPortDirection(port.getPortDirection().getName()) .setLcpHashVal(FnvUtils.fnv1_64(nodeIdLcp)); - if (port.getPortQual() != null) { - mpBldr.setPortQual(port.getPortQual().getName()); - } - if (xpdrNodeType != null) { - mpBldr.setXponderType( - org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129 - .XpdrNodeTypes.forValue(xpdrNodeType.getIntValue())); - } - if (partnerLcp != null) { - mpBldr.setPartnerLcp(partnerLcp); - } - if (port.getSupportedInterfaceCapability() != null) { - List> supportedIntf = new ArrayList<>(); - for (Class sup: port.getSupportedInterfaceCapability()) { - Class sup1 = (Class> supportedIntf = new ArrayList<>(); + for (Class sup: port.getSupportedInterfaceCapability()) { + Class sup1 = (Class) sup; - supportedIntf.add(sup1); - } - mpBldr.setSupportedInterfaceCapability(supportedIntf); + supportedIntf.add(sup1); } + mpBldr.setSupportedInterfaceCapability(supportedIntf); } return mpBldr.build(); } @@ -1132,30 +1131,28 @@ public class PortMappingVersion221 { 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._221).setNodeType(NodeTypes.forValue(deviceInfo - .getNodeType().getIntValue())); + NodeInfoBuilder nodeInfoBldr = new NodeInfoBuilder() + .setOpenroadmVersion(OpenroadmVersion._221) + .setNodeType(NodeTypes.forValue(deviceInfo.getNodeType().getIntValue())); 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()); } 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..0987dfe7f 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 @@ -99,6 +99,8 @@ 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 +123,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 +211,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) { @@ -857,11 +854,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 { @@ -952,11 +948,14 @@ public class PortMappingVersion710 { } 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,37 +992,34 @@ 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 (ports.augmentation(Ports1.class).getPortCapabilities().getSupportedInterfaceCapability() != null) { + mpBldr.setSupportedInterfaceCapability(getSupportedIfCapability(ports)); + } + if (xpdrNodeType != null) { + mpBldr.setXponderType(xpdrNodeType); + } + if (partnerLcp != null) { + mpBldr.setPartnerLcp(partnerLcp); } return mpBldr.build(); } @@ -1179,29 +1175,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()); } -- 2.36.6