aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElement.java
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElement.java')
-rw-r--r--sdnr/wt/devicemanager-openroadm/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/openroadm/impl/OpenroadmNetworkElement.java196
1 files changed, 102 insertions, 94 deletions
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
}