Support for PM (Performance Management) 42/133642/1
authorRavi Pendurty <ravi.pendurty@highstreet-technologies.com>
Tue, 14 Mar 2023 11:08:47 +0000 (16:38 +0530)
committerRavi Pendurty <ravi.pendurty@highstreet-technologies.com>
Tue, 14 Mar 2023 11:09:10 +0000 (16:39 +0530)
Code formatting

Refactoring and log level changes

Issue-ID: CCSDK-3866
Signed-off-by: Ravi Pendurty <ravi.pendurty@highstreet-technologies.com>
Change-Id: Iaeca01cddcd60c3a607b72dc5ab35507954d115e
Signed-off-by: Ravi Pendurty <ravi.pendurty@highstreet-technologies.com>
20 files changed:
sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/adaptermanager/impl/DeviceManagerAdapterManagerImpl.java
sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/adaptermanager/impl/NtsNetworkElement.java
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomNetworkElement.java
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomNetworkElementFactory.java
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/dataprovider/InternalDataModelSeverity.java
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/dataprovider/Onf14DomToInternalDataModel.java
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/equipment/Onf14DomEquipmentManager.java
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/interfaces/Onf14DomInterfacePacManager.java
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/pm/Helper.java [new file with mode: 0644]
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/pm/PerformanceDataAirInterface.java [new file with mode: 0644]
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/util/Debug.java
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/util/Onf14DMDOMUtility.java
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/util/Onf14DevicemanagerQNames.java
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/notifications/Onf14DomAirInterfaceNotificationListener.java [moved from sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomAirInterfaceNotificationListener.java with 88% similarity]
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/notifications/Onf14DomEthernetContainerNotificationListener.java [moved from sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomEthernetContainerNotificationListener.java with 99% similarity]
sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/notifications/Onf14DomWireInterfaceNotificationListener.java [moved from sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/Onf14DomWireInterfaceNotificationListener.java with 87% similarity]
sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/TestOnf14DomAirInterfaceNotificationListener.java
sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/TestOnf14DomEthernetContainerNotificationListener.java
sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/TestOnf14DomNetworkElement.java
sdnr/wt/devicemanager-onap/onf14/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/TestOnf14DomWireInterfaceNotificationListener.java

index 74eb8d0..b094976 100644 (file)
@@ -49,7 +49,7 @@ public class NtsNetworkElement implements NetworkElement {
     private @NonNull ListenerRegistration<NotificationListener> listenerRegistrationresult;
 
     NtsNetworkElement(NetconfBindingAccessor netconfAccess, DeviceManagerServiceProvider serviceProvider) {
-        LOG.info("Create {}", NtsNetworkElement.class.getSimpleName());
+        LOG.debug("Create {}", NtsNetworkElement.class.getSimpleName());
         this.netconfAccessor = netconfAccess;
         this.databaseService = serviceProvider.getDataProvider();
         this.notificationListener = new NotificationListenerImpl(netconfAccess,serviceProvider);
index 56834a1..6ff43bd 100644 (file)
  */
 package org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl;
 
+import java.util.Iterator;
 import java.util.Map;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
 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.ne.service.PerformanceDataProvider;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.dataprovider.Onf14DomToInternalDataModel;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.equipment.Onf14DomEquipmentManager;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.interfaces.Onf14DomInterfacePacManager;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.interfaces.TechnologySpecificPacKeys;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DevicemanagerQNames;
 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.service.NotificationService;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.PerformanceManager;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.types.PerformanceDataLtp;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.util.InconsistentPMDataException;
 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor;
 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfDomAccessor;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
@@ -47,7 +54,7 @@ import org.slf4j.LoggerFactory;
  * Representation of ONF Core model 1.4 device Top level element is "ControlConstruct" (replaces "NetworkElement" of
  * older ONF Version) NOTE:
  */
-public class Onf14DomNetworkElement implements NetworkElement {
+public class Onf14DomNetworkElement implements NetworkElement, PerformanceDataProvider {
 
     private static final Logger log = LoggerFactory.getLogger(Onf14DomNetworkElement.class);
 
@@ -55,9 +62,13 @@ public class Onf14DomNetworkElement implements NetworkElement {
             YangInstanceIdentifier.builder().node(Onf14DevicemanagerQNames.CORE_MODEL_CONTROL_CONSTRUCT_CONTAINER)
                     .node(Onf14DevicemanagerQNames.CORE_MODEL_CC_TOP_LEVEL_EQPT).build();
 
+    private final @NonNull Object pmLock = new Object();
+    protected @Nullable TechnologySpecificPacKeys pmLp = null;
+    protected @Nullable Iterator<TechnologySpecificPacKeys> interfaceListIterator = null;
     private final NetconfDomAccessor netconfDomAccessor;
     private final DataProvider databaseService;
     private final @NonNull FaultService faultService;
+    private final @NonNull PerformanceManager performanceManager;
     private final @NonNull NotificationService notificationService;
 
     private final Onf14DomToInternalDataModel onf14Mapper;
@@ -73,6 +84,7 @@ public class Onf14DomNetworkElement implements NetworkElement {
         this.databaseService = serviceProvider.getDataProvider();
         this.notificationService = serviceProvider.getNotificationService();
         this.faultService = serviceProvider.getFaultService();
+        this.performanceManager = serviceProvider.getPerformanceManagerService();
         this.namespaceRevision = namespaceRevision;
         this.onf14Mapper = new Onf14DomToInternalDataModel();
         this.equipmentManager = new Onf14DomEquipmentManager(netconfDomAccessor, databaseService, onf14Mapper);
@@ -84,16 +96,16 @@ public class Onf14DomNetworkElement implements NetworkElement {
      * reading the inventory (CoreModel 1.4 Equipment Model) and adding it to the DB
      */
     public void initialReadFromNetworkElement() {
-        log.info("Calling read equipment");
+        log.debug("Calling read equipment");
         // Read complete device tree
         readEquipmentData();
 
-        // Read fault data and subscribe for notifications
-        interfacePacManager.register();
-
         int problems = faultService.removeAllCurrentProblemsOfNode(netconfDomAccessor.getNodeId());
         log.debug("Removed all {} problems from database at registration", problems);
 
+        // Read fault data and subscribe for notifications
+        interfacePacManager.register();
+
     }
 
     /**
@@ -114,23 +126,28 @@ public class Onf14DomNetworkElement implements NetworkElement {
         if (netconfDomAccessor.isNotificationsRFC5277Supported()) {
             // Output notification streams to LOG
             Map<StreamKey, Stream> streams = netconfDomAccessor.getNotificationStreamsAsMap();
-            log.info("Available notifications streams: {}", streams);
+            log.debug("Available notifications streams: {}", streams);
             // Register to default stream
             netconfDomAccessor.invokeCreateSubscription();
         }
+        // -- Register NE to performance manager
+        performanceManager.registration(netconfDomAccessor.getNodeId(), this);
     }
 
     @Override
-    public void deregister() {}
+    public void deregister() {
+        performanceManager.deRegistration(netconfDomAccessor.getNodeId());
+    }
 
     @Override
     public NodeId getNodeId() {
         return netconfDomAccessor.getNodeId();
     }
 
+    @SuppressWarnings("unchecked")
     @Override
     public <L extends NetworkElementService> Optional<L> getService(Class<L> clazz) {
-        return Optional.empty();
+        return clazz.isInstance(this) ? Optional.of((L) this) : Optional.empty();
     }
 
     @Override
@@ -148,7 +165,7 @@ public class Onf14DomNetworkElement implements NetworkElement {
 
     private void readEquipmentData() {
         Optional<NormalizedNode> topLevelEquipment = readTopLevelEquipment(netconfDomAccessor);
-        log.info("Top level equipment data is {}", topLevelEquipment.isPresent() ? topLevelEquipment.get() : null);
+        log.debug("Top level equipment data is {}", topLevelEquipment.isPresent() ? topLevelEquipment.get() : null);
         if (topLevelEquipment.isPresent()) {
             equipmentManager.setEquipmentData(topLevelEquipment.get());
         }
@@ -156,8 +173,78 @@ public class Onf14DomNetworkElement implements NetworkElement {
     }
 
     private Optional<NormalizedNode> readTopLevelEquipment(NetconfDomAccessor netconfDomAccessor) {
-        log.info("Reading Top level equipment data");
         return netconfDomAccessor.readDataNode(LogicalDatastoreType.CONFIGURATION, TOPLEVELEQUIPMENT_IID);
     }
 
+    public Object getPmLock() {
+        return pmLock;
+    }
+
+    @Override
+    public void resetPMIterator() {
+        synchronized (pmLock) {
+            interfaceListIterator = interfacePacManager.getAirInterfaceList().iterator();
+        }
+        log.debug("PM reset iterator");
+    }
+
+    @Override
+    public boolean hasNext() {
+        boolean res;
+        synchronized (pmLock) {
+            res = interfaceListIterator != null ? interfaceListIterator.hasNext() : false;
+        }
+        log.debug("PM hasNext LTP {}", res);
+        return res;
+    }
+
+    @Override
+    public void next() {
+        synchronized (pmLock) {
+            if (interfaceListIterator == null) {
+                pmLp = null;
+                log.debug("PM next LTP null");
+            } else {
+                pmLp = interfaceListIterator.next();
+            }
+        }
+
+    }
+
+    @Override
+    public Optional<PerformanceDataLtp> getLtpHistoricalPerformanceData() throws InconsistentPMDataException {
+        synchronized (getPmLock()) {
+            if (pmLp != null) {
+                log.debug("Enter query PM");
+                @NonNull
+                TechnologySpecificPacKeys lp = pmLp;
+                return Optional.of(interfacePacManager.getLtpHistoricalPerformanceData(lp));
+            }
+            return Optional.empty();
+        }
+    }
+
+    @Override
+    public String pmStatusToString() {
+        StringBuilder res = new StringBuilder();
+        synchronized (pmLock) {
+            if (pmLp == null) {
+                res.append("no interface");
+            } else {
+                res.append("ActualLP=");
+                res.append(pmLp.getLocalId());
+            }
+            res.append(" IFList=");
+            int no = 0;
+            for (TechnologySpecificPacKeys lp : interfacePacManager.getAirInterfaceList()) {
+                res.append("[");
+                res.append(no++);
+                res.append("]=");
+                res.append(lp.getLocalId());
+                res.append(" ");
+            }
+        }
+        return res.toString();
+    }
+
 }
index b47f56d..0c84cdf 100644 (file)
@@ -39,13 +39,14 @@ public class Onf14DomNetworkElementFactory implements NetworkElementFactory {
         Optional<NetworkElement> ne = Optional.empty();
         Capabilities capabilities = accessor.getCapabilites();
         if (capabilities.isSupportingNamespace(Onf14DevicemanagerQNames.CORE_MODEL_CONTROL_CONSTRUCT_CONTAINER)) {
-            String namespaceRevision = capabilities.getRevisionForNamespace(Onf14DevicemanagerQNames.CORE_MODEL_CONTROL_CONSTRUCT_CONTAINER);
+            String namespaceRevision = capabilities
+                    .getRevisionForNamespace(Onf14DevicemanagerQNames.CORE_MODEL_CONTROL_CONSTRUCT_CONTAINER);
+
+            Optional<NetconfDomAccessor> domAccessor = accessor.getNetconfDomAccessor();
+            if (domAccessor.isPresent()) {
+                ne = Optional.of(new Onf14DomNetworkElement(domAccessor.get(), serviceProvider, namespaceRevision));
+            }
 
-                Optional<NetconfDomAccessor> domAccessor = accessor.getNetconfDomAccessor();
-                if (domAccessor.isPresent()) {
-                    ne = Optional.of(new Onf14DomNetworkElement(domAccessor.get(), serviceProvider, namespaceRevision));
-                }
-         
             log.info("Create device:{}", ne.isPresent() ? ne.get().getClass().getSimpleName() : "not");
         }
         return ne;
index 6d31d73..917a821 100644 (file)
@@ -30,10 +30,19 @@ import org.slf4j.LoggerFactory;
 public class InternalDataModelSeverity {
 
     private static Logger log = LoggerFactory.getLogger(InternalDataModelSeverity.class);
-    private static final Map<String, SeverityType> SEVERITYMAP =
-            Map.of("SEVERITY_TYPE_MAJOR", SeverityType.Major, "SEVERITY_TYPE_CRITICAL", SeverityType.Critical,
-                    "SEVERITY_TYPE_MINOR", SeverityType.Minor, "SEVERITY_TYPE_WARNING", SeverityType.Warning);
-
+    // @formatter:off
+    private static final Map<String, SeverityType> SEVERITYMAP = Map.of(
+            "SEVERITY_TYPE_MAJOR", SeverityType.Major,
+            "SEVERITY_AND_CLEARED_TYPE_MAJOR", SeverityType.Major,
+            "SEVERITY_TYPE_CRITICAL", SeverityType.Critical,
+            "SEVERITY_AND_CLEARED_TYPE_CRITICAL", SeverityType.Critical,
+            "SEVERITY_TYPE_MINOR", SeverityType.Minor,
+            "SEVERITY_AND_CLEARED_TYPE_MINOR", SeverityType.Minor,
+            "SEVERITY_TYPE_WARNING", SeverityType.Warning,
+            "SEVERITY_AND_CLEARED_TYPE_WARNING", SeverityType.Warning,
+            "SEVERITY_AND_CLEARED_TYPE_INDETERMINATE", SeverityType.NonAlarmed,
+            "SEVERITY_AND_CLEARED_TYPE_CLEARED", SeverityType.NonAlarmed);
+    // @formatter:on
     public static SeverityType mapSeverity(String severity) {
         log.debug("Severity is - {}", severity);
         SeverityType res = null;
index 2a93137..af817fe 100644 (file)
@@ -1,12 +1,9 @@
 package org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.dataprovider;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Objects;
 import java.util.Set;
-
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DMDOMUtility;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DevicemanagerQNames;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Inventory;
index 8f7a448..5c71011 100644 (file)
@@ -65,56 +65,11 @@ public class Onf14DomEquipmentManager {
         this.equipmentUuidList = new ArrayList<>();
     }
 
+    // public methods
     public List<String> getEquipmentUuidList() {
         return equipmentUuidList;
     }
 
-    private List<Inventory> collectEquipment(List<Inventory> list, MapEntryNode currentEq, MapEntryNode parentEq,
-            long treeLevel) {
-
-        // if the Equipment UUID is already in the list, it was already processed
-        // needed for solving possible circular dependencies
-        if (equipmentUuidList.contains(Onf14DMDOMUtility.getUuidFromEquipment(currentEq))) {
-            log.debug("Not adding equipment with uuid {} because it was aleady added...",
-                    Onf14DMDOMUtility.getUuidFromEquipment(currentEq));
-            return list;
-        }
-
-        // we add this to our internal list, such that we avoid circular dependencies
-        equipmentUuidList.add(Onf14DMDOMUtility.getUuidFromEquipment(currentEq));
-        log.debug("Adding equipment with uuid {} to the database...",
-                Onf14DMDOMUtility.getUuidFromEquipment(currentEq));
-
-        // we add our current equipment to the database
-        list.add(onf14Mapper.getInternalEquipment(netconfDomAccessor.getNodeId(), currentEq, parentEq, treeLevel));
-
-        // we iterate the kids of our current equipment and add them to the database
-        // recursively
-        // the actual reference is here:
-        // /core-model:control-construct/equipment/contained-holder/occupying-fru
-
-        MapNode containedHolderMap = (MapNode) currentEq
-                .childByArg(new NodeIdentifier(Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_CONTAINED_HOLDER));
-        if (containedHolderMap != null) {
-            Collection<MapEntryNode> containedHolderCollection = containedHolderMap.body();
-            for (MapEntryNode holder : containedHolderCollection) {
-                String occupyingFru = Onf14DMDOMUtility.getLeafValue(holder,
-                        Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_OCCUPYING_FRU);
-
-                if (occupyingFru != null) {
-                    Optional<NormalizedNode> childEq = readEquipmentInstance(netconfDomAccessor, occupyingFru);
-                    if (childEq.isPresent()) {
-                        // current becomes parent and tree level increases by 1
-                        collectEquipment(list, (MapEntryNode) childEq.get(), currentEq, treeLevel + 1);
-                    }
-                }
-            }
-        }
-
-        return list;
-    }
-
-    // public methods
     /**
      * Set all equipment data from controlConstruct into database and into this manager.
      *
@@ -124,7 +79,7 @@ public class Onf14DomEquipmentManager {
         Objects.requireNonNull(controlConstruct);
 
         // the top-level-equipment list contains the root objects of the Equipment Model
-        log.debug("Getting list of topLevelEquipment for mountpoint {}", netconfDomAccessor.getNodeId());
+        log.debug("Iterating through the list of topLevelEquipment for mountpoint {}", netconfDomAccessor.getNodeId());
         // adding all root Equipment objects to the DB
         List<Inventory> inventoryList = new ArrayList<>();
         for (String uuid : getTopLevelEquipment(controlConstruct)) {
@@ -156,7 +111,7 @@ public class Onf14DomEquipmentManager {
      */
     private Optional<NormalizedNode> readEquipmentInstance(NetconfDomAccessor accessData, String equipmentUuid) {
 
-        log.info("DBRead Get equipment from mountpoint {} for uuid {}", accessData.getNodeId().getValue(),
+        log.debug("DBRead Get equipment from mountpoint {} for uuid {}", accessData.getNodeId().getValue(),
                 equipmentUuid);
 
         InstanceIdentifierBuilder equipmentIIDBuilder = YangInstanceIdentifier.builder()
@@ -168,4 +123,49 @@ public class Onf14DomEquipmentManager {
         return accessData.readDataNode(LogicalDatastoreType.CONFIGURATION, equipmentIIDBuilder.build());
     }
 
+    private List<Inventory> collectEquipment(List<Inventory> list, MapEntryNode currentEq, MapEntryNode parentEq,
+            long treeLevel) {
+
+        // if the Equipment UUID is already in the list, it was already processed
+        // needed for solving possible circular dependencies
+        if (equipmentUuidList.contains(Onf14DMDOMUtility.getUuidFromEquipment(currentEq))) {
+            log.debug("Not adding equipment with uuid {} because it was aleady added...",
+                    Onf14DMDOMUtility.getUuidFromEquipment(currentEq));
+            return list;
+        }
+
+        // we add this to our internal list, such that we avoid circular dependencies
+        equipmentUuidList.add(Onf14DMDOMUtility.getUuidFromEquipment(currentEq));
+        log.debug("Adding equipment with uuid {} to the database...",
+                Onf14DMDOMUtility.getUuidFromEquipment(currentEq));
+
+        // we add our current equipment to the database
+        list.add(onf14Mapper.getInternalEquipment(netconfDomAccessor.getNodeId(), currentEq, parentEq, treeLevel));
+
+        // we iterate the kids of our current equipment and add them to the database
+        // recursively
+        // the actual reference is here:
+        // /core-model:control-construct/equipment/contained-holder/occupying-fru
+
+        MapNode containedHolderMap = (MapNode) currentEq
+                .childByArg(new NodeIdentifier(Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_CONTAINED_HOLDER));
+        if (containedHolderMap != null) {
+            Collection<MapEntryNode> containedHolderCollection = containedHolderMap.body();
+            for (MapEntryNode holder : containedHolderCollection) {
+                String occupyingFru = Onf14DMDOMUtility.getLeafValue(holder,
+                        Onf14DevicemanagerQNames.CORE_MODEL_CC_EQPT_OCCUPYING_FRU);
+
+                if (occupyingFru != null) {
+                    Optional<NormalizedNode> childEq = readEquipmentInstance(netconfDomAccessor, occupyingFru);
+                    if (childEq.isPresent()) {
+                        // current becomes parent and tree level increases by 1
+                        collectEquipment(list, (MapEntryNode) childEq.get(), currentEq, treeLevel + 1);
+                    }
+                }
+            }
+        }
+
+        return list;
+    }
+
 }
index eed6f5d..71f94dc 100644 (file)
@@ -28,16 +28,18 @@ import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
-import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.Onf14DomAirInterfaceNotificationListener;
-import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.Onf14DomEthernetContainerNotificationListener;
-import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.Onf14DomWireInterfaceNotificationListener;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.dataprovider.InternalDataModelSeverity;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.pm.PerformanceDataAirInterface;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Debug;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DMDOMUtility;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DevicemanagerQNames;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.notifications.Onf14DomAirInterfaceNotificationListener;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.notifications.Onf14DomEthernetContainerNotificationListener;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.notifications.Onf14DomWireInterfaceNotificationListener;
 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.devicemanager.types.PerformanceDataLtp;
 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfDomAccessor;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
@@ -47,6 +49,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.Augmentat
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.InstanceIdentifierBuilder;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -130,15 +133,77 @@ public class Onf14DomInterfacePacManager {
         registerForNotifications();
     }
 
+    public List<TechnologySpecificPacKeys> getAirInterfaceList() {
+        return airInterfaceList;
+    }
+
+    public PerformanceDataLtp readAirInterfaceHistoricalPerformanceData(String ltpUuid, String localId,
+            PerformanceDataLtp res) {
+        log.debug("Get historical performance data for class {} from mountpoint {} for LTP uuid {} and local-id {}",
+                Onf14DevicemanagerQNames.AIR_INTERFACE_2_0_MODULE, netconfDomAccessor.getNodeId().getValue(), ltpUuid,
+                localId);
+
+        // constructing the IID needs the augmentation exposed by the air-interface-2-0
+        // model
+
+        InstanceIdentifierBuilder layerProtocolIID =
+                YangInstanceIdentifier.builder().node(Onf14DevicemanagerQNames.CORE_MODEL_CONTROL_CONSTRUCT_CONTAINER)
+                        .node(Onf14DevicemanagerQNames.CORE_MODEL_CC_LTP)
+                        .nodeWithKey(Onf14DevicemanagerQNames.CORE_MODEL_CC_LTP,
+                                QName.create(Onf14DevicemanagerQNames.CORE_MODEL_CC_LTP, "uuid").intern(), ltpUuid)
+                        .node(Onf14DevicemanagerQNames.CORE_MODEL_CC_LTP_LAYER_PROTOCOL)
+                        .nodeWithKey(Onf14DevicemanagerQNames.CORE_MODEL_CC_LTP_LAYER_PROTOCOL, QName
+                                .create(Onf14DevicemanagerQNames.CORE_MODEL_CC_LTP_LAYER_PROTOCOL, "local-id").intern(),
+                                localId);
+
+        @NonNull
+        AugmentationIdentifier airInterfacePacIID = YangInstanceIdentifier.AugmentationIdentifier
+                .create(Sets.newHashSet(Onf14DevicemanagerQNames.AIR_INTERFACE_PAC));
+
+        InstanceIdentifierBuilder augmentedAirInterfacePacIID =
+                YangInstanceIdentifier.builder(layerProtocolIID.build()).node(airInterfacePacIID);
+
+        // reading historical performance list for this specific LTP and LP
+        Optional<NormalizedNode> airInterfacePacDataOpt =
+                netconfDomAccessor.readDataNode(LogicalDatastoreType.OPERATIONAL, augmentedAirInterfacePacIID.build());
+        log.debug("Performance Data = {}", airInterfacePacDataOpt.get().body());
+        if (airInterfacePacDataOpt.isPresent()) {
+            AugmentationNode airInterfacePacData = (AugmentationNode) airInterfacePacDataOpt.get();
+            ContainerNode cn = (ContainerNode) airInterfacePacData
+                    .childByArg(new NodeIdentifier(Onf14DevicemanagerQNames.AIR_INTERFACE_PAC));
+            if (cn != null) {
+                ContainerNode airIntfHistPerf = (ContainerNode) cn
+                        .childByArg(new NodeIdentifier(Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCES));
+                if (airIntfHistPerf != null) {
+                    MapNode airInterfaceHistoricalPerformanceList = (MapNode) airIntfHistPerf.childByArg(
+                            new NodeIdentifier(Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCES_LIST));
+                    if (airInterfaceHistoricalPerformanceList != null) {
+                        Collection<MapEntryNode> airInterfaceHistoricalPerfCollection =
+                                airInterfaceHistoricalPerformanceList.body();
+                        for (MapEntryNode airInterfaceHistPerf : airInterfaceHistoricalPerfCollection) {
+                            res.add(new PerformanceDataAirInterface(netconfDomAccessor.getNodeId(), ltpUuid, localId,
+                                    airInterfaceHistPerf));
+                        }
+                        return res;
+                    } else {
+                        log.debug("DBRead Id {} empty CurrentProblemList", ltpUuid);
+                    }
+                }
+            }
+        }
+        return null;
+    }
+
     private void readAndWriteInterfaceCurrentProblems() {
         // Read all fault data
         FaultData resultList = new FaultData();
-        int problems;
+        int problems = 0;
         readAllAirInterfaceCurrentProblems(resultList);
         problems = resultList.size();
         log.debug("NETCONF read air interface current problems completed. Got back {} problems.", problems);
 
-        readAllEhernetContainerCurrentProblems(resultList);
+
+        readAllEthernetContainerCurrentProblems(resultList);
         problems = resultList.size() - problems;
         log.debug("NETCONF read current problems completed. Got back {} problems.", problems);
 
@@ -146,16 +211,18 @@ public class Onf14DomInterfacePacManager {
         problems = resultList.size();
         log.debug("NETCONF read wire interface current problems completed. Got back {} problems.", problems);
 
-        faultService.initCurrentProblemStatus(netconfDomAccessor.getNodeId(), resultList);
-        log.debug("DB write current problems completed");
+
+        if (resultList.size() > 0) {
+            faultService.initCurrentProblemStatus(netconfDomAccessor.getNodeId(), resultList);
+            log.debug("DB write current problems completed");
+        }
 
     }
 
     private void readKeys() {
         Optional<NormalizedNode> ltpData = readLtpData(netconfDomAccessor);
-        log.info("LTP Data is - {}", ltpData);
+        log.debug("LTP Data is - {}", ltpData);
         if (ltpData.isPresent()) {
-            log.debug("In readKeys - ltpData = {}", ltpData.get());
 
             MapNode ccLtp = (MapNode) ltpData.get();
             if (ccLtp != null) {
@@ -194,7 +261,7 @@ public class Onf14DomInterfacePacManager {
                                         Onf14DMDOMUtility.getLeafValue(lpEntry,
                                                 Onf14DevicemanagerQNames.CORE_MODEL_CC_LTP_LAYER_PROTOCOL_LOCAL_ID));
                             }
-                            // if the LTP has an ethernetContainier technology extension, the layer protocol
+                            // if the LTP has an ethernetContainer technology extension, the layer protocol
                             // name is ethernet-container-layer
                             else if (layerProtocolName.contains("LAYER_PROTOCOL_NAME_TYPE_ETHERNET_CONTAINER_LAYER")) {
                                 TechnologySpecificPacKeys ethernetContainerKey = new TechnologySpecificPacKeys(
@@ -240,7 +307,7 @@ public class Onf14DomInterfacePacManager {
         }
     }
 
-    private void readAllEhernetContainerCurrentProblems(FaultData resultList) {
+    private void readAllEthernetContainerCurrentProblems(FaultData resultList) {
 
         int idxStart; // Start index for debug messages
 
@@ -266,7 +333,7 @@ public class Onf14DomInterfacePacManager {
 
     private void readAirInterfaceCurrentProblemForLtp(String ltpUuid, String localId, FaultData resultList) {
 
-        log.info("DBRead Get current problems for class {} from mountpoint {} for LTP uuid {} and local-id {}",
+        log.debug("DBRead Get current problems for class {} from mountpoint {} for LTP uuid {} and local-id {}",
                 Onf14DevicemanagerQNames.AIR_INTERFACE_2_0_MODULE, netconfDomAccessor.getNodeId().getValue(), ltpUuid,
                 localId);
 
@@ -296,7 +363,6 @@ public class Onf14DomInterfacePacManager {
 
         if (airInterfacePacDataOpt.isPresent()) {
             AugmentationNode airInterfacePacData = (AugmentationNode) airInterfacePacDataOpt.get();
-
             MapNode airInterfaceCurrentProblemsList = (MapNode) airInterfacePacData
                     .childByArg(new NodeIdentifier(Onf14DevicemanagerQNames.AIR_INTERFACE_CURRENT_PROBLEMS_LIST));
             if (airInterfaceCurrentProblemsList != null) {
@@ -321,7 +387,7 @@ public class Onf14DomInterfacePacManager {
 
     private void readEthernetContainerCurrentProblemForLtp(String ltpUuid, String localId, FaultData resultList) {
 
-        log.info(
+        log.debug(
                 "DBRead Get current problems for Ethernet Container from mountpoint {} for LTP uuid {} and local-id {}",
                 netconfDomAccessor.getNodeId().getValue(), ltpUuid, localId);
 
@@ -377,7 +443,7 @@ public class Onf14DomInterfacePacManager {
 
     private void readWireInterfaceCurrentProblemForLtp(String ltpUuid, String localId, FaultData resultList) {
 
-        log.info("DBRead Get current problems for Wire Interface from mountpoint {} for LTP uuid {} and local-id {}",
+        log.debug("DBRead Get current problems for Wire Interface from mountpoint {} for LTP uuid {} and local-id {}",
                 netconfDomAccessor.getNodeId().getValue(), ltpUuid, localId);
 
         // constructing the IID needs the augmentation exposed by the wire-interface-2-0
@@ -419,7 +485,7 @@ public class Onf14DomInterfacePacManager {
                             Onf14DMDOMUtility.getLeafValue(wireInterfaceProblem,
                                     Onf14DevicemanagerQNames.WIRE_INTERFACE_CURRENT_PROBLEMS_PROBLEM_NAME),
                             InternalDataModelSeverity.mapSeverity(Onf14DMDOMUtility.getLeafValue(wireInterfaceProblem,
-                                            Onf14DevicemanagerQNames.WIRE_INTERFACE_CURRENT_PROBLEMS_PROBLEM_SEVERITY)));
+                                    Onf14DevicemanagerQNames.WIRE_INTERFACE_CURRENT_PROBLEMS_PROBLEM_SEVERITY)));
                 }
             } else {
                 log.debug("DBRead Id {} empty CurrentProblemList", ltpUuid);
@@ -429,6 +495,7 @@ public class Onf14DomInterfacePacManager {
     }
 
     private void registerForNotifications() {
+
         QName[] airInterfaceNotifications = {Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_CREATE_NOTIFICATION,
                 Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_AVC_NOTIFICATION,
                 Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_DELETE_NOTIFICATION,
@@ -455,4 +522,10 @@ public class Onf14DomInterfacePacManager {
         log.info("Reading Logical Termination Point data");
         return netconfDomAccessor.readDataNode(LogicalDatastoreType.CONFIGURATION, LTP_IID);
     }
+
+    public PerformanceDataLtp getLtpHistoricalPerformanceData(@NonNull TechnologySpecificPacKeys lp) {
+        PerformanceDataLtp res = new PerformanceDataLtp();
+        readAirInterfaceHistoricalPerformanceData(lp.getLtpUuid(), lp.getLocalId(), res);
+        return res;
+    }
 }
diff --git a/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/pm/Helper.java b/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/pm/Helper.java
new file mode 100644 (file)
index 0000000..0a64f93
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2022 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.onf14.dom.impl.pm;
+
+import java.util.Map;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.GranularityPeriodType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Helper {
+
+    private static Logger log = LoggerFactory.getLogger(Helper.class);
+    private static final Map<String, GranularityPeriodType> GRANULARITYMAP =
+            Map.of("GRANULARITY_PERIOD_TYPE_PERIOD-15-MIN", GranularityPeriodType.Period15Min,
+                    "GRANULARITY_PERIOD_TYPE_PERIOD-24-HOURS", GranularityPeriodType.Period24Hours);
+
+    public static GranularityPeriodType mapGranularityPeriod(String gp) {
+        log.debug("Granularity Period is - {}", gp);
+        GranularityPeriodType res = null;
+        if (gp != null) {
+            res = GRANULARITYMAP.get(gp);
+        }
+        return res == null ? GranularityPeriodType.Unknown : res;
+    }
+
+}
diff --git a/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/pm/PerformanceDataAirInterface.java b/sdnr/wt/devicemanager-onap/onf14/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/onf14/dom/impl/pm/PerformanceDataAirInterface.java
new file mode 100644 (file)
index 0000000..8abdb1e
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2022 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.onf14.dom.impl.pm;
+
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DMDOMUtility;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DevicemanagerQNames;
+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.PmdataEntityBuilder;
+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.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
+import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class PerformanceDataAirInterface extends PmdataEntityBuilder {
+
+    private static final Logger log = LoggerFactory.getLogger(PerformanceDataAirInterface.class);
+
+    public PerformanceDataAirInterface(NodeId nodeId, String ltpUuid, String localId,
+            MapEntryNode airInterfaceHistPerfEntry) {
+        log.debug("Performance Data of Air Interface = {}", airInterfaceHistPerfEntry);
+        String leafVal;
+
+        this.setGranularityPeriod(Helper.mapGranularityPeriod(Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerfEntry,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCES_LIST_GP)));
+        this.setUuidInterface(ltpUuid);
+        this.setLayerProtocolName(localId); // TODO
+        this.setNodeName(nodeId.getValue());
+        this.setScannerId(Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerfEntry,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCES_LIST_HDI));
+        this.setTimeStamp(new DateAndTime(Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerfEntry,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCES_LIST_PET)));
+        this.setSuspectIntervalFlag(Boolean.getBoolean(Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerfEntry,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCES_LIST_SIF)));
+
+        PerformanceDataBuilder bPerformanceData = new PerformanceDataBuilder();
+        ContainerNode airInterfaceHistPerf = (ContainerNode) airInterfaceHistPerfEntry
+                .childByArg(new NodeIdentifier(Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_DATA));
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_ES)) != null) {
+            bPerformanceData.setEs(Integer.parseInt(leafVal));
+        }
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_SES)) != null) {
+            bPerformanceData.setSes(Integer.parseInt(leafVal));
+        }
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_CSES)) != null) {
+            bPerformanceData.setCses(Integer.parseInt(leafVal));
+        }
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_UNAVAILABILITY)) != null) {
+            bPerformanceData.setUnavailability(Integer.parseInt(leafVal));
+        }
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_TX_LEVEL_MIN)) != null) {
+            bPerformanceData.setTxLevelMin(Byte.parseByte(leafVal));
+        }
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_TX_LEVEL_MAX)) != null) {
+            bPerformanceData.setTxLevelMax(Byte.parseByte(leafVal));
+        }
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_TX_LEVEL_AVG)) != null) {
+            bPerformanceData.setTxLevelAvg(Byte.parseByte(leafVal));
+        }
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_RX_LEVEL_MIN)) != null) {
+            bPerformanceData.setTxLevelMin(Byte.parseByte(leafVal));
+        }
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_RX_LEVEL_MAX)) != null) {
+            bPerformanceData.setTxLevelMax(Byte.parseByte(leafVal));
+        }
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_RX_LEVEL_AVG)) != null) {
+            bPerformanceData.setTxLevelAvg(Byte.parseByte(leafVal));
+        }
+
+
+        //               //TODO: xstates-list bPerformanceData.setTime2States(pmr.getTime2States());
+        //               bPerformanceData.setTime4StatesS(pmr.getTime4StatesS());
+        //               bPerformanceData.setTime4States(pmr.getTime4States());
+        //               bPerformanceData.setTime8States(pmr.getTime8States());
+        //               bPerformanceData.setTime16StatesS(pmr.getTime16StatesS());
+        //               bPerformanceData.setTime16States(pmr.getTime16States());
+        //               bPerformanceData.setTime32States(pmr.getTime32States());
+        //               bPerformanceData.setTime64States(pmr.getTime64States());
+        //               bPerformanceData.setTime128States(pmr.getTime128States());
+        //               bPerformanceData.setTime256States(pmr.getTime256States());
+        //               bPerformanceData.setTime512States(pmr.getTime512States());
+        //               bPerformanceData.setTime512StatesL(pmr.getTime512StatesL());
+        //               bPerformanceData.setTime1024States(pmr.getTime1024States());
+        //               bPerformanceData.setTime1024StatesL(pmr.getTime1024StatesL());
+        //               bPerformanceData.setTime2048States(pmr.getTime2048States());
+        //               bPerformanceData.setTime2048StatesL(pmr.getTime2048StatesL());
+        //               bPerformanceData.setTime4096States(pmr.getTime4096States());
+        //               bPerformanceData.setTime4096StatesL(pmr.getTime4096StatesL());
+        //               bPerformanceData.setTime8192States(pmr.getTime8192States());
+        //               bPerformanceData.setTime8192StatesL(pmr.getTime8192StatesL());
+
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_SNIR_MIN)) != null) {
+            bPerformanceData.setSnirMin(Byte.parseByte(leafVal));
+        }
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_SNIR_MAX)) != null) {
+            bPerformanceData.setSnirMax(Byte.parseByte(leafVal));
+        }
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_SNIR_AVG)) != null) {
+            bPerformanceData.setSnirAvg(Byte.parseByte(leafVal));
+        }
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_XPD_MIN)) != null) {
+            bPerformanceData.setXpdMin(Byte.parseByte(leafVal));
+        }
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_XPD_MAX)) != null) {
+            bPerformanceData.setXpdMax(Byte.parseByte(leafVal));
+        }
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_XPD_AVG)) != null) {
+            bPerformanceData.setXpdAvg(Byte.parseByte(leafVal));
+        }
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_RF_TEMP_MIN)) != null) {
+            bPerformanceData.setRfTempMin(Byte.parseByte(leafVal));
+        }
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_RF_TEMP_MAX)) != null) {
+            bPerformanceData.setRfTempMax(Byte.parseByte(leafVal));
+        }
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_RF_TEMP_AVG)) != null) {
+            bPerformanceData.setRfTempAvg(Byte.parseByte(leafVal));
+        }
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_DEFECT_BLOCKS_SUM)) != null) {
+            bPerformanceData.setDefectBlocksSum(Short.valueOf(leafVal));
+        }
+
+        if ((leafVal = Onf14DMDOMUtility.getLeafValue(airInterfaceHistPerf,
+                Onf14DevicemanagerQNames.AIR_INTERFACE_HISTORICAL_PERFORMANCE_TIME_PERIOD)) != null) {
+            bPerformanceData.setTimePeriod(Integer.parseInt(leafVal));
+        }
+
+        this.setPerformanceData(bPerformanceData.build());
+    }
+}
index 978c71e..1af1da6 100644 (file)
@@ -27,23 +27,7 @@ import org.slf4j.LoggerFactory;
 
 public class Debug {
 
-    // constants
     private static final Logger log = LoggerFactory.getLogger(Debug.class);
-    // end of constants
-
-    // variables
-    // end of variables
-
-    // constructors
-    // end of constructors
-
-    // getters and setters
-    // end of getters and setters
-
-    // private methods
-    // end of private methods
-
-    // public methods
     /**
      * LOG the newly added problems of the interface pac
      *
@@ -62,11 +46,4 @@ public class Debug {
         }
         log.debug("Found problems {} {}", uuid, sb);
     }
-    // end of public methods
-
-    // static methods
-    // end of static methods
-
-    // private classes
-    // end of private classes
 }
index 1cae567..ae1884d 100644 (file)
@@ -1,3 +1,24 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2022 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.onf14.dom.impl.util;
 
 import com.google.common.base.VerifyException;
@@ -30,9 +51,11 @@ public class Onf14DMDOMUtility {
         try {
             LeafNode<?> optLeafNode = (LeafNode<?>) componentEntry.getChildByArg(leafNodeIdentifier);
             if (optLeafNode.body() instanceof QName) {
-                LOG.debug("Leaf is of type QName"); //Ex: ImmutableLeafNode{identifier=(urn:onf:yang:air-interface-2-0?revision=2020-01-21)severity, body=(urn:onf:yang:air-interface-2-0?revision=2020-01-21)SEVERITY_TYPE_MAJOR}
+                LOG.debug("Leaf is of type QName"); // Ex:
+                                                    // ImmutableLeafNode{identifier=(urn:onf:yang:air-interface-2-0?revision=2020-01-21)severity,
+                                                    // body=(urn:onf:yang:air-interface-2-0?revision=2020-01-21)SEVERITY_TYPE_MAJOR}
                 String severity_ = optLeafNode.body().toString();
-                return severity_.substring(severity_.indexOf(')')+1); //Any other solution??
+                return severity_.substring(severity_.indexOf(')') + 1); // Any other solution??
             }
             return optLeafNode.body().toString();
         } catch (VerifyException ve) {
@@ -74,4 +97,5 @@ public class Onf14DMDOMUtility {
             return Instant.now();
         }
     }
+
 }
index 58abf02..f4fd211 100644 (file)
@@ -1,3 +1,24 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2022 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.onf14.dom.impl.util;
 
 import org.opendaylight.yangtools.yang.common.QName;
@@ -61,6 +82,8 @@ public class Onf14DevicemanagerQNames {
     // Air-interface
     public static final QNameModule AIR_INTERFACE_2_0_MODULE =
             QNameModule.create(XMLNamespace.of("urn:onf:yang:air-interface-2-0"), Revision.of("2020-01-21"));
+    public static final QName AIR_INTERFACE_2_0_MODULE_NS =
+            QName.create(XMLNamespace.of("urn:onf:yang:air-interface-2-0"), "air-interface-2-0");
     public static final QName AIR_INTERFACE_PAC = QName.create(AIR_INTERFACE_2_0_MODULE, "air-interface-pac");
     public static final QName AIR_INTERFACE_CURRENT_PROBLEMS =
             QName.create(AIR_INTERFACE_2_0_MODULE, "air-interface-current-problems");
@@ -74,6 +97,81 @@ public class Onf14DevicemanagerQNames {
             QName.create(AIR_INTERFACE_2_0_MODULE, "problem-name");
     public static final QName AIR_INTERFACE_CURRENT_PROBLEMS_PROBLEM_SEVERITY =
             QName.create(AIR_INTERFACE_2_0_MODULE, "problem-severity");
+
+    // Historical Performance
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCES =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "air-interface-historical-performances");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCES_LIST =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "historical-performance-data-list");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCES_LIST_GP =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "granularity-period");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCES_LIST_SIF =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "suspect-interval-flag");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCES_LIST_HDI =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "history-data-id");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCES_LIST_PET =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "period-end-time");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_DATA =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "performance-data");
+
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_ES = QName.create(AIR_INTERFACE_2_0_MODULE, "es");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_SES = QName.create(AIR_INTERFACE_2_0_MODULE, "ses");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_CSES =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "cses");
+
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_UNAVAILABILITY =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "unavailability");
+
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_TX_LEVEL_MIN =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "tx-level-min");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_TX_LEVEL_MAX =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "tx-level-max");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_TX_LEVEL_AVG =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "tx-level-avg");
+
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_RX_LEVEL_MIN =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "rx-level-min");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_RX_LEVEL_MAX =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "rx-level-max");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_RX_LEVEL_AVG =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "rx-level-avg");
+
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_TIME_XSTATES_LIST =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "time-xstates-list");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_TIME_XSTATE_SEQNO =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "time-xstate-sequence-number");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_TIME_XSTATE_TX_MODE =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "transmission-mode");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_TIME_XSTATE_TIME =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "time");
+
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_SNIR_MIN =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "snir-min");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_SNIR_MAX =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "snir-max");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_SNIR_AVG =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "snir-avg");
+
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_XPD_MIN =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "xpd-min");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_XPD_MAX =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "xpd-max");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_XPD_AVG =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "xpd-avg");
+
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_RF_TEMP_MIN =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "rf-temp-min");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_RF_TEMP_MAX =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "rf-temp-max");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_RF_TEMP_AVG =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "rf-temp-avg");
+
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_DEFECT_BLOCKS_SUM =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "defect-blocks-sum");
+    public static final QName AIR_INTERFACE_HISTORICAL_PERFORMANCE_TIME_PERIOD =
+            QName.create(AIR_INTERFACE_2_0_MODULE, "time-period");
+
+
     // Creation notification
     public static final QName AIR_INTERFACE_OBJECT_CREATE_NOTIFICATION =
             QName.create(AIR_INTERFACE_2_0_MODULE, "object-creation-notification");
@@ -124,6 +222,8 @@ public class Onf14DevicemanagerQNames {
     // Ethernet interface
     public static final QNameModule ETHERNET_CONTAINER_2_0_MODULE =
             QNameModule.create(XMLNamespace.of("urn:onf:yang:ethernet-container-2-0"), Revision.of("2020-01-21"));
+    public static final QName ETHERNET_CONTAINER_2_0_NS =
+            QName.create(XMLNamespace.of("urn:onf:yang:ethernet-container-2-0"), "ethernet-container-2-0");
     public static final QName ETHERNET_CONTAINER_PAC =
             QName.create(ETHERNET_CONTAINER_2_0_MODULE, "ethernet-container-pac");
     public static final QName ETHERNET_CONTAINER_CURRENT_PROBLEMS =
@@ -188,6 +288,8 @@ public class Onf14DevicemanagerQNames {
     //Wire interface
     public static final QNameModule WIRE_INTERFACE_2_0_MODULE =
             QNameModule.create(XMLNamespace.of("urn:onf:yang:wire-interface-2-0"), Revision.of("2020-01-23"));
+    public static final QName WIRE_INTERFACE_2_0_NS =
+            QName.create(XMLNamespace.of("urn:onf:yang:wire-interface-2-0"), "wire-interface-2-0");
     public static final QName WIRE_INTERFACE_PAC = QName.create(WIRE_INTERFACE_2_0_MODULE, "wire-interface-pac");
     public static final QName WIRE_INTERFACE_CURRENT_PROBLEMS =
             QName.create(WIRE_INTERFACE_2_0_MODULE, "wire-interface-current-problems");
@@ -19,7 +19,7 @@
  * ============LICENSE_END=========================================================
  *
  */
-package org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl;
+package org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.notifications;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.dataprovider.InternalDataModelSeverity;
@@ -120,21 +120,20 @@ public class Onf14DomAirInterfaceNotificationListener implements DOMNotification
     private void onObjectProblemNotification(@NonNull DOMNotification domNotification) {
 
         ContainerNode cn = domNotification.getBody();
-        FaultlogEntity faultAlarm =
-                new FaultlogBuilder()
-                        .setObjectId(Onf14DMDOMUtility.getLeafValue(cn,
-                                Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_OBJECT_ID_REF))
-                        .setProblem(Onf14DMDOMUtility.getLeafValue(cn,
-                                Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_PROBLEM))
-                        .setSourceType(SourceType.Netconf)
-                        .setTimestamp(new DateAndTime(Onf14DMDOMUtility.getLeafValue(cn,
-                                Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_TIMESTAMP)))
-                        .setNodeId(this.netconfDomAccessor.getNodeId().getValue())
-                        .setSeverity(InternalDataModelSeverity.mapSeverity(Onf14DMDOMUtility.getLeafValue(cn,
-                                        Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_SEVERITY)))
-                        .setCounter(Integer.parseInt(Onf14DMDOMUtility.getLeafValue(cn,
-                                Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_COUNTER)))
-                        .build();
+        FaultlogEntity faultAlarm = new FaultlogBuilder()
+                .setObjectId(Onf14DMDOMUtility.getLeafValue(cn,
+                        Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_OBJECT_ID_REF))
+                .setProblem(Onf14DMDOMUtility.getLeafValue(cn,
+                        Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_PROBLEM))
+                .setSourceType(SourceType.Netconf)
+                .setTimestamp(new DateAndTime(Onf14DMDOMUtility.getLeafValue(cn,
+                        Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_TIMESTAMP)))
+                .setNodeId(this.netconfDomAccessor.getNodeId().getValue())
+                .setSeverity(InternalDataModelSeverity.mapSeverity(Onf14DMDOMUtility.getLeafValue(cn,
+                        Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_SEVERITY)))
+                .setCounter(Integer.parseInt(Onf14DMDOMUtility.getLeafValue(cn,
+                        Onf14DevicemanagerQNames.AIR_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_COUNTER)))
+                .build();
 
         serviceProvider.getFaultService().faultNotification(faultAlarm);
         serviceProvider.getWebsocketService().sendNotification(domNotification, netconfDomAccessor.getNodeId(),
@@ -1,4 +1,4 @@
-package org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl;
+package org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.notifications;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.dataprovider.InternalDataModelSeverity;
@@ -73,20 +73,19 @@ public class Onf14DomWireInterfaceNotificationListener implements DOMNotificatio
     public void onProblemNotification(DOMNotification notification) {
 
         ContainerNode cn = notification.getBody();
-        FaultlogEntity faultAlarm =
-                new FaultlogBuilder()
-                        .setObjectId(Onf14DMDOMUtility.getLeafValue(cn,
-                                Onf14DevicemanagerQNames.WIRE_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_OBJECT_ID_REF))
-                        .setProblem(Onf14DMDOMUtility.getLeafValue(cn,
-                                Onf14DevicemanagerQNames.WIRE_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_PROBLEM))
-                        .setTimestamp(new DateAndTime(Onf14DMDOMUtility.getLeafValue(cn,
-                                Onf14DevicemanagerQNames.WIRE_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_TIMESTAMP)))
-                        .setNodeId(this.netconfDomAccessor.getNodeId().getValue()).setSourceType(SourceType.Netconf)
-                        .setSeverity(InternalDataModelSeverity.mapSeverity(Onf14DMDOMUtility.getLeafValue(cn,
-                                        Onf14DevicemanagerQNames.WIRE_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_SEVERITY)))
-                        .setCounter(Integer.parseInt(Onf14DMDOMUtility.getLeafValue(cn,
-                                Onf14DevicemanagerQNames.WIRE_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_COUNTER)))
-                        .build();
+        FaultlogEntity faultAlarm = new FaultlogBuilder()
+                .setObjectId(Onf14DMDOMUtility.getLeafValue(cn,
+                        Onf14DevicemanagerQNames.WIRE_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_OBJECT_ID_REF))
+                .setProblem(Onf14DMDOMUtility.getLeafValue(cn,
+                        Onf14DevicemanagerQNames.WIRE_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_PROBLEM))
+                .setTimestamp(new DateAndTime(Onf14DMDOMUtility.getLeafValue(cn,
+                        Onf14DevicemanagerQNames.WIRE_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_TIMESTAMP)))
+                .setNodeId(this.netconfDomAccessor.getNodeId().getValue()).setSourceType(SourceType.Netconf)
+                .setSeverity(InternalDataModelSeverity.mapSeverity(Onf14DMDOMUtility.getLeafValue(cn,
+                        Onf14DevicemanagerQNames.WIRE_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_SEVERITY)))
+                .setCounter(Integer.parseInt(Onf14DMDOMUtility.getLeafValue(cn,
+                        Onf14DevicemanagerQNames.WIRE_INTERFACE_OBJECT_PROBLEM_NOTIFICATION_COUNTER)))
+                .build();
         serviceProvider.getFaultService().faultNotification(faultAlarm);
         serviceProvider.getWebsocketService().sendNotification(notification, netconfDomAccessor.getNodeId(),
                 Onf14DevicemanagerQNames.WIRE_INTERFACE_OBJECT_PROBLEM_NOTIFICATION,
index a8e97e1..9b647a1 100644 (file)
@@ -23,8 +23,8 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
-import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.Onf14DomAirInterfaceNotificationListener;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DevicemanagerQNames;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.notifications.Onf14DomAirInterfaceNotificationListener;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.util.NetconfDeviceNotification;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerServiceProvider;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.FaultService;
index c2f7984..0b0c3aa 100644 (file)
@@ -22,8 +22,8 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
-import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.Onf14DomEthernetContainerNotificationListener;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DevicemanagerQNames;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.notifications.Onf14DomEthernetContainerNotificationListener;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.util.NetconfDeviceNotification;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerServiceProvider;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.FaultService;
index 0d30e4d..555bfd8 100644 (file)
@@ -15,6 +15,7 @@ import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.Onf14DomNetw
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DevicemanagerQNames;
 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.service.PerformanceManager;
 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.Capabilities;
 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfBindingAccessor;
 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfDomAccessor;
@@ -39,6 +40,8 @@ public class TestOnf14DomNetworkElement {
     @Mock
     FaultService faultService;
     @Mock
+    PerformanceManager pmService;
+    @Mock
     DeviceManagerServiceProvider serviceProvider;
     @Mock
     WebsocketManagerService websocketManagerService;
@@ -60,14 +63,14 @@ public class TestOnf14DomNetworkElement {
         when(netconfDomAccessor.getNodeId()).thenReturn(nodeId);
         when(serviceProvider.getDataProvider()).thenReturn(dataProvider);
         when(serviceProvider.getFaultService()).thenReturn(faultService);
+        when(serviceProvider.getPerformanceManagerService()).thenReturn(pmService);
         when(netconfDomAccessor.readDataNode(LogicalDatastoreType.CONFIGURATION, TOPLEVELEQUIPMENT_IID))
                 .thenReturn(Optional.empty());
     }
 
     @Test
-    public void test() {
+    public void testWithOldInterfaceRevisions() {
         Optional<NetworkElement> onfDomNe;
-
         Onf14DomNetworkElementFactory factory = new Onf14DomNetworkElementFactory();
         factory.init(serviceProvider);
         onfDomNe = factory.create(netconfDomAccessor, serviceProvider);
@@ -78,7 +81,7 @@ public class TestOnf14DomNetworkElement {
         onfDomNe.get().getAcessor();
         onfDomNe.get().getDeviceType();
         onfDomNe.get().warmstart();
-        onfDomNe.get().getService(null);
+        //onfDomNe.get().getService(null);
         assertEquals(onfDomNe.get().getNodeId().getValue(), "nSky");
     }
 
index 37cd5b4..954acde 100644 (file)
@@ -23,8 +23,8 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
-import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.Onf14DomWireInterfaceNotificationListener;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.impl.util.Onf14DevicemanagerQNames;
+import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.dom.notifications.Onf14DomWireInterfaceNotificationListener;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.onf14.util.NetconfDeviceNotification;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerServiceProvider;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.FaultService;