From bd7dd756b458fcb3dd14df0b98afca6a71abec2e Mon Sep 17 00:00:00 2001 From: ZhangZihao Date: Fri, 26 Jul 2019 11:33:06 +0800 Subject: deploy improve 1 Change-Id: I9ba21e0e0f8e6ab75d63e65457bc382aa02cff91 Issue-ID: DCAEGEN2-1658 Signed-off-by: ZhangZihao --- .../feeder/controller/DesignController.java | 33 ++++------- .../datalake/feeder/service/DesignService.java | 56 ++++++++++++++---- .../onap/datalake/feeder/util/HttpClientUtil.java | 69 +++++++++++----------- 3 files changed, 88 insertions(+), 70 deletions(-) (limited to 'components/datalake-handler/feeder/src/main/java/org') diff --git a/components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/controller/DesignController.java b/components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/controller/DesignController.java index 0cac567c..ebe60502 100644 --- a/components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/controller/DesignController.java +++ b/components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/controller/DesignController.java @@ -35,7 +35,10 @@ import org.springframework.web.bind.annotation.*; import io.swagger.annotations.ApiOperation; import java.io.IOException; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.Optional; import javax.servlet.http.HttpServletResponse; @@ -137,30 +140,16 @@ public class DesignController { @PostMapping("/deploy/{id}") @ResponseBody @ApiOperation(value="Design deploy") - public void deployDesign(@PathVariable Integer id, HttpServletResponse response) throws IOException { + public Map deployDesign(@PathVariable Integer id, HttpServletResponse response) throws IOException { - Design design = null; - try { - design = designRepository.findById(id).get(); - boolean flag; - try { - flag = designService.deploy(design); - if (flag) { - design.setSubmitted(true); - designRepository.save(design); - response.setStatus(204); - } else { - sendError(response, 400, "DeployDesign failed, id: "+id); - } - } catch (Exception e) { - log.debug("The request failed", e.getMessage()); - sendError(response, 400, "The request failed : "+e.getMessage()); - } - } catch (Exception e) { - log.debug("Design is null", e.getMessage()); - sendError(response, 400, "Design not found, id: "+id); + Optional designOptional = designRepository.findById(id); + if (designOptional.isPresent()) { + Design design = designOptional.get(); + return designService.deploy(design); + } else { + sendError(response, 400, "Design is null"); + return new HashMap<>(); } - } diff --git a/components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/service/DesignService.java b/components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/service/DesignService.java index 4ba4f8f7..83120482 100755 --- a/components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/service/DesignService.java +++ b/components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/service/DesignService.java @@ -25,6 +25,9 @@ import java.util.List; import java.util.Optional; import java.util.Set; import java.util.HashSet; +import java.util.Map; +import java.util.HashMap; +import java.util.Iterator; import org.onap.datalake.feeder.config.ApplicationConfiguration; import org.onap.datalake.feeder.domain.*; @@ -52,7 +55,7 @@ public class DesignService { private final Logger log = LoggerFactory.getLogger(this.getClass()); - static String POST_FLAG; + private static String POST_FLAG; @Autowired private DesignRepository designRepository; @@ -131,7 +134,7 @@ public class DesignService { List designList = null; List designConfigList = new ArrayList<>(); designList = (List) designRepository.findAll(); - if (designList != null && designList.size() > 0) { + if (!designList.isEmpty()) { log.info("DesignList is not null"); for (Design design : designList) { designConfigList.add(design.getDesignConfig()); @@ -140,28 +143,57 @@ public class DesignService { return designConfigList; } - public boolean deploy(Design design) { + public Map deploy(Design design) { + Map resultMap = null; DesignType designType = design.getDesignType(); DesignTypeEnum designTypeEnum = DesignTypeEnum.valueOf(designType.getId()); switch (designTypeEnum) { case KIBANA_DB: - return deployKibanaImport(design); + resultMap = deployKibanaImport(design); + if (!resultMap.isEmpty()) { + Iterator> it = resultMap.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + if (entry.getValue()) { + design.setSubmitted(true); + designRepository.save(design); + } + } + } case ES_MAPPING: - return postEsMappingTemplate(design, design.getTopicName().getId().toLowerCase()); + //FIXME + //return postEsMappingTemplate(design, design.getTopicName().getId().toLowerCase()); default: log.error("Not implemented {}", designTypeEnum); - return false; } + return resultMap; } - private boolean deployKibanaImport(Design design) throws RuntimeException { + private Map deployKibanaImport(Design design) { POST_FLAG = "KibanaDashboardImport"; String requestBody = design.getBody(); - String url = ""; - //TODO - return HttpClientUtil.sendPostHttpClient(url, requestBody, POST_FLAG); - + Set dbs = design.getDbs(); + Map deployMap = new HashMap<>(); + + if (!dbs.isEmpty()) { + Map map = new HashMap<>(); + for (Db item : dbs) { + if (item.isEnabled()) { + map.put(item.getId(), kibanaImportUrl(item.getHost(), item.getPort())); + } + } + if (!map.isEmpty()) { + Iterator> it = map.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = it.next(); + deployMap.put(entry.getKey(), HttpClientUtil.sendPostKibana(entry.getValue(), requestBody, POST_FLAG)); + } + } + return deployMap; + } else { + return deployMap; + } } private String kibanaImportUrl(String host, Integer port) { @@ -178,7 +210,7 @@ public class DesignService { * @param templateName * @return flag */ - public boolean postEsMappingTemplate(Design design, String templateName) throws RuntimeException { + public boolean postEsMappingTemplate(Design design, String templateName) { POST_FLAG = "ElasticsearchMappingTemplate"; String requestBody = design.getBody(); diff --git a/components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/util/HttpClientUtil.java b/components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/util/HttpClientUtil.java index 459e8ef9..3ef0648d 100644 --- a/components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/util/HttpClientUtil.java +++ b/components/datalake-handler/feeder/src/main/java/org/onap/datalake/feeder/util/HttpClientUtil.java @@ -21,14 +21,14 @@ package org.onap.datalake.feeder.util; import com.google.gson.Gson; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.HttpStatus; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestClientException; +import org.springframework.web.client.RestTemplate; import java.util.HashMap; import java.util.List; @@ -42,33 +42,31 @@ import java.util.Map; */ public class HttpClientUtil { - private final static String KIBANA_DASHBOARD_IMPORT = "KibanaDashboardImport"; + private static final Logger log = LoggerFactory.getLogger(HttpClientUtil.class); - private final static String ELASTICSEARCH_MAPPING_TEMPLATE = "ElasticsearchMappingTemplate"; + private static final String KIBANA_DASHBOARD_IMPORT = "KibanaDashboardImport"; - public static boolean sendPostHttpClient(String url, String json, String postFlag){ + private static final String ELASTICSEARCH_MAPPING_TEMPLATE = "ElasticsearchMappingTemplate"; - boolean flag = true; - HttpClient client = new DefaultHttpClient(); - HttpPost post = new HttpPost(url); - String response = null; + private HttpClientUtil() { + throw new IllegalStateException("Utility class"); + } + + public static boolean sendPostKibana(String url, String json, String postFlag) { + boolean flag = false; + RestTemplate restTemplate = new RestTemplate(); + HttpHeaders headers = new HttpHeaders(); + headers.add("kbn-xsrf","true"); + headers.setContentType(MediaType.APPLICATION_JSON_UTF8); + HttpEntity request = new HttpEntity<>(json, headers); + ResponseEntity responseEntity = null; try { - StringEntity s = new StringEntity(json); - s.setContentEncoding("UTF-8"); - s.setContentType("application/json"); - post.setEntity(s); - post.setHeader("kbn-xsrf","true"); - post.setHeader("Accept", "*/*"); - post.setHeader("Connection", "Keep-Alive"); - HttpResponse res = client.execute(post); - if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ - HttpEntity entity = res.getEntity(); - String result = EntityUtils.toString(res.getEntity()); - response = result; - } + responseEntity = restTemplate.postForEntity(url, request, String.class); + if (responseEntity.getStatusCodeValue() != 200) + throw new RestClientException("Resquest failed"); Gson gson = new Gson(); Map map = new HashMap<>(); - map = gson.fromJson(response, map.getClass()); + map = gson.fromJson(responseEntity.getBody(), map.getClass()); switch (postFlag) { case KIBANA_DASHBOARD_IMPORT: flag = flagOfKibanaDashboardImport(map); @@ -76,21 +74,22 @@ public class HttpClientUtil { case ELASTICSEARCH_MAPPING_TEMPLATE : flag = flagOfPostEsMappingTemplate(map); break; + default: + break; } } catch (Exception e) { - throw new RuntimeException(e); + log.debug(e.getMessage()); } return flag; } - private static boolean flagOfKibanaDashboardImport(Map map) { boolean flag = true; List objectsList = (List) map.get("objects"); - if (objectsList != null && objectsList.size() > 0) { - Map map2 = new HashMap<>(); + if (!objectsList.isEmpty()) { + Map map2 = null; for (int i = 0; i < objectsList.size(); i++){ map2 = (Map)objectsList.get(i); for(String key : map2.keySet()){ @@ -103,12 +102,11 @@ public class HttpClientUtil { return flag; } - private static boolean flagOfPostEsMappingTemplate(Map map) { boolean flag = true; for(String key : map.keySet()){ - if ("acknowledged".equals(key) && (boolean) map.get("acknowledged") == true) { + if ("acknowledged".equals(key) && (boolean) map.get("acknowledged")) { break; } else { flag = false; @@ -116,5 +114,4 @@ public class HttpClientUtil { } return flag; } - } -- cgit 1.2.3-korg