Refactor: move telemetry config from componentCfg to configs.xml

1. Support to export the metrics to multiple targets
2. Add a set of properties to kafka config (key, topic, etc.)
3. Add distributedStore to manage telemetry configs
4. Add CLI to query stored telemetry configs
5. Add a set of telemetry loaders to import xml definitions
6. Add unit tests for telemetry cfg, xml cfg loader and dist store
7. Add missing javadoc for a set of implementation classes

Change-Id: I39480c9a6ac07357184d2e1094b9c9f4d36fd8b1
diff --git a/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/TelemetryConfigService.java b/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/TelemetryConfigService.java
index 51e4cea..76076d2 100644
--- a/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/TelemetryConfigService.java
+++ b/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/TelemetryConfigService.java
@@ -15,17 +15,39 @@
  */
 package org.onosproject.openstacktelemetry.api;
 
+import org.onosproject.event.ListenerService;
 import org.onosproject.openstacktelemetry.api.config.TelemetryConfig;
+import org.onosproject.openstacktelemetry.api.config.TelemetryConfig.ConfigType;
+
+import java.util.Set;
 
 /**
  * Telemetry configuration service interface.
  */
-public interface TelemetryConfigService {
+public interface TelemetryConfigService
+        extends ListenerService<TelemetryConfigEvent, TelemetryConfigListener> {
 
     /**
-     * Obtains the telemetry configuration.
+     * Obtains the telemetry configuration with the given telemetry
+     * configuration name.
      *
-     * @return telemetry configuration
+     * @param name telemetry configuration name
+     * @return provided telemetry configuration
      */
-    TelemetryConfig getConfig();
+    TelemetryConfig getConfig(String name);
+
+    /**
+     * Obtains the telemetry configuration with the given telemetry config type.
+     *
+     * @param type telemetry configuration type
+     * @return provided telemetry configurations
+     */
+    Set<TelemetryConfig> getConfigsByType(ConfigType type);
+
+    /**
+     * Returns the overall set of telemetry configurations being provided.
+     *
+     * @return provided telemetry configurations
+     */
+    Set<TelemetryConfig> getConfigs();
 }