diff options
Diffstat (limited to 'sdc-distribution-client/src/main/java/org/onap/sdc/http/SdcConnectorClient.java')
-rw-r--r-- | sdc-distribution-client/src/main/java/org/onap/sdc/http/SdcConnectorClient.java | 222 |
1 files changed, 82 insertions, 140 deletions
diff --git a/sdc-distribution-client/src/main/java/org/onap/sdc/http/SdcConnectorClient.java b/sdc-distribution-client/src/main/java/org/onap/sdc/http/SdcConnectorClient.java index 7aac780..18aba95 100644 --- a/sdc-distribution-client/src/main/java/org/onap/sdc/http/SdcConnectorClient.java +++ b/sdc-distribution-client/src/main/java/org/onap/sdc/http/SdcConnectorClient.java @@ -21,6 +21,10 @@ package org.onap.sdc.http; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; +import fj.data.Either; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Type; @@ -30,7 +34,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.UUID; - import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpHeaders; @@ -38,33 +41,26 @@ import org.apache.http.HttpStatus; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; +import org.onap.sdc.api.consumer.IConfiguration; import org.onap.sdc.api.notification.IArtifactInfo; import org.onap.sdc.api.results.IDistributionClientResult; +import org.onap.sdc.impl.DistributionClientDownloadResultImpl; import org.onap.sdc.impl.DistributionClientResultImpl; import org.onap.sdc.utils.DistributionActionResultEnum; -import org.onap.sdc.api.asdc.RegistrationRequest; -import org.onap.sdc.api.consumer.IConfiguration; -import org.onap.sdc.impl.DistributionClientDownloadResultImpl; import org.onap.sdc.utils.DistributionClientConstants; import org.onap.sdc.utils.Pair; +import org.onap.sdc.utils.kafka.KafkaDataResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.att.nsa.apiClient.credentials.ApiCredential; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; - -import fj.data.Either; - public class SdcConnectorClient { private static final Logger log = LoggerFactory.getLogger(SdcConnectorClient.class.getName()); static final String CONTENT_DISPOSITION_HEADER = "Content-Disposition"; private final IConfiguration configuration; - private final HttpAsdcClient httpClient; + private final HttpSdcClient httpClient; - public SdcConnectorClient(IConfiguration configuration, HttpAsdcClient httpClient) { + public SdcConnectorClient(IConfiguration configuration, HttpSdcClient httpClient) { Objects.requireNonNull(configuration); Objects.requireNonNull(httpClient); this.configuration = configuration; @@ -76,23 +72,37 @@ public class SdcConnectorClient { } public Either<List<String>, IDistributionClientResult> getValidArtifactTypesList() { - Pair<HttpAsdcResponse, CloseableHttpResponse> getServersResponsePair = performAsdcServerRequest(); - HttpAsdcResponse getArtifactTypeResponse = getServersResponsePair.getFirst(); + Pair<HttpSdcResponse, CloseableHttpResponse> getServersResponsePair = performSdcServerRequest(SdcUrls.GET_VALID_ARTIFACT_TYPES); + HttpSdcResponse getArtifactTypeResponse = getServersResponsePair.getFirst(); Either<List<String>, IDistributionClientResult> response; if (getArtifactTypeResponse.getStatus() == HttpStatus.SC_OK) { response = parseGetValidArtifactTypesResponse(getArtifactTypeResponse); } else { - IDistributionClientResult asdcError = handleAsdcError(getArtifactTypeResponse); - response = Either.right(asdcError); + IDistributionClientResult sdcError = handleSdcError(getArtifactTypeResponse); + response = Either.right(sdcError); } - handeAsdcConnectionClose(getServersResponsePair); + handeSdcConnectionClose(getServersResponsePair); return response; } - private void handeAsdcConnectionClose(Pair<HttpAsdcResponse, CloseableHttpResponse> getServersResponsePair) { + public Either<KafkaDataResponse, IDistributionClientResult> getKafkaDistData() { + Pair<HttpSdcResponse, CloseableHttpResponse> getServersResponsePair = performSdcServerRequest(SdcUrls.GET_KAFKA_DIST_DATA); + HttpSdcResponse getKafkaDistDataResponse = getServersResponsePair.getFirst(); + Either<KafkaDataResponse, IDistributionClientResult> response; + if (getKafkaDistDataResponse.getStatus() == HttpStatus.SC_OK) { + response = parseGetKafkaDistDataResponse(getKafkaDistDataResponse); + } else { + IDistributionClientResult sdcError = handleSdcError(getKafkaDistDataResponse); + response = Either.right(sdcError); + } + handeSdcConnectionClose(getServersResponsePair); + return response; + } + + private void handeSdcConnectionClose(Pair<HttpSdcResponse, CloseableHttpResponse> getServersResponsePair) { if (getServersResponsePair.getSecond() != null) { try { getServersResponsePair.getSecond().close(); @@ -104,79 +114,17 @@ public class SdcConnectorClient { } } - private Pair<HttpAsdcResponse, CloseableHttpResponse> performAsdcServerRequest() { + private Pair<HttpSdcResponse, CloseableHttpResponse> performSdcServerRequest(String sdcUrl) { String requestId = generateRequestId(); Map<String, String> requestHeaders = addHeadersToHttpRequest(requestId); - log.debug("about to perform getServerList. requestId= {} url= {}", requestId, AsdcUrls.GET_VALID_ARTIFACT_TYPES); - return httpClient.getRequest(AsdcUrls.GET_VALID_ARTIFACT_TYPES, requestHeaders, false); - } - - public Either<TopicRegistrationResponse, DistributionClientResultImpl> registerAsdcTopics(ApiCredential credential) { - - Either<TopicRegistrationResponse, DistributionClientResultImpl> response; - - String requestId = generateRequestId(); - Map<String, String> requestHeaders = addHeadersToHttpRequest(requestId); - - RegistrationRequest registrationRequest = new RegistrationRequest(credential.getApiKey(), configuration.getEnvironmentName(), configuration.isConsumeProduceStatusTopic(), configuration.getMsgBusAddress()); - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - String jsonRequest = gson.toJson(registrationRequest); - StringEntity body = new StringEntity(jsonRequest, ContentType.APPLICATION_JSON); - - log.debug("about to perform registerAsdcTopics. requestId= {} url= {}", requestId, AsdcUrls.POST_FOR_TOPIC_REGISTRATION); - Pair<HttpAsdcResponse, CloseableHttpResponse> registerResponsePair = httpClient.postRequest(AsdcUrls.POST_FOR_TOPIC_REGISTRATION, body, requestHeaders, false); - HttpAsdcResponse registerResponse = registerResponsePair.getFirst(); - int status = registerResponse.getStatus(); - - if (status == HttpStatus.SC_OK) { - response = parseRegistrationResponse(registerResponse); - - } else { - DistributionClientResultImpl asdcError = handleAsdcError(registerResponse); - return Either.right(asdcError); - } - handeAsdcConnectionClose(registerResponsePair); - - log.debug("registerAsdcTopics response= {}. requestId= {} url= {}", status, requestId, AsdcUrls.POST_FOR_TOPIC_REGISTRATION); - return response; - + log.debug("about to perform get on SDC. requestId= {} url= {}", requestId, sdcUrl); + return httpClient.getRequest(sdcUrl, requestHeaders, false); } private String generateRequestId() { return UUID.randomUUID().toString(); } - public IDistributionClientResult unregisterTopics(ApiCredential credential) { - - DistributionClientResultImpl response; - - String requestId = generateRequestId(); - Map<String, String> requestHeaders = addHeadersToHttpRequest(requestId); - - RegistrationRequest registrationRequest = new RegistrationRequest(credential.getApiKey(), configuration.getEnvironmentName(), configuration.isConsumeProduceStatusTopic(), configuration.getMsgBusAddress()); - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - String jsonRequest = gson.toJson(registrationRequest); - StringEntity body = new StringEntity(jsonRequest, ContentType.APPLICATION_JSON); - - log.debug("about to perform unregisterTopics. requestId= {} url= {}", requestId, AsdcUrls.POST_FOR_UNREGISTER); - Pair<HttpAsdcResponse, CloseableHttpResponse> unRegisterResponsePair = httpClient.postRequest(AsdcUrls.POST_FOR_UNREGISTER, body, requestHeaders, false); - HttpAsdcResponse unRegisterResponse = unRegisterResponsePair.getFirst(); - int status = unRegisterResponse.getStatus(); - if (status == HttpStatus.SC_NO_CONTENT || status == HttpStatus.SC_OK) { - response = new DistributionClientResultImpl(DistributionActionResultEnum.SUCCESS, "unregistration successful"); - - } else { - response = handleAsdcError(unRegisterResponse); - } - - handeAsdcConnectionClose(unRegisterResponsePair); - - log.debug("unregisterTopics response = {}. requestId= {} url= {}", status, requestId, AsdcUrls.POST_FOR_UNREGISTER); - - return response; - - } - public DistributionClientDownloadResultImpl downloadArtifact(IArtifactInfo artifactInfo) { DistributionClientDownloadResultImpl response; @@ -186,23 +134,23 @@ public class SdcConnectorClient { requestHeaders.put(DistributionClientConstants.HEADER_INSTANCE_ID, configuration.getConsumerID()); requestHeaders.put(HttpHeaders.ACCEPT, ContentType.APPLICATION_OCTET_STREAM.toString()); String requestUrl = artifactInfo.getArtifactURL(); - Pair<HttpAsdcResponse, CloseableHttpResponse> downloadPair = httpClient.getRequest(requestUrl, requestHeaders, false); - HttpAsdcResponse downloadResponse = downloadPair.getFirst(); + Pair<HttpSdcResponse, CloseableHttpResponse> downloadPair = httpClient.getRequest(requestUrl, requestHeaders, false); + HttpSdcResponse downloadResponse = downloadPair.getFirst(); int status = downloadResponse.getStatus(); if (status == HttpStatus.SC_OK) { response = parseDownloadArtifactResponse(artifactInfo, downloadResponse); } else { - response = handleAsdcDownloadArtifactError(downloadResponse); + response = handleSdcDownloadArtifactError(downloadResponse); } - handeAsdcConnectionClose(downloadPair); + handeSdcConnectionClose(downloadPair); return response; } /* **************************** private methods ********************************************/ - private Either<List<String>, IDistributionClientResult> parseGetValidArtifactTypesResponse(HttpAsdcResponse getArtifactTypesResponse) { + private Either<List<String>, IDistributionClientResult> parseGetValidArtifactTypesResponse(HttpSdcResponse getArtifactTypesResponse) { Either<List<String>, IDistributionClientResult> result; try { String jsonMessage = IOUtils.toString(getArtifactTypesResponse.getMessage().getContent()); @@ -219,39 +167,33 @@ public class SdcConnectorClient { return result; } - private Either<List<String>, IDistributionClientResult> handleParsingError(Exception e) { - Either<List<String>, IDistributionClientResult> result; - log.error("failed to parse response from ASDC. error: ", e); - IDistributionClientResult response = new DistributionClientResultImpl(DistributionActionResultEnum.GENERAL_ERROR, "failed to parse response from ASDC"); - result = Either.right(response); - return result; - } - - Either<TopicRegistrationResponse, DistributionClientResultImpl> parseRegistrationResponse(HttpAsdcResponse registerResponse) { - - String jsonMessage; + private Either<KafkaDataResponse, IDistributionClientResult> parseGetKafkaDistDataResponse(HttpSdcResponse getKafkaDistDataResponse) { + Either<KafkaDataResponse, IDistributionClientResult> result; try { - jsonMessage = IOUtils.toString(registerResponse.getMessage().getContent()); - + String jsonMessage = IOUtils.toString(getKafkaDistDataResponse.getMessage().getContent()); Gson gson = new GsonBuilder().create(); - TopicRegistrationResponse registrationResponse = gson.fromJson(jsonMessage, TopicRegistrationResponse.class); - - if (registrationResponse.getDistrNotificationTopicName() == null) { - DistributionClientResultImpl response = new DistributionClientResultImpl(DistributionActionResultEnum.FAIL, "failed to receive notification topic from ASDC"); - return Either.right(response); - } - - if (registrationResponse.getDistrStatusTopicName() == null) { - DistributionClientResultImpl response = new DistributionClientResultImpl(DistributionActionResultEnum.FAIL, "failed to receive status topic from ASDC"); - return Either.right(response); - } - return Either.left(registrationResponse); - + KafkaDataResponse kafkaData = gson.fromJson(jsonMessage, KafkaDataResponse.class); + result = Either.left(kafkaData); } catch (UnsupportedOperationException | IOException e) { - log.error("failed to parse response from ASDC. error: ", e); - DistributionClientResultImpl response = new DistributionClientResultImpl(DistributionActionResultEnum.GENERAL_ERROR, "failed to parse response from ASDC"); - return Either.right(response); + result = handleKafkaParsingError(e); } + return result; + } + + private Either<KafkaDataResponse, IDistributionClientResult> handleKafkaParsingError(Exception e) { + Either<KafkaDataResponse, IDistributionClientResult> result; + log.error("failed to parse kafka data response from SDC. error: ", e); + IDistributionClientResult response = new DistributionClientResultImpl(DistributionActionResultEnum.GENERAL_ERROR, "failed to parse kafka data response from SDC"); + result = Either.right(response); + return result; + } + + private Either<List<String>, IDistributionClientResult> handleParsingError(Exception e) { + Either<List<String>, IDistributionClientResult> result; + log.error("failed to parse response from SDC. error: ", e); + IDistributionClientResult response = new DistributionClientResultImpl(DistributionActionResultEnum.GENERAL_ERROR, "failed to parse response from SDC"); + result = Either.right(response); + return result; } protected Map<String, String> addHeadersToHttpRequest(String requestId) { @@ -263,29 +205,29 @@ public class SdcConnectorClient { return requestHeaders; } - private DistributionClientResultImpl handleAsdcError(HttpAsdcResponse registerResponse) { + private DistributionClientResultImpl handleSdcError(HttpSdcResponse registerResponse) { int status = registerResponse.getStatus(); - DistributionClientResultImpl errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.GENERAL_ERROR, "failed to send request to ASDC"); + DistributionClientResultImpl errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.GENERAL_ERROR, "failed to send request to SDC"); if (status == HttpStatus.SC_UNAUTHORIZED) { - errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.ASDC_AUTHENTICATION_FAILED, "authentication to ASDC failed for user " + configuration.getUser()); + errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.SDC_AUTHENTICATION_FAILED, "authentication to SDC failed for user " + configuration.getUser()); } else if (status == HttpStatus.SC_FORBIDDEN) { - errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.ASDC_AUTHORIZATION_FAILED, "authorization failure for user " + configuration.getUser()); + errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.SDC_AUTHORIZATION_FAILED, "authorization failure for user " + configuration.getUser()); } else if (status == HttpStatus.SC_BAD_REQUEST) { - errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.BAD_REQUEST, "ASDC call failed due to missing information"); + errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.BAD_REQUEST, "SDC call failed due to missing information"); } else if (status == HttpStatus.SC_NOT_FOUND) { - errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.ASDC_NOT_FOUND, "ASDC not found"); + errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.SDC_NOT_FOUND, "SDC not found"); } else if (status == HttpStatus.SC_INTERNAL_SERVER_ERROR) { - errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.ASDC_SERVER_PROBLEM, "ASDC server problem"); + errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.SDC_SERVER_PROBLEM, "SDC server problem"); } else if (status == HttpStatus.SC_BAD_GATEWAY) { - errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.ASDC_CONNECTION_FAILED, "ASDC server problem"); + errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.SDC_CONNECTION_FAILED, "SDC server problem"); } else if (status == HttpStatus.SC_GATEWAY_TIMEOUT) { - errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.ASDC_SERVER_TIMEOUT, "ASDC server problem"); + errorResponse = new DistributionClientResultImpl(DistributionActionResultEnum.SDC_SERVER_TIMEOUT, "SDC server problem"); } - log.error("status from ASDC is {}", registerResponse); + log.error("status from SDC is {}", registerResponse); log.error(errorResponse.toString()); try { String errorString = IOUtils.toString(registerResponse.getMessage().getContent()); - log.debug("error from ASDC is: {}", errorString); + log.debug("error from SDC is: {}", errorString); } catch (UnsupportedOperationException | IOException e) { log.error("During error handling another exception occurred: ", e); } @@ -293,27 +235,27 @@ public class SdcConnectorClient { } - private DistributionClientDownloadResultImpl handleAsdcDownloadArtifactError(HttpAsdcResponse registerResponse) { + private DistributionClientDownloadResultImpl handleSdcDownloadArtifactError(HttpSdcResponse registerResponse) { int status = registerResponse.getStatus(); - DistributionClientDownloadResultImpl errorResponse = new DistributionClientDownloadResultImpl(DistributionActionResultEnum.GENERAL_ERROR, "failed to send request to ASDC"); + DistributionClientDownloadResultImpl errorResponse = new DistributionClientDownloadResultImpl(DistributionActionResultEnum.GENERAL_ERROR, "failed to send request to SDC"); if (status == HttpStatus.SC_UNAUTHORIZED) { - errorResponse = new DistributionClientDownloadResultImpl(DistributionActionResultEnum.ASDC_AUTHENTICATION_FAILED, "authentication to ASDC failed for user " + configuration.getUser()); + errorResponse = new DistributionClientDownloadResultImpl(DistributionActionResultEnum.SDC_AUTHENTICATION_FAILED, "authentication to SDC failed for user " + configuration.getUser()); } else if (status == HttpStatus.SC_FORBIDDEN) { - errorResponse = new DistributionClientDownloadResultImpl(DistributionActionResultEnum.ASDC_AUTHORIZATION_FAILED, "authorization failure for user " + configuration.getUser()); + errorResponse = new DistributionClientDownloadResultImpl(DistributionActionResultEnum.SDC_AUTHORIZATION_FAILED, "authorization failure for user " + configuration.getUser()); } else if (status == HttpStatus.SC_BAD_REQUEST || status == HttpStatus.SC_NOT_FOUND) { errorResponse = new DistributionClientDownloadResultImpl(DistributionActionResultEnum.ARTIFACT_NOT_FOUND, "Specified artifact is not found"); // } else if (status == 404){ // errorResponse = new DistributionClientDownloadResultImpl( - // DistributionActionResultEnum.ASDC_NOT_FOUND, - // "ASDC not found"); + // DistributionActionResultEnum.SDC_NOT_FOUND, + // "SDC not found"); } else if (status == HttpStatus.SC_INTERNAL_SERVER_ERROR) { - errorResponse = new DistributionClientDownloadResultImpl(DistributionActionResultEnum.ASDC_SERVER_PROBLEM, "ASDC server problem"); + errorResponse = new DistributionClientDownloadResultImpl(DistributionActionResultEnum.SDC_SERVER_PROBLEM, "SDC server problem"); } - log.error("status from ASDC is {}", registerResponse); + log.error("status from SDC is {}", registerResponse); log.error(errorResponse.toString()); try { String errorString = IOUtils.toString(registerResponse.getMessage().getContent()); - log.debug("error from ASDC is: {}", errorString); + log.debug("error from SDC is: {}", errorString); } catch (UnsupportedOperationException | IOException e) { log.error("During error handling another exception occurred: ", e); } @@ -321,7 +263,7 @@ public class SdcConnectorClient { } - private DistributionClientDownloadResultImpl parseDownloadArtifactResponse(IArtifactInfo artifactInfo, HttpAsdcResponse getServersResponse) { + private DistributionClientDownloadResultImpl parseDownloadArtifactResponse(IArtifactInfo artifactInfo, HttpSdcResponse getServersResponse) { HttpEntity entity = getServersResponse.getMessage(); InputStream is; try { @@ -333,7 +275,7 @@ public class SdcConnectorClient { byte[] payload = IOUtils.toByteArray(is); if (artifactInfo.getArtifactChecksum() == null || artifactInfo.getArtifactChecksum().isEmpty()) { - return new DistributionClientDownloadResultImpl(DistributionActionResultEnum.DATA_INTEGRITY_PROBLEM, "failed to get artifact from ASDC. Empty checksum"); + return new DistributionClientDownloadResultImpl(DistributionActionResultEnum.DATA_INTEGRITY_PROBLEM, "failed to get artifact from SDC. Empty checksum"); } return new DistributionClientDownloadResultImpl(DistributionActionResultEnum.SUCCESS, "success", artifactName, payload); |