[ONOS-7683] Initial implementation of openstack telemetry service
Change-Id: I621bed9cff108af194998b7a1e8269a9a6ffd32c
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 b79d703..fa8d9fe 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
@@ -18,11 +18,14 @@
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.Service;
import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;
import org.onosproject.openstacktelemetry.api.InfluxDbTelemetryAdminService;
import org.onosproject.openstacktelemetry.api.InfluxRecord;
+import org.onosproject.openstacktelemetry.api.OpenstackTelemetryService;
import org.onosproject.openstacktelemetry.api.config.InfluxDbTelemetryConfig;
import org.onosproject.openstacktelemetry.api.config.TelemetryConfig;
import org.slf4j.Logger;
@@ -37,17 +40,26 @@
private final Logger log = LoggerFactory.getLogger(getClass());
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected OpenstackTelemetryService openstackTelemetryService;
+
private static final String PROTOCOL = "http";
private InfluxDB producer = null;
@Activate
protected void activate() {
+
+ openstackTelemetryService.addTelemetryService(this);
+
log.info("Started");
}
@Deactivate
protected void deactivate() {
stop();
+
+ openstackTelemetryService.removeTelemetryService(this);
+
log.info("Stopped");
}
@@ -91,5 +103,14 @@
@Override
public void publish(InfluxRecord<String, Object> record) {
// TODO: need to find a way to invoke InfluxDB endpoint using producer
+
+ if (producer == null) {
+ log.warn("InfluxDB telemetry service has not been enabled!");
+ }
+ }
+
+ @Override
+ public boolean isRunning() {
+ return producer != null;
}
}