port statistics defect fix
Change-Id: I4fc97388af17ad2e83d02bbd3fb350a021e34455
diff --git a/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/DriverUtil.java b/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/DriverUtil.java
index d7b8e40..edeffef 100644
--- a/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/DriverUtil.java
+++ b/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/DriverUtil.java
@@ -110,7 +110,9 @@
/**
* RPC interfaces message.
*/
- static final String RPC_IFS = "<interfaces/>";
+ static final String RPC_IFS =
+ "<interfaces><interface><ifPhyType>Ethernet</ifPhyType" +
+ "></interface></interfaces>";
/**
* RPC ifm message.
diff --git a/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiDeviceDescription.java b/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiDeviceDescription.java
index c6909e4..bcb7f4c 100644
--- a/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiDeviceDescription.java
+++ b/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiDeviceDescription.java
@@ -184,11 +184,12 @@
NetconfSession session = getNetconfSession();
String interfaces;
try {
- return session.get(getInterfacesReq());
+ interfaces = session.get(getInterfacesReq());
} catch (IOException e) {
throw new IllegalArgumentException(
- new NetconfException(INT_INFO_FAILURE));
+ new NetconfException(INT_INFO_FAILURE, e.getCause()));
}
+ return interfaces;
}
private Collection<PortStatistics> getPortStatistics(String ifs) {
diff --git a/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiXmlParser.java b/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiXmlParser.java
index 29b617f..5d56ddc 100644
--- a/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiXmlParser.java
+++ b/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiXmlParser.java
@@ -79,7 +79,7 @@
//TODO: All type of interfaces has to be added.
private static final List INTERFACES = Arrays.asList(
- "MEth", "LoopBack", "Ethernet", "POS", "GigabitEthernet");
+ "MEth", "Ethernet", "POS", "GigabitEthernet");
private List<PortDescription> ports = new ArrayList<>();
private String xml;
@@ -259,6 +259,7 @@
.getText());
return builder.setDeviceId(id)
+ .setPort(port)
.setPacketsReceived(packetReceived)
.setPacketsSent(packetSent)
.setBytesReceived(bytesReceived)
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);
}
/**