Fix: do not publish vStats info to Prometheus if it is not activated
Change-Id: I843f1bdd7e737fe642034c54a67bdb528177728c
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/PrometheusTelemetryManager.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/PrometheusTelemetryManager.java
index 9f63b1d..92cf34e 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/PrometheusTelemetryManager.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/PrometheusTelemetryManager.java
@@ -184,11 +184,18 @@
@Override
public void publish(Set<FlowInfo> flowInfos) {
- if (flowInfos.isEmpty()) {
- log.debug("No FlowInfo record to publish");
+ if (prometheusExporters == null || prometheusExporters.isEmpty()) {
+ log.debug("Prometheus telemetry service has not been enabled!");
return;
}
+ if (flowInfos.size() == 0) {
+ log.debug("No record to publish");
+ return;
+ }
+
+ log.debug("Publish {} stats records to Prometheus", flowInfos.size());
+
long flowByte;
int flowPkt;
String[] labelValues;
@@ -203,8 +210,18 @@
pktVM2VM.labels(labelValues).set(flowPkt);
pktVM2VMPrev.labels(labelValues).set(flowInfo.statsInfo().prevAccPkts());
pktVM2VMCurr.labels(labelValues).set(flowInfo.statsInfo().currAccPkts());
- pktError.labels(labelValues).inc(flowInfo.statsInfo().errorPkts());
- pktDrop.labels(labelValues).inc(flowInfo.statsInfo().dropPkts());
+
+ if (flowInfo.statsInfo().errorPkts() == -1) {
+ pktError.labels(labelValues).inc(0);
+ } else {
+ pktError.labels(labelValues).inc(flowInfo.statsInfo().errorPkts());
+ }
+
+ if (flowInfo.statsInfo().dropPkts() == -1) {
+ pktDrop.labels(labelValues).inc(0);
+ } else {
+ pktDrop.labels(labelValues).inc(flowInfo.statsInfo().dropPkts());
+ }
}
}