From f3969004c6ccac18e742c5fc48c844e315991023 Mon Sep 17 00:00:00 2001 From: Michael DÜrre Date: Thu, 8 Apr 2021 06:34:22 +0200 Subject: update websocketmanager MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit update complete notification flow Issue-ID: CCSDK-3252 Signed-off-by: Michael DÜrre Change-Id: I87ba00f615707b942471fcace57bcda50ce37e61 --- .../impl/OpenroadmChangeNotificationListener.java | 19 ++++- .../OpenroadmDeviceChangeNotificationListener.java | 13 +++- .../impl/OpenroadmFaultNotificationListener.java | 24 +++--- .../openroadm/impl/OpenroadmNetworkElement.java | 63 ++++++++-------- .../impl/OpenroadmNetworkElementBase.java | 9 +-- .../openroadm/impl/PmDataBuilderOpenRoadm.java | 88 ++++++++++------------ 6 files changed, 118 insertions(+), 98 deletions(-) (limited to 'sdnr/wt/devicemanager-openroadm/provider/src/main') diff --git a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmChangeNotificationListener.java b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmChangeNotificationListener.java index a138dfbd8..3af6d7aca 100644 --- a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmChangeNotificationListener.java +++ b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmChangeNotificationListener.java @@ -23,7 +23,9 @@ package org.onap.ccsdk.features.sdnr.wt.devicemanager.openroadm.impl; import java.util.List; import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider; +import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.NetconfTimeStampImpl; import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor; +import org.onap.ccsdk.features.sdnr.wt.websocketmanager.model.WebsocketManagerService; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.IetfNetconfNotificationsListener; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfCapabilityChange; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfConfigChange; @@ -50,12 +52,15 @@ public class OpenroadmChangeNotificationListener implements IetfNetconfNotificat private static final Logger log = LoggerFactory.getLogger(OpenroadmChangeNotificationListener.class); private final NetconfAccessor netconfAccessor; private final DataProvider databaseService; + private final WebsocketManagerService notificationServiceService; // end of variables // constructors - public OpenroadmChangeNotificationListener(NetconfAccessor netconfAccessor, DataProvider databaseService) { + public OpenroadmChangeNotificationListener(NetconfAccessor netconfAccessor, DataProvider databaseService, + WebsocketManagerService notificationService) { this.netconfAccessor = netconfAccessor; this.databaseService = databaseService; + this.notificationServiceService = notificationService; } // end of constructors @@ -63,21 +68,30 @@ public class OpenroadmChangeNotificationListener implements IetfNetconfNotificat @Override public void onNetconfConfirmedCommit(NetconfConfirmedCommit notification) { log.info("onNetconfConfirmedCommit {} ", notification); + this.notificationServiceService.sendNotification(notification, this.netconfAccessor.getNodeId().getValue(), + NetconfConfirmedCommit.QNAME, NetconfTimeStampImpl.getConverter().getTimeStamp()); } @Override public void onNetconfSessionStart(NetconfSessionStart notification) { log.info("onNetconfSessionStart {} ", notification); + this.notificationServiceService.sendNotification(notification, this.netconfAccessor.getNodeId().getValue(), + NetconfSessionStart.QNAME, NetconfTimeStampImpl.getConverter().getTimeStamp()); + } @Override public void onNetconfSessionEnd(NetconfSessionEnd notification) { log.info("onNetconfSessionEnd {}", notification); + this.notificationServiceService.sendNotification(notification, this.netconfAccessor.getNodeId().getValue(), + NetconfSessionEnd.QNAME, NetconfTimeStampImpl.getConverter().getTimeStamp()); } @Override public void onNetconfCapabilityChange(NetconfCapabilityChange notification) { log.info("onNetconfCapabilityChange {}", notification); + this.notificationServiceService.sendNotification(notification, this.netconfAccessor.getNodeId().getValue(), + NetconfCapabilityChange.QNAME, NetconfTimeStampImpl.getConverter().getTimeStamp()); } @Override @@ -106,6 +120,9 @@ public class OpenroadmChangeNotificationListener implements IetfNetconfNotificat databaseService.writeEventLog(eventlogBuilder.build()); } log.info("onNetconfConfigChange (2) {}", sb); + this.notificationServiceService.sendNotification(notification, this.netconfAccessor.getNodeId().getValue(), + NetconfConfigChange.QNAME, NetconfTimeStampImpl.getConverter().getTimeStamp()); + } // end of public methods diff --git a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmDeviceChangeNotificationListener.java b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmDeviceChangeNotificationListener.java index 44c8b8d6d..daea1adb3 100644 --- a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmDeviceChangeNotificationListener.java +++ b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmDeviceChangeNotificationListener.java @@ -27,6 +27,7 @@ import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider; import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.NetconfTimeStamp; import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.NetconfTimeStampImpl; import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor; +import org.onap.ccsdk.features.sdnr.wt.websocketmanager.model.WebsocketManagerService; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.ChangeNotification; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.CreateTechInfoNotification; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.OrgOpenroadmDeviceListener; @@ -52,13 +53,16 @@ public class OpenroadmDeviceChangeNotificationListener implements OrgOpenroadmDe private Integer counter = 1; private final NetconfAccessor netconfAccessor; private final DataProvider databaseProvider; + private final WebsocketManagerService notificationServiceService; private static final NetconfTimeStamp ncTimeConverter = NetconfTimeStampImpl.getConverter(); // end of variables // constructors - public OpenroadmDeviceChangeNotificationListener(NetconfAccessor netconfAccessor, DataProvider databaseService) { + public OpenroadmDeviceChangeNotificationListener(NetconfAccessor netconfAccessor, DataProvider databaseService, + WebsocketManagerService faultService) { this.netconfAccessor = netconfAccessor; this.databaseProvider = databaseService; + this.notificationServiceService = faultService; } // end of constructors @@ -100,18 +104,23 @@ public class OpenroadmDeviceChangeNotificationListener implements OrgOpenroadmDe log.info("onDeviceConfigChange (2) {}", sb); counter++; } + this.notificationServiceService.sendNotification(notification, this.netconfAccessor.getNodeId().getValue(), + ChangeNotification.QNAME, notification.getChangeTime()); } @Override public void onCreateTechInfoNotification(CreateTechInfoNotification notification) { + DateAndTime now = NetconfTimeStampImpl.getConverter().getTimeStamp(); log.info("onCreateTechInfoNotification(1){}", notification); EventlogBuilder eventlogBuilder = new EventlogBuilder(); eventlogBuilder.setId(notification.getShelfId()).setAttributeName(notification.getShelfId()) .setObjectId(notification.getShelfId()).setNodeId(this.netconfAccessor.getNodeId().getValue()) .setCounter(counter).setNewValue(notification.getStatus().getName()).setSourceType(SourceType.Netconf) - .setTimestamp(new DateAndTime(ncTimeConverter.getTimeStamp())); + .setTimestamp(now); databaseProvider.writeEventLog(eventlogBuilder.build()); + this.notificationServiceService.sendNotification(notification, this.netconfAccessor.getNodeId().getValue(), + CreateTechInfoNotification.QNAME, now); log.info("Create-techInfo Notification written "); counter++; } diff --git a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmFaultNotificationListener.java b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmFaultNotificationListener.java index 6c3ebd60a..10d0a5640 100644 --- a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmFaultNotificationListener.java +++ b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmFaultNotificationListener.java @@ -25,10 +25,12 @@ package org.onap.ccsdk.features.sdnr.wt.devicemanager.openroadm.impl; import org.eclipse.jdt.annotation.NonNull; import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerServiceProvider; import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.FaultService; +import org.onap.ccsdk.features.sdnr.wt.websocketmanager.model.WebsocketManagerService; import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev191129.AlarmNotification; import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev191129.OrgOpenroadmAlarmListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogEntity; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SourceType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,36 +41,38 @@ import org.slf4j.LoggerFactory; **/ public class OpenroadmFaultNotificationListener implements OrgOpenroadmAlarmListener { private static final Logger log = LoggerFactory.getLogger(OpenroadmFaultNotificationListener.class); - // variables + private final @NonNull FaultService faultEventListener; + private @NonNull WebsocketManagerService notificationService; private Integer count = 1; - // end of variables - // constructors + + public OpenroadmFaultNotificationListener(DeviceManagerServiceProvider serviceProvider) { this.faultEventListener = serviceProvider.getFaultService(); + this.notificationService = serviceProvider.getWebsocketService(); } - // end of constructors - // public methods + @Override public void onAlarmNotification(AlarmNotification notification) { log.info("AlarmNotification {} \t {}", notification.getId(), notification.getAdditionalDetail()); - + final String nodeId = notification.getResource().getDevice().getNodeId().getValue(); FaultlogEntity faultAlarm = new FaultlogBuilder().setObjectId(notification.getCircuitId()) - .setProblem(notification.getProbableCause().getCause().getName()) - .setTimestamp(notification.getRaiseTime()).setId(notification.getId()) - .setNodeId(notification.getResource().getDevice().getNodeId().getValue()) + .setProblem(notification.getProbableCause().getCause().getName()).setSourceType(SourceType.Netconf) + .setTimestamp(notification.getRaiseTime()).setId(notification.getId()).setNodeId(nodeId) .setSeverity(InitialDeviceAlarmReader.checkSeverityValue(notification.getSeverity())).setCounter(count) .build(); this.faultEventListener.faultNotification(faultAlarm); + this.notificationService.sendNotification(notification, nodeId, AlarmNotification.QNAME, + notification.getRaiseTime()); count++; log.info("Notification is written into the database {}", faultAlarm.getObjectId()); } - // end of public methods + } diff --git a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElement.java b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElement.java index bf57a3cf7..02f8547ae 100644 --- a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElement.java +++ b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElement.java @@ -25,7 +25,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Hashtable; import java.util.List; -import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.onap.ccsdk.features.sdnr.wt.common.YangHelper; import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.NetconfTimeStamp; @@ -33,7 +32,6 @@ import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.NetconfTimeStamp import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerServiceProvider; import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor; import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfBindingAccessor; -import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfNotifications; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.OrgOpenroadmDevice; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.circuit.packs.CircuitPacks; @@ -44,6 +42,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.shelves. import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.xponder.XpdrPort; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EventlogBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Inventory; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.PmdataEntity; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SourceType; import org.opendaylight.yangtools.concepts.ListenerRegistration; @@ -77,7 +76,6 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { private PmDataBuilderOpenRoadm openRoadmPmData; private InitialDeviceAlarmReader initialAlarmReader; - private Optional notifications; private static final NetconfTimeStamp ncTimeConverter = NetconfTimeStampImpl.getConverter(); private int counter = 1; // end of variables @@ -87,15 +85,15 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { super(netconfAccess, serviceProvider); - this.notifications = netconfAccess.getNotificationAccessor(); - log.info("Create {}", OpenroadmNetworkElement.class.getSimpleName()); this.openRdmListenerRegistrationResult = null; - this.openRdmListener = new OpenroadmChangeNotificationListener(netconfAccessor, databaseService); + this.openRdmListener = new OpenroadmChangeNotificationListener(netconfAccessor, databaseService, + serviceProvider.getWebsocketService()); this.opnRdmFaultListenerRegistrationResult = null; this.opnRdmFaultListener = new OpenroadmFaultNotificationListener(serviceProvider); this.opnRdmDeviceListenerRegistrationResult = null; - this.opnRdmDeviceListener = new OpenroadmDeviceChangeNotificationListener(netconfAccessor, databaseService); + this.opnRdmDeviceListener = new OpenroadmDeviceChangeNotificationListener(netconfAccessor, databaseService, + serviceProvider.getWebsocketService()); this.circuitPacksRecord = new Hashtable<>(); this.shelfProvisionedcircuitPacks = new Hashtable<>(); this.openRoadmPmData = new PmDataBuilderOpenRoadm(this.netconfAccessor); @@ -112,15 +110,16 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { OrgOpenroadmDevice device = readDevice(this.netconfAccessor); this.opnRdmInventoryInput = new OpenroadmInventoryInput(this.netconfAccessor, device); log.info("openroadmMapper details{}", this.opnRdmInventoryInput.getClass().getName()); - databaseService.writeInventory(this.opnRdmInventoryInput.getInventoryData(Uint32.valueOf(equipmentLevel))); - - readShelvesData(device); - readXpndrData(device); - readCircuitPacketData(device); - readInterfaceData(device); + List inventoryList = new ArrayList<>(); + inventoryList.add(this.opnRdmInventoryInput.getInventoryData(Uint32.valueOf(equipmentLevel))); + readShelvesData(inventoryList, device); + readXpndrData(inventoryList, device); + readCircuitPacketData(inventoryList, device); + readInterfaceData(inventoryList, device); + this.databaseService.writeInventory(this.netconfAccessor.getNodeId().getValue(), inventoryList); // Writing initial alarms at the time of device registration initialAlarmReader.faultService(); -// Writing historical PM data at the time of device registration + // Writing historical PM data at the time of device registration List pmDataEntity = new ArrayList<>(); pmDataEntity = this.openRoadmPmData.buildPmDataEntity(this.openRoadmPmData.getPmData(this.netconfAccessor)); if (!pmDataEntity.isEmpty()) { @@ -145,7 +144,7 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { this.opnRdmDeviceListenerRegistrationResult = netconfAccessor.doRegisterNotificationListener(opnRdmDeviceListener); // Register netconf stream - notifications.get().registerNotificationsStream(NetconfAccessor.DefaultNotificationsStream); + netconfAccessor.registerNotificationsStream(NetconfAccessor.DefaultNotificationsStream); } @Override @@ -164,7 +163,7 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { // end of public methods // private methods - private void readShelvesData(OrgOpenroadmDevice device) { + private void readShelvesData(List inventoryList, OrgOpenroadmDevice device) { Collection shelves = YangHelper.getCollection(device.getShelves()); if (shelves != null) { for (Shelves shelf : shelves) { @@ -174,8 +173,8 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { shelf.getShelfName(), shelf.getSerialId(), shelf.getProductCode(), shelf.getShelfPosition(), shelf.getEquipmentState(), shelf.getHardwareVersion(), shelf.getShelfType(), shelf.getVendor(), shelf.getLifecycleState()); - databaseService.writeInventory( - this.opnRdmInventoryInput.getShelvesInventory(shelf, Uint32.valueOf(equipmentLevel + 1))); + inventoryList + .add(this.opnRdmInventoryInput.getShelvesInventory(shelf, Uint32.valueOf(equipmentLevel + 1))); Collection slotList = YangHelper.getCollection(shelf.getSlots()); if (slotList != null) { for (Slots slot : slotList) { @@ -193,13 +192,13 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { } - private void readXpndrData(OrgOpenroadmDevice device) { + private void readXpndrData(List inventoryList, OrgOpenroadmDevice device) { Collection xponderList = YangHelper.getCollection(device.getXponder()); if (xponderList != null) { for (Xponder xponder : xponderList) { - databaseService.writeInventory( + inventoryList.add( this.opnRdmInventoryInput.getXponderInventory(xponder, Uint32.valueOf(equipmentLevel + 1))); log.info("Xponders: No.: {} , \n Port: {} ,\n Type: {}", xponder.getXpdrNumber(), xponder.getXpdrPort(), xponder.getXpdrType()); @@ -216,12 +215,12 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { } } - private void readCircuitPacketData(OrgOpenroadmDevice device) { + private void readCircuitPacketData(List inventoryList, OrgOpenroadmDevice device) { Collection circuitpackCollection = YangHelper.getCollection(device.getCircuitPacks()); List cpNameList = new ArrayList<>(); if (circuitpackCollection != null) { -// collect all circuit pack names. Required to check for invalid parents later on + // collect all circuit pack names. Required to check for invalid parents later on for (CircuitPacks cp : circuitpackCollection) { cpNameList.add(cp.getCircuitPackName()); } @@ -233,7 +232,7 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { && !this.shelfProvisionedcircuitPacks.containsKey(cp.getCircuitPackName())) { log.info("cp has no parent and no shelf"); this.circuitPacksRecord.put(cp.getCircuitPackName(), (equipmentLevel + 1)); - databaseService.writeInventory( + inventoryList.add( this.opnRdmInventoryInput.getCircuitPackInventory(cp, Uint32.valueOf(equipmentLevel + 1))); } else { // check for missing valid parent circuit name @@ -243,7 +242,7 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { log.info("Cp {} has slotname of the parent circuit pack but no parent circuit pack name", cp.getCircuitPackName()); this.circuitPacksRecord.put(cp.getCircuitPackName(), (equipmentLevel + 3)); - databaseService.writeInventory(this.opnRdmInventoryInput.getCircuitPackInventory(cp, + inventoryList.add(this.opnRdmInventoryInput.getCircuitPackInventory(cp, Uint32.valueOf(equipmentLevel + 3))); databaseService.writeEventLog(writeIncorrectParentLog(cp.getCircuitPackName(), counter) .setObjectId(device.getInfo().getNodeId().getValue()) @@ -254,10 +253,10 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { .containsKey(cp.getParentCircuitPack().getCircuitPackName())) { log.info("Cp {} has parent circuit pack and shelf", cp.getCircuitPackName()); this.circuitPacksRecord.put(cp.getCircuitPackName(), (equipmentLevel + 3)); - databaseService.writeInventory(this.opnRdmInventoryInput.getCircuitPackInventory(cp, + inventoryList.add(this.opnRdmInventoryInput.getCircuitPackInventory(cp, Uint32.valueOf(equipmentLevel + 3))); } else { -// check for incorrect hierarchy + // check for incorrect hierarchy if (cp.getParentCircuitPack().getCircuitPackName() != null && !cpNameList.contains(cp.getParentCircuitPack().getCircuitPackName())) { databaseService.writeEventLog(writeIncorrectParentLog(cp.getCircuitPackName(), counter) @@ -267,7 +266,7 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { log.info("Cp has parent circuit pack but no shelf or a shelf but no parent circuit pack"); this.circuitPacksRecord.put(cp.getCircuitPackName(), (equipmentLevel + 2)); - databaseService.writeInventory(this.opnRdmInventoryInput.getCircuitPackInventory(cp, + inventoryList.add(this.opnRdmInventoryInput.getCircuitPackInventory(cp, Uint32.valueOf(equipmentLevel + 2))); } @@ -277,7 +276,7 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { } } - private void readInterfaceData(OrgOpenroadmDevice device) { + private void readInterfaceData(List inventoryList, OrgOpenroadmDevice device) { Collection interfaceList = YangHelper.getCollection(device.getInterface()); if (interfaceList != null) { for (Interface deviceInterface : interfaceList) { @@ -290,13 +289,13 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { deviceInterface.getSupportingCircuitPackName()); if (deviceInterface.getSupportingCircuitPackName() != null) { if (this.circuitPacksRecord.containsKey(deviceInterface.getSupportingCircuitPackName())) { - databaseService.writeInventory(this.opnRdmInventoryInput.getInterfacesInventory(deviceInterface, + inventoryList.add(this.opnRdmInventoryInput.getInterfacesInventory(deviceInterface, Uint32.valueOf( this.circuitPacksRecord.get(deviceInterface.getSupportingCircuitPackName()) + 1))); } } else { - databaseService.writeInventory(this.opnRdmInventoryInput.getInterfacesInventory(deviceInterface, + inventoryList.add(this.opnRdmInventoryInput.getInterfacesInventory(deviceInterface, Uint32.valueOf(equipmentLevel + 1))); } } @@ -306,8 +305,8 @@ public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase { private OrgOpenroadmDevice readDevice(NetconfBindingAccessor accessor) { final Class openRoadmDev = OrgOpenroadmDevice.class; InstanceIdentifier deviceId = InstanceIdentifier.builder(openRoadmDev).build(); - return accessor.getTransactionUtils().readData(accessor.getDataBroker(), - LogicalDatastoreType.OPERATIONAL, deviceId); + return accessor.getTransactionUtils().readData(accessor.getDataBroker(), LogicalDatastoreType.OPERATIONAL, + deviceId); } private EventlogBuilder writeIncorrectParentLog(String attributeName, Integer counter) { diff --git a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElementBase.java b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElementBase.java index 9f69018f8..9949056bb 100644 --- a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElementBase.java +++ b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElementBase.java @@ -32,19 +32,17 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.pro import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; public class OpenroadmNetworkElementBase implements NetworkElement { - // variables + protected final NetconfBindingAccessor netconfAccessor; protected final DataProvider databaseService; - // end of variables - // constructors + public OpenroadmNetworkElementBase(NetconfBindingAccessor netconfAccess, DeviceManagerServiceProvider serviceProvider) { this.netconfAccessor = netconfAccess; this.databaseService = serviceProvider.getDataProvider(); } - // end of constructors - //public methods + @Override public void register() {} @@ -73,5 +71,4 @@ public class OpenroadmNetworkElementBase implements NetworkElement { public Optional getAcessor() { return Optional.of(netconfAccessor); } - // end of public methods } diff --git a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/PmDataBuilderOpenRoadm.java b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/PmDataBuilderOpenRoadm.java index 7665e81d8..f1fd4471f 100644 --- a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/PmDataBuilderOpenRoadm.java +++ b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/PmDataBuilderOpenRoadm.java @@ -71,17 +71,17 @@ public class PmDataBuilderOpenRoadm { private static final Logger log = LoggerFactory.getLogger(PmDataBuilderOpenRoadm.class); private PmdataEntityBuilder pmDataBuilder; private Bundle b = FrameworkUtil.getBundle(this.getClass()); - // end of variables + // end of variables // constructors public PmDataBuilderOpenRoadm(NetconfBindingAccessor accessor) { this.pmDataBuilder = new PmdataEntityBuilder(); this.pmDataBuilder.setNodeName(accessor.getNodeId().getValue()); } - // end of constructors + // end of constructors // public methods - // Instantiate historical PM data list + // Read PM data public HistoricalPmList getPmData(NetconfBindingAccessor accessor) { final Class pmDataClass = HistoricalPmList.class; log.info("Get PM data for element {}", accessor.getNodeId().getValue()); @@ -101,6 +101,7 @@ public class PmDataBuilderOpenRoadm { Collection historicalPmList = YangHelper.getCollection(pmDataEntry.getHistoricalPm()); for (HistoricalPm historicalPm : historicalPmList) { log.info("PmName:{}", historicalPm.getType()); + // pmDataBuilder.setPerformanceData(value) try { writeperformanceData(historicalPm); @@ -118,11 +119,9 @@ public class PmDataBuilderOpenRoadm { // end of public methods // private methods - // Build performance data of Data provider by mapping values from device private void writeperformanceData(HistoricalPm historicalPm) throws ClassNotFoundException { Collection measurementList = YangHelper.getCollection(historicalPm.getMeasurement()); - Map measurementMap = - new HashMap<>(); + Map measurementMap=new HashMap<>(); // Map Performance data of PmDataEntity with MeasurmentData-HistoricalPm PerformanceDataBuilder performanceDataBuilder = new PerformanceDataBuilder(); for (Measurement measurementData : measurementList) { @@ -131,11 +130,9 @@ public class PmDataBuilderOpenRoadm { if (measurementData.getValidity().getName().equals("suspect")) { this.pmDataBuilder.setSuspectIntervalFlag(true); } - measurementMap.put( - new MeasurementKey(measurementBuilder(historicalPm.getType(), measurementData.getPmParameterUnit(), - measurementData.getPmParameterValue()).getPmKey()), - measurementBuilder(historicalPm.getType(), measurementData.getPmParameterUnit(), - measurementData.getPmParameterValue())); + measurementMap.put(new MeasurementKey(measurementBuilder(historicalPm.getType(), measurementData.getPmParameterUnit(), + measurementData.getPmParameterValue()).getPmKey()), measurementBuilder(historicalPm.getType(), measurementData.getPmParameterUnit(), + measurementData.getPmParameterValue())); } @@ -166,42 +163,20 @@ public class PmDataBuilderOpenRoadm { return granPeriod; } - - // Build the measurement list of data provider based on various values from device - private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.Measurement measurementBuilder( - PmNamesEnum pmType, String pmUnit, PmDataType pmDataType) { - - MeasurementBuilder measBuilder = new MeasurementBuilder(); - if (pmType.getName().equals("erroredSeconds")) { - measBuilder.setPmKey(ErroredSecond.class); - } else if (pmType.getName().equals("severelyErroredSeconds")) { - measBuilder.setPmKey(SeverelyErroredSecond.class); - } else { - for (Class obj : setMeasurementTypeId()) { - if (obj.toString().contains(pmType.name())) { - measBuilder.setPmKey(obj); - } - } - } - measBuilder.setPmUnit(setMeasurementUnit(pmUnit)); - measBuilder.setPmValue(pmDataType); - return measBuilder.build(); - - } - // Find the proper PerformanceMeasurementTypeId class based on the PmNames Enum value from device private List> setMeasurementTypeId() { String packageName = "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.openroadm.pm.types.rev200413"; String packageName1 = "/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/data/provider/openroadm/pm/types/rev200413/"; - List> measTypeObjList = new ArrayList<>(); + List> measTypeObjList = + new ArrayList<>(); URL root = Thread.currentThread().getContextClassLoader().getResource(packageName1); log.info("path for type package: {}", root); Enumeration results = getFileURL(b, packageName); log.info("FOund Packages {}", results); - if (results != null) { + if(results != null) { while (results.hasMoreElements()) { URL path = results.nextElement(); @@ -212,11 +187,11 @@ public class PmDataBuilderOpenRoadm { } - if (cls1 != null) { + if(cls1!=null) { log.info("Class Added {}", cls1.getSimpleName()); } - } + } } @@ -224,34 +199,53 @@ public class PmDataBuilderOpenRoadm { return measTypeObjList; } - //Map matching PerformanceMeasurementUnitId class based on the string value from device private Class setMeasurementUnit(String unitName) { - Class measurementUnitClass = null; + Class measurementUnitClass = null; switch (unitName) { case ("celsius"): measurementUnitClass = Celsius.class; break; - case ("dB"): + case("dB"): measurementUnitClass = DB.class; break; - case ("dBm"): + case("dBm"): measurementUnitClass = DBm.class; break; - case ("fahrenheit"): + case("fahrenheit"): measurementUnitClass = Fahrenheit.class; break; - case ("kHz"): + case("kHz"): measurementUnitClass = KHz.class; break; - case ("mW"): + case("mW"): measurementUnitClass = MW.class; break; default: break; } - return measurementUnitClass; - } + return measurementUnitClass; + } + + private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.Measurement measurementBuilder( + PmNamesEnum pmType, String pmUnit, PmDataType pmDataType) { + MeasurementBuilder measBuilder = new MeasurementBuilder(); + if (pmType.getName().equals("erroredSeconds") ) { + measBuilder.setPmKey(ErroredSecond.class); + } else if (pmType.getName().equals("severelyErroredSeconds")) { + measBuilder.setPmKey(SeverelyErroredSecond.class); + } else { + for (Class obj : setMeasurementTypeId()) { + if (obj.toString().contains(pmType.name())) { + measBuilder.setPmKey(obj); + } + } + } + measBuilder.setPmUnit(setMeasurementUnit(pmUnit)); + measBuilder.setPmValue(pmDataType); + return measBuilder.build(); + + } private Class loadClass(Bundle bundle, String classFilePath) { String className = classFilePath.replaceFirst("^/", "").replace('/', '.').replaceFirst(".class$", ""); -- cgit 1.2.3-korg