diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/rest/MSORestClient.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/rest/MSORestClient.java | 69 |
1 files changed, 69 insertions, 0 deletions
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; + } + +} |