summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/nbi/apis/serviceorder/MultiClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/nbi/apis/serviceorder/MultiClient.java')
-rw-r--r--src/main/java/org/onap/nbi/apis/serviceorder/MultiClient.java196
1 files changed, 196 insertions, 0 deletions
diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/MultiClient.java b/src/main/java/org/onap/nbi/apis/serviceorder/MultiClient.java
new file mode 100644
index 0000000..223e408
--- /dev/null
+++ b/src/main/java/org/onap/nbi/apis/serviceorder/MultiClient.java
@@ -0,0 +1,196 @@
+package org.onap.nbi.apis.serviceorder;
+
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import org.onap.nbi.OnapComponentsUrlPaths;
+import org.onap.nbi.apis.serviceorder.model.consumer.SubscriberInfo;
+import org.onap.nbi.exceptions.BackendFunctionalException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+@Service
+public class MultiClient {
+
+ @Autowired
+ private RestTemplate restTemplate;
+
+ @Value("${aai.host}")
+ private String aaiHost;
+
+ @Value("${aai.header.authorization}")
+ private String aaiHeaderAuthorization;
+
+ @Value("${aai.api.id}")
+ private String aaiApiId;
+
+ @Value("${onap.lcpCloudRegionId}")
+ private String lcpCloudRegionId;
+
+ @Value("${onap.tenantId}")
+ private String tenantId;
+
+ @Value("${onap.cloudOwner}")
+ private String cloudOwner;
+
+ @Autowired
+ private ServiceCatalogUrl serviceCatalogUrl;
+
+ @Autowired
+ private ServiceInventoryUrl serviceInventoryUrl;
+
+
+ private static final String HEADER_AUTHORIZATION = "Authorization";
+ private static final String X_FROM_APP_ID = "X-FromAppId";
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(MultiClient.class);
+
+ public ResponseEntity<Object> getServiceCatalog(String id) {
+ StringBuilder callURL = new StringBuilder().append(serviceCatalogUrl.getServiceCatalogUrl()).append(id);
+ ResponseEntity<Object> response = callApiGet(callURL.toString(), new HttpHeaders(), null);
+ return response;
+ }
+
+ public boolean doesServiceExistInServiceInventory(String id, String serviceName, String globalSubscriberId) {
+ StringBuilder callURL = new StringBuilder().append(serviceInventoryUrl.getServiceInventoryUrl()).append(id);
+ Map<String, String> param = new HashMap<>();
+ param.put("serviceSpecification.name", serviceName);
+ param.put("relatedParty.id", globalSubscriberId);
+
+ ResponseEntity<Object> response = callApiGet(callURL.toString(), new HttpHeaders(), param);
+ if (response == null || !response.getStatusCode().equals(HttpStatus.OK)) {
+ return false;
+ }
+ return true;
+ }
+
+
+ private HttpHeaders buildRequestHeaderForAAI() {
+ HttpHeaders httpHeaders = new HttpHeaders();
+ httpHeaders.add(HEADER_AUTHORIZATION, aaiHeaderAuthorization);
+ httpHeaders.add(X_FROM_APP_ID, aaiApiId);
+ httpHeaders.add("Accept", "application/json");
+ httpHeaders.add("Content-Type", "application/json");
+ return httpHeaders;
+ }
+
+
+ public boolean isTenantIdPresentInAAI() {
+ StringBuilder callURL = new StringBuilder().append(aaiHost).append(OnapComponentsUrlPaths.AAI_GET_TENANTS_PATH);
+ String callUrlFormated = callURL.toString().replace("$onap.lcpCloudRegionId", lcpCloudRegionId);
+ callUrlFormated = callUrlFormated.replace("$onap.cloudOwner", cloudOwner);
+
+ ResponseEntity<Object> response = callApiGet(callUrlFormated, buildRequestHeaderForAAI(), null);
+ if (response != null) {
+ LinkedHashMap body = (LinkedHashMap) response.getBody();
+ List<LinkedHashMap> tenants = (List<LinkedHashMap>) body.get("tenant");
+ for (LinkedHashMap tenant : tenants) {
+ if (tenantId.equalsIgnoreCase((String) tenant.get("tenant-id"))) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public boolean isCustomerPresentInAAI(String customerId) {
+ StringBuilder callURL = new StringBuilder().append(aaiHost).append(OnapComponentsUrlPaths.AAI_GET_CUSTOMER_PATH)
+ .append(customerId);
+ ResponseEntity<Object> response = callApiGet(callURL.toString(), buildRequestHeaderForAAI(), null);
+ if (response != null && response.getStatusCode().equals(HttpStatus.OK)) {
+ return true;
+ }
+ return false;
+ }
+
+
+ public void putCustomer(SubscriberInfo subscriberInfo) {
+ Map<String, String> param = new HashMap<>();
+ param.put("global-customer-id", subscriberInfo.getGlobalSubscriberId());
+ param.put("subscriber-name", subscriberInfo.getSubscriberName());
+ param.put("subscriber-type", "BSS");
+ String callURL =
+ aaiHost + OnapComponentsUrlPaths.AAI_GET_CUSTOMER_PATH + subscriberInfo.getGlobalSubscriberId();
+
+ putRequest(param, callURL, buildRequestHeaderForAAI());
+ }
+
+
+ public LinkedHashMap getServicesInAaiForCustomer(String customerId) {
+ StringBuilder callURL =
+ new StringBuilder().append(aaiHost).append(OnapComponentsUrlPaths.AAI_GET_SERVICES_FOR_CUSTOMER_PATH);
+ String callUrlFormated = callURL.toString().replace("$customerId", customerId);
+
+ ResponseEntity<Object> response = callApiGet(callUrlFormated, buildRequestHeaderForAAI(), null);
+ if (response != null && response.getStatusCode().equals(HttpStatus.OK)) {
+ return (LinkedHashMap) response.getBody();
+ }
+ return null;
+ }
+
+ public void putServiceType(String globalSubscriberId, String serviceName) {
+ Map<String, String> param = new HashMap<>();
+ param.put("service-type", serviceName);
+ String callURL = aaiHost + OnapComponentsUrlPaths.AAI_PUT_SERVICE_FOR_CUSTOMER_PATH + serviceName;
+ String callUrlFormated = callURL.toString().replace("$customerId", globalSubscriberId);
+ putRequest(param, callUrlFormated, buildRequestHeaderForAAI());
+ }
+
+
+ private void putRequest(Map<String, String> param, String callUrl, HttpHeaders httpHeaders) {
+ try {
+ ResponseEntity<Object> response =
+ restTemplate.exchange(callUrl, HttpMethod.PUT, new HttpEntity<>(param, httpHeaders), Object.class);
+ LOGGER.info("response status : " + response.getStatusCodeValue());
+ if (!response.getStatusCode().equals(HttpStatus.CREATED)) {
+ LOGGER.warn("HTTP call on " + callUrl + " returns " + response.getStatusCodeValue() + ", "
+ + response.getBody().toString());
+ }
+ } catch (BackendFunctionalException e) {
+ LOGGER.error("error on calling " + callUrl + " ," + e);
+ }
+ }
+
+ private ResponseEntity<Object> callApiGet(String callURL, HttpHeaders httpHeaders, Map<String, String> param) {
+
+
+ try {
+
+ UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(callURL);
+ if (param != null) {
+ for (String paramName : param.keySet()) {
+ builder.queryParam(paramName, param.get(paramName));
+ }
+ }
+ String uriBuilder = builder.build().encode().toUriString();
+
+
+ ResponseEntity<Object> response =
+ restTemplate.exchange(uriBuilder, HttpMethod.GET, new HttpEntity<>(httpHeaders), Object.class);
+ LOGGER.debug("response body : " + response.getBody().toString());
+ LOGGER.info("response status : " + response.getStatusCodeValue());
+ if (!response.getStatusCode().equals(HttpStatus.OK)) {
+ LOGGER.warn("HTTP call on " + callURL + " returns " + response.getStatusCodeValue() + ", "
+ + response.getBody().toString());
+ }
+ return response;
+
+ } catch (BackendFunctionalException e) {
+ LOGGER.error("error on calling " + callURL + " ," + e);
+ return null;
+ }
+ }
+
+
+}