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/config/KafkaTelemetryConfig.java b/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/config/KafkaTelemetryConfig.java
index 078433f..80c7737 100644
--- a/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/config/KafkaTelemetryConfig.java
+++ b/apps/openstacktelemetry/api/src/main/java/org/onosproject/openstacktelemetry/api/config/KafkaTelemetryConfig.java
@@ -20,7 +20,7 @@
 /**
  * Configuration API of Kafka for publishing openstack telemetry.
  */
-public interface KafkaTelemetryConfig extends TelemetryConfig {
+public interface KafkaTelemetryConfig extends TelemetryConfigProperties {
 
     /**
      * Obtains kafka IP address.
@@ -86,6 +86,27 @@
     String valueSerializer();
 
     /**
+     * Obtains kafka key.
+     *
+     * @return kafka key
+     */
+    String key();
+
+    /**
+     * Obtains kafka topic.
+     *
+     * @return kafka topic
+     */
+    String topic();
+
+    /**
+     * Obtains kafka message codec.
+     *
+     * @return kafka message codec
+     */
+    String codec();
+
+    /**
      * Obtains kafka config maps.
      *
      * @return kafka config map
@@ -95,7 +116,7 @@
     /**
      * Builder class of KafkaTelemetryConfig.
      */
-    interface Builder extends TelemetryConfig.Builder {
+    interface Builder extends TelemetryConfigProperties.Builder {
 
         /**
          * Sets kafka IP address.
@@ -170,6 +191,30 @@
         Builder withValueSerializer(String valueSerializer);
 
         /**
+         * Sets kafka key.
+         *
+         * @param key kafka key
+         * @return builder instance
+         */
+        Builder withKey(String key);
+
+        /**
+         * Sets kafka topic.
+         *
+         * @param topic kafka topic
+         * @return builder instance
+         */
+        Builder withTopic(String topic);
+
+        /**
+         * Sets kafka message codec.
+         *
+         * @param codec kafka message codec
+         * @return builder instance
+         */
+        Builder withCodec(String codec);
+
+        /**
          * Sets other kafka configuration map.
          *
          * @param configMap kafka configuration map
@@ -184,4 +229,4 @@
          */
         KafkaTelemetryConfig build();
     }
-}
+}
\ No newline at end of file