aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/devicemanager-openroadm/provider/src/main/java/org')
-rw-r--r--sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/DeviceManagerOpenroadmImpl.java2
-rw-r--r--sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/InitialDeviceAlarmReader.java8
-rw-r--r--sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmDeviceChangeNotificationListener.java7
-rw-r--r--sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmInventoryInput.java24
-rw-r--r--sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElement.java196
-rw-r--r--sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElementBase.java74
-rw-r--r--sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElementFactory.java25
-rw-r--r--sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/PmDataBuilderOpenRoadm.java179
8 files changed, 385 insertions, 130 deletions
diff --git a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/DeviceManagerOpenroadmImpl.java b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/DeviceManagerOpenroadmImpl.java
index fc5aabaa7..e522f4bd7 100644
--- a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/DeviceManagerOpenroadmImpl.java
+++ b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/DeviceManagerOpenroadmImpl.java
@@ -62,7 +62,7 @@ public class DeviceManagerOpenroadmImpl implements AutoCloseable {
LOG.info("Session Initiated start {}", APPLICATION_NAME);
- resOpenRoadm = netconfNetworkElementService.registerNetworkElementFactory(new OpenroadmNetworkElementFactory());
+ resOpenRoadm = netconfNetworkElementService.registerBindingNetworkElementFactory(new OpenroadmNetworkElementFactory());
netconfNetworkElementService.writeToEventLog(APPLICATION_NAME, "startup", "done");
diff --git a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/InitialDeviceAlarmReader.java b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/InitialDeviceAlarmReader.java
index f1b3821b8..ccada31bc 100644
--- a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/InitialDeviceAlarmReader.java
+++ b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/InitialDeviceAlarmReader.java
@@ -29,7 +29,7 @@ import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
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.devicemanager.types.FaultData;
-import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor;
+import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfBindingAccessor;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev191129.ActiveAlarmList;
import org.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev191129.OrgOpenroadmAlarmListener;
@@ -52,13 +52,13 @@ public class InitialDeviceAlarmReader {
// variables
private Integer count = 1;
private static final Logger log = LoggerFactory.getLogger(OrgOpenroadmAlarmListener.class);
- private final NetconfAccessor netConfAccesor;
+ private final NetconfBindingAccessor netConfAccesor;
private final @NonNull FaultService faultEventListener;
private final DataProvider dataProvider;
// end of variables
// constructors
- public InitialDeviceAlarmReader(NetconfAccessor accessor, DeviceManagerServiceProvider serviceProvider) {
+ public InitialDeviceAlarmReader(NetconfBindingAccessor accessor, DeviceManagerServiceProvider serviceProvider) {
this.netConfAccesor = accessor;
this.faultEventListener = serviceProvider.getFaultService();
this.dataProvider = serviceProvider.getDataProvider();
@@ -105,7 +105,7 @@ public class InitialDeviceAlarmReader {
// private methods
// Read Alarm Data
- private ActiveAlarmList getActiveAlarmList(NetconfAccessor accessor) {
+ private ActiveAlarmList getActiveAlarmList(NetconfBindingAccessor accessor) {
final Class<ActiveAlarmList> classAlarm = ActiveAlarmList.class;
log.info("Get Alarm data for element {}", accessor.getNodeId().getValue());
InstanceIdentifier<ActiveAlarmList> alarmDataIid = InstanceIdentifier.builder(classAlarm).build();
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 924af99c2..a79bed706 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
@@ -24,6 +24,8 @@ package org.onap.ccsdk.features.sdnr.wt.devicemanager.openroadm.impl;
import java.util.List;
import org.eclipse.jdt.annotation.NonNull;
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.opendaylight.yang.gen.v1.http.org.openroadm.alarm.rev191129.OrgOpenroadmAlarmListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.ChangeNotification;
@@ -31,6 +33,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.CreateTe
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.OrgOpenroadmDeviceListener;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.OtdrScanResult;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.change.notification.Edit;
+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.SourceType;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -50,6 +53,7 @@ public class OpenroadmDeviceChangeNotificationListener implements OrgOpenroadmDe
private Integer counter = 1;
private final NetconfAccessor netconfAccessor;
private final DataProvider databaseProvider;
+ private static final NetconfTimeStamp ncTimeConverter = NetconfTimeStampImpl.getConverter();
// end of variables
// constructors
@@ -106,7 +110,8 @@ public class OpenroadmDeviceChangeNotificationListener implements OrgOpenroadmDe
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);
+ .setCounter(counter).setNewValue(notification.getStatus().getName()).setSourceType(SourceType.Netconf)
+ .setTimestamp(new DateAndTime(ncTimeConverter.getTimeStamp()));
databaseProvider.writeEventLog(eventlogBuilder.build());
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/OpenroadmInventoryInput.java b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmInventoryInput.java
index c62bb053f..9618ce2af 100644
--- a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmInventoryInput.java
+++ b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmInventoryInput.java
@@ -29,6 +29,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.org.open
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.shelves.Shelves;
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.InventoryBuilder;
+import org.opendaylight.yangtools.yang.common.Uint32;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -53,10 +54,11 @@ public class OpenroadmInventoryInput {
// end of constructors
// public methods
- public Inventory getInventoryData(long treeLevel) {
+ public Inventory getInventoryData(Uint32 treeLevel) {
InventoryBuilder inventoryBuilder = new InventoryBuilder();
inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue())
- .setUuid(this.openRoadmDevice.getInfo().getNodeId().getValue())
+ .setUuid(this.openRoadmDevice.getInfo().getNodeId() == null ? "N/A"
+ : this.openRoadmDevice.getInfo().getNodeId().getValue())
.setDate(this.openRoadmDevice.getInfo().getCurrentDatetime().getValue())
.setId(this.openRoadmDevice.getInfo().getNodeId().getValue())
.setManufacturerIdentifier(this.openRoadmDevice.getInfo().getVendor())
@@ -69,7 +71,7 @@ public class OpenroadmInventoryInput {
return inventoryBuilder.build();
}
- public Inventory getShelvesInventory(Shelves shelf, long treeLevel) {
+ public Inventory getShelvesInventory(Shelves shelf, Uint32 treeLevel) {
InventoryBuilder inventoryBuilder = new InventoryBuilder();
inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue()).setId(shelf.getShelfName())
.setDescription((shelf.getUserDescription() == null)
@@ -85,12 +87,16 @@ public class OpenroadmInventoryInput {
return inventoryBuilder.build();
}
- public Inventory getInterfacesInventory(Interface deviceInterface, long treeLevel) {
+ public Inventory getInterfacesInventory(Interface deviceInterface, Uint32 treeLevel) {
InventoryBuilder inventoryBuilder = new InventoryBuilder();
inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue()).setId(deviceInterface.getName())
.setDescription((deviceInterface.getDescription() == null) ? "N/A" : deviceInterface.getDescription())
.setUuid(deviceInterface.getName()).setSerial(deviceInterface.getName())
- .setParentUuid(deviceInterface.getSupportingCircuitPackName()).setTreeLevel(treeLevel)
+ .setParentUuid((deviceInterface.getSupportingCircuitPackName() != null)
+ ? deviceInterface.getSupportingCircuitPackName()
+ : ((deviceInterface.getSupportingInterface() != null) ? deviceInterface.getSupportingInterface()
+ : this.openRoadmDevice.getInfo().getNodeId().getValue()))
+ .setTreeLevel(treeLevel)
.setTypeName((deviceInterface.getType() == null) ? "Interface"
: deviceInterface.getType().getName().substring(69,
deviceInterface.getType().getName().length()))
@@ -102,7 +108,7 @@ public class OpenroadmInventoryInput {
return inventoryBuilder.build();
}
- public Inventory getCircuitPackInventory(CircuitPacks circuitPack, long treeLevel) {
+ public Inventory getCircuitPackInventory(CircuitPacks circuitPack, Uint32 treeLevel) {
InventoryBuilder inventoryBuilder = new InventoryBuilder();
inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue()).setUuid(circuitPack.getCircuitPackName())
.setDate((circuitPack.getManufactureDate() == null) ? "N/A"
@@ -116,14 +122,14 @@ public class OpenroadmInventoryInput {
.setPartTypeId((circuitPack.getClei() == null) ? circuitPack.getType() : circuitPack.getClei())
.setParentUuid((circuitPack.getParentCircuitPack() != null)
? circuitPack.getParentCircuitPack().getCircuitPackName()
- : (circuitPack.getShelf() != null) ? circuitPack.getShelf()
- : this.openRoadmDevice.getInfo().getNodeId().getValue());
+ : ((circuitPack.getShelf() != null) ? circuitPack.getShelf()
+ : this.openRoadmDevice.getInfo().getNodeId().getValue()));
log.info("Inventory data written for CircuitPack {}", circuitPack.getCircuitPackName());
return inventoryBuilder.build();
}
- public Inventory getXponderInventory(Xponder xpdr, long treeLevel) {
+ public Inventory getXponderInventory(Xponder xpdr, Uint32 treeLevel) {
InventoryBuilder inventoryBuilder = new InventoryBuilder();
inventoryBuilder.setNodeId(this.accessor.getNodeId().getValue()).setId(xpdr.getXpdrNumber().toString())
.setDescription("Xponder\nLifecycleState: " + xpdr.getLifecycleState().getName())
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 bc82cd11d..7b45c3e42 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
@@ -26,13 +26,15 @@ 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.DataProvider;
-import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.service.NetworkElement;
-import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.service.NetworkElementService;
+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.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;
@@ -41,12 +43,14 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.org.open
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.shelf.Slots;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.shelves.Shelves;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.xponder.XpdrPort;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementDeviceType;
+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.PmdataEntity;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SourceType;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.NotificationListener;
+import org.opendaylight.yangtools.yang.common.Uint32;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -57,13 +61,11 @@ import org.slf4j.LoggerFactory;
* search db
*
**/
-public class OpenroadmNetworkElement implements NetworkElement {
+public class OpenroadmNetworkElement extends OpenroadmNetworkElementBase {
// variables
- private final long equipmentLevel = 0;
+ private final long equipmentLevel = 1;
private static final Logger log = LoggerFactory.getLogger(OpenroadmNetworkElement.class);
- private final NetconfAccessor netconfAccessor;
- private final DataProvider databaseService;
private Hashtable<String, Long> circuitPacksRecord;
private Hashtable<String, Long> shelfProvisionedcircuitPacks;
private ListenerRegistration<NotificationListener> openRdmListenerRegistrationResult;
@@ -76,35 +78,42 @@ public class OpenroadmNetworkElement implements NetworkElement {
private PmDataBuilderOpenRoadm openRoadmPmData;
private InitialDeviceAlarmReader initialAlarmReader;
private List<PmdataEntity> pmDataEntity = new ArrayList<PmdataEntity>();
+ private Optional<NetconfNotifications> notifications;
+ private static final NetconfTimeStamp ncTimeConverter = NetconfTimeStampImpl.getConverter();
+ private int counter = 1;
// end of variables
// constructors
- public OpenroadmNetworkElement(NetconfAccessor netconfAccess, DeviceManagerServiceProvider serviceProvider) {
+ public OpenroadmNetworkElement(NetconfBindingAccessor netconfAccess, DeviceManagerServiceProvider serviceProvider) {
+
+ super(netconfAccess, serviceProvider);
+
+ this.notifications = netconfAccess.getNotificationAccessor();
log.info("Create {}", OpenroadmNetworkElement.class.getSimpleName());
- this.netconfAccessor = netconfAccess;
- this.databaseService = serviceProvider.getDataProvider();
this.openRdmListenerRegistrationResult = null;
this.openRdmListener = new OpenroadmChangeNotificationListener(netconfAccessor, databaseService);
this.opnRdmFaultListenerRegistrationResult = null;
this.opnRdmFaultListener = new OpenroadmFaultNotificationListener(netconfAccessor, serviceProvider);
this.opnRdmDeviceListenerRegistrationResult = null;
this.opnRdmDeviceListener = new OpenroadmDeviceChangeNotificationListener(netconfAccessor, databaseService);
- this.opnRdmInventoryInput = new OpenroadmInventoryInput(netconfAccess, readDevice(netconfAccess));
this.circuitPacksRecord = new Hashtable<String, Long>();
this.shelfProvisionedcircuitPacks = new Hashtable<String, Long>();
this.openRoadmPmData = new PmDataBuilderOpenRoadm(this.netconfAccessor);
this.initialAlarmReader = new InitialDeviceAlarmReader(this.netconfAccessor, serviceProvider);
log.info("NodeId {}", this.netconfAccessor.getNodeId().getValue());
- log.info("oScaMapper details{}", this.opnRdmInventoryInput.getClass().getName());
+
}
// end of constructors
// public methods
public void initialReadFromNetworkElement() {
+
OrgOpenroadmDevice device = readDevice(this.netconfAccessor);
- databaseService.writeInventory(this.opnRdmInventoryInput.getInventoryData(equipmentLevel));
+ this.opnRdmInventoryInput = new OpenroadmInventoryInput(this.netconfAccessor, device);
+ log.info("oScaMapper details{}", this.opnRdmInventoryInput.getClass().getName());
+ databaseService.writeInventory(this.opnRdmInventoryInput.getInventoryData(Uint32.valueOf(equipmentLevel)));
readShelvesData(device);
readXpndrData(device);
@@ -122,13 +131,8 @@ public class OpenroadmNetworkElement implements NetworkElement {
} else {
log.info("PmDatEntity is empty");
}
-
}
- @Override
- public NetworkElementDeviceType getDeviceType() {
- return NetworkElementDeviceType.OROADM;
- }
@Override
public void register() {
@@ -140,8 +144,7 @@ public class OpenroadmNetworkElement implements NetworkElement {
this.opnRdmDeviceListenerRegistrationResult =
netconfAccessor.doRegisterNotificationListener(opnRdmDeviceListener);
// Register netconf stream
- netconfAccessor.registerNotificationsStream(NetconfAccessor.DefaultNotificationsStream);
-
+ notifications.get().registerNotificationsStream(NetconfAccessor.DefaultNotificationsStream);
}
@Override
@@ -157,23 +160,6 @@ public class OpenroadmNetworkElement implements NetworkElement {
}
}
- @Override
- public NodeId getNodeId() {
- return netconfAccessor.getNodeId();
- }
-
- @Override
- public <L extends NetworkElementService> Optional<L> getService(Class<L> clazz) {
- return Optional.empty();
- }
-
- @Override
- public void warmstart() {}
-
- @Override
- public Optional<NetconfAccessor> getAcessor() {
- return Optional.of(netconfAccessor);
- }
// end of public methods
// private methods
@@ -187,12 +173,12 @@ public class OpenroadmNetworkElement implements NetworkElement {
shelf.getShelfName(), shelf.getSerialId(), shelf.getProductCode(), shelf.getShelfPosition(),
shelf.getEquipmentState(), shelf.getHardwareVersion(), shelf.getShelfType(), shelf.getVendor(),
shelf.getLifecycleState());
- databaseService
- .writeInventory(this.opnRdmInventoryInput.getShelvesInventory(shelf, equipmentLevel + 1));
+ databaseService.writeInventory(
+ this.opnRdmInventoryInput.getShelvesInventory(shelf, Uint32.valueOf(equipmentLevel + 1)));
Collection<Slots> slotList = YangHelper.getCollection(shelf.getSlots());
if (slotList != null) {
for (Slots slot : slotList) {
- if (!slot.getProvisionedCircuitPack().isEmpty()) {
+ if (slot.getProvisionedCircuitPack() != null) {
this.shelfProvisionedcircuitPacks.put(slot.getProvisionedCircuitPack(), equipmentLevel + 2);
}
log.info("Slots for the shelf: {}", shelf.getShelfName());
@@ -200,87 +186,106 @@ public class OpenroadmNetworkElement implements NetworkElement {
slot.getSlotStatus(), slot.getLabel());
}
}
- log.info("size of shelfProvisionedcircuitPacks: {} ", shelfProvisionedcircuitPacks.size());
-
}
-
+ log.info("size of shelfProvisionedcircuitPacks: {} ", shelfProvisionedcircuitPacks.size());
}
+
}
private void readXpndrData(OrgOpenroadmDevice device) {
Collection<Xponder> xponderList = YangHelper.getCollection(device.getXponder());
+
if (xponderList != null) {
for (Xponder xponder : xponderList) {
- databaseService
- .writeInventory(this.opnRdmInventoryInput.getXponderInventory(xponder, equipmentLevel + 1));
+
+ databaseService.writeInventory(
+ this.opnRdmInventoryInput.getXponderInventory(xponder, Uint32.valueOf(equipmentLevel + 1)));
log.info("Xponders: No.: {} , \n Port: {} ,\n Type: {}", xponder.getXpdrNumber(), xponder.getXpdrPort(),
xponder.getXpdrType());
Collection<XpdrPort> xpdrportlist = YangHelper.getCollection(xponder.getXpdrPort());
if (xpdrportlist != null) {
for (XpdrPort xpdrport : xpdrportlist)
- if (!xpdrport.getCircuitPackName().isEmpty()) {
+ if (xpdrport.getCircuitPackName() != null) {
this.shelfProvisionedcircuitPacks.put(xpdrport.getCircuitPackName(), equipmentLevel + 2);
log.info("Size of dict{}", this.shelfProvisionedcircuitPacks.size());
}
-
-
}
- }
+ }
}
}
private void readCircuitPacketData(OrgOpenroadmDevice device) {
Collection<CircuitPacks> circuitpacklist = YangHelper.getCollection(device.getCircuitPacks());
+ List<String> cpNames = new ArrayList<String>();
if (circuitpacklist != null) {
for (CircuitPacks cp : circuitpacklist) {
+ cpNames.add(cp.getCircuitPackName());
+
log.info("CP Name:{}", cp.getCircuitPackName());
- if (!this.shelfProvisionedcircuitPacks.isEmpty()
- && this.shelfProvisionedcircuitPacks.containsKey(cp.getCircuitPackName())) {
- this.circuitPacksRecord.put(cp.getCircuitPackName(), (equipmentLevel + 2));
- databaseService.writeInventory(this.opnRdmInventoryInput.getCircuitPackInventory(cp,
- this.shelfProvisionedcircuitPacks.get(cp.getCircuitPackName())));
- log.info("shelf has circuit pack");
+ if (cp.getParentCircuitPack() == null
+ && !this.shelfProvisionedcircuitPacks.containsKey(cp.getCircuitPackName())) {
+ log.info("cp has no parent and no shelf");
+ this.circuitPacksRecord.put(cp.getCircuitPackName(), (equipmentLevel + 1));
+ databaseService.writeInventory(
+ this.opnRdmInventoryInput.getCircuitPackInventory(cp, Uint32.valueOf(equipmentLevel + 1)));
} else {
- if (cp.getParentCircuitPack() == null) {
- this.circuitPacksRecord.put(cp.getCircuitPackName(), (equipmentLevel + 1));
- databaseService.writeInventory(
- this.opnRdmInventoryInput.getCircuitPackInventory(cp, equipmentLevel + 1));
- log.info("Cp has no parent circuit pack and no shelf");
-
+ // check for missing valid parent circuit name
+ if (cp.getParentCircuitPack().getCpSlotName() != null
+ && cp.getParentCircuitPack().getCircuitPackName() == null) {
+
+ 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,
+ Uint32.valueOf(equipmentLevel + 3)));
+ databaseService.writeEventLog(writeIncorrectParentLog(cp.getCircuitPackName(), counter)
+ .setObjectId(device.getInfo().getNodeId().getValue())
+ .setId(cp.getParentCircuitPack().getCpSlotName())
+ .setNewValue("Missing parent circuit pack name").build());
+ } else if (cp.getParentCircuitPack().getCircuitPackName() != null
+ && this.shelfProvisionedcircuitPacks
+ .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,
+ Uint32.valueOf(equipmentLevel + 3)));
} else {
- if (this.shelfProvisionedcircuitPacks
- .containsKey(cp.getParentCircuitPack().getCircuitPackName())) {
- this.circuitPacksRecord.put(cp.getCircuitPackName(), (equipmentLevel + 3));
- databaseService.writeInventory(
- this.opnRdmInventoryInput.getCircuitPackInventory(cp, equipmentLevel + 3));
- log.info("Cp {} has parent circuit pack and shelf", cp.getCircuitPackName());
- } else {
- this.circuitPacksRecord.put(cp.getCircuitPackName(), (equipmentLevel + 2));
- databaseService.writeInventory(
- this.opnRdmInventoryInput.getCircuitPackInventory(cp, equipmentLevel + 2));
- log.info("Cp {} has parent circuit pack but no shelf", cp.getCircuitPackName());
-
+ // check for incorrect hierarchy
+ if (cp.getParentCircuitPack().getCircuitPackName() != null
+ && !cpNames.contains(cp.getParentCircuitPack().getCircuitPackName())) {
+ databaseService.writeEventLog(writeIncorrectParentLog(cp.getCircuitPackName(), counter)
+ .setObjectId(device.getInfo().getNodeId().getValue())
+ .setId(cp.getParentCircuitPack().getCpSlotName()).build());
}
-
-
+ 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,
+ Uint32.valueOf(equipmentLevel + 2)));
}
- }
-
+ }
}
- }
+ // for (String s : cpParentNames) {
+ // log.info("Parent cps {}:", s);
+ //
+ // if (!cpNames.contains(s)) {
+ // log.info("Invalid Hierarchy detected for {}", s);
+ // databaseService.writeEventLog(writeIncorrectParentLog(s, counter)
+ // .setObjectId(device.getInfo().getNodeId().getValue()).setId(s).build());
+ // }
+ // }
+ }
}
private void readInterfaceData(OrgOpenroadmDevice device) {
Collection<Interface> interfaceList = YangHelper.getCollection(device.getInterface());
if (interfaceList != null) {
for (Interface deviceInterface : interfaceList) {
-
log.info("\n InterfaceName: {}", deviceInterface.getName());
log.info("Supporting CP {}", this.circuitPacksRecord.size());
for (String s : this.circuitPacksRecord.keySet()) {
@@ -288,35 +293,38 @@ public class OpenroadmNetworkElement implements NetworkElement {
}
log.info("Interface {} and their supporting CP {}", deviceInterface.getName(),
deviceInterface.getSupportingCircuitPackName());
-
-
if (deviceInterface.getSupportingCircuitPackName() != null) {
if (this.circuitPacksRecord.containsKey(deviceInterface.getSupportingCircuitPackName())) {
databaseService.writeInventory(this.opnRdmInventoryInput.getInterfacesInventory(deviceInterface,
- this.circuitPacksRecord.get(deviceInterface.getSupportingCircuitPackName()) + 1));
+ Uint32.valueOf(
+ this.circuitPacksRecord.get(deviceInterface.getSupportingCircuitPackName())
+ + 1)));
}
-
} else {
- databaseService.writeInventory(
- this.opnRdmInventoryInput.getInterfacesInventory(deviceInterface, equipmentLevel + 1));
+ databaseService.writeInventory(this.opnRdmInventoryInput.getInterfacesInventory(deviceInterface,
+ Uint32.valueOf(equipmentLevel + 1)));
}
}
}
-
}
- private OrgOpenroadmDevice readDevice(NetconfAccessor accessor) {
-
+ private OrgOpenroadmDevice readDevice(NetconfBindingAccessor accessor) {
final Class<OrgOpenroadmDevice> openRoadmDev = OrgOpenroadmDevice.class;
InstanceIdentifier<OrgOpenroadmDevice> deviceId = InstanceIdentifier.builder(openRoadmDev).build();
-
OrgOpenroadmDevice device = accessor.getTransactionUtils().readData(accessor.getDataBroker(),
LogicalDatastoreType.OPERATIONAL, deviceId);
-
return device;
-
}
- // end of private methods
+ private EventlogBuilder writeIncorrectParentLog(String attributeName, Integer counter) {
+ EventlogBuilder eventlogBuilder = new EventlogBuilder();
+ eventlogBuilder.setAttributeName(attributeName).setCounter(counter)
+ .setNodeId(this.netconfAccessor.getNodeId().getValue()).setSourceType(SourceType.Netconf)
+ .setNewValue("Invalid parent circuit-pack name")
+ .setTimestamp(new DateAndTime(ncTimeConverter.getTimeStamp()));
+ return eventlogBuilder;
+
+ }
+ // end of private methods
}
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
new file mode 100644
index 000000000..9949056bb
--- /dev/null
+++ b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElementBase.java
@@ -0,0 +1,74 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ */
+package org.onap.ccsdk.features.sdnr.wt.devicemanager.openroadm.impl;
+
+import java.util.Optional;
+import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.service.NetworkElement;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.service.NetworkElementService;
+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.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementDeviceType;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
+
+public class OpenroadmNetworkElementBase implements NetworkElement {
+
+ protected final NetconfBindingAccessor netconfAccessor;
+ protected final DataProvider databaseService;
+
+ public OpenroadmNetworkElementBase(NetconfBindingAccessor netconfAccess,
+ DeviceManagerServiceProvider serviceProvider) {
+
+ this.netconfAccessor = netconfAccess;
+ this.databaseService = serviceProvider.getDataProvider();
+ }
+
+ @Override
+ public void register() {}
+
+ @Override
+ public void deregister() {}
+
+ @Override
+ public void warmstart() {}
+
+ @Override
+ public NodeId getNodeId() {
+ return netconfAccessor.getNodeId();
+ }
+
+ @Override
+ public NetworkElementDeviceType getDeviceType() {
+ return NetworkElementDeviceType.OROADM;
+ }
+
+ @Override
+ public <L extends NetworkElementService> Optional<L> getService(Class<L> clazz) {
+ return Optional.empty();
+ }
+
+ @Override
+ public Optional<NetconfAccessor> getAcessor() {
+ return Optional.of(netconfAccessor);
+ }
+}
diff --git a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElementFactory.java b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElementFactory.java
index 5e1640192..cc8eaa68e 100644
--- a/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElementFactory.java
+++ b/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElementFactory.java
@@ -27,6 +27,7 @@ import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.factory.NetworkElementFa
import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.service.NetworkElement;
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.opendaylight.yang.gen.v1.http.org.openroadm.device.rev191129.OrgOpenroadmDevice;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,16 +47,24 @@ public class OpenroadmNetworkElementFactory implements NetworkElementFactory {
// public methods
@Override
- public Optional<NetworkElement> create(NetconfAccessor acessor, DeviceManagerServiceProvider serviceProvider) {
+ public Optional<NetworkElement> create(NetconfAccessor accessor, DeviceManagerServiceProvider serviceProvider) {
- if (acessor.getCapabilites().isSupportingNamespace(OrgOpenroadmDevice.QNAME)) {
+ if (accessor.getCapabilites().isSupportingNamespaceAndRevision(OrgOpenroadmDevice.QNAME)) {
log.info("Create OpenRoadm device {} ", OpenroadmNetworkElement.class.getName());
- log.info("Node Id read by Acessor {}:", acessor.getNodeId().getValue());
-
- return Optional.of(new OpenroadmNetworkElement(acessor, serviceProvider));
- } else {
- return Optional.empty();
- }
+ log.info("Node Id read by Acessor {}:", accessor.getNodeId().getValue());
+ Optional<NetconfBindingAccessor> bindingAccessor = accessor.getNetconfBindingAccessor();
+ if (bindingAccessor.isPresent()) {
+ return Optional.of(new OpenroadmNetworkElement(bindingAccessor.get(), serviceProvider));
+ }
+ } else if (accessor.getCapabilites().isSupportingNamespaceAndRevision("http://org/openroadm/device","2018-10-19")) {
+ log.info("Create OpenRoadm base device {} ", OpenroadmNetworkElementBase.class.getName());
+ log.info("Node Id read by Acessor {}:", accessor.getNodeId().getValue());
+ Optional<NetconfBindingAccessor> bindingAccessor = accessor.getNetconfBindingAccessor();
+ if (bindingAccessor.isPresent()) {
+ return Optional.of(new OpenroadmNetworkElementBase(bindingAccessor.get(), serviceProvider));
+ }
+ }
+ return Optional.empty();
}
// 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 b75e4c67e..7ad2003c4 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
@@ -21,24 +21,39 @@
*/
package org.onap.ccsdk.features.sdnr.wt.devicemanager.openroadm.impl;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Enumeration;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.onap.ccsdk.features.sdnr.wt.common.YangHelper;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.YangHelper2;
-import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor;
+import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfBindingAccessor;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev191129.HistoricalPmList;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev191129.historical.pm.group.HistoricalPm;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev191129.historical.pm.list.HistoricalPmEntry;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.rev191129.historical.pm.val.group.Measurement;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev191129.PmDataType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev191129.PmGranularity;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev191129.PmNamesEnum;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.g836.pm.types.rev200413.ErroredSecond;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.g836.pm.types.rev200413.SeverelyErroredSecond;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.openroadm.pm.types.rev200413.PerformanceMeasurementTypeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.GranularityPeriodType;
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.PmdataEntityBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.entity.PerformanceData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.entity.PerformanceDataBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.MeasurementBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.MeasurementKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.units.rev200413.PerformanceMeasurementUnitId;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,10 +66,11 @@ public class PmDataBuilderOpenRoadm {
// variables
private static final Logger log = LoggerFactory.getLogger(OpenroadmNetworkElement.class);
private PmdataEntityBuilder pmDataBuilder;
+ private Bundle b = FrameworkUtil.getBundle(this.getClass());
// end of variables
// constructors
- public PmDataBuilderOpenRoadm(NetconfAccessor accessor) {
+ public PmDataBuilderOpenRoadm(NetconfBindingAccessor accessor) {
this.pmDataBuilder = new PmdataEntityBuilder();
this.pmDataBuilder.setNodeName(accessor.getNodeId().getValue());
}
@@ -62,7 +78,7 @@ public class PmDataBuilderOpenRoadm {
// end of constructors
// public methods
// Read PM data
- public HistoricalPmList getPmData(NetconfAccessor accessor) {
+ public HistoricalPmList getPmData(NetconfBindingAccessor accessor) {
final Class<HistoricalPmList> pmDataClass = HistoricalPmList.class;
log.info("Get PM data for element {}", accessor.getNodeId().getValue());
InstanceIdentifier<HistoricalPmList> pmDataIid = InstanceIdentifier.builder(pmDataClass).build();
@@ -74,17 +90,24 @@ public class PmDataBuilderOpenRoadm {
// Build PM entity for writing into the database
public List<PmdataEntity> buildPmDataEntity(HistoricalPmList historicalPmEnitityList) {
List<PmdataEntity> pmEntitiyList = new ArrayList<>();
- Collection<HistoricalPmEntry> pmDataEntryList = YangHelper.getCollection(historicalPmEnitityList.getHistoricalPmEntry());
+ Collection<HistoricalPmEntry> pmDataEntryList =
+ YangHelper.getCollection(historicalPmEnitityList.getHistoricalPmEntry());
for (HistoricalPmEntry pmDataEntry : pmDataEntryList) {
pmDataBuilder.setUuidInterface(pmDataEntry.getPmResourceType().getName());
Collection<HistoricalPm> historicalPmList = YangHelper.getCollection(pmDataEntry.getHistoricalPm());
for (HistoricalPm historicalPm : historicalPmList) {
log.info("PmName:{}", historicalPm.getType());
- this.pmDataBuilder.setScannerId(historicalPm.getType().getName());
- writeperformanceData(historicalPm);
- log.info("NodeName: {}, Scanner Id:{}, Period: {}", this.pmDataBuilder.getNodeName(),
- this.pmDataBuilder.getScannerId(), this.pmDataBuilder.getGranularityPeriod().getName());
+ // pmDataBuilder.setPerformanceData(value)
+
+ try {
+ writeperformanceData(historicalPm);
+ } catch (ClassNotFoundException e) {
+ log.info("No relevant data found");
+ }
+ // log.info("NodeName: {}, Scanner Id:{}, Period: {}", this.getNodeName(),
+ // this.getScannerId(), this.getGranularityPeriod().getName());
pmEntitiyList.add(this.pmDataBuilder.build());
+
log.info("PmListSize before db writing: {}", pmEntitiyList.size());
}
log.info("PmListSize before db writing: {}", pmEntitiyList.size());
@@ -94,21 +117,32 @@ public class PmDataBuilderOpenRoadm {
// end of public methods
// private methods
- private void writeperformanceData(HistoricalPm historicalPm) {
+ private void writeperformanceData(HistoricalPm historicalPm) throws ClassNotFoundException {
Collection<Measurement> measurementList = YangHelper.getCollection(historicalPm.getMeasurement());
-
+ Map<MeasurementKey, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.Measurement> measurementMap=new HashMap<MeasurementKey, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.Measurement>();
+ // Map Performance data of PmDataEntity with MeasurmentData-HistoricalPm
+ PerformanceDataBuilder performanceDataBuilder = new PerformanceDataBuilder();
for (Measurement measurementData : measurementList) {
this.pmDataBuilder.setGranularityPeriod(mapGranularityPeriod(measurementData.getGranularity()))
- .setPerformanceData(getPerformancedata(measurementData))
.setTimeStamp(measurementData.getCompletionTime());
if (measurementData.getValidity().getName().equals("suspect")) {
this.pmDataBuilder.setSuspectIntervalFlag(true);
}
- log.info("Time:d{}, \n Scannerid: {}, \n UUID: {}", this.pmDataBuilder.getGranularityPeriod().getName(),
- this.pmDataBuilder.getScannerId(), this.pmDataBuilder.getUuidInterface());
+ measurementMap.put(new MeasurementKey(measurementBuilder(historicalPm.getType(), measurementData.getPmParameterUnit(),
+ measurementData.getPmParameterValue()).getPmKey()), measurementBuilder(historicalPm.getType(), measurementData.getPmParameterUnit(),
+ measurementData.getPmParameterValue()));
+
+
+
+ // log.info("Time:d{}, \n Scannerid: {}, \n UUID: {}", this.getGranularityPeriod().getName(),
+ // pmDataBuilder.getScannerId(), this.getUuidInterface());
}
+
+ pmDataBuilder.setPerformanceData(performanceDataBuilder.setMeasurement(measurementMap).build());
}
+
+
//Map Performance data of PmDataEntity with MeasurmentData-HistoricalPm
private PerformanceData getPerformancedata(Measurement measurementData) {
PerformanceData performanceData;
@@ -138,5 +172,124 @@ public class PmDataBuilderOpenRoadm {
}
return granPeriod;
}
+
+ private List<Class<? extends PerformanceMeasurementTypeId>> setMeasurementTypeId() throws ClassNotFoundException {
+ 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<Class<? extends PerformanceMeasurementTypeId>> measTypeObjList =
+ new ArrayList<Class<? extends PerformanceMeasurementTypeId>>();
+ URL root = Thread.currentThread().getContextClassLoader().getResource(packageName1);
+
+ log.info("path for type package: {}", root);
+
+ Enumeration<URL> results = getFileURL(b, packageName);
+ log.info("FOund Packages {}", results);
+ while (results.hasMoreElements()) {
+ URL path = results.nextElement();
+ // log.info("Enumeration URL-file {}", path.getFile());
+ // log.info("Enumeration URL-String {}", path.toString());
+ Class<?> cls1 = loadClass(b, path.getFile());
+
+ if (PerformanceMeasurementTypeId.class.isAssignableFrom(cls1)) {
+ measTypeObjList.add((Class<? extends PerformanceMeasurementTypeId>) cls1);
+ }
+ log.info("Class Added {}", cls1.getSimpleName());
+
+ }
+
+ return measTypeObjList;
+ }
+
+ private List<Class<? extends PerformanceMeasurementUnitId>> setMeasurementUnit() throws ClassNotFoundException {
+ String packageName =
+ "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.units.rev200413";
+ List<Class<? extends PerformanceMeasurementUnitId>> measUnitObjList =
+ new ArrayList<Class<? extends PerformanceMeasurementUnitId>>();
+ URL root = Thread.currentThread().getContextClassLoader().getResource(packageName.replace(".", "/"));
+ log.info("path for unit package{}", root);
+
+ Enumeration<URL> results_unit = getFileURL(b, packageName);
+ log.info("FOund Packages {}", results_unit);
+ while (results_unit.hasMoreElements()) {
+ URL path = results_unit.nextElement();
+ Class<?> cls1 = loadClass(b, path.getFile());
+ if (PerformanceMeasurementUnitId.class.isAssignableFrom(cls1)) {
+ measUnitObjList.add((Class<? extends PerformanceMeasurementUnitId>) cls1);
+ }
+ log.info("Class Added {}", cls1.getSimpleName());
+
+ }
+
+ return measUnitObjList;
+ }
+
+ 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) throws ClassNotFoundException {
+
+ MeasurementBuilder measBuilder = new MeasurementBuilder();
+ if (pmType.getName() == "erroredSeconds") {
+ measBuilder.setPmKey(ErroredSecond.class);
+ } else if (pmType.getName() == "severelyErroredSeconds") {
+ measBuilder.setPmKey(SeverelyErroredSecond.class);
+ } else {
+ for (Class<? extends PerformanceMeasurementTypeId> obj : setMeasurementTypeId()) {
+ if (obj.toString().contains(pmType.name())) {
+ measBuilder.setPmKey(obj);
+ }
+ }
+ }
+ for (Class<? extends PerformanceMeasurementUnitId> obj : setMeasurementUnit()) {
+ if (obj.toString().contains(pmUnit)) {
+ measBuilder.setPmUnit(obj);
+ }
+ }
+ measBuilder.setPmValue(pmDataType);
+ return measBuilder.build();
+
+ }
+
+ private Class<?> loadClass(Bundle bundle, String classFilePath) {
+ String className = classFilePath.replaceFirst("^/", "").replace('/', '.').replaceFirst(".class$", "");
+ try {
+ return bundle.loadClass(className);
+ } catch (Throwable e) {
+ log.info(String.format("Class [%s] could not be loaded. Message: [%s].", className, e.getMessage()));
+ }
+ return null;
+ }
+
+ private static Enumeration<URL> getFileURL(Bundle b, String classPath) {
+
+ BundleContext context = b == null ? null : b.getBundleContext();
+ if (context == null) {
+ log.info("no bundle context available");
+ return null;
+ }
+ Bundle[] bundles = context.getBundles();
+ if (bundles == null || bundles.length <= 0) {
+ log.info("no bundles found");
+ return null;
+ }
+ log.info("found {} bundles", bundles.length);
+ Enumeration<URL> resultUrl = null;
+
+ for (Bundle bundle : bundles) {
+ resultUrl = bundle.findEntries("/" + classPath.replace(".", "/"), "*.class", false);
+ // resultUrl = bundle.getEntryPaths("/" + classPath.replace(".", "/"));
+ if (resultUrl != null) {
+ b = bundle;
+ break;
+
+ }
+
+ }
+
+ return resultUrl;
+ }
+
+
// end of private methods
}
+