Allow to collect vStats from unmanaged host
Change-Id: I940767c5e833b4c2fc799d5023bb9e81c6bbb032
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/StatsFlowRuleManager.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/StatsFlowRuleManager.java
index 3d609c6..fddbdfa 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/StatsFlowRuleManager.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/StatsFlowRuleManager.java
@@ -394,14 +394,19 @@
DeviceId srcDeviceId = getDeviceId(statsFlowRule.srcIpPrefix().address());
DeviceId dstDeviceId = getDeviceId(statsFlowRule.dstIpPrefix().address());
- if (srcDeviceId == null || dstDeviceId == null) {
+ if (srcDeviceId == null && dstDeviceId == null) {
return;
}
- connectTables(srcDeviceId, STAT_INBOUND_TABLE, DHCP_ARP_TABLE,
- statsFlowRule, METRIC_PRIORITY_SOURCE, install);
- connectTables(dstDeviceId, STAT_OUTBOUND_TABLE, FORWARDING_TABLE,
- inverseFlowRule, METRIC_PRIORITY_TARGET, install);
+ if (srcDeviceId != null) {
+ connectTables(srcDeviceId, STAT_INBOUND_TABLE, DHCP_ARP_TABLE,
+ statsFlowRule, METRIC_PRIORITY_SOURCE, install);
+ }
+
+ if (dstDeviceId != null) {
+ connectTables(dstDeviceId, STAT_OUTBOUND_TABLE, FORWARDING_TABLE,
+ inverseFlowRule, METRIC_PRIORITY_TARGET, install);
+ }
}
/**
@@ -415,8 +420,8 @@
Optional<Host> host = hostService.getHostsByIp(ipAddress).stream().findAny();
return host.map(host1 -> host1.location().deviceId()).orElse(null);
} else {
- log.error("Failed to get DeviceID which is connected to {}. " +
- "The VM is not instantiated correctly now.",
+ log.warn("Failed to get DeviceID which is connected to {}. " +
+ "The destination is either a bare-metal or located out of DC",
ipAddress.toString());
return null;
}