-
- 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();
- 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++) {
- stmt.setObject(j + 1, parameters[j]);
+ if (deviceObject.isPresent()) {
+ 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();
+ @NonNull
+ Map<ExternalLinkKey, ExternalLink> externalLinkMap = deviceObject.get().nonnullExternalLink();
+ for (Map.Entry<ExternalLinkKey, ExternalLink> 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++) {
+ stmt.setObject(j + 1, parameters[j]);
+ }
+ stmt.execute();
+ stmt.clearParameters();
+ } catch (SQLException e) {
+ LOG.error("Something wrong when storing devices external links", e);