[ONOS-7683] Initial implementation of openstack telemetry service
Change-Id: I621bed9cff108af194998b7a1e8269a9a6ffd32c
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/RestTelemetryConfigManager.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/RestTelemetryConfigManager.java
index 832c60b..455de34 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/RestTelemetryConfigManager.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/RestTelemetryConfigManager.java
@@ -16,11 +16,13 @@
package org.onosproject.openstacktelemetry.impl;
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.Modified;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.Service;
import org.onlab.util.Tools;
import org.onosproject.cfg.ComponentConfigService;
import org.onosproject.openstacktelemetry.api.RestTelemetryAdminService;
@@ -33,20 +35,25 @@
import java.util.Dictionary;
+import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_DISABLE;
import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_REST_ENDPOINT;
import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_REST_METHOD;
import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_REST_REQUEST_MEDIA_TYPE;
import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_REST_RESPONSE_MEDIA_TYPE;
import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_REST_SERVER_IP;
import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_REST_SERVER_PORT;
+import static org.onosproject.openstacktelemetry.util.OpenstackTelemetryUtil.getBooleanProperty;
/**
* REST server configuration manager for publishing openstack telemetry.
*/
+@Component(immediate = true)
+@Service
public class RestTelemetryConfigManager implements RestTelemetryConfigService {
private final Logger log = LoggerFactory.getLogger(getClass());
+ private static final String ENABLE_SERVICE = "enableService";
private static final String ADDRESS = "address";
private static final String PORT = "port";
private static final String ENDPOINT = "endpoint";
@@ -84,24 +91,45 @@
label = "Response media type of REST server")
protected String responseMediaType = DEFAULT_REST_RESPONSE_MEDIA_TYPE;
+ @Property(name = ENABLE_SERVICE, boolValue = DEFAULT_DISABLE,
+ label = "Specify the default behavior of telemetry service")
+ protected Boolean enableService = DEFAULT_DISABLE;
+
@Activate
protected void activate(ComponentContext context) {
componentConfigService.registerProperties(getClass());
- restTelemetryAdminService.start(getConfig());
+
+ if (enableService) {
+ restTelemetryAdminService.start(getConfig());
+ }
log.info("Started");
}
@Deactivate
protected void deactivate() {
componentConfigService.unregisterProperties(getClass(), false);
- restTelemetryAdminService.stop();
+
+ if (enableService) {
+ restTelemetryAdminService.stop();
+ }
log.info("Stopped");
}
@Modified
private void modified(ComponentContext context) {
readComponentConfiguration(context);
- restTelemetryAdminService.restart(getConfig());
+
+ if (enableService) {
+ if (restTelemetryAdminService.isRunning()) {
+ restTelemetryAdminService.restart(getConfig());
+ } else {
+ restTelemetryAdminService.start(getConfig());
+ }
+ } else {
+ if (restTelemetryAdminService.isRunning()) {
+ restTelemetryAdminService.stop();
+ }
+ }
log.info("Modified");
}
@@ -155,5 +183,16 @@
responseMediaType = responseMediaTypeStr != null ?
responseMediaTypeStr : DEFAULT_REST_RESPONSE_MEDIA_TYPE;
log.info("Configured. REST server response media type is {}", responseMediaType);
+
+ Boolean enableServiceConfigured =
+ getBooleanProperty(properties, ENABLE_SERVICE);
+ if (enableServiceConfigured == null) {
+ enableService = DEFAULT_DISABLE;
+ log.info("REST service enable flag is NOT " +
+ "configured, default value is {}", enableService);
+ } else {
+ enableService = enableServiceConfigured;
+ log.info("Configured. REST service enable flag is {}", enableService);
+ }
}
}