Refactor: remove code duplication for openstacktelemetry app

Change-Id: I3a97bc22e8a49ef6184876875351ebba8111e25c
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/GrpcTelemetryConfigManager.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/GrpcTelemetryConfigManager.java
index 0ab2b5e..60e851e 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/GrpcTelemetryConfigManager.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/GrpcTelemetryConfigManager.java
@@ -43,6 +43,7 @@
 import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_GRPC_SERVER_PORT;
 import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_GRPC_USE_PLAINTEXT;
 import static org.onosproject.openstacktelemetry.util.OpenstackTelemetryUtil.getBooleanProperty;
+import static org.onosproject.openstacktelemetry.util.OpenstackTelemetryUtil.initTelemetryService;
 
 /**
  * gRPC server configuration manager for publishing openstack telemetry.
@@ -108,18 +109,7 @@
     @Modified
     private void modified(ComponentContext context) {
         readComponentConfiguration(context);
-
-        if (enableService) {
-            if (grpcTelemetryAdminService.isRunning()) {
-                grpcTelemetryAdminService.restart(getConfig());
-            } else {
-                grpcTelemetryAdminService.start(getConfig());
-            }
-        } else {
-            if (grpcTelemetryAdminService.isRunning()) {
-                grpcTelemetryAdminService.stop();
-            }
-        }
+        initTelemetryService(grpcTelemetryAdminService, getConfig(), enableService);
         log.info("Modified");
     }
 
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/InfluxDbTelemetryConfigManager.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/InfluxDbTelemetryConfigManager.java
index 4ce3e52..52eac35 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/InfluxDbTelemetryConfigManager.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/InfluxDbTelemetryConfigManager.java
@@ -44,6 +44,7 @@
 import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_INFLUXDB_SERVER_PORT;
 import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_INFLUXDB_USERNAME;
 import static org.onosproject.openstacktelemetry.util.OpenstackTelemetryUtil.getBooleanProperty;
+import static org.onosproject.openstacktelemetry.util.OpenstackTelemetryUtil.initTelemetryService;
 
 /**
  * InfluxDB server configuration manager for publishing openstack telemetry.
@@ -124,18 +125,7 @@
     @Modified
     private void modified(ComponentContext context) {
         readComponentConfiguration(context);
-
-        if (enableService) {
-            if (influxDbTelemetryAdminService.isRunning()) {
-                influxDbTelemetryAdminService.restart(getConfig());
-            } else {
-                influxDbTelemetryAdminService.start(getConfig());
-            }
-        } else {
-            if (influxDbTelemetryAdminService.isRunning()) {
-                influxDbTelemetryAdminService.stop();
-            }
-        }
+        initTelemetryService(influxDbTelemetryAdminService, getConfig(), enableService);
         log.info("Modified");
     }
 
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/KafkaTelemetryConfigManager.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/KafkaTelemetryConfigManager.java
index 9309c75..956e275 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/KafkaTelemetryConfigManager.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/KafkaTelemetryConfigManager.java
@@ -46,6 +46,7 @@
 import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_KAFKA_SERVER_PORT;
 import static org.onosproject.openstacktelemetry.api.Constants.DEFAULT_KAFKA_VALUE_SERIALIZER;
 import static org.onosproject.openstacktelemetry.util.OpenstackTelemetryUtil.getBooleanProperty;
+import static org.onosproject.openstacktelemetry.util.OpenstackTelemetryUtil.initTelemetryService;
 
 /**
  * Kafka server configuration manager for publishing openstack telemetry.
@@ -137,18 +138,7 @@
     @Modified
     private void modified(ComponentContext context) {
         readComponentConfiguration(context);
-
-        if (enableService) {
-            if (kafkaTelemetryAdminService.isRunning()) {
-                kafkaTelemetryAdminService.restart(getConfig());
-            } else {
-                kafkaTelemetryAdminService.start(getConfig());
-            }
-        } else {
-            if (kafkaTelemetryAdminService.isRunning()) {
-                kafkaTelemetryAdminService.stop();
-            }
-        }
+        initTelemetryService(kafkaTelemetryAdminService, getConfig(), enableService);
         log.info("Modified");
     }
 
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 455de34..25c7afe 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
@@ -43,6 +43,7 @@
 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;
+import static org.onosproject.openstacktelemetry.util.OpenstackTelemetryUtil.initTelemetryService;
 
 /**
  * REST server configuration manager for publishing openstack telemetry.
@@ -118,18 +119,7 @@
     @Modified
     private void modified(ComponentContext context) {
         readComponentConfiguration(context);
-
-        if (enableService) {
-            if (restTelemetryAdminService.isRunning()) {
-                restTelemetryAdminService.restart(getConfig());
-            } else {
-                restTelemetryAdminService.start(getConfig());
-            }
-        } else {
-            if (restTelemetryAdminService.isRunning()) {
-                restTelemetryAdminService.stop();
-            }
-        }
+        initTelemetryService(restTelemetryAdminService, getConfig(), enableService);
         log.info("Modified");
     }
 
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/util/OpenstackTelemetryUtil.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/util/OpenstackTelemetryUtil.java
index abc4e97..a957369 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/util/OpenstackTelemetryUtil.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/util/OpenstackTelemetryUtil.java
@@ -17,6 +17,8 @@
 
 import com.google.common.base.Strings;
 import org.onosproject.cfg.ConfigProperty;
+import org.onosproject.openstacktelemetry.api.TelemetryAdminService;
+import org.onosproject.openstacktelemetry.api.config.TelemetryConfig;
 
 import java.util.Dictionary;
 import java.util.Optional;
@@ -68,4 +70,27 @@
 
         return property.map(ConfigProperty::asBoolean).orElse(false);
     }
+
+    /**
+     * Initializes the telemetry service due tue configuration changes.
+     *
+     *
+     * @param adminService  telemetry admin service
+     * @param config        telemetry configuration
+     * @param enable        service enable flag
+     */
+    public static void initTelemetryService(TelemetryAdminService adminService,
+                                            TelemetryConfig config, boolean enable) {
+        if (enable) {
+            if (adminService.isRunning()) {
+                adminService.restart(config);
+            } else {
+                adminService.start(config);
+            }
+        } else {
+            if (adminService.isRunning()) {
+                adminService.stop();
+            }
+        }
+    }
 }