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;
         }