port statistics defect fix

Change-Id: I4fc97388af17ad2e83d02bbd3fb350a021e34455
diff --git a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
index 1720e2e..7e513e0 100644
--- a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
+++ b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
@@ -306,7 +306,7 @@
                 log.debug("Netconf device {} removed from Netconf subController", deviceId);
             } else {
                 log.warn("Netconf device {} does not exist in the store, " +
-                         "it may already have been removed", deviceId);
+                                 "it may already have been removed", deviceId);
             }
         }
     }
@@ -351,13 +351,13 @@
     }
 
     private void checkAndUpdateDevice(DeviceId deviceId, DeviceDescription deviceDescription) {
-        if (deviceService.getDevice(deviceId) == null) {
+        Device device = deviceService.getDevice(deviceId);
+        if (device == null) {
             log.warn("Device {} has not been added to store, " +
                              "maybe due to a problem in connectivity", deviceId);
         } else {
             boolean isReachable = isReachable(deviceId);
             if (isReachable && !deviceService.isAvailable(deviceId)) {
-                Device device = deviceService.getDevice(deviceId);
                 if (device.is(DeviceDescriptionDiscovery.class)) {
                     if (mastershipService.isLocalMaster(deviceId)) {
                         DeviceDescriptionDiscovery deviceDescriptionDiscovery =
@@ -381,16 +381,29 @@
                 } else {
                     log.warn("No DeviceDescriptionDiscovery behaviour for device {} " +
                                      "using DefaultDeviceDescription", deviceId);
-                            providerService.deviceConnected(
-                                    deviceId, new DefaultDeviceDescription(
+                    providerService.deviceConnected(
+                            deviceId, new DefaultDeviceDescription(
                                     deviceDescription, true, deviceDescription.annotations()));
                 }
             } else if (!isReachable && deviceService.isAvailable(deviceId)) {
                 providerService.deviceDisconnected(deviceId);
+            } else if (isReachable && deviceService.isAvailable(deviceId)) {
+                updatePortStatistics(device);
             }
         }
     }
 
+    private void updatePortStatistics(Device device) {
+        if (device.is(PortStatisticsDiscovery.class)) {
+            PortStatisticsDiscovery d = device.as(PortStatisticsDiscovery.class);
+            providerService.updatePortStatistics(device.id(),
+                                                 d.discoverPortStatistics());
+        } else {
+            log.warn("No port statistics getter behaviour for device {}",
+                     device.id());
+        }
+    }
+
     private boolean descriptionEquals(Device device, DeviceDescription updatedDeviceDescription) {
         return Objects.equal(device.id().uri(), updatedDeviceDescription.deviceUri())
                 && Objects.equal(device.type(), updatedDeviceDescription.type())
@@ -482,15 +495,7 @@
         }
 
         // Port statistics discovery
-        if (device.is(PortStatisticsDiscovery.class)) {
-            PortStatisticsDiscovery d =
-                    device.as(PortStatisticsDiscovery.class);
-            providerService.updatePortStatistics(deviceId,
-                                                 d.discoverPortStatistics());
-        } else {
-            log.warn("No port statistics getter behaviour for device {}",
-                     deviceId);
-        }
+        updatePortStatistics(device);
     }
 
     /**