/*\r
-* ============LICENSE_START=======================================================\r
-* ONAP : DataLake\r
-* ================================================================================\r
-* Copyright 2019 China Mobile\r
-*=================================================================================\r
-* Licensed under the Apache License, Version 2.0 (the "License");\r
-* you may not use this file except in compliance with the License.\r
-* You may obtain a copy of the License at\r
-*\r
-* http://www.apache.org/licenses/LICENSE-2.0\r
-*\r
-* Unless required by applicable law or agreed to in writing, software\r
-* distributed under the License is distributed on an "AS IS" BASIS,\r
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-* See the License for the specific language governing permissions and\r
-* limitations under the License.\r
-* ============LICENSE_END=========================================================\r
-*/\r
+ * ============LICENSE_START=======================================================\r
+ * ONAP : DataLake\r
+ * ================================================================================\r
+ * Copyright 2019 China Mobile\r
+ *=================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
package org.onap.datalake.feeder.util;\r
\r
+import com.fasterxml.jackson.databind.JsonNode;\r
+import com.fasterxml.jackson.databind.ObjectMapper;\r
+import com.fasterxml.jackson.databind.node.JsonNodeType;\r
+import lombok.Getter;\r
+import org.apache.velocity.Template;\r
+import org.apache.velocity.VelocityContext;\r
+import org.apache.velocity.app.Velocity;\r
+import org.apache.velocity.runtime.RuntimeConstants;\r
+import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;\r
+\r
import java.io.BufferedWriter;\r
import java.io.FileWriter;\r
import java.io.IOException;\r
import java.util.List;\r
import java.util.Map.Entry;\r
\r
-import org.apache.velocity.Template;\r
-import org.apache.velocity.VelocityContext;\r
-import org.apache.velocity.app.Velocity;\r
-import org.apache.velocity.runtime.RuntimeConstants;\r
-import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;\r
-import org.onap.datalake.feeder.enumeration.DataFormat;\r
-\r
-import com.fasterxml.jackson.databind.JsonNode;\r
-import com.fasterxml.jackson.databind.ObjectMapper;\r
-import com.fasterxml.jackson.databind.node.JsonNodeType;\r
-\r
-import lombok.Getter;\r
-import lombok.Setter;\r
-\r
\r
/*\r
* read sample json and output supervisor to resources\druid\generated\r
* need manual edit to be production ready, final versions are in resources\druid\r
- * \r
+ *\r
* http://druid.io/docs/latest/tutorials/tutorial-ingestion-spec.html\r
* http://druid.io/docs/latest/ingestion/flatten-json\r
- * \r
- * \r
+ *\r
+ *\r
* todo:\r
* reduce the manual editing\r
* path hard coded\r
@Getter\r
public class DruidSupervisorGenerator {\r
\r
- Template template = null;\r
- VelocityContext context;\r
+ Template template = null;\r
+ VelocityContext context;\r
\r
- List<String[]> dimensions;\r
+ List<String[]> dimensions;\r
\r
- public DruidSupervisorGenerator() {\r
- dimensions = new ArrayList<>();\r
+ public DruidSupervisorGenerator() {\r
+ dimensions = new ArrayList<>();\r
\r
- Velocity.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");\r
- Velocity.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());\r
+ Velocity.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");\r
+ Velocity.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());\r
\r
- Velocity.init();\r
+ Velocity.init();\r
\r
- context = new VelocityContext();\r
+ context = new VelocityContext();\r
\r
- context.put("host", "message-router-kafka:9092");//TODO get from config\r
+ context.put("host", "message-router-kafka:9092");//TODO get from config\r
\r
- template = Velocity.getTemplate("druid/kafka-supervisor-template.vm");\r
- }\r
+ template = Velocity.getTemplate("druid/kafka-supervisor-template.vm");\r
+ }\r
\r
- private void printNode(String prefix, JsonNode node) {\r
+ private void printNode(String prefix, JsonNode node) {\r
\r
- // lets see what type the node is\r
- // System.out.println("NodeType=" + node.getNodeType() + ", isContainerNode=" + node.isContainerNode() + ", " + node); // prints OBJECT\r
+ // lets see what type the node is\r
+ // System.out.println("NodeType=" + node.getNodeType() + ", isContainerNode=" + node.isContainerNode() + ", " + node); // prints OBJECT\r
\r
- if (node.isContainerNode()) {\r
+ if (node.isContainerNode()) {\r
\r
- Iterator<Entry<String, JsonNode>> fields = node.fields();\r
+ Iterator<Entry<String, JsonNode>> fields = node.fields();\r
\r
- while (fields.hasNext()) {\r
- Entry<String, JsonNode> field = fields.next();\r
- // System.out.println("--------"+field.getKey()+"--------");\r
- printNode(prefix + "." + field.getKey(), field.getValue());\r
- }\r
+ while (fields.hasNext()) {\r
+ Entry<String, JsonNode> field = fields.next();\r
+ // System.out.println("--------"+field.getKey()+"--------");\r
+ printNode(prefix + "." + field.getKey(), field.getValue());\r
+ }\r
\r
- if (node.isArray()) {\r
- Iterator<JsonNode> elements = node.elements();\r
- int i = 0;\r
- while (elements.hasNext()) {\r
- JsonNode element = elements.next();\r
- printNode(prefix + "[" + i + "]", element);\r
- i++;\r
- }\r
- }\r
+ if (node.isArray()) {\r
+ Iterator<JsonNode> elements = node.elements();\r
+ int i = 0;\r
+ while (elements.hasNext()) {\r
+ JsonNode element = elements.next();\r
+ printNode(prefix + "[" + i + "]", element);\r
+ i++;\r
+ }\r
+ }\r
\r
- } else {\r
- printFlattenSpec(node.getNodeType(), prefix);\r
- }\r
+ } else {\r
+ printFlattenSpec(node.getNodeType(), prefix);\r
+ }\r
\r
- }\r
+ }\r
\r
- private void printFlattenSpec(JsonNodeType type, String path) {\r
- String name = path.substring(2).replace('.', ':');\r
- // lets see what type the node is\r
- System.out.println("{");\r
- System.out.println("\"type\": \"path\",");\r
- System.out.println("\"name\": \"" + name + "\",");\r
- System.out.println("\"expr\": \"" + path + "\"");\r
- System.out.println("},");\r
+ private void printFlattenSpec(JsonNodeType type, String path) {\r
+ String name = path.substring(2).replace('.', ':');\r
+ // lets see what type the node is\r
+ System.out.println("{");\r
+ System.out.println("\"type\": \"path\",");\r
+ System.out.println("\"name\": \"" + name + "\",");\r
+ System.out.println("\"expr\": \"" + path + "\"");\r
+ System.out.println("},");\r
\r
- dimensions.add(new String[] { name, path });\r
+ dimensions.add(new String[]{name, path});\r
/*\r
//for dimensionsSpec\r
if (JsonNodeType.NUMBER.equals(type)) {\r
\r
}\r
*/\r
- }\r
+ }\r
\r
- public void doTopic(String topic) throws IOException {\r
- dimensions.clear();\r
+ public void doTopic(String topic) throws IOException {\r
+ dimensions.clear();\r
\r
- String sampleFileName = "C:\\git\\onap\\datalake\\olap\\src\\main\\resources\\druid\\" + topic + "-sample-format.json";//FIXME hard coded path\r
- String outputFileName = "C:\\git\\onap\\datalake\\olap\\src\\main\\resources\\druid\\generated\\" + topic + "-kafka-supervisor.json";\r
+ String sampleFileName = "src/main/resources/druid/" + topic + "-sample-format.json";//FIXME hard coded path\r
+ String outputFileName = "src/main/resources/druid/generated/" + topic + "-kafka-supervisor.json";\r
\r
- // Get the contents of json as a string using commons IO IOUTils class.\r
- String sampleJson = Util.getTextFromFile(sampleFileName);\r
+ // Get the contents of json as a string using commons IO IOUTils class.\r
+ String sampleJson = Util.getTextFromFile(sampleFileName);\r
\r
- // create an ObjectMapper instance.\r
- ObjectMapper mapper = new ObjectMapper();\r
- // use the ObjectMapper to read the json string and create a tree\r
- JsonNode root = mapper.readTree(sampleJson);\r
- printNode("$", root);\r
+ // create an ObjectMapper instance.\r
+ ObjectMapper mapper = new ObjectMapper();\r
+ // use the ObjectMapper to read the json string and create a tree\r
+ JsonNode root = mapper.readTree(sampleJson);\r
+ printNode("$", root);\r
\r
- context.put("topic", topic);\r
- context.put("timestamp", "event-header:timestamp");//FIXME hard coded, should be topic based\r
- context.put("timestampFormat", "yyyyMMdd-HH:mm:ss:SSS");//FIXME hard coded, should be topic based\r
- context.put("dimensions", dimensions);\r
+ context.put("topic", topic);\r
+ context.put("timestamp", "event-header:timestamp");//FIXME hard coded, should be topic based\r
+ context.put("timestampFormat", "yyyyMMdd-HH:mm:ss:SSS");//FIXME hard coded, should be topic based\r
+ context.put("dimensions", dimensions);\r
\r
- BufferedWriter out = new BufferedWriter(new FileWriter(outputFileName));\r
+ BufferedWriter out = new BufferedWriter(new FileWriter(outputFileName));\r
\r
- template.merge(context, out);\r
- out.close();\r
- }\r
+ template.merge(context, out);\r
+ out.close();\r
+ }\r
\r
- public static void main(String[] args) throws MalformedURLException, IOException {\r
- String[] topics = new String[] { "AAI-EVENT", "msgrtr.apinode.metrics.dmaap", "unauthenticated.DCAE_CL_OUTPUT", "unauthenticated.SEC_FAULT_OUTPUT" };//FIXME hard coded\r
+ public static void main(String[] args) throws MalformedURLException, IOException {\r
+ String[] topics = new String[]{"AAI-EVENT", "msgrtr.apinode.metrics.dmaap", "unauthenticated.DCAE_CL_OUTPUT", "unauthenticated.SEC_FAULT_OUTPUT"};//FIXME hard coded\r
\r
- DruidSupervisorGenerator p = new DruidSupervisorGenerator();\r
+ DruidSupervisorGenerator p = new DruidSupervisorGenerator();\r
\r
- for (String topic : topics) {\r
- p.doTopic(topic);\r
- }\r
- }\r
+ for (String topic : topics) {\r
+ p.doTopic(topic);\r
+ }\r
+ }\r
}\r
--- /dev/null
+{
+ "type": "kafka",
+ "dataSchema": {
+ "dataSource": "AAI-EVENT",
+ "parser": {
+ "type": "string",
+ "parseSpec": {
+ "format": "json",
+ "flattenSpec": {
+ "useFieldDiscovery": false,
+ "fields": [
+
+ {
+"type": "path",
+"name": "_id",
+"expr": "$._id"
+},
+
+ {
+"type": "path",
+"name": "cambria:partition",
+"expr": "$.cambria.partition"
+},
+
+ {
+"type": "path",
+"name": "event-header:severity",
+"expr": "$.event-header.severity"
+},
+
+ {
+"type": "path",
+"name": "event-header:entity-type",
+"expr": "$.event-header.entity-type"
+},
+
+ {
+"type": "path",
+"name": "event-header:top-entity-type",
+"expr": "$.event-header.top-entity-type"
+},
+
+ {
+"type": "path",
+"name": "event-header:entity-link",
+"expr": "$.event-header.entity-link"
+},
+
+ {
+"type": "path",
+"name": "event-header:event-type",
+"expr": "$.event-header.event-type"
+},
+
+ {
+"type": "path",
+"name": "event-header:domain",
+"expr": "$.event-header.domain"
+},
+
+ {
+"type": "path",
+"name": "event-header:action",
+"expr": "$.event-header.action"
+},
+
+ {
+"type": "path",
+"name": "event-header:sequence-number",
+"expr": "$.event-header.sequence-number"
+},
+
+ {
+"type": "path",
+"name": "event-header:id",
+"expr": "$.event-header.id"
+},
+
+ {
+"type": "path",
+"name": "event-header:source-name",
+"expr": "$.event-header.source-name"
+},
+
+ {
+"type": "path",
+"name": "event-header:version",
+"expr": "$.event-header.version"
+},
+
+ {
+"type": "path",
+"name": "event-header:timestamp",
+"expr": "$.event-header.timestamp"
+},
+
+ {
+"type": "path",
+"name": "entity:thirdparty-sdnc-id",
+"expr": "$.entity.thirdparty-sdnc-id"
+},
+
+ {
+"type": "path",
+"name": "entity:resource-version",
+"expr": "$.entity.resource-version"
+},
+
+ {
+"type": "path",
+"name": "entity:location",
+"expr": "$.entity.location"
+},
+
+ {
+"type": "path",
+"name": "entity:product-name",
+"expr": "$.entity.product-name"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:esr-system-info-id",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].esr-system-info-id"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:system-type",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].system-type"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:service-url",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].service-url"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:ssl-cacert",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].ssl-cacert"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:type",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].type"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:ssl-insecure",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].ssl-insecure"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:system-status",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].system-status"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:version",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].version"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:passive",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].passive"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:password",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].password"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:protocol",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].protocol"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:ip-address",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].ip-address"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:cloud-domain",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].cloud-domain"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:user-name",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].user-name"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:system-name",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].system-name"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:port",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].port"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:vendor",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].vendor"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:resource-version",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].resource-version"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:remote-path",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].remote-path"
+},
+
+ {
+"type": "path",
+"name": "entity:esr-system-info-list:esr-system-info[0]:default-tenant",
+"expr": "$.entity.esr-system-info-list.esr-system-info[0].default-tenant"
+},
+
+ {
+"type": "path",
+"name": "_dl_type_",
+"expr": "$._dl_type_"
+},
+
+ {
+"type": "path",
+"name": "_dl_text_",
+"expr": "$._dl_text_"
+},
+ ]
+ },
+ "timestampSpec": {
+ "column": "event-header:timestamp",
+ "format": "yyyyMMdd-HH:mm:ss:SSS"
+ },
+ "dimensionsSpec": {
+ "dimensions": [
+ ],
+ "dimensionsExclusions": [
+ ]
+ }
+ }
+ },
+ "metricsSpec": [],
+ "granularitySpec": {
+ "type": "uniform",
+ "segmentGranularity": "HOUR",
+ "queryGranularity": "MINUTE",
+ "rollup": false
+ }
+ },
+ "tuningConfig": {
+ "type": "kafka",
+ "reportParseExceptions": true
+ },
+ "ioConfig": {
+ "topic": "AAI-EVENT",
+ "replicas": 1,
+ "startDelay": "PT1S",
+ "taskDuration": "PT1H",
+ "completionTimeout": "PT30M",
+ "consumerProperties": {
+ "bootstrap.servers": "message-router-kafka:9092"
+ },
+ "useEarliestOffset": true
+ }
+}
--- /dev/null
+{
+ "type": "kafka",
+ "dataSchema": {
+ "dataSource": "msgrtr.apinode.metrics.dmaap",
+ "parser": {
+ "type": "string",
+ "parseSpec": {
+ "format": "json",
+ "flattenSpec": {
+ "useFieldDiscovery": false,
+ "fields": [
+
+ {
+"type": "path",
+"name": "_id:$oid",
+"expr": "$._id.$oid"
+},
+
+ {
+"type": "path",
+"name": "sendEpsShort:summary",
+"expr": "$.sendEpsShort.summary"
+},
+
+ {
+"type": "path",
+"name": "sendEpsShort:raw",
+"expr": "$.sendEpsShort.raw"
+},
+
+ {
+"type": "path",
+"name": "recvEpsInstant:summary",
+"expr": "$.recvEpsInstant.summary"
+},
+
+ {
+"type": "path",
+"name": "recvEpsInstant:raw",
+"expr": "$.recvEpsInstant.raw"
+},
+
+ {
+"type": "path",
+"name": "fanOut:summary",
+"expr": "$.fanOut.summary"
+},
+
+ {
+"type": "path",
+"name": "fanOut:raw",
+"expr": "$.fanOut.raw"
+},
+
+ {
+"type": "path",
+"name": "sendEpsLong:summary",
+"expr": "$.sendEpsLong.summary"
+},
+
+ {
+"type": "path",
+"name": "sendEpsLong:raw",
+"expr": "$.sendEpsLong.raw"
+},
+
+ {
+"type": "path",
+"name": "kafkaConsumerTimeouts:summary",
+"expr": "$.kafkaConsumerTimeouts.summary"
+},
+
+ {
+"type": "path",
+"name": "kafkaConsumerTimeouts:raw",
+"expr": "$.kafkaConsumerTimeouts.raw"
+},
+
+ {
+"type": "path",
+"name": "recvEpsLong:summary",
+"expr": "$.recvEpsLong.summary"
+},
+
+ {
+"type": "path",
+"name": "recvEpsLong:raw",
+"expr": "$.recvEpsLong.raw"
+},
+
+ {
+"type": "path",
+"name": "sendEpsInstant:summary",
+"expr": "$.sendEpsInstant.summary"
+},
+
+ {
+"type": "path",
+"name": "sendEpsInstant:raw",
+"expr": "$.sendEpsInstant.raw"
+},
+
+ {
+"type": "path",
+"name": "recvEpsShort:summary",
+"expr": "$.recvEpsShort.summary"
+},
+
+ {
+"type": "path",
+"name": "recvEpsShort:raw",
+"expr": "$.recvEpsShort.raw"
+},
+
+ {
+"type": "path",
+"name": "kafkaConsumerClaims:summary",
+"expr": "$.kafkaConsumerClaims.summary"
+},
+
+ {
+"type": "path",
+"name": "kafkaConsumerClaims:raw",
+"expr": "$.kafkaConsumerClaims.raw"
+},
+
+ {
+"type": "path",
+"name": "version:summary",
+"expr": "$.version.summary"
+},
+
+ {
+"type": "path",
+"name": "version:raw",
+"expr": "$.version.raw"
+},
+
+ {
+"type": "path",
+"name": "upTime:summary",
+"expr": "$.upTime.summary"
+},
+
+ {
+"type": "path",
+"name": "upTime:raw",
+"expr": "$.upTime.raw"
+},
+
+ {
+"type": "path",
+"name": "sendTotalEvents:summary",
+"expr": "$.sendTotalEvents.summary"
+},
+
+ {
+"type": "path",
+"name": "sendTotalEvents:raw",
+"expr": "$.sendTotalEvents.raw"
+},
+
+ {
+"type": "path",
+"name": "hostname",
+"expr": "$.hostname"
+},
+
+ {
+"type": "path",
+"name": "kafkaConsumerCacheMiss:summary",
+"expr": "$.kafkaConsumerCacheMiss.summary"
+},
+
+ {
+"type": "path",
+"name": "kafkaConsumerCacheMiss:raw",
+"expr": "$.kafkaConsumerCacheMiss.raw"
+},
+
+ {
+"type": "path",
+"name": "metricsSendTime",
+"expr": "$.metricsSendTime"
+},
+
+ {
+"type": "path",
+"name": "kafkaConsumerCacheHit:summary",
+"expr": "$.kafkaConsumerCacheHit.summary"
+},
+
+ {
+"type": "path",
+"name": "kafkaConsumerCacheHit:raw",
+"expr": "$.kafkaConsumerCacheHit.raw"
+},
+
+ {
+"type": "path",
+"name": "now",
+"expr": "$.now"
+},
+
+ {
+"type": "path",
+"name": "transactionEnabled",
+"expr": "$.transactionEnabled"
+},
+
+ {
+"type": "path",
+"name": "startTime:summary",
+"expr": "$.startTime.summary"
+},
+
+ {
+"type": "path",
+"name": "startTime:raw",
+"expr": "$.startTime.raw"
+},
+
+ {
+"type": "path",
+"name": "recvTotalEvents:summary",
+"expr": "$.recvTotalEvents.summary"
+},
+
+ {
+"type": "path",
+"name": "recvTotalEvents:raw",
+"expr": "$.recvTotalEvents.raw"
+},
+
+ {
+"type": "path",
+"name": "_dl_type_",
+"expr": "$._dl_type_"
+},
+
+ {
+"type": "path",
+"name": "_dl_text_",
+"expr": "$._dl_text_"
+},
+ ]
+ },
+ "timestampSpec": {
+ "column": "event-header:timestamp",
+ "format": "yyyyMMdd-HH:mm:ss:SSS"
+ },
+ "dimensionsSpec": {
+ "dimensions": [
+ ],
+ "dimensionsExclusions": [
+ ]
+ }
+ }
+ },
+ "metricsSpec": [],
+ "granularitySpec": {
+ "type": "uniform",
+ "segmentGranularity": "HOUR",
+ "queryGranularity": "MINUTE",
+ "rollup": false
+ }
+ },
+ "tuningConfig": {
+ "type": "kafka",
+ "reportParseExceptions": true
+ },
+ "ioConfig": {
+ "topic": "msgrtr.apinode.metrics.dmaap",
+ "replicas": 1,
+ "startDelay": "PT1S",
+ "taskDuration": "PT1H",
+ "completionTimeout": "PT30M",
+ "consumerProperties": {
+ "bootstrap.servers": "message-router-kafka:9092"
+ },
+ "useEarliestOffset": true
+ }
+}
--- /dev/null
+{
+ "type": "kafka",
+ "dataSchema": {
+ "dataSource": "unauthenticated.DCAE_CL_OUTPUT",
+ "parser": {
+ "type": "string",
+ "parseSpec": {
+ "format": "json",
+ "flattenSpec": {
+ "useFieldDiscovery": false,
+ "fields": [
+
+ {
+"type": "path",
+"name": "_id",
+"expr": "$._id"
+},
+
+ {
+"type": "path",
+"name": "closedLoopEventClient",
+"expr": "$.closedLoopEventClient"
+},
+
+ {
+"type": "path",
+"name": "policyVersion",
+"expr": "$.policyVersion"
+},
+
+ {
+"type": "path",
+"name": "policyName",
+"expr": "$.policyName"
+},
+
+ {
+"type": "path",
+"name": "policyScope",
+"expr": "$.policyScope"
+},
+
+ {
+"type": "path",
+"name": "target_type",
+"expr": "$.target_type"
+},
+
+ {
+"type": "path",
+"name": "AAI:serviceType",
+"expr": "$.AAI.serviceType"
+},
+
+ {
+"type": "path",
+"name": "AAI:service-instance_service-instance-id",
+"expr": "$.AAI.service-instance_service-instance-id"
+},
+
+ {
+"type": "path",
+"name": "AAI:globalSubscriberId",
+"expr": "$.AAI.globalSubscriberId"
+},
+
+ {
+"type": "path",
+"name": "AAI:vserver_vserver-name",
+"expr": "$.AAI.vserver_vserver-name"
+},
+
+ {
+"type": "path",
+"name": "AAI:network-information_network-id",
+"expr": "$.AAI.network-information_network-id"
+},
+
+ {
+"type": "path",
+"name": "closedLoopAlarmStart",
+"expr": "$.closedLoopAlarmStart"
+},
+
+ {
+"type": "path",
+"name": "closedLoopEventStatus",
+"expr": "$.closedLoopEventStatus"
+},
+
+ {
+"type": "path",
+"name": "version",
+"expr": "$.version"
+},
+
+ {
+"type": "path",
+"name": "closedLoopControlName",
+"expr": "$.closedLoopControlName"
+},
+
+ {
+"type": "path",
+"name": "target",
+"expr": "$.target"
+},
+
+ {
+"type": "path",
+"name": "closedLoopAlarmEnd",
+"expr": "$.closedLoopAlarmEnd"
+},
+
+ {
+"type": "path",
+"name": "requestID",
+"expr": "$.requestID"
+},
+
+ {
+"type": "path",
+"name": "from",
+"expr": "$.from"
+},
+
+ {
+"type": "path",
+"name": "_dl_type_",
+"expr": "$._dl_type_"
+},
+
+ {
+"type": "path",
+"name": "_dl_text_",
+"expr": "$._dl_text_"
+},
+ ]
+ },
+ "timestampSpec": {
+ "column": "event-header:timestamp",
+ "format": "yyyyMMdd-HH:mm:ss:SSS"
+ },
+ "dimensionsSpec": {
+ "dimensions": [
+ ],
+ "dimensionsExclusions": [
+ ]
+ }
+ }
+ },
+ "metricsSpec": [],
+ "granularitySpec": {
+ "type": "uniform",
+ "segmentGranularity": "HOUR",
+ "queryGranularity": "MINUTE",
+ "rollup": false
+ }
+ },
+ "tuningConfig": {
+ "type": "kafka",
+ "reportParseExceptions": true
+ },
+ "ioConfig": {
+ "topic": "unauthenticated.DCAE_CL_OUTPUT",
+ "replicas": 1,
+ "startDelay": "PT1S",
+ "taskDuration": "PT1H",
+ "completionTimeout": "PT30M",
+ "consumerProperties": {
+ "bootstrap.servers": "message-router-kafka:9092"
+ },
+ "useEarliestOffset": true
+ }
+}
--- /dev/null
+{
+ "type": "kafka",
+ "dataSchema": {
+ "dataSource": "unauthenticated.SEC_FAULT_OUTPUT",
+ "parser": {
+ "type": "string",
+ "parseSpec": {
+ "format": "json",
+ "flattenSpec": {
+ "useFieldDiscovery": false,
+ "fields": [
+
+ {
+"type": "path",
+"name": "_id",
+"expr": "$._id"
+},
+
+ {
+"type": "path",
+"name": "event:commonEventHeader:sourceId",
+"expr": "$.event.commonEventHeader.sourceId"
+},
+
+ {
+"type": "path",
+"name": "event:commonEventHeader:startEpochMicrosec",
+"expr": "$.event.commonEventHeader.startEpochMicrosec"
+},
+
+ {
+"type": "path",
+"name": "event:commonEventHeader:eventId",
+"expr": "$.event.commonEventHeader.eventId"
+},
+
+ {
+"type": "path",
+"name": "event:commonEventHeader:domain",
+"expr": "$.event.commonEventHeader.domain"
+},
+
+ {
+"type": "path",
+"name": "event:commonEventHeader:lastEpochMicrosec",
+"expr": "$.event.commonEventHeader.lastEpochMicrosec"
+},
+
+ {
+"type": "path",
+"name": "event:commonEventHeader:eventName",
+"expr": "$.event.commonEventHeader.eventName"
+},
+
+ {
+"type": "path",
+"name": "event:commonEventHeader:sourceName",
+"expr": "$.event.commonEventHeader.sourceName"
+},
+
+ {
+"type": "path",
+"name": "event:commonEventHeader:priority",
+"expr": "$.event.commonEventHeader.priority"
+},
+
+ {
+"type": "path",
+"name": "event:commonEventHeader:version",
+"expr": "$.event.commonEventHeader.version"
+},
+
+ {
+"type": "path",
+"name": "event:commonEventHeader:reportingEntityName",
+"expr": "$.event.commonEventHeader.reportingEntityName"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:eventSeverity",
+"expr": "$.event.faultFields.eventSeverity"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmCondition",
+"expr": "$.event.faultFields.alarmCondition"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:faultFieldsVersion",
+"expr": "$.event.faultFields.faultFieldsVersion"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:specificProblem",
+"expr": "$.event.faultFields.specificProblem"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[0]:name",
+"expr": "$.event.faultFields.alarmAdditionalInformation[0].name"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[0]:value",
+"expr": "$.event.faultFields.alarmAdditionalInformation[0].value"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[1]:name",
+"expr": "$.event.faultFields.alarmAdditionalInformation[1].name"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[1]:value",
+"expr": "$.event.faultFields.alarmAdditionalInformation[1].value"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[2]:name",
+"expr": "$.event.faultFields.alarmAdditionalInformation[2].name"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[2]:value",
+"expr": "$.event.faultFields.alarmAdditionalInformation[2].value"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[3]:name",
+"expr": "$.event.faultFields.alarmAdditionalInformation[3].name"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[3]:value",
+"expr": "$.event.faultFields.alarmAdditionalInformation[3].value"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[4]:name",
+"expr": "$.event.faultFields.alarmAdditionalInformation[4].name"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[4]:value",
+"expr": "$.event.faultFields.alarmAdditionalInformation[4].value"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[5]:name",
+"expr": "$.event.faultFields.alarmAdditionalInformation[5].name"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[5]:value",
+"expr": "$.event.faultFields.alarmAdditionalInformation[5].value"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[6]:name",
+"expr": "$.event.faultFields.alarmAdditionalInformation[6].name"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:alarmAdditionalInformation[6]:value",
+"expr": "$.event.faultFields.alarmAdditionalInformation[6].value"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:eventSourceType",
+"expr": "$.event.faultFields.eventSourceType"
+},
+
+ {
+"type": "path",
+"name": "event:faultFields:vfStatus",
+"expr": "$.event.faultFields.vfStatus"
+},
+
+ {
+"type": "path",
+"name": "_dl_type_",
+"expr": "$._dl_type_"
+},
+
+ {
+"type": "path",
+"name": "_dl_text_",
+"expr": "$._dl_text_"
+},
+ ]
+ },
+ "timestampSpec": {
+ "column": "event-header:timestamp",
+ "format": "yyyyMMdd-HH:mm:ss:SSS"
+ },
+ "dimensionsSpec": {
+ "dimensions": [
+ ],
+ "dimensionsExclusions": [
+ ]
+ }
+ }
+ },
+ "metricsSpec": [],
+ "granularitySpec": {
+ "type": "uniform",
+ "segmentGranularity": "HOUR",
+ "queryGranularity": "MINUTE",
+ "rollup": false
+ }
+ },
+ "tuningConfig": {
+ "type": "kafka",
+ "reportParseExceptions": true
+ },
+ "ioConfig": {
+ "topic": "unauthenticated.SEC_FAULT_OUTPUT",
+ "replicas": 1,
+ "startDelay": "PT1S",
+ "taskDuration": "PT1H",
+ "completionTimeout": "PT30M",
+ "consumerProperties": {
+ "bootstrap.servers": "message-router-kafka:9092"
+ },
+ "useEarliestOffset": true
+ }
+}
/*\r
-* ============LICENSE_START=======================================================\r
-* ONAP : DataLake\r
-* ================================================================================\r
-* Copyright 2019 China Mobile\r
-*=================================================================================\r
-* Licensed under the Apache License, Version 2.0 (the "License");\r
-* you may not use this file except in compliance with the License.\r
-* You may obtain a copy of the License at\r
-*\r
-* http://www.apache.org/licenses/LICENSE-2.0\r
-*\r
-* Unless required by applicable law or agreed to in writing, software\r
-* distributed under the License is distributed on an "AS IS" BASIS,\r
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-* See the License for the specific language governing permissions and\r
-* limitations under the License.\r
-* ============LICENSE_END=========================================================\r
-*/\r
+ * ============LICENSE_START=======================================================\r
+ * ONAP : DataLake\r
+ * ================================================================================\r
+ * Copyright 2019 China Mobile\r
+ *=================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
package org.onap.datalake.feeder.util;\r
\r
-import static org.junit.Assert.assertEquals;\r
-import static org.junit.Assert.assertNotNull;\r
-\r
import org.apache.velocity.VelocityContext;\r
import org.junit.Test;\r
-import org.junit.runner.RunWith; \r
+import org.junit.runner.RunWith;\r
import org.onap.datalake.feeder.config.ApplicationConfiguration;\r
-import org.springframework.beans.factory.annotation.Autowired; \r
-import org.springframework.boot.test.context.SpringBootTest; \r
+import org.springframework.beans.factory.annotation.Autowired;\r
+import org.springframework.boot.test.context.SpringBootTest;\r
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\r
\r
+import java.io.IOException;\r
+\r
+import static org.junit.Assert.assertNotNull;\r
+import static org.junit.Assert.assertEquals;\r
+\r
/**\r
* Test DruidSupervisorGenerator\r
- * @author Guobiao Mo\r
*\r
+ * @author Guobiao Mo\r
*/\r
\r
@RunWith(SpringJUnit4ClassRunner.class)\r
\r
public class DruidSupervisorGeneratorTest {\r
\r
- @Autowired\r
- private ApplicationConfiguration config;\r
+ @Autowired\r
+ private ApplicationConfiguration config;\r
\r
@Test\r
- public void testConstructor() {\r
- DruidSupervisorGenerator gen = new DruidSupervisorGenerator();\r
- VelocityContext context= gen.getContext();\r
-\r
- assertNotNull(context);\r
- assertNotNull(gen.getDimensions() );\r
- assertNotNull(gen.getTemplate() );\r
- \r
- String host = (String) context.get("host"); \r
- assertEquals(host, config.getDmaapKafkaHostPort()); \r
- }\r
+ public void testConstructor() throws IOException {\r
+ DruidSupervisorGenerator gen = new DruidSupervisorGenerator();\r
+ VelocityContext context = gen.getContext();\r
+\r
+ assertNotNull(context);\r
+ assertNotNull(gen.getDimensions());\r
+ assertNotNull(gen.getTemplate());\r
+\r
+ String host = (String) context.get("host");\r
+ assertEquals(host, config.getDmaapKafkaHostPort());\r
+\r
+ String[] strArray2 = {"test1", "test2", "test3"};\r
+\r
+ DruidSupervisorGenerator.main(strArray2);\r
+ }\r
}\r