design modify 2 33/92433/1
authorZhangZihao <zhangzihao@chinamobile.com>
Thu, 1 Aug 2019 06:54:17 +0000 (14:54 +0800)
committerZhangZihao <zhangzihao@chinamobile.com>
Thu, 1 Aug 2019 06:54:36 +0000 (14:54 +0800)
Change-Id: I7c75460b30184bf2803f8a936a4252867300e898
Issue-ID: DCAEGEN2-1658
Signed-off-by: ZhangZihao <zhangzihao@chinamobile.com>
components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/config/ApplicationConfiguration.java
components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/service/DesignService.java
components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/util/HttpClientUtil.java
components/datalake-handler/feeder/src/main/resources/application.properties
components/datalake-handler/feeder/src/test/java/org/onap/datalake/feeder/util/HttpClientUtilTest.java

index 05d6e88..b93924c 100644 (file)
@@ -69,4 +69,8 @@ public class ApplicationConfiguration {
        //Kibana
        private String kibanaDashboardImportApi;
        private Integer kibanaPort;
+
+       //Elasticsearch
+       private String esTemplateMappingApi;
+       private Integer esPort;
 }
index 8312048..d0940ba 100755 (executable)
@@ -57,6 +57,8 @@ public class DesignService {
 \r
        private static String POST_FLAG;\r
 \r
+       private static String URL_FlAG;\r
+\r
        @Autowired\r
        private DesignRepository designRepository;\r
 \r
@@ -150,57 +152,44 @@ public class DesignService {
 \r
                switch (designTypeEnum) {\r
                case KIBANA_DB:\r
-                       resultMap = deployKibanaImport(design);\r
-                       if (!resultMap.isEmpty()) {\r
-                               Iterator<Map.Entry<Integer, Boolean>> it = resultMap.entrySet().iterator();\r
-                               while (it.hasNext()) {\r
-                                       Map.Entry<Integer, Boolean> entry = it.next();\r
-                                       if (entry.getValue()) {\r
-                                               design.setSubmitted(true);\r
-                                               designRepository.save(design);\r
-                                       }\r
-                               }\r
-                       }\r
+                       log.info("Deploy kibana dashboard");\r
+                       resultMap = deployKibanaDashboardImport(design);\r
+                       deploySave(resultMap, design);\r
+                       break;\r
                case ES_MAPPING:\r
-                       //FIXME\r
-                       //return postEsMappingTemplate(design, design.getTopicName().getId().toLowerCase());\r
+                       log.info("Deploy elasticsearch mapping template");\r
+                       resultMap = postEsMappingTemplate(design, design.getTopicName().getId().toLowerCase());\r
+                       deploySave(resultMap, design);\r
+                       break;\r
                default:\r
                        log.error("Not implemented {}", designTypeEnum);\r
+                       break;\r
                }\r
+               log.info("Response resultMap: " + resultMap);\r
                return resultMap;\r
        }\r
 \r
-       private Map<Integer, Boolean> deployKibanaImport(Design design) {\r
+       private Map<Integer, Boolean> deployKibanaDashboardImport(Design design) {\r
+               URL_FlAG = "Kibana";\r
                POST_FLAG = "KibanaDashboardImport";\r
                String requestBody = design.getBody();\r
                Set<Db> dbs =  design.getDbs();\r
-               Map<Integer, Boolean> deployMap = new HashMap<>();\r
+               Map<Integer, Boolean> deployKibanaMap = new HashMap<>();\r
 \r
                if (!dbs.isEmpty()) {\r
-                       Map<Integer, String> map = new HashMap<>();\r
-                       for (Db item : dbs) {\r
-                               if (item.isEnabled()) {\r
-                                       map.put(item.getId(), kibanaImportUrl(item.getHost(), item.getPort()));\r
-                               }\r
-                       }\r
+                       Map<Integer, String> map = urlMap(dbs, URL_FlAG);\r
+                       log.info("Deploy kibana dashboard url map: " + map);\r
                        if (!map.isEmpty()) {\r
                                Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();\r
                                while (it.hasNext()) {\r
                                        Map.Entry<Integer, String> entry = it.next();\r
-                                       deployMap.put(entry.getKey(), HttpClientUtil.sendPostKibana(entry.getValue(), requestBody, POST_FLAG));\r
+                                       deployKibanaMap.put(entry.getKey(), HttpClientUtil.sendHttpClientPost(entry.getValue(), requestBody, POST_FLAG, URL_FlAG));\r
                                }\r
                        }\r
-                       return deployMap;\r
+                       return deployKibanaMap;\r
                } else {\r
-                       return deployMap;\r
-               }\r
-       }\r
-\r
-       private String kibanaImportUrl(String host, Integer port) {\r
-               if (port == null) {\r
-                       port = applicationConfiguration.getKibanaPort();\r
+                       return deployKibanaMap;\r
                }\r
-               return "http://" + host + ":" + port + applicationConfiguration.getKibanaDashboardImportApi();\r
        }\r
 \r
        /**\r
@@ -210,16 +199,74 @@ public class DesignService {
         * @param templateName\r
         * @return flag\r
         */\r
-       public boolean postEsMappingTemplate(Design design, String templateName) {\r
+       public Map<Integer, Boolean> postEsMappingTemplate(Design design, String templateName) {\r
+               URL_FlAG = "Elasticsearch";\r
                POST_FLAG = "ElasticsearchMappingTemplate";\r
                String requestBody = design.getBody();\r
-\r
-               //FIXME\r
                Set<Db> dbs = design.getDbs();\r
-               //submit to each ES in dbs\r
+               Map<Integer, Boolean> deployEsMap = new HashMap<>();\r
 \r
-               //return HttpClientUtil.sendPostHttpClient("http://"+dbService.getElasticsearch().getHost()+":9200/_template/"+templateName, requestBody, POST_FLAG);\r
-               return false;\r
+               if (!dbs.isEmpty()) {\r
+                       Map<Integer, String> map = urlMap(dbs, URL_FlAG);\r
+                       log.info("Deploy elasticsearch url map: " + map);\r
+                       if (!map.isEmpty()) {\r
+                               Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();\r
+                               while (it.hasNext()) {\r
+                                       Map.Entry<Integer, String> entry = it.next();\r
+                                       deployEsMap.put(entry.getKey(), HttpClientUtil.sendHttpClientPost(entry.getValue()+templateName, requestBody, POST_FLAG, URL_FlAG));\r
+                               }\r
+                       }\r
+                       return deployEsMap;\r
+               } else {\r
+                       return deployEsMap;\r
+               }\r
+       }\r
+\r
+       private Map<Integer, String> urlMap (Set<Db> dbs, String flag) {\r
+               Map<Integer, String> map = new HashMap<>();\r
+               for (Db item : dbs) {\r
+                       if (item.isEnabled()) {\r
+                               map.put(item.getId(), httpRequestUrl(item.getHost(), item.getPort(), flag));\r
+                       }\r
+               }\r
+               return map;\r
+       }\r
+\r
+       private String httpRequestUrl(String host, Integer port, String urlFlag) {\r
+               String url = "";\r
+               switch (urlFlag) {\r
+                       case "Kibana":\r
+                               if (port == null) {\r
+                                       port = applicationConfiguration.getKibanaPort();\r
+                               }\r
+                               url = "http://" + host + ":" + port + applicationConfiguration.getKibanaDashboardImportApi();\r
+                               log.info("Kibana url: " + url);\r
+                               break;\r
+                       case "Elasticsearch":\r
+                               if (port == null) {\r
+                                       port = applicationConfiguration.getEsPort();\r
+                               }\r
+                               url = "http://" + host + ":" + port + applicationConfiguration.getEsTemplateMappingApi();\r
+                               log.info("Elasticsearch url: " + url);\r
+                               break;\r
+                       default:\r
+                               break;\r
+               }\r
+               return url;\r
+       }\r
+\r
+       private void deploySave(Map<Integer, Boolean> map, Design design) {\r
+               if (!map.isEmpty()) {\r
+                       Iterator<Map.Entry<Integer, Boolean>> it = map.entrySet().iterator();\r
+                       while (it.hasNext()) {\r
+                               Map.Entry<Integer, Boolean> entry = it.next();\r
+                               if (entry.getValue()) {\r
+                                       design.setSubmitted(true);\r
+                                       designRepository.save(design);\r
+                                       log.info("Status was modified");\r
+                               }\r
+                       }\r
+               }\r
        }\r
 \r
 }\r
index 3ef0648..64b643a 100644 (file)
@@ -44,6 +44,8 @@ public class HttpClientUtil {
 
     private static final Logger log = LoggerFactory.getLogger(HttpClientUtil.class);
 
+    private static final String KIBANA = "Kibana";
+
     private static final String KIBANA_DASHBOARD_IMPORT = "KibanaDashboardImport";
 
     private static final String ELASTICSEARCH_MAPPING_TEMPLATE = "ElasticsearchMappingTemplate";
@@ -52,11 +54,14 @@ public class HttpClientUtil {
         throw new IllegalStateException("Utility class");
     }
 
-    public static boolean sendPostKibana(String url, String json, String postFlag) {
+    public static boolean sendHttpClientPost(String url, String json, String postFlag, String urlFlag) {
         boolean flag = false;
         RestTemplate restTemplate = new RestTemplate();
         HttpHeaders headers = new HttpHeaders();
-        headers.add("kbn-xsrf","true");
+        if (urlFlag.equals(KIBANA)) {
+            log.info("urlFlag is Kibana, add header");
+            headers.add("kbn-xsrf","true");
+        }
         headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
         HttpEntity<String> request = new HttpEntity<>(json, headers);
         ResponseEntity<String> responseEntity = null;
@@ -78,7 +83,7 @@ public class HttpClientUtil {
                     break;
             }
         } catch (Exception e) {
-            log.debug(e.getMessage());
+            log.debug("Resquest failed: " + e.getMessage());
         }
         return flag;
     }
index aadd3e8..72fc1cc 100644 (file)
@@ -65,4 +65,9 @@ kibanaDashboardImportApi=/api/kibana/dashboards/import?exclude=index-pattern
 
 #####################KibanaPort
 kibanaPort=5601
+
+#####################Elasticsearch Template API
+esTemplateMappingApi=/_template/
+
+#####################Elasticsearch port
+esPort=9200
\ No newline at end of file
index 762b302..c73b8ea 100644 (file)
@@ -55,7 +55,7 @@ public class HttpClientUtilTest {
 //    }
 
     @Test
-    public void testSendPostKibana() {
+    public void testSendHttpClientPost() {
 
         String templateName = "unauthenticated.test";
         String testUrl = "http://localhost:9200/_template/"+templateName;
@@ -82,10 +82,11 @@ public class HttpClientUtilTest {
                 "\t}\n" +
                 "}";
         String testFlag = "ElasticsearchMappingTemplate";
+        String testUrlFlag = "Elasticsearch";
 //        when(restTemplate.postForEntity(testUrl, httpEntity, String.class)).thenReturn(responseEntity);
 //        when(responseEntity.getStatusCodeValue()).thenReturn(200);
 //        when(responseEntity.getBody()).thenReturn("{ \"acknowledged\": true }");
 
-        assertEquals(false, HttpClientUtil.sendPostKibana(testUrl, testJson, testFlag));
+        assertEquals(false, HttpClientUtil.sendHttpClientPost(testUrl, testJson, testFlag, testUrlFlag));
     }
 }
\ No newline at end of file