Support monitoring underlay network using openstack telemetry app

Change-Id: I84f8735a700a89f28124fe3a76fafab339e3dbc1
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/InfluxDbTelemetryManager.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/InfluxDbTelemetryManager.java
index 99a64564..e35d662 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/InfluxDbTelemetryManager.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/InfluxDbTelemetryManager.java
@@ -156,21 +156,17 @@
         BatchPoints batchPoints = BatchPoints.database(database).build();
 
         for (FlowInfo flowInfo: record.flowInfos()) {
-            Point point = Point
+            Point.Builder pointBuilder = Point
                     .measurement((measurement == null) ? record.measurement() : measurement)
                     .tag(FLOW_TYPE, String.valueOf(flowInfo.flowType()))
                     .tag(DEVICE_ID, flowInfo.deviceId().toString())
                     .tag(INPUT_INTERFACE_ID, String.valueOf(flowInfo.inputInterfaceId()))
                     .tag(OUTPUT_INTERFACE_ID, String.valueOf(flowInfo.outputInterfaceId()))
-                    .tag(VLAN_ID, flowInfo.vlanId().toString())
                     .tag(VXLAN_ID, String.valueOf(flowInfo.vxlanId()))
                     .tag(SRC_IP, flowInfo.srcIp().toString())
                     .tag(DST_IP, flowInfo.dstIp().toString())
-                    .tag(SRC_PORT, getTpPort(flowInfo.srcPort()))
                     .tag(DST_PORT, getTpPort(flowInfo.dstPort()))
                     .tag(PROTOCOL, String.valueOf(flowInfo.protocol()))
-                    .tag(SRC_MAC, flowInfo.srcMac().toString())
-                    .tag(DST_MAC, flowInfo.dstMac().toString())
                     .addField(STARTUP_TIME, flowInfo.statsInfo().startupTime())
                     .addField(FST_PKT_ARR_TIME, flowInfo.statsInfo().fstPktArrTime())
                     .addField(LST_PKT_OFFSET, flowInfo.statsInfo().lstPktOffset())
@@ -179,9 +175,21 @@
                     .addField(CURR_ACC_BYTES, flowInfo.statsInfo().currAccBytes())
                     .addField(CURR_ACC_PKTS, flowInfo.statsInfo().currAccPkts())
                     .addField(ERROR_PKTS, flowInfo.statsInfo().errorPkts())
-                    .addField(DROP_PKTS, flowInfo.statsInfo().dropPkts())
-                    .build();
-            batchPoints.point(point);
+                    .addField(DROP_PKTS, flowInfo.statsInfo().dropPkts());
+
+            if (flowInfo.vlanId() != null) {
+                pointBuilder.tag(VLAN_ID, flowInfo.vlanId().toString());
+            }
+
+            if (flowInfo.srcPort() != null) {
+                pointBuilder.tag(SRC_PORT, getTpPort(flowInfo.srcPort()));
+            }
+
+            if (flowInfo.dstPort() != null) {
+                pointBuilder.tag(DST_PORT, getTpPort(flowInfo.dstPort()));
+            }
+
+            batchPoints.point(pointBuilder.build());
         }
         producer.write(batchPoints);
     }