X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=holmes-actions%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fholmes%2Fcommon%2Faai%2FAaiQuery.java;h=f409c27c57b67a934c53ef74c2f21330331e04bf;hb=490fc3c1fafe50d5fb0e23db5cfd10730be96866;hp=71472ed581bffb607437b4462f4dfd7918fba466;hpb=4d3a7fb81c7adc956c56a9003b195a34ef1dcd59;p=holmes%2Fcommon.git diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/aai/AaiQuery.java b/holmes-actions/src/main/java/org/onap/holmes/common/aai/AaiQuery.java index 71472ed..f409c27 100644 --- a/holmes-actions/src/main/java/org/onap/holmes/common/aai/AaiQuery.java +++ b/holmes-actions/src/main/java/org/onap/holmes/common/aai/AaiQuery.java @@ -1,11 +1,11 @@ /** * Copyright 2017 ZTE Corporation. - * + *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at - * + *

* http://www.apache.org/licenses/LICENSE-2.0 - * + *

* Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under @@ -13,35 +13,32 @@ */ package org.onap.holmes.common.aai; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MultivaluedHashMap; -import org.glassfish.jersey.client.ClientConfig; +import lombok.extern.slf4j.Slf4j; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.jvnet.hk2.annotations.Service; import org.onap.holmes.common.aai.config.AaiConfig; import org.onap.holmes.common.aai.entity.VmEntity; import org.onap.holmes.common.aai.entity.VnfEntity; -import org.onap.holmes.common.config.MicroServiceConfig; import org.onap.holmes.common.exception.CorrelationException; +import org.onap.holmes.common.utils.HttpsUtils; +import javax.inject.Inject; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +@Slf4j public class AaiQuery { + @Inject private AaiResponseUtil aaiResponseUtil; public VnfEntity getAaiVnfData(String vnfId, String vnfName) throws CorrelationException { - Client client = ClientBuilder.newClient(new ClientConfig()); - WebTarget webTarget = client - .target(MicroServiceConfig.getMsbServerAddr() + AaiConfig.VNF_ADDR + "vnf-id=" - + vnfId); - String response = webTarget.request("application/json").headers(getHeaders()).get() - .readEntity(String.class); - if (response == null) { - webTarget = client - .target(MicroServiceConfig.getMsbServerAddr() + AaiConfig.VNF_ADDR + "vnf-name=" - + vnfName); - response = webTarget.request("application/json").headers(getHeaders()).get() - .readEntity(String.class); - } + String response = getVnfDataResponse(vnfId, vnfName); try { return aaiResponseUtil.convertJsonToVnfEntity(response); } catch (Exception e) { @@ -50,11 +47,8 @@ public class AaiQuery { } public VmEntity getAaiVmData(String vserverId, String vserverName) throws CorrelationException { - Client client = ClientBuilder.newClient(new ClientConfig()); - String response = client - .target(MicroServiceConfig.getMsbServerAddr() + getVmResourceLinks(client, - vserverId, vserverName)).request("application/json").headers(getHeaders()) - .get().readEntity(String.class); + String url = getVmUrl(vserverId, vserverName); + String response = getResponse(url); try { return aaiResponseUtil.convertJsonToVmEntity(response); } catch (Exception e) { @@ -62,30 +56,73 @@ public class AaiQuery { } } - private String getVmResourceLinks(Client client, String vserverId, String vserverName) throws CorrelationException { - WebTarget webTarget = client - .target(MicroServiceConfig.getMsbServerAddr() + AaiConfig.VM_ADDR - + "vserver-id:EQUALS:" + vserverId); - String response = webTarget.request("application/json").headers(getHeaders()).get() - .readEntity(String.class); - if (response == null) { - webTarget = client.target(MicroServiceConfig.getMsbServerAddr() + AaiConfig.VM_ADDR - + "vserver-name:EQUALS:" + vserverName); - response = webTarget.request("application/json").headers(getHeaders()).get() - .readEntity(String.class); + private String getVmUrl(String vserverId, String vserverName) throws CorrelationException { + String resourceLinkUrl = getVmResourceLinks(vserverId, vserverName); + return getBaseUrl("") + resourceLinkUrl; + } + + private String getVmResourceLinks(String vserverId, String vserverName) throws CorrelationException { + String response = getResourceLinksResponse(vserverId, vserverName); + List linkList = aaiResponseUtil.convertJsonToVmResourceLink(response); + if (!linkList.isEmpty()) { + return aaiResponseUtil.convertJsonToVmResourceLink(response).get(0).getResourceLink(); + } + return ""; + } + + private String getResourceLinksResponse(String vserverId, String vserverName) throws CorrelationException { + String url = getBaseUrl(AaiConfig.AaiConsts.AAI_VM_ADDR + "vserver-id:EQUALS:" + vserverId); + String response = getResponse(url); + if ("".equals(response) || "{}".equals(response)) { + url = getBaseUrl(AaiConfig.AaiConsts.AAI_VM_ADDR + "vserver-name:EQUALS:" + vserverName); + response = getResponse(url); } + return response; + } + + private String getVnfDataResponse(String vnfId, String vnfName) throws CorrelationException { + String url = getBaseUrl(AaiConfig.AaiConsts.AAI_VNF_ADDR + "/" + vnfId); + String response = getResponse(url); + if ("".equals(response) || "{}".equals(response)) { + url = getBaseUrl(AaiConfig.AaiConsts.AAI_VNF_ADDR + "?vnf-name=" + vnfName); + response = getResponse(url); + } + return response; + } + + private String getBaseUrl(String suffixUrl) { + return "https://aai.onap:8443" + suffixUrl; + } + + private String getResponse(String url) throws CorrelationException { + String response; + CloseableHttpClient httpClient = null; + HttpGet httpGet = new HttpGet(url); try { - return aaiResponseUtil.convertJsonToVmResourceLink(response).get(0).getResourceLink(); + httpClient = HttpsUtils.getHttpsClient(HttpsUtils.DEFUALT_TIMEOUT); + HttpResponse httpResponse = HttpsUtils.get(httpGet, getHeaders(), httpClient); + response = HttpsUtils.extractResponseEntity(httpResponse); } catch (Exception e) { - throw new CorrelationException("Failed to get aai resource link", e); + throw new CorrelationException("Failed to get data from aai", e); + } finally { + httpGet.releaseConnection(); + if (httpClient != null) { + try { + httpClient.close(); + } catch (IOException e) { + log.warn("Failed to close http client!"); + } + } } + return response; } - private MultivaluedHashMap getHeaders() { - MultivaluedHashMap headers = new MultivaluedHashMap<>(); - headers.add("X-TransactionId", AaiConfig.X_TRANSACTION_ID); - headers.add("X-FromAppId", AaiConfig.X_FROMAPP_ID); - headers.add("Authorization", AaiConfig.getAuthenticationCredentials()); + private Map getHeaders() { + Map headers = new HashMap<>(); + headers.put("X-TransactionId", AaiConfig.X_TRANSACTION_ID); + headers.put("X-FromAppId", AaiConfig.X_FROMAPP_ID); + headers.put("Authorization", AaiConfig.getAuthenticationCredentials()); + headers.put("Accept", "application/json"); return headers; } }