X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=inventory%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Finventory%2FINode121.java;h=1016d65a46130ca55382081f809848b796b53910;hb=refs%2Fchanges%2F46%2F100646%2F27;hp=9d7aa642334dfeb43684d417363265b8353fca84;hpb=fc6c8f09fbd017f11100e72cdb674ee104e7c748;p=transportpce.git diff --git a/inventory/src/main/java/org/opendaylight/transportpce/inventory/INode121.java b/inventory/src/main/java/org/opendaylight/transportpce/inventory/INode121.java index 9d7aa6423..1016d65a4 100644 --- a/inventory/src/main/java/org/opendaylight/transportpce/inventory/INode121.java +++ b/inventory/src/main/java/org/opendaylight/transportpce/inventory/INode121.java @@ -17,49 +17,75 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.Map; import java.util.Optional; import java.util.concurrent.ExecutionException; import javax.sql.DataSource; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.Timeouts; import org.opendaylight.transportpce.common.device.DeviceTransactionManager; import org.opendaylight.transportpce.inventory.query.Queries; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceData; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.CpSlots; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.CpSlotsKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.Ports; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.PortsKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.packs.CircuitPacks; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.packs.CircuitPacksKey; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.ConnectionPorts; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.degree.ConnectionPortsKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.external.links.ExternalLink; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.external.links.ExternalLinkKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.Interface; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.interfaces.grp.InterfaceKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.internal.links.InternalLink; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.internal.links.InternalLinkKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.ConnectionMap; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.ConnectionMapKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.Degree; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.DegreeKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.Info; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.Protocols; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnections; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.RoadmConnectionsKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.SharedRiskGroup; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.SharedRiskGroupKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.physical.links.PhysicalLink; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.physical.links.PhysicalLinkKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.shelf.Slots; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.shelf.SlotsKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.shelves.Shelves; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.shelves.ShelvesKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.ethernet.interfaces.rev161014.Interface1; import org.opendaylight.yang.gen.v1.http.org.openroadm.ethernet.interfaces.rev161014.ethernet.container.EthernetBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.Protocols1; import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.PortConfig; +import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.PortConfigKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.nbr.list.IfName; +import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.nbr.list.IfNameKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.och.container.OchBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.transport.interfaces.rev161014.ots.container.OtsBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.odu.attributes.Tcm; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.odu.attributes.TcmKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.odu.container.OduBuilder; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.opu.opu.msi.ExpMsi; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.opu.opu.msi.ExpMsiKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.opu.opu.msi.RxMsi; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.opu.opu.msi.RxMsiKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.opu.opu.msi.TxMsi; +import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.odu.interfaces.rev161014.opu.opu.msi.TxMsiKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.otu.interfaces.rev161014.otu.container.OtuBuilder; -import org.opendaylight.yang.gen.v1.http.org.openroadm.rstp.rev161014.rstp.bridge.port.attr.RstpBridgePortTable; -import org.opendaylight.yang.gen.v1.http.org.openroadm.rstp.rev161014.rstp.container.rstp.RstpBridgeInstance; import org.opendaylight.yang.gen.v1.http.org.openroadm.wavelength.map.rev161014.wavelength.map.g.Wavelengths; +import org.opendaylight.yang.gen.v1.http.org.openroadm.wavelength.map.rev161014.wavelength.map.g.WavelengthsKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@edu.umd.cs.findbugs.annotations.SuppressFBWarnings( + value = "SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING", + justification = "TODO review the SQL statement generation process") public class INode121 { private static final Logger LOG = LoggerFactory.getLogger(INode121.class); @@ -74,22 +100,24 @@ public class INode121 { public boolean addNode(String deviceId) { - InstanceIdentifier infoIID = InstanceIdentifier.create(OrgOpenroadmDevice.class).child(Info.class); + InstanceIdentifier infoIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Info.class) + .build(); Optional infoOpt = deviceTransactionManager.getDataFromDevice(deviceId, LogicalDatastoreType.OPERATIONAL, infoIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); Info deviceInfo; - if (infoOpt.isPresent()) { - deviceInfo = infoOpt.get(); - } else { + if (!infoOpt.isPresent()) { LOG.warn("Could not get device info from DataBroker"); return false; } + deviceInfo = infoOpt.get(); boolean sqlResult = false; String query = Queries.getQuery().deviceInfoInsert().get(); LOG.info("Running {} query ", query); try (Connection connection = dataSource.getConnection(); - PreparedStatement preparedStatement = connection.prepareStatement(query)) { + PreparedStatement preparedStatement = connection.prepareStatement(query)) { Object[] prepareParameters = prepareDeviceInfoParameters(deviceInfo); for (int i = 0; i < prepareParameters.length; i++) { LOG.debug("Parameter {} has value {}", i + 1, prepareParameters[i]); @@ -148,12 +176,8 @@ public class INode121 { persistDevConnectionMap(deviceId, connection); LOG.debug("iNode persist Connection Map call complete"); - } catch (SQLException e) { - LOG.error(e.getMessage(), e); - } catch (InterruptedException e) { - LOG.error(e.getMessage(), e); - } catch (ExecutionException e) { - LOG.error(e.getMessage(), e); + } catch (SQLException | InterruptedException | ExecutionException e) { + LOG.error("Something wrong when storing node into DB", e); } return sqlResult; } @@ -172,23 +196,27 @@ public class INode121 { } } } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when fetching node in DB", e); } - return nodeExists == 0 ? false : true; + return nodeExists != 0; } public void getRoadmShelves(String nodeId) throws InterruptedException, ExecutionException { - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); + InstanceIdentifier deviceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .build(); Optional deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - - LOG.info("Shelves size {}", deviceObject.get().getShelves().size()); + if (!deviceObject.isPresent()) { + return; + } + Map shelvesMap = deviceObject.get().nonnullShelves(); + LOG.info("Shelves size {}", shelvesMap.size()); try (Connection connection = requireNonNull(dataSource.getConnection())) { - for (int i = 0; i < deviceObject.get().getShelves().size(); i++) { - Shelves shelve = deviceObject.get().getShelves().get(i); + for (Map.Entry shelveEntry : shelvesMap.entrySet()) { + Shelves shelve = shelveEntry.getValue(); String shelfName = shelve.getShelfName(); - LOG.info("Getting Shelve Details of {}", shelfName); if (shelve.getSlots() != null) { LOG.info("Slot Size {} ", shelve.getSlots().size()); @@ -200,12 +228,14 @@ public class INode121 { persistShelves(nodeId, connection, shelve); } } catch (SQLException e1) { - LOG.error(e1.getMessage(), e1); + LOG.error("Something wrong when fetching ROADM shelves in DB", e1); } } public void getCircuitPacks(String nodeId) throws InterruptedException, ExecutionException { - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); + InstanceIdentifier deviceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .build(); Optional deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); @@ -213,11 +243,12 @@ public class INode121 { LOG.warn("Device object {} was not found", nodeId); return; } - LOG.info("Circuit pack size {}", deviceObject.get().getCircuitPacks().size()); + Map circuitPacksMap = deviceObject.get().nonnullCircuitPacks(); + LOG.info("Circuit pack size {}", circuitPacksMap.size()); try (Connection connection = requireNonNull(dataSource.getConnection())) { - for (int i = 0; i < deviceObject.get().getCircuitPacks().size(); i++) { - CircuitPacks cp = deviceObject.get().getCircuitPacks().get(i); + for (Map.Entry circuitPackEntry : circuitPacksMap.entrySet()) { + CircuitPacks cp = circuitPackEntry.getValue(); if (cp.getCpSlots() != null) { persistCircuitPacksSlots(nodeId, cp, connection); @@ -232,7 +263,7 @@ public class INode121 { persistCircuitPacks(nodeId, connection, cp); } } catch (SQLException e1) { - LOG.error(e1.getMessage(), e1); + LOG.error("Something wrong when fetching Circuit Packs in DB", e1); } } @@ -247,7 +278,7 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing Circuit Packs in DB", e); } } @@ -262,14 +293,15 @@ public class INode121 { preparedStmt.execute(); preparedStmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing shelves in DB", e); } } private void persistShelveSlots(String nodeId, Shelves shelves, Connection connection) { String startTimetampStr = getCurrentTimestamp(); - for (int i = 0; i < shelves.getSlots().size(); i++) { - Slots slot = shelves.getSlots().get(i); + Map slotsMap = shelves.nonnullSlots(); + for (Map.Entry slotEntry : slotsMap.entrySet()) { + Slots slot = slotEntry.getValue(); LOG.info("Getting Slot Details of {}", slot.getSlotName()); Object[] parameters = new Object[]{nodeId, shelves.getShelfName(), @@ -288,7 +320,7 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing shelves slots in DB", e); } } } @@ -296,8 +328,9 @@ public class INode121 { private void persistCircuitPacksSlots(String nodeId, CircuitPacks circuitPacks, Connection connection) { String startTimetampStr = getCurrentTimestamp(); - for (int i = 0; i < circuitPacks.getCpSlots().size(); i++) { - CpSlots cpSlot = circuitPacks.getCpSlots().get(i); + Map cpSlotsMap = circuitPacks.nonnullCpSlots(); + for (Map.Entry cpSlotEntry: cpSlotsMap.entrySet()) { + CpSlots cpSlot = cpSlotEntry.getValue(); Object[] parameters = new Object[]{nodeId, circuitPacks.getCircuitPackName(), @@ -317,16 +350,11 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing Cirtcuits Packs slots in DB", e); } } } - private void persistPorts(CircuitPacks circuitPacks, Connection connection) { - LOG.warn("Ports are not persisted yet"); - } - - /** * Prepares parameters for device insert query. * @@ -477,7 +505,7 @@ public class INode121 { String parentPortCircuitPackName = (cpPort.getPartnerPort() == null ? "" : (cpPort.getPartnerPort().getCircuitPackName() == null ? "" : cpPort.getPartnerPort().getCircuitPackName())); String partnerPortPortName = (cpPort.getPartnerPort() == null ? "" : - (cpPort.getPartnerPort().getPortName() == null ? "" : cpPort.getPartnerPort().getPortName().toString())); + (cpPort.getPartnerPort().getPortName() == null ? "" : cpPort.getPartnerPort().getPortName())); String partnerPortCircuitPackName = (cpPort.getParentPort() == null ? "" : (cpPort.getParentPort().getCircuitPackName() == null ? "" : cpPort.getParentPort().getCircuitPackName())); String parentPortPortName = (cpPort.getParentPort() == null ? "" : @@ -515,7 +543,7 @@ public class INode121 { cpPort.getOtdrPort().getLaunchCableLength().toString())); String otdrPortPortDirection = (cpPort.getOtdrPort() == null ? "-1" : (cpPort.getOtdrPort().getPortDirection() == null ? "-1" : - Integer.valueOf(cpPort.getOtdrPort().getPortDirection().getIntValue()).toString())); + Integer.toString(cpPort.getOtdrPort().getPortDirection().getIntValue()))); //String ilaPortPortPowerCapabilityMixRx = ""; //String ilaPortPortPowerCapabilityMixTx = ""; //String ilaPortPortPowerCapabilityMaxRx = ""; @@ -604,9 +632,10 @@ public class INode121 { private void persistCPPorts(String nodeId, Connection connection, CircuitPacks circuitPacks) { - - for (int i = 0; i < circuitPacks.getPorts().size(); i++) { - Object[] cpPortsParameters = prepareCPPortsParameters(nodeId, circuitPacks, circuitPacks.getPorts().get(i)); + @NonNull + Map nonnullPorts = circuitPacks.nonnullPorts(); + for (Map.Entry entry : nonnullPorts.entrySet()) { + Object[] cpPortsParameters = prepareCPPortsParameters(nodeId, circuitPacks, entry.getValue()); String query = Queries.getQuery().deviceCPPortInsert().get(); LOG.info("Running {} query ", query); try (PreparedStatement preparedStmt = connection.prepareStatement(query)) { @@ -616,7 +645,7 @@ public class INode121 { preparedStmt.execute(); preparedStmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing Cirtcuits Packs Ports in DB", e); } } } @@ -630,7 +659,7 @@ public class INode121 { String maintTestsignalTypeEnu = ""; String otuFecEnu = ""; String otuMaintTypeEnu = ""; - String otsFiberTypeEnu = ""; + //String otsFiberTypeEnu = ""; String ethernetSpeed = "-1"; String ethernetFec = ""; String ethernetMtu = "-1"; @@ -707,7 +736,7 @@ public class INode121 { String circuitId = deviceInterface.getCircuitId(); String supportingInterface = deviceInterface.getSupportingInterface(); String supportingCircuitPackName = deviceInterface.getSupportingCircuitPackName(); - String supportingPort = deviceInterface.getSupportingPort().toString(); + String supportingPort = deviceInterface.getSupportingPort(); switch (deviceInterface.getType().toString()) { @@ -716,7 +745,7 @@ public class INode121 { EthernetBuilder ethIfBuilder = new EthernetBuilder(deviceInterface.augmentation(Interface1.class) .getEthernet()); ethernetSpeed = (ethIfBuilder.getSpeed() == null ? "-1" : - Integer.valueOf(ethIfBuilder.getSpeed().intValue()).toString()); + Integer.toString(ethIfBuilder.getSpeed().intValue())); ethernetFec = ethIfBuilder.getFec().getName(); ethernetDuplexEnu = (ethIfBuilder.getDuplex() == null ? "" : ethIfBuilder.getDuplex().getName()); ethernetMtu = ethIfBuilder.getMtu().toString(); @@ -741,7 +770,7 @@ public class INode121 { org.opendaylight.yang.gen.v1 .http.org.openroadm.optical.transport.interfaces.rev161014.Interface1.class) .getOts()); - otsFiberTypeEnu = String.valueOf(otsIfBuilder.getFiberType().getIntValue()); + //otsFiberTypeEnu = String.valueOf(otsIfBuilder.getFiberType().getIntValue()); otsSpanLossReceive = otsIfBuilder.getSpanLossReceive().toString(); otsSpanLossTransmit = otsIfBuilder.getSpanLossTransmit().toString(); break; @@ -752,7 +781,7 @@ public class INode121 { .getOdu()); oduRate = String.valueOf(oduIfBuilder.getRate()); oduMonitoringMode = oduIfBuilder.getMonitoringMode().getName(); - oduProactiveDelayMeasurementEnabled = oduIfBuilder.isProactiveDelayMeasurementEnabled().toString(); + oduProactiveDelayMeasurementEnabled = oduIfBuilder.getProactiveDelayMeasurementEnabled().toString(); persistDevInterfaceTcm(nodeId, name, oduIfBuilder, connection); persistDevInterfaceOtnOduTxMsi(nodeId, name, oduIfBuilder, connection); @@ -766,11 +795,11 @@ public class INode121 { /*persistDevInterfaceOtnOduTxMsi(nodeId,name,oduIfBuilder,connection); persistDevInterfaceOtnOduRxMsi(nodeId,name,oduIfBuilder,connection); persistDevInterfaceOtnOduExpMsi(nodeId,name,oduIfBuilder,connection); */ - maintTestsignalEnabled = oduIfBuilder.getMaintTestsignal().isEnabled().toString(); + maintTestsignalEnabled = oduIfBuilder.getMaintTestsignal().getEnabled().toString(); maintTestsignalTestpatternEnu = oduIfBuilder.getMaintTestsignal().getTestPattern().getName(); maintTestsignalTypeEnu = oduIfBuilder.getMaintTestsignal().getType().getName(); - maintTestsignalBiterrors = Integer.valueOf(oduIfBuilder.getMaintTestsignal().getBitErrors().intValue()) - .toString(); + maintTestsignalBiterrors = Integer.toString( + oduIfBuilder.getMaintTestsignal().getBitErrors().intValue()); maintTestsignalBiterrorsterminal = oduIfBuilder.getMaintTestsignal().getBitErrorsTerminal().toString(); maintTestsignalSyncseconds = oduIfBuilder.getMaintTestsignal().getSyncSeconds(); maintTestsignalSyncsecondsterminal = oduIfBuilder.getMaintTestsignal().getSyncSecondsTerminal(); @@ -783,7 +812,7 @@ public class INode121 { .getOtu()); otuRate = otuIfBuilder.getRate().getName(); otuFecEnu = otuIfBuilder.getFec().getName(); - otuMaintLoopbackEnabled = otuIfBuilder.getMaintLoopback().isEnabled().toString(); + otuMaintLoopbackEnabled = otuIfBuilder.getMaintLoopback().getEnabled().toString(); otuMaintTypeEnu = otuIfBuilder.getMaintLoopback().getType().getName(); break; @@ -896,8 +925,8 @@ public class INode121 { String layer = tcm.getLayer().toString(); String monitoringModeEnu = tcm.getMonitoringMode().getName(); - String ltcActEnabled = tcm.isLtcActEnabled().toString(); - String proactiveDelayMeasurementEnabled = tcm.isProactiveDelayMeasurementEnabled().toString(); + String ltcActEnabled = tcm.getLtcActEnabled().toString(); + String proactiveDelayMeasurementEnabled = tcm.getProactiveDelayMeasurementEnabled().toString(); //String tcmDirectionEnu = ""; //String timDetectModeEnu = ""; //String txSapi = ""; @@ -1005,27 +1034,18 @@ public class INode121 { private void persistDevInterfaces(String nodeId, Connection connection) { - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); + InstanceIdentifier deviceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .build(); Optional deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - - /*InstanceIdentifier interfaceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(Interface.class); - Optional interfaceOpt = - deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, interfaceIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); */ - - for (int i = 0; i < deviceObject.get().getInterface().size(); i++) { - Interface deviceInterface; - - deviceInterface = deviceObject.get().getInterface().get(i); - /*if (interfaceOpt.isPresent()) { - deviceInterface = interfaceOpt.get(); - } else { - LOG.warn("Could not get interface info"); - return false; - }*/ + if (!deviceObject.isPresent()) { + return; + } + Map interfaceMap = deviceObject.get().nonnullInterface(); + for (Map.Entry interfaceEntrySet : interfaceMap.entrySet()) { + Interface deviceInterface = interfaceEntrySet.getValue(); Object[] parameters = prepareDevInterfaceParameters(nodeId, deviceInterface, connection); String query = Queries.getQuery().deviceInterfacesInsert().get(); @@ -1037,70 +1057,75 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices interfaces in DB", e); } } } private void persistDevProtocols(String nodeId, Connection connection) { - InstanceIdentifier protocolsIID = - InstanceIdentifier.create(OrgOpenroadmDevice.class).child(Protocols.class); + InstanceIdentifier protocolsIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Protocols.class) + .build(); Optional protocolObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, protocolsIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); if (!protocolObject.isPresent() || protocolObject.get().augmentation(Protocols1.class) == null) { LOG.error("LLDP subtree is missing"); + return; + } + String adminstatusEnu = protocolObject.get().augmentation(Protocols1.class).getLldp().getGlobalConfig() + .getAdminStatus().getName(); + String msgTxtInterval = protocolObject.get().augmentation(Protocols1.class).getLldp().getGlobalConfig() + .getMsgTxInterval().toString(); + String mxgTxHoldMultiplier = protocolObject.get().augmentation(Protocols1.class).getLldp().getGlobalConfig() + .getMsgTxHoldMultiplier().toString(); + String startTimestamp = getCurrentTimestamp(); + persistDevProtocolLldpPortConfig(nodeId, connection); + persistDevProtocolLldpNbrList(nodeId, connection); - } else { - String adminstatusEnu = protocolObject.get().augmentation(Protocols1.class).getLldp().getGlobalConfig() - .getAdminStatus().getName(); - String msgTxtInterval = protocolObject.get().augmentation(Protocols1.class).getLldp().getGlobalConfig() - .getMsgTxInterval().toString(); - String mxgTxHoldMultiplier = protocolObject.get().augmentation(Protocols1.class).getLldp().getGlobalConfig() - .getMsgTxHoldMultiplier().toString(); - String startTimestamp = getCurrentTimestamp(); - persistDevProtocolLldpPortConfig(nodeId, connection); - persistDevProtocolLldpNbrList(nodeId, connection); - - Object[] parameters = {nodeId, - adminstatusEnu, - msgTxtInterval, - mxgTxHoldMultiplier, - startTimestamp, - startTimestamp - }; + Object[] parameters = {nodeId, + adminstatusEnu, + msgTxtInterval, + mxgTxHoldMultiplier, + startTimestamp, + startTimestamp + }; - String query = Queries.getQuery().deviceProtocolInsert().get(); - LOG.info("Running {} query ", query); - try (PreparedStatement stmt = connection.prepareStatement(query)) { - for (int j = 0; j < parameters.length; j++) { - stmt.setObject(j + 1, parameters[j]); - } - stmt.execute(); - stmt.clearParameters(); - } catch (SQLException e) { - LOG.error(e.getMessage(), e); + String query = Queries.getQuery().deviceProtocolInsert().get(); + LOG.info("Running {} query ", query); + try (PreparedStatement stmt = connection.prepareStatement(query)) { + for (int j = 0; j < parameters.length; j++) { + stmt.setObject(j + 1, parameters[j]); } + stmt.execute(); + stmt.clearParameters(); + } catch (SQLException e) { + LOG.error("Something wrong when storing devices protocols in DB", e); } } private void persistDevProtocolLldpPortConfig(String nodeId, Connection connection) { - InstanceIdentifier protocolsIID = - InstanceIdentifier.create(OrgOpenroadmDevice.class).child(Protocols.class); + InstanceIdentifier protocolsIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Protocols.class) + .build(); Optional protocolObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, protocolsIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); if (!protocolObject.isPresent() || protocolObject.get().augmentation(Protocols1.class) == null) { LOG.error("LLDP subtree is missing"); - + return; } String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < protocolObject.get().augmentation(Protocols1.class).getLldp().getPortConfig().size(); i++) { - PortConfig portConfig = - protocolObject.get().augmentation(Protocols1.class).getLldp().getPortConfig().get(i); + @NonNull + Map portConfigMap = protocolObject.get() + .augmentation(Protocols1.class).getLldp().nonnullPortConfig(); + for (Map.Entry entry : portConfigMap.entrySet()) { + PortConfig portConfig = entry.getValue(); String ifName = portConfig.getIfName(); String adminStatusEnu = portConfig.getAdminStatus().getName(); @@ -1120,7 +1145,7 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices protocols LLDP Port config in DB", e); } } @@ -1129,137 +1154,55 @@ public class INode121 { private void persistDevProtocolLldpNbrList(String nodeId, Connection connection) { - InstanceIdentifier protocolsIID = - InstanceIdentifier.create(OrgOpenroadmDevice.class).child(Protocols.class); + InstanceIdentifier protocolsIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Protocols.class) + .build(); Optional protocolObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, protocolsIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (!protocolObject.isPresent()) { + LOG.error("Protocols is missing"); + return; + } if (protocolObject.get().augmentation(Protocols1.class).getLldp().getNbrList() == null) { protocolObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, protocolsIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - - } - if (protocolObject.get().augmentation(Protocols1.class).getLldp().getNbrList() == null) { - LOG.error("LLDP nbrlist subtree is missing for {}", nodeId); - - } else { - String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < protocolObject.get() - .augmentation(Protocols1.class).getLldp().getNbrList().getIfName().size(); i++) { - - IfName ifNameObj = protocolObject.get().augmentation(Protocols1.class).getLldp().getNbrList() - .getIfName().get(i); - String ifName = ifNameObj.getIfName(); - String remotesysname = ifNameObj.getRemoteSysName(); - String remotemgmtaddresssubtype = ifNameObj.getRemoteMgmtAddressSubType().getName(); - String remotemgmtaddress = ifNameObj.getRemoteMgmtAddress().getIpv4Address().toString(); - String remoteportidsubtypeEnu = ifNameObj.getRemotePortIdSubType().getName(); - String remoteportid = ifNameObj.getRemotePortId(); - String remotechassisidsubtypeEnu = ifNameObj.getRemoteChassisIdSubType().getName(); - String remotechassisid = ifNameObj.getRemoteChassisId(); - - Object[] parameters = {nodeId, - ifName, - remotesysname, - remotemgmtaddresssubtype, - remotemgmtaddress, - remoteportidsubtypeEnu, - remoteportid, - remotechassisidsubtypeEnu, - remotechassisid, - startTimestamp, - startTimestamp - }; - - String query = Queries.getQuery().deviceProtocolLldpNbrlistInsert().get(); - LOG.info("Running {} query ", query); - try (PreparedStatement stmt = connection.prepareStatement(query)) { - for (int j = 0; j < parameters.length; j++) { - stmt.setObject(j + 1, parameters[j]); - } - stmt.execute(); - stmt.clearParameters(); - } catch (SQLException e) { - LOG.error(e.getMessage(), e); - } - + if (protocolObject.get().augmentation(Protocols1.class).getLldp().getNbrList() == null) { + LOG.error("LLDP nbrlist subtree is missing for {}", nodeId); + return; } } - } - - private void persistDevProtocolRstp(String nodeId, Connection connection) { - - InstanceIdentifier protocolsIID = - InstanceIdentifier.create(OrgOpenroadmDevice.class).child(Protocols.class); - Optional protocolObject = - deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, protocolsIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - if (!protocolObject.isPresent() || protocolObject.get().augmentation(Protocols1.class) == null) { - LOG.error("LLDP subtree is missing"); - - } String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < protocolObject.get() - .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.rstp.rev161014.Protocols1.class) - .getRstp().getRstpBridgeInstance().size(); i++) { - - RstpBridgeInstance rstpBridgeInstance = protocolObject.get() - .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.rstp.rev161014.Protocols1.class) - .getRstp().getRstpBridgeInstance().get(i); - String bridgeName = rstpBridgeInstance.getBridgeName(); - String bridgePriority = rstpBridgeInstance.getRstpConfig().getBridgePriority().toString(); - String shutdown = rstpBridgeInstance.getRstpConfig().getShutdown().toString(); - String holdTime = rstpBridgeInstance.getRstpConfig().getHoldTime().toString(); - String helloTime = rstpBridgeInstance.getRstpConfig().getHelloTime().toString(); - String maxAge = rstpBridgeInstance.getRstpConfig().getMaxAge().toString(); - String forwardDelay = rstpBridgeInstance.getRstpConfig().getForwardDelay().toString(); - String transmitHoldCount = rstpBridgeInstance.getRstpConfig().getTransmitHoldCount().toString(); - String rootBridgePort = - rstpBridgeInstance.getRstpState().getRstpBridgeAttr().getRootBridgePort().toString(); - String rootPathCost = rstpBridgeInstance.getRstpState().getRstpBridgeAttr().getRootPathCost().toString(); - String rootBridgePriority = - rstpBridgeInstance.getRstpState().getRstpBridgeAttr().getRootBridgePriority().toString(); - String rootBridgeId = rstpBridgeInstance.getRstpState().getRstpBridgeAttr().getRootBridgeId().toString(); - String rootHoldTime = rstpBridgeInstance.getRstpState().getRstpBridgeAttr().getRootHoldTime().toString(); - String rootHelloTime = rstpBridgeInstance.getRstpState().getRstpBridgeAttr().getRootHelloTime().toString(); - String rootMaxAge = rstpBridgeInstance.getRstpState().getRstpBridgeAttr().getRootMaxAge().toString(); - String rootForwardDelay = - rstpBridgeInstance.getRstpState().getRstpBridgeAttr().getRootForwardDelay().toString(); - String bridgeId = rstpBridgeInstance.getRstpState().getRstpBridgeAttr().getBridgeId().toString(); - String topoChangeCount = - rstpBridgeInstance.getRstpState().getRstpBridgeAttr().getTopoChangeCount().toString(); - String timeSinceTopoChange = - rstpBridgeInstance.getRstpState().getRstpBridgeAttr().getTimeSinceTopoChange().toString(); - - persistDevProtocolRstpBridgePort(nodeId, bridgeName, rstpBridgeInstance, connection); - persistDevProtocolRstpBridgePortAttr(nodeId, bridgeName, rstpBridgeInstance, connection); + Map ifNameMap = + protocolObject.get().augmentation(Protocols1.class).getLldp().getNbrList().nonnullIfName(); + for (Map.Entry ifNameEntry : ifNameMap.entrySet()) { + + IfName ifNameObj = ifNameEntry.getValue(); + String ifName = ifNameObj.getIfName(); + String remotesysname = ifNameObj.getRemoteSysName(); + String remotemgmtaddresssubtype = ifNameObj.getRemoteMgmtAddressSubType().getName(); + String remotemgmtaddress = ifNameObj.getRemoteMgmtAddress().getIpv4Address().toString(); + String remoteportidsubtypeEnu = ifNameObj.getRemotePortIdSubType().getName(); + String remoteportid = ifNameObj.getRemotePortId(); + String remotechassisidsubtypeEnu = ifNameObj.getRemoteChassisIdSubType().getName(); + String remotechassisid = ifNameObj.getRemoteChassisId(); Object[] parameters = {nodeId, - bridgeName, - bridgePriority, - shutdown, - holdTime, - helloTime, - maxAge, - forwardDelay, - transmitHoldCount, - rootBridgePort, - rootPathCost, - rootBridgePriority, - rootBridgeId, - rootHoldTime, - rootHelloTime, - rootMaxAge, - rootForwardDelay, - bridgeId, - topoChangeCount, - timeSinceTopoChange, + ifName, + remotesysname, + remotemgmtaddresssubtype, + remotemgmtaddress, + remoteportidsubtypeEnu, + remoteportid, + remotechassisidsubtypeEnu, + remotechassisid, startTimestamp, startTimestamp }; - String query = Queries.getQuery().deviceProtocolRstpInsert().get(); + String query = Queries.getQuery().deviceProtocolLldpNbrlistInsert().get(); LOG.info("Running {} query ", query); try (PreparedStatement stmt = connection.prepareStatement(query)) { for (int j = 0; j < parameters.length; j++) { @@ -1268,34 +1211,45 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices protocols LLDP list number in DB", e); } } } - private void persistDevProtocolRstpBridgePort(String nodeId, String bridgeName, - RstpBridgeInstance rstpBridgeInstance, Connection connection) { + private void persistDevInternalLinks(String nodeId, Connection connection) { + InstanceIdentifier deviceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .build(); + Optional deviceObject = + deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (!deviceObject.isPresent()) { + return; + } + if (deviceObject.get().getInternalLink() == null) { + deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, + deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (deviceObject.get().getInternalLink() == null) { + LOG.info("External links not found for {}", nodeId); + return; + } + } + @NonNull + Map internalLinkMap = deviceObject.get().nonnullInternalLink(); String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < rstpBridgeInstance.getRstpConfig().getRstpBridgePortTable().size(); i++) { - RstpBridgePortTable rstpBridgePortTable = - rstpBridgeInstance.getRstpConfig().getRstpBridgePortTable().get(i); - - String ifName = rstpBridgePortTable.getIfname(); - String cost = rstpBridgePortTable.getCost().toString(); - String priority = rstpBridgePortTable.getPriority().toString(); - - Object[] parameters = {nodeId, - bridgeName, - ifName, - cost, - priority, - startTimestamp, - startTimestamp - }; - - String query = Queries.getQuery().deviceProtocolRstpBridgePortInsert().get(); + for (Map.Entry internalLinkEntry: internalLinkMap.entrySet()) { + InternalLink internalLink = internalLinkEntry.getValue(); + String internalLinkName = internalLink.getInternalLinkName(); + String sourceCircuitPackName = internalLink.getSource().getCircuitPackName(); + String sourcePortName = internalLink.getSource().getPortName(); + String destinationCircuitPackName = internalLink.getDestination().getCircuitPackName(); + String destinationPortName = internalLink.getDestination().getPortName(); + + Object[] parameters = { nodeId, internalLinkName, sourceCircuitPackName, sourcePortName, + destinationCircuitPackName, destinationPortName, startTimestamp, startTimestamp }; + String query = Queries.getQuery().deviceInternalLinkInsert().get(); LOG.info("Running {} query ", query); try (PreparedStatement stmt = connection.prepareStatement(query)) { for (int j = 0; j < parameters.length; j++) { @@ -1304,45 +1258,49 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices internal links", e); } - } } - private void persistDevProtocolRstpBridgePortAttr(String nodeId, String bridgeName, - RstpBridgeInstance rstpBridgeInstance, Connection connection) { - String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < rstpBridgeInstance.getRstpState().getRstpBridgePortAttr().getRstpBridgePortTable().size(); - i++) { - - org.opendaylight.yang.gen.v1.http.org.openroadm.rstp.rev161014.rstp.bridge.port.state.attr - .RstpBridgePortTable rstpBridgePortTableAttr = - rstpBridgeInstance.getRstpState().getRstpBridgePortAttr().getRstpBridgePortTable().get(i); - - String ifName = rstpBridgePortTableAttr.getIfname(); - String bridgePortState = rstpBridgePortTableAttr.getBridgePortState().getName(); - String bridgePortRole = rstpBridgePortTableAttr.getBridgePortRole().getName(); - String bridgePortId = rstpBridgePortTableAttr.getBridgePortId().toString(); - String openEdgeBridgePort = rstpBridgePortTableAttr.getOperEdgeBridgePort().toString(); - String designatedBridgePort = rstpBridgePortTableAttr.getDesignatedBridgePort().toString(); - String designatedBridgeId = rstpBridgePortTableAttr.getDesignatedBridgeid().toString(); - - Object[] parameters = {nodeId, - bridgeName, - ifName, - bridgePortState, - bridgePortRole, - bridgePortId, - openEdgeBridgePort, - designatedBridgePort, - designatedBridgeId, - startTimestamp, - startTimestamp - }; + private void persistDevExternalLinks(String nodeId, Connection connection) { - String query = Queries.getQuery().deviceProtocolRstpBridgePortAttrInsert().get(); + InstanceIdentifier deviceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .build(); + Optional deviceObject = + deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (!deviceObject.isPresent()) { + return; + } + if (deviceObject.get().getExternalLink() == null) { + deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, + deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (deviceObject.get().getExternalLink() == null) { + LOG.info("External links not found for {}", nodeId); + return; + } + } + String startTimestamp = getCurrentTimestamp(); + @NonNull + Map externalLinkMap = deviceObject.get().nonnullExternalLink(); + for (Map.Entry externalLinkEntry: externalLinkMap.entrySet()) { + ExternalLink externalLink = externalLinkEntry.getValue(); + String externalLinkName = externalLink.getExternalLinkName(); + String sourceNodeId = externalLink.getSource().getNodeId(); + String sourceCircuitPackName = externalLink.getSource().getCircuitPackName(); + String sourcePortName = externalLink.getSource().getPortName(); + String destinationNodeId = externalLink.getDestination().getNodeId(); + String destinationCircuitPackName = externalLink.getDestination().getCircuitPackName(); + String destinationPortName = externalLink.getDestination().getPortName(); + + Object[] parameters = { nodeId, externalLinkName, sourceNodeId, sourceCircuitPackName, + sourcePortName, destinationNodeId, destinationCircuitPackName, destinationPortName, + startTimestamp, startTimestamp }; + + String query = Queries.getQuery().deviceExternalLinkInsert().get(); LOG.info("Running {} query ", query); try (PreparedStatement stmt = connection.prepareStatement(query)) { for (int j = 0; j < parameters.length; j++) { @@ -1351,172 +1309,78 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices external links", e); } - } } + private void persistDevPhysicalLinks(String nodeId, Connection connection) { - private void persistDevInternalLinks(String nodeId, Connection connection) { - - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); + InstanceIdentifier deviceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .build(); Optional deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - if (deviceObject.get().getInternalLink() == null) { + if (!deviceObject.isPresent()) { + LOG.error("No device with node Id {}", nodeId); + return; + } + if (deviceObject.get().getPhysicalLink() == null) { deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - } - if (deviceObject.get().getInternalLink() == null) { - LOG.info("External links not found for {}", nodeId); - } else { - - - String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < deviceObject.get().getInternalLink().size(); i++) { - InternalLink internalLink = deviceObject.get().getInternalLink().get(i); - String internalLinkName = internalLink.getInternalLinkName(); - String sourceCircuitPackName = internalLink.getSource().getCircuitPackName(); - String sourcePortName = internalLink.getSource().getPortName().toString(); - String destinationCircuitPackName = internalLink.getDestination().getCircuitPackName(); - String destinationPortName = internalLink.getDestination().getPortName().toString(); - - Object[] parameters = {nodeId, - internalLinkName, - sourceCircuitPackName, - sourcePortName, - destinationCircuitPackName, - destinationPortName, - startTimestamp, - startTimestamp - }; - - String query = Queries.getQuery().deviceInternalLinkInsert().get(); - LOG.info("Running {} query ", query); - try (PreparedStatement stmt = connection.prepareStatement(query)) { - for (int j = 0; j < parameters.length; j++) { - stmt.setObject(j + 1, parameters[j]); - } - stmt.execute(); - stmt.clearParameters(); - } catch (SQLException e) { - LOG.error(e.getMessage(), e); - } - + if (!deviceObject.isPresent()) { + LOG.error("No device with node Id {}", nodeId); + return; + } + if (deviceObject.get().getPhysicalLink() == null) { + LOG.info("Physical links not found for {}", nodeId); + return; } } - } - - private void persistDevExternalLinks(String nodeId, Connection connection) { + String startTimestamp = getCurrentTimestamp(); + @NonNull + Map physicalLinkMap = deviceObject.get().nonnullPhysicalLink(); + for (Map.Entry physicalLinkEntry : physicalLinkMap.entrySet()) { + PhysicalLink physicalLink = physicalLinkEntry.getValue(); + String physicalLinkName = physicalLink.getPhysicalLinkName(); + String sourceCircuitPackName = physicalLink.getSource().getCircuitPackName(); + String sourcePortName = physicalLink.getSource().getPortName(); + String destinationCircuitPackName = physicalLink.getDestination().getCircuitPackName(); + String destinationPortName = physicalLink.getDestination().getPortName(); - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); - Optional deviceObject = - deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); + Object[] parameters = {nodeId, + physicalLinkName, + sourceCircuitPackName, + sourcePortName, + destinationCircuitPackName, + destinationPortName, + startTimestamp, + startTimestamp + }; - if (deviceObject.get().getExternalLink() == null) { - deviceObject = - deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, deviceIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - } - if (deviceObject.get().getExternalLink() == null) { - LOG.info("External links not found for {}", nodeId); - } else { - String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < deviceObject.get().getExternalLink().size(); i++) { - ExternalLink externalLink = deviceObject.get().getExternalLink().get(i); - String externalLinkName = externalLink.getExternalLinkName(); - String sourceNodeId = externalLink.getSource().getNodeId(); - String sourceCircuitPackName = externalLink.getSource().getCircuitPackName(); - String sourcePortName = externalLink.getSource().getPortName().toString(); - String destinationNodeId = externalLink.getDestination().getNodeId(); - String destinationCircuitPackName = externalLink.getDestination().getCircuitPackName(); - String destinationPortName = externalLink.getDestination().getPortName().toString(); - - Object[] parameters = {nodeId, - externalLinkName, - sourceNodeId, - sourceCircuitPackName, - sourcePortName, - destinationNodeId, - destinationCircuitPackName, - destinationPortName, - startTimestamp, - startTimestamp - }; - - String query = Queries.getQuery().deviceExternalLinkInsert().get(); - LOG.info("Running {} query ", query); - try (PreparedStatement stmt = connection.prepareStatement(query)) { - for (int j = 0; j < parameters.length; j++) { - stmt.setObject(j + 1, parameters[j]); - } - stmt.execute(); - stmt.clearParameters(); - } catch (SQLException e) { - LOG.error(e.getMessage(), e); + String query = Queries.getQuery().devicePhysicalLinkInsert().get(); + LOG.info("Running {} query ", query); + try (PreparedStatement stmt = connection.prepareStatement(query)) { + for (int j = 0; j < parameters.length; j++) { + stmt.setObject(j + 1, parameters[j]); } - + stmt.execute(); + stmt.clearParameters(); + } catch (SQLException e) { + LOG.error("Something wrong when storing devices physical links", e); } - } - } - private void persistDevPhysicalLinks(String nodeId, Connection connection) { - - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); - Optional deviceObject = - deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - if (deviceObject.get().getPhysicalLink() == null) { - deviceObject = - deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, deviceIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - } - if (deviceObject.get().getPhysicalLink() == null) { - LOG.info("Physical links not found for {}", nodeId); - } else { - - String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < deviceObject.get().getPhysicalLink().size(); i++) { - PhysicalLink physicalLink = deviceObject.get().getPhysicalLink().get(i); - String physicalLinkName = physicalLink.getPhysicalLinkName(); - String sourceCircuitPackName = physicalLink.getSource().getCircuitPackName(); - String sourcePortName = physicalLink.getSource().getPortName().toString(); - String destinationCircuitPackName = physicalLink.getDestination().getCircuitPackName(); - String destinationPortName = physicalLink.getDestination().getPortName().toString(); - - Object[] parameters = {nodeId, - physicalLinkName, - sourceCircuitPackName, - sourcePortName, - destinationCircuitPackName, - destinationPortName, - startTimestamp, - startTimestamp - }; - - String query = Queries.getQuery().devicePhysicalLinkInsert().get(); - LOG.info("Running {} query ", query); - try (PreparedStatement stmt = connection.prepareStatement(query)) { - for (int j = 0; j < parameters.length; j++) { - stmt.setObject(j + 1, parameters[j]); - } - stmt.execute(); - stmt.clearParameters(); - } catch (SQLException e) { - LOG.error(e.getMessage(), e); - } - - } } } private void persistDevDegree(String nodeId, Connection connection) { - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); + InstanceIdentifier deviceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .build(); Optional deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); @@ -1527,53 +1391,47 @@ public class INode121 { deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); } */ - if (deviceObject.get().getDegree() == null) { - LOG.warn("Degree info not found for {}", nodeId); - } else { - - String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < deviceObject.get().getDegree().size(); i++) { - Degree degree = deviceObject.get().getDegree().get(i); - String degreeNumber = degree.getDegreeNumber().toString(); - String maxWavelengths = degree.getMaxWavelengths().toString(); - String otdrPortCircuitPackName = + if (!deviceObject.isPresent()) { + LOG.error("Cannot get device for node {}", nodeId); + return; + } + String startTimestamp = getCurrentTimestamp(); + @NonNull + Map degreeMap = deviceObject.get().nonnullDegree(); + for (Map.Entry degreeEntry : degreeMap.entrySet()) { + Degree degree = degreeEntry.getValue(); + String degreeNumber = degree.getDegreeNumber().toString(); + String maxWavelengths = degree.getMaxWavelengths().toString(); + String otdrPortCircuitPackName = (degree.getOtdrPort() == null ? "" : degree.getOtdrPort().getCircuitPackName()); - String otdrPortPortName = - (degree.getOtdrPort() == null ? "" : degree.getOtdrPort().getPortName().toString()); - //String mcCapabilitiesSlotWidthGranularity = ""; - //String mcCapabilitiesCenterFreqGranularity = ""; - //String mcCapabilitiesMinSlots = "-1"; - //String mcCapabilitiesMaxSlots = "-1"; - persistDevDegreeCircuitPack(nodeId, degree, degreeNumber, connection); - persistDevDegreeConnectionPort(nodeId, degree, degreeNumber, connection); - - Object[] parameters = {nodeId, - degreeNumber, - maxWavelengths, - otdrPortCircuitPackName, - otdrPortPortName, - //mcCapabilitiesSlotWidthGranularity, - //mcCapabilitiesCenterFreqGranularity, - //mcCapabilitiesMinSlots, - //mcCapabilitiesMaxSlots, - "", "", "-1", "-1", - startTimestamp, - startTimestamp - }; - - String query = Queries.getQuery().deviceDegreeInsert().get(); - LOG.info("Running {} query ", query); - try (PreparedStatement stmt = connection.prepareStatement(query)) { - for (int j = 0; j < parameters.length; j++) { - stmt.setObject(j + 1, parameters[j]); - } - stmt.execute(); - stmt.clearParameters(); - } catch (SQLException e) { - LOG.error(e.getMessage(), e); + String otdrPortPortName = + (degree.getOtdrPort() == null ? "" : degree.getOtdrPort().getPortName()); + // String mcCapabilitiesSlotWidthGranularity = ""; + // String mcCapabilitiesCenterFreqGranularity = ""; + // String mcCapabilitiesMinSlots = "-1"; + // String mcCapabilitiesMaxSlots = "-1"; + persistDevDegreeCircuitPack(nodeId, degree, degreeNumber, connection); + persistDevDegreeConnectionPort(nodeId, degree, degreeNumber, connection); + + Object[] parameters = { nodeId, degreeNumber, maxWavelengths, otdrPortCircuitPackName, otdrPortPortName, + // mcCapabilitiesSlotWidthGranularity, + // mcCapabilitiesCenterFreqGranularity, + // mcCapabilitiesMinSlots, + // mcCapabilitiesMaxSlots, + "", "", "-1", "-1", startTimestamp, startTimestamp }; + + String query = Queries.getQuery().deviceDegreeInsert().get(); + LOG.info("Running {} query ", query); + try (PreparedStatement stmt = connection.prepareStatement(query)) { + for (int j = 0; j < parameters.length; j++) { + stmt.setObject(j + 1, parameters[j]); } - + stmt.execute(); + stmt.clearParameters(); + } catch (SQLException e) { + LOG.error("Something wrong when storing devices degrees", e); } + } } @@ -1581,10 +1439,16 @@ public class INode121 { private void persistDevDegreeCircuitPack(String nodeId, Degree degree, String degreeNumber, Connection connection) { String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < degree.getCircuitPacks().size(); i++) { + @NonNull + Map + circuitPacksMap = degree.nonnullCircuitPacks(); + for (Map.Entry circuitPackEntry : + circuitPacksMap.entrySet()) { - String circuitPackIndex = degree.getCircuitPacks().get(i).getIndex().toString(); - String circuitPackName = degree.getCircuitPacks().get(i).getCircuitPackName(); + String circuitPackIndex = circuitPackEntry.getValue().getIndex().toString(); + String circuitPackName = circuitPackEntry.getValue().getCircuitPackName(); Object[] parameters = {nodeId, degreeNumber, @@ -1603,7 +1467,7 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices degrees circuit packs", e); } } @@ -1613,11 +1477,12 @@ public class INode121 { Connection connection) { String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < degree.getConnectionPorts().size(); i++) { - - String connectionPortIndex = degree.getConnectionPorts().get(i).getIndex().toString(); - String circuitPackName = degree.getConnectionPorts().get(i).getCircuitPackName(); - String portName = degree.getConnectionPorts().get(i).getPortName().toString(); + @NonNull + Map connectionPortsMap = degree.nonnullConnectionPorts(); + for (Map.Entry portEntry : connectionPortsMap.entrySet()) { + String connectionPortIndex = portEntry.getValue().getIndex().toString(); + String circuitPackName = portEntry.getValue().getCircuitPackName(); + String portName = portEntry.getValue().getPortName(); Object[] parameters = {nodeId, degreeNumber, @@ -1637,7 +1502,7 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices degrees connection ports", e); } } @@ -1646,60 +1511,73 @@ public class INode121 { private void persistDevSrg(String nodeId, Connection connection) { - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); + InstanceIdentifier deviceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .build(); Optional deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (!deviceObject.isPresent()) { + LOG.error("No device found in operational datastore for node {}", nodeId); + return; + } if (deviceObject.get().getSharedRiskGroup() == null) { deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (!deviceObject.isPresent()) { + LOG.error("No device found in configuration datastore for node {}", nodeId); + return; + } } - if (deviceObject.get().getSharedRiskGroup() == null) { + + @NonNull + Map sharedRiskGroupMap = deviceObject.get().nonnullSharedRiskGroup(); + if (sharedRiskGroupMap.isEmpty()) { LOG.info("no srg found for node {} ", nodeId); - } else { - String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < deviceObject.get().getSharedRiskGroup().size(); i++) { - SharedRiskGroup sharedRiskGroup = deviceObject.get().getSharedRiskGroup().get(i); - //String currentProvisionedAddDropPorts = "-1"; - //String mcCapSlotWidthGranularity = ""; - //String mcCapCenterFreqGranularity = ""; - //String mcCapMinSlots = "-1"; - //String mcCapMaxSlots = "-1"; - String maxAddDropPorts = sharedRiskGroup.getMaxAddDropPorts().toString(); - String srgNumber = sharedRiskGroup.getSrgNumber().toString(); - String wavelengthDuplicationEnu = sharedRiskGroup.getWavelengthDuplication().getName(); - persistDevSrgCircuitPacks(nodeId, sharedRiskGroup, srgNumber, connection); - - Object[] parameters = {nodeId, - maxAddDropPorts, - //currentProvisionedAddDropPorts, - "-1", - srgNumber, - wavelengthDuplicationEnu, - //mcCapSlotWidthGranularity, - //mcCapCenterFreqGranularity, - //mcCapMinSlots, - //mcCapMaxSlots, - "", "", "", "", - startTimestamp, - startTimestamp - }; - - String query = Queries.getQuery().deviceSharedRiskGroupInsert().get(); - LOG.info("Running {} query ", query); - try (PreparedStatement stmt = connection.prepareStatement(query)) { - for (int j = 0; j < parameters.length; j++) { - stmt.setObject(j + 1, parameters[j]); - } - stmt.execute(); - stmt.clearParameters(); - } catch (SQLException e) { - LOG.error(e.getMessage(), e); - } + return; + } + String startTimestamp = getCurrentTimestamp(); + for (Map.Entry groupEntry : sharedRiskGroupMap.entrySet()) { + SharedRiskGroup sharedRiskGroup = groupEntry.getValue(); + //String currentProvisionedAddDropPorts = "-1"; + //String mcCapSlotWidthGranularity = ""; + //String mcCapCenterFreqGranularity = ""; + //String mcCapMinSlots = "-1"; + //String mcCapMaxSlots = "-1"; + String maxAddDropPorts = sharedRiskGroup.getMaxAddDropPorts().toString(); + String srgNumber = sharedRiskGroup.getSrgNumber().toString(); + String wavelengthDuplicationEnu = sharedRiskGroup.getWavelengthDuplication().getName(); + persistDevSrgCircuitPacks(nodeId, sharedRiskGroup, srgNumber, connection); + Object[] parameters = {nodeId, + maxAddDropPorts, + //currentProvisionedAddDropPorts, + "-1", + srgNumber, + wavelengthDuplicationEnu, + //mcCapSlotWidthGranularity, + //mcCapCenterFreqGranularity, + //mcCapMinSlots, + //mcCapMaxSlots, + "", "", "", "", + startTimestamp, + startTimestamp + }; + + String query = Queries.getQuery().deviceSharedRiskGroupInsert().get(); + LOG.info("Running {} query ", query); + try (PreparedStatement stmt = connection.prepareStatement(query)) { + for (int j = 0; j < parameters.length; j++) { + stmt.setObject(j + 1, parameters[j]); + } + stmt.execute(); + stmt.clearParameters(); + } catch (SQLException e) { + LOG.error("Something wrong when storing devices SRG", e); } + } } @@ -1708,10 +1586,16 @@ public class INode121 { Connection connection) { String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < sharedRiskGroup.getCircuitPacks().size(); i++) { + @NonNull + Map + circuitPacksMap = sharedRiskGroup.nonnullCircuitPacks(); + for (Map.Entry entry : + circuitPacksMap.entrySet()) { - String circuitPackindex = sharedRiskGroup.getCircuitPacks().get(i).getIndex().toString(); - String circuitPackName = sharedRiskGroup.getCircuitPacks().get(i).getCircuitPackName(); + String circuitPackindex = entry.getValue().getIndex().toString(); + String circuitPackName = entry.getValue().getCircuitPackName(); Object[] parameters = {nodeId, srgNumber, @@ -1730,7 +1614,7 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices SRG circuit packs", e); } } @@ -1740,71 +1624,88 @@ public class INode121 { //int opticalcontrolmodeEnu=-1; - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); + InstanceIdentifier deviceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .build(); Optional deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - + if (!deviceObject.isPresent()) { + LOG.error("No device found in operational datastore for node {}", nodeId); + return; + } if (deviceObject.get().getRoadmConnections() == null) { deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.CONFIGURATION, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (!deviceObject.isPresent()) { + LOG.error("No device found in configuration datastore for node {}", nodeId); + return; + } } - if (deviceObject.get().getRoadmConnections() != null) { - String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < deviceObject.get().getRoadmConnections().size(); i++) { - RoadmConnections roadmConnections = deviceObject.get().getRoadmConnections().get(i); - String connectionNumber = roadmConnections.getConnectionNumber(); - //String connectionName = ""; - String wavelengthNumber = roadmConnections.getWavelengthNumber().toString(); - String opticalcontrolmodeEnu = roadmConnections.getOpticalControlMode().getName(); - String targetOutputPower = roadmConnections.getTargetOutputPower().toString(); - String srcIf = roadmConnections.getSource().getSrcIf(); - String dstIf = roadmConnections.getDestination().getDstIf(); - - Object[] parameters = {nodeId, - //connectionName, - "", - connectionNumber, - wavelengthNumber, - opticalcontrolmodeEnu, - targetOutputPower, - srcIf, - dstIf, - startTimestamp, - startTimestamp - }; - - String query = Queries.getQuery().deviceRoadmConnectionsInsert().get(); - LOG.info("Running {} query ", query); - try (PreparedStatement stmt = connection.prepareStatement(query)) { - for (int j = 0; j < parameters.length; j++) { - stmt.setObject(j + 1, parameters[j]); - } - stmt.execute(); - stmt.clearParameters(); - } catch (SQLException e) { - LOG.error(e.getMessage(), e); - } + @NonNull + Map connectionsMap = deviceObject.get().nonnullRoadmConnections(); + if (connectionsMap.isEmpty()) { + LOG.info("ROADM Dev Connections not found!! for {}", nodeId); + return; + } + String startTimestamp = getCurrentTimestamp(); + for (Map.Entry entry : connectionsMap.entrySet()) { + RoadmConnections roadmConnections = entry.getValue(); + String connectionNumber = roadmConnections.getConnectionNumber(); + //String connectionName = ""; + String wavelengthNumber = roadmConnections.getWavelengthNumber().toString(); + String opticalcontrolmodeEnu = roadmConnections.getOpticalControlMode().getName(); + String targetOutputPower = roadmConnections.getTargetOutputPower().toString(); + String srcIf = roadmConnections.getSource().getSrcIf(); + String dstIf = roadmConnections.getDestination().getDstIf(); + + Object[] parameters = {nodeId, + //connectionName, + "", + connectionNumber, + wavelengthNumber, + opticalcontrolmodeEnu, + targetOutputPower, + srcIf, + dstIf, + startTimestamp, + startTimestamp + }; + String query = Queries.getQuery().deviceRoadmConnectionsInsert().get(); + LOG.info("Running {} query ", query); + try (PreparedStatement stmt = connection.prepareStatement(query)) { + for (int j = 0; j < parameters.length; j++) { + stmt.setObject(j + 1, parameters[j]); + } + stmt.execute(); + stmt.clearParameters(); + } catch (SQLException e) { + LOG.error("Something wrong when storing devices ROADM connection ", e); } - } else { - LOG.info("ROADM Dev Connections not found!! for {}", nodeId); } } private void persistDevConnectionMap(String nodeId, Connection connection) { - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); + InstanceIdentifier deviceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .build(); Optional deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - + if (!deviceObject.isPresent()) { + LOG.error("No device found in operational datastore for node {}", nodeId); + return; + } String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < deviceObject.get().getConnectionMap().size(); i++) { - ConnectionMap connectionMap = deviceObject.get().getConnectionMap().get(i); + @NonNull + Map connectionsMap = deviceObject.get().nonnullConnectionMap(); + for (Map.Entry entry : connectionsMap.entrySet()) { + ConnectionMap connectionMap = entry.getValue(); String connectionMapNumber = connectionMap.getConnectionMapNumber().toString(); String sourceCircuitPackName = connectionMap.getSource().getCircuitPackName(); String sourcePortName = connectionMap.getSource().getCircuitPackName(); @@ -1827,7 +1728,7 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices connection map", e); } } @@ -1835,14 +1736,22 @@ public class INode121 { private void persistDevWavelengthMap(String nodeId, Connection connection) { - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class); + InstanceIdentifier deviceIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .build(); Optional deviceObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (!deviceObject.isPresent()) { + LOG.error("No device found in operational datastore for node {}", nodeId); + return; + } String startTimestamp = getCurrentTimestamp(); - for (int i = 0; i < deviceObject.get().getWavelengthMap().getWavelengths().size(); i++) { - Wavelengths wavelengths = deviceObject.get().getWavelengthMap().getWavelengths().get(i); + @NonNull + Map wavelengthsMap = deviceObject.get().getWavelengthMap().nonnullWavelengths(); + for (Map.Entry entry : wavelengthsMap.entrySet()) { + Wavelengths wavelengths = entry.getValue(); String wavelengthNumber = wavelengths.getWavelengthNumber().toString(); String centerFrequency = wavelengths.getCenterFrequency().toString(); String wavelength = wavelengths.getWavelength().toString(); @@ -1865,7 +1774,7 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices wavelength map", e); } } @@ -1875,10 +1784,9 @@ public class INode121 { private void persistDevInterfaceTcm(String nodeId, String interfaceName, OduBuilder oduBuilder, Connection connection) { - for (int i = 0; i < oduBuilder.getTcm().size(); i++) { - Tcm tcm; - - tcm = oduBuilder.getTcm().get(i); + Map tcmMap = oduBuilder.getTcm(); + for (Map.Entry entry : tcmMap.entrySet()) { + Tcm tcm = entry.getValue(); Object[] parameters = prepareDevInterfaceTcmParameters(nodeId, interfaceName, tcm); @@ -1891,7 +1799,7 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices interface tcm", e); } } } @@ -1899,10 +1807,10 @@ public class INode121 { private void persistDevInterfaceOtnOduTxMsi(String nodeId, String interfaceName, OduBuilder oduBuilder, Connection connection) { - for (int i = 0; i < oduBuilder.getTcm().size(); i++) { - TxMsi txMsi; + Map txMsiMap = oduBuilder.getOpu().getMsi().nonnullTxMsi(); + for (Map.Entry entry : txMsiMap.entrySet()) { - txMsi = oduBuilder.getOpu().getMsi().getTxMsi().get(i); + TxMsi txMsi = entry.getValue(); Object[] parameters = prepareDevInterfaceOtnOduTxMsiParameters(nodeId, interfaceName, txMsi); @@ -1915,7 +1823,7 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices interface OTN ODU Tx MSI", e); } } } @@ -1923,11 +1831,9 @@ public class INode121 { private void persistDevInterfaceOtnOduRxMsi(String nodeId, String interfaceName, OduBuilder oduBuilder, Connection connection) { - - for (int i = 0; i < oduBuilder.getTcm().size(); i++) { - RxMsi rxMsi; - - rxMsi = oduBuilder.getOpu().getMsi().getRxMsi().get(i); + Map rxMsiMap = oduBuilder.getOpu().getMsi().nonnullRxMsi(); + for (Map.Entry entry : rxMsiMap.entrySet()) { + RxMsi rxMsi = entry.getValue(); Object[] parameters = prepareDevInterfaceOtnOduRxMsiParameters(nodeId, interfaceName, rxMsi); @@ -1940,7 +1846,7 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices interface OTN ODU Rx MSI", e); } } } @@ -1948,11 +1854,10 @@ public class INode121 { private void persistDevInterfaceOtnOduExpMsi(String nodeId, String interfaceName, OduBuilder oduBuilder, Connection connection) { - - for (int i = 0; i < oduBuilder.getTcm().size(); i++) { - ExpMsi expMsi; - - expMsi = oduBuilder.getOpu().getMsi().getExpMsi().get(i); + @NonNull + Map expMsiMap = oduBuilder.getOpu().getMsi().nonnullExpMsi(); + for (Map.Entry entry : expMsiMap.entrySet()) { + ExpMsi expMsi = entry.getValue(); Object[] parameters = prepareDevInterfaceOtnOduExpMsiParameters(nodeId, interfaceName, expMsi); @@ -1965,7 +1870,7 @@ public class INode121 { stmt.execute(); stmt.clearParameters(); } catch (SQLException e) { - LOG.error(e.getMessage(), e); + LOG.error("Something wrong when storing devices interface OTN ODU Exp MSI", e); } } }