summaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/rest
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/rest')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/rest/DistributionStatusRequest.java23
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/rest/MSORestClient.java69
2 files changed, 92 insertions, 0 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/rest/DistributionStatusRequest.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/rest/DistributionStatusRequest.java
new file mode 100644
index 0000000000..45727fb28f
--- /dev/null
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/rest/DistributionStatusRequest.java
@@ -0,0 +1,23 @@
+package org.openecomp.sdc.be.components.distribution.engine.rest;
+
+/**
+ * a class which represents an MSO distribution status rest request body
+ */
+public class DistributionStatusRequest {
+
+ private String status;
+ private String errorReason;
+
+ public DistributionStatusRequest(String status, String errorReason) {
+ this.status = status;
+ this.errorReason = errorReason;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public String getErrorReason() {
+ return errorReason;
+ }
+}
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/rest/MSORestClient.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/rest/MSORestClient.java
new file mode 100644
index 0000000000..76263f942d
--- /dev/null
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/rest/MSORestClient.java
@@ -0,0 +1,69 @@
+package org.openecomp.sdc.be.components.distribution.engine.rest;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.gson.Gson;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.eclipse.jetty.util.URIUtil;
+import org.openecomp.sdc.be.components.distribution.engine.DistributionStatusNotificationEnum;
+import org.openecomp.sdc.be.config.ConfigurationManager;
+import org.openecomp.sdc.common.http.client.api.*;
+import org.openecomp.sdc.common.http.config.BasicAuthorization;
+import org.openecomp.sdc.common.http.config.ExternalServiceConfig;
+import org.openecomp.sdc.common.http.config.HttpClientConfig;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.Properties;
+
+@Component
+public class MSORestClient {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(MSORestClient.class);
+ private static final Gson gson = new Gson();
+ @VisibleForTesting
+ static final String DISTRIBUTIONS_RESOURCE_CONFIG_PARAM = "distributions";
+
+ private ExternalServiceConfig serviceConfig = ConfigurationManager.getConfigurationManager().getDistributionEngineConfiguration().getMsoConfig();
+
+ public MSORestClient() {
+ HttpClientConfig httpClientConfig = serviceConfig.getHttpClientConfig();
+ int numOfRetries = httpClientConfig.getNumOfRetries();
+ if ( numOfRetries > 0 ) {
+ httpClientConfig.setRetryHandler(RetryHandlers.getDefault(numOfRetries));
+ }
+ }
+
+ public HttpResponse<String> notifyDistributionComplete(String distributionId, DistributionStatusNotificationEnum distributionStatusEnum, String errReason) {
+ try {
+ return doNotifyDistributionComplete(distributionId, distributionStatusEnum, errReason);
+ }
+ catch(HttpExecuteException e) {
+ LOGGER.debug("The request to mso failed with exception ", e);
+ return Responses.INTERNAL_SERVER_ERROR;
+ }
+ }
+
+ private HttpResponse<String> doNotifyDistributionComplete(String distributionId, DistributionStatusNotificationEnum distributionStatusEnum, String errReason) throws HttpExecuteException {
+ StringEntity entity = new StringEntity(gson.toJson(new DistributionStatusRequest(distributionStatusEnum.name(), errReason)), ContentType.APPLICATION_JSON);
+ HttpResponse<String> response = HttpRequest.patch(buildMsoDistributionUrl(distributionId), buildReqHeader(), entity, serviceConfig.getHttpClientConfig());
+ LOGGER.info("response from mso - status code: {}, status description: {}, response: {}, ", response.getStatusCode(), response.getDescription(), response.getResponse());
+ return response;
+ }
+
+ private Properties buildReqHeader() {
+ Properties properties = new Properties();
+ BasicAuthorization basicAuth = serviceConfig.getHttpClientConfig().getBasicAuthorization();
+ RestUtils.addBasicAuthHeader(properties, basicAuth.getUserName(), basicAuth.getPassword());
+ return properties;
+ }
+
+ private String buildMsoDistributionUrl(String distributionId) {
+ String msoBaseUrl = serviceConfig.getHttpRequestConfig().getServerRootUrl();
+ String distributionsPath = serviceConfig.getHttpRequestConfig().getResourceNamespaces().get(DISTRIBUTIONS_RESOURCE_CONFIG_PARAM);
+ String distributionsApiPath = distributionsPath + URIUtil.SLASH + distributionId;
+ return msoBaseUrl + distributionsApiPath;
+ }
+
+}