[SO] Create changes for SO-API and BPMN-INFRA to support CNF's through ASD
[so.git] / bpmn / so-bpmn-tasks / src / main / java / org / onap / so / bpmn / infrastructure / adapter / vnfm / tasks / VnfmAdapterServiceProviderImpl.java
index e8f4c08..94213bb 100644 (file)
 
 package org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks;
 
+import static org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks.VnfmAdapterCreateVnfTaskConfiguration.VNFM_HTTP_REST_SERVICE_PROVIDER_BEAN;
+import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfRequest;
+import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfResponse;
+import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.DeleteVnfResponse;
+import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.QueryJobResponse;
+import org.onap.so.rest.exceptions.HttpResouceNotFoundException;
 import org.onap.so.rest.exceptions.InvalidRestRequestException;
 import org.onap.so.rest.exceptions.RestProcessingException;
 import org.onap.so.rest.service.HttpRestServiceProvider;
-import org.onap.vnfmadapter.v1.model.CreateVnfRequest;
-import org.onap.vnfmadapter.v1.model.CreateVnfResponse;
-import org.onap.vnfmadapter.v1.model.DeleteVnfResponse;
-import org.onap.vnfmadapter.v1.model.QueryJobResponse;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
@@ -41,111 +44,114 @@ import com.google.common.base.Optional;
 @Service
 public class VnfmAdapterServiceProviderImpl implements VnfmAdapterServiceProvider {
 
-  private static final Logger LOGGER = LoggerFactory.getLogger(VnfmAdapterServiceProviderImpl.class);
-
-  private final VnfmAdapterUrlProvider urlProvider;
-  private final HttpRestServiceProvider httpServiceProvider;
-
-  @Autowired
-  public VnfmAdapterServiceProviderImpl(final VnfmAdapterUrlProvider urlProvider,
-      final HttpRestServiceProvider httpServiceProvider) {
-    this.urlProvider = urlProvider;
-    this.httpServiceProvider = httpServiceProvider;
-  }
-
-  @Override
-  public Optional<CreateVnfResponse> invokeCreateInstantiationRequest(final String vnfId,
-      final CreateVnfRequest request) {
-    try {
-      final String url = urlProvider.getCreateInstantiateUrl(vnfId);
-
-      final ResponseEntity<CreateVnfResponse> response =
-          httpServiceProvider.postHttpRequest(request, url, CreateVnfResponse.class);
-
-      final HttpStatus httpStatus = response.getStatusCode();
-      if (!(httpStatus.equals(HttpStatus.ACCEPTED)) && !(httpStatus.equals(HttpStatus.OK))) {
-        LOGGER.error("Unable to invoke HTTP POST using URL: {}, Response Code: {}", url, httpStatus.value());
-        return Optional.absent();
-      }
-
-      if (!response.hasBody()) {
-        LOGGER.error("Received response without body: {}", response);
-        return Optional.absent();
-      }
-
-      final CreateVnfResponse createVnfResponse = response.getBody();
-
-      if (createVnfResponse.getJobId() == null || createVnfResponse.getJobId().isEmpty()) {
-        LOGGER.error("Received invalid instantiation response: {}", response);
-        return Optional.absent();
-      }
-
-      return Optional.of(createVnfResponse);
-    } catch (final RestProcessingException | InvalidRestRequestException httpInvocationException) {
-      LOGGER.error("Unexpected error while processing create and instantiation request", httpInvocationException);
-      return Optional.absent();
+    private static final Logger LOGGER = LoggerFactory.getLogger(VnfmAdapterServiceProviderImpl.class);
+    public static final String RECEIVED_RESPONSE_WITHOUT_BODY = "Received response without body: {}";
+
+    private final VnfmAdapterUrlProvider urlProvider;
+    private final HttpRestServiceProvider httpServiceProvider;
+
+    @Autowired
+    public VnfmAdapterServiceProviderImpl(final VnfmAdapterUrlProvider urlProvider,
+            @Qualifier(VNFM_HTTP_REST_SERVICE_PROVIDER_BEAN) final HttpRestServiceProvider httpServiceProvider) {
+        this.urlProvider = urlProvider;
+        this.httpServiceProvider = httpServiceProvider;
     }
 
-  }
+    @Override
+    public Optional<CreateVnfResponse> invokeCreateInstantiationRequest(final String vnfId,
+            final CreateVnfRequest request) {
+        try {
+            final String url = urlProvider.getCreateInstantiateUrl(vnfId);
 
-  @Override
-  public Optional<DeleteVnfResponse> invokeDeleteRequest(final String vnfId) {
-    try {
-      final String url = urlProvider.getDeleteUrl(vnfId);
-      LOGGER.debug("Will send request to vnfm adapter using url: {}", url);
+            final ResponseEntity<CreateVnfResponse> response =
+                    httpServiceProvider.postHttpRequest(request, url, CreateVnfResponse.class);
 
-      final ResponseEntity<DeleteVnfResponse> response =
-          httpServiceProvider.deleteHttpRequest(url, DeleteVnfResponse.class);
+            final HttpStatus httpStatus = response.getStatusCode();
+            if (!(httpStatus.equals(HttpStatus.ACCEPTED)) && !(httpStatus.equals(HttpStatus.OK))) {
+                LOGGER.error("Unable to invoke HTTP POST using URL: {}, Response Code: {}", url, httpStatus.value());
+                return Optional.absent();
+            }
 
-      LOGGER.debug("Response received: ", response);
+            if (!response.hasBody()) {
+                LOGGER.error(RECEIVED_RESPONSE_WITHOUT_BODY, response);
+                return Optional.absent();
+            }
 
-      final HttpStatus httpStatus = response.getStatusCode();
+            final CreateVnfResponse createVnfResponse = response.getBody();
 
-      if (!(httpStatus.equals(HttpStatus.ACCEPTED)) && !(httpStatus.equals(HttpStatus.OK))) {
-        LOGGER.error("Unable to invoke HTTP DELETE using URL: {}, Response Code: {}", url, httpStatus.value());
-        return Optional.absent();
-      }
+            if (createVnfResponse.getJobId() == null || createVnfResponse.getJobId().isEmpty()) {
+                LOGGER.error("Received invalid instantiation response: {}", response);
+                return Optional.absent();
+            }
 
-      if (!response.hasBody()) {
-        LOGGER.error("Received response without body: {}", response);
-        return Optional.absent();
-      }
-      final DeleteVnfResponse deleteVnfResponse = response.getBody();
+            return Optional.of(createVnfResponse);
+        } catch (final RestProcessingException | InvalidRestRequestException
+                | HttpResouceNotFoundException httpInvocationException) {
+            LOGGER.error("Unexpected error while processing create and instantiation request", httpInvocationException);
+            return Optional.absent();
+        }
 
-      if (deleteVnfResponse.getJobId() == null || deleteVnfResponse.getJobId().isEmpty()) {
-        LOGGER.error("Received invalid delete response: {}", response);
-        return Optional.absent();
-      }
-      return Optional.of(deleteVnfResponse);
-    } catch (final RestProcessingException | InvalidRestRequestException httpInvocationException) {
-      LOGGER.error("Unexpected error while processing delete request", httpInvocationException);
-      return Optional.absent();
     }
-  }
-
-  @Override
-  public Optional<QueryJobResponse> getInstantiateOperationJobStatus(final String jobId) {
-    try {
-      final String url = urlProvider.getJobStatusUrl(jobId);
-
-      final ResponseEntity<QueryJobResponse> response =
-          httpServiceProvider.getHttpResponse(url, QueryJobResponse.class);
-
-      final HttpStatus httpStatus = response.getStatusCode();
-
-      if (!(httpStatus.equals(HttpStatus.ACCEPTED)) && !(httpStatus.equals(HttpStatus.OK))) {
-        LOGGER.error("Unable to invoke HTTP GET using URL: {}, Response Code: ", url, httpStatus.value());
-        return Optional.absent();
-      }
-
-      if (!response.hasBody()) {
-        LOGGER.error("Received response without body: {}", response);
-        return Optional.absent();
-      }
-      return Optional.of(response.getBody());
-    } catch (final RestProcessingException | InvalidRestRequestException httpInvocationException) {
-      LOGGER.error("Unexpected error while processing job request", httpInvocationException);
-      return Optional.absent();
+
+    @Override
+    public Optional<DeleteVnfResponse> invokeDeleteRequest(final String vnfId) {
+        try {
+            final String url = urlProvider.getDeleteUrl(vnfId);
+            LOGGER.debug("Will send request to vnfm adapter using url: {}", url);
+
+            final ResponseEntity<DeleteVnfResponse> response =
+                    httpServiceProvider.deleteHttpRequest(url, DeleteVnfResponse.class);
+
+            LOGGER.debug("Response received: ", response);
+
+            final HttpStatus httpStatus = response.getStatusCode();
+
+            if (!(httpStatus.equals(HttpStatus.ACCEPTED)) && !(httpStatus.equals(HttpStatus.OK))) {
+                LOGGER.error("Unable to invoke HTTP DELETE using URL: {}, Response Code: {}", url, httpStatus.value());
+                return Optional.absent();
+            }
+
+            if (!response.hasBody()) {
+                LOGGER.error(RECEIVED_RESPONSE_WITHOUT_BODY, response);
+                return Optional.absent();
+            }
+            final DeleteVnfResponse deleteVnfResponse = response.getBody();
+
+            if (deleteVnfResponse.getJobId() == null || deleteVnfResponse.getJobId().isEmpty()) {
+                LOGGER.error("Received invalid delete response: {}", response);
+                return Optional.absent();
+            }
+            return Optional.of(deleteVnfResponse);
+        } catch (final RestProcessingException | InvalidRestRequestException httpInvocationException) {
+            LOGGER.error("Unexpected error while processing delete request", httpInvocationException);
+            return Optional.absent();
+        }
+    }
+
+    @Override
+    public Optional<QueryJobResponse> getInstantiateOperationJobStatus(final String jobId) {
+        try {
+            final String url = urlProvider.getJobStatusUrl(jobId);
+
+            final ResponseEntity<QueryJobResponse> response =
+                    httpServiceProvider.getHttpResponse(url, QueryJobResponse.class);
+
+            final HttpStatus httpStatus = response.getStatusCode();
+
+            if (!(httpStatus.equals(HttpStatus.ACCEPTED)) && !(httpStatus.equals(HttpStatus.OK))) {
+                LOGGER.error("Unable to invoke HTTP GET using URL: {}, Response Code: ", url, httpStatus.value());
+                return Optional.absent();
+            }
+
+            if (!response.hasBody()) {
+                LOGGER.error(RECEIVED_RESPONSE_WITHOUT_BODY, response);
+                return Optional.absent();
+            }
+            return Optional.of(response.getBody());
+        } catch (final RestProcessingException | InvalidRestRequestException
+                | HttpResouceNotFoundException httpInvocationException) {
+            LOGGER.error("Unexpected error while processing job request", httpInvocationException);
+            throw httpInvocationException;
+        }
     }
-  }
 }