aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java/org/onap/vid/asdc
diff options
context:
space:
mode:
authorEylon Malin <eylon.malin@intl.att.com>2019-09-01 15:02:06 +0300
committerEylon Malin <eylon.malin@intl.att.com>2019-09-01 15:02:06 +0300
commite6c30425575cd76a3955b03ab389150ed74fbb1d (patch)
treee1a668efc3bbd6b5da72ebd8b9825d5e1a96d74c /vid-app-common/src/main/java/org/onap/vid/asdc
parent406cc2fe614d089c2f7834f9a22d6dfa47b4fa16 (diff)
handle non OK response from SDC while getting model
Issue-ID: VID-378 Signed-off-by: Eylon Malin <eylon.malin@intl.att.com> Change-Id: Idc6e587abb24fbec65ed159db7008e50abee2581
Diffstat (limited to 'vid-app-common/src/main/java/org/onap/vid/asdc')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/asdc/rest/SdcRestClient.java39
1 files changed, 32 insertions, 7 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/asdc/rest/SdcRestClient.java b/vid-app-common/src/main/java/org/onap/vid/asdc/rest/SdcRestClient.java
index decf446d6..1de9715ee 100644
--- a/vid-app-common/src/main/java/org/onap/vid/asdc/rest/SdcRestClient.java
+++ b/vid-app-common/src/main/java/org/onap/vid/asdc/rest/SdcRestClient.java
@@ -28,6 +28,7 @@ import static org.onap.vid.asdc.AsdcClient.URIS.TOSCA_MODEL_URL_TEMPLATE;
import static org.onap.vid.client.SyncRestClientInterface.HEADERS.AUTHORIZATION;
import static org.onap.vid.client.SyncRestClientInterface.HEADERS.CONTENT_TYPE;
import static org.onap.vid.client.SyncRestClientInterface.HEADERS.X_ECOMP_INSTANCE_ID;
+import static org.onap.vid.client.UnirestPatchKt.extractRawAsString;
import static org.onap.vid.utils.Logging.REQUEST_ID_HEADER_KEY;
import static org.onap.vid.utils.Logging.logRequest;
@@ -43,6 +44,8 @@ import java.nio.file.StandardCopyOption;
import java.util.Collections;
import java.util.Map;
import java.util.UUID;
+import javax.ws.rs.ProcessingException;
+import javax.ws.rs.client.ResponseProcessingException;
import org.onap.portalsdk.core.util.SystemProperties;
import org.onap.vid.aai.ExceptionWithRequestInfo;
import org.onap.vid.aai.HttpResponseWithRequestInfo;
@@ -87,13 +90,35 @@ public class SdcRestClient implements AsdcClient {
@Override
public Path getServiceToscaModel(UUID uuid) throws AsdcCatalogException {
- InputStream inputStream = Try
- .of(() -> getServiceInputStream(uuid, false))
- .getOrElseThrow(AsdcCatalogException::new)
- .getResponse()
- .getBody();
-
- return createTmpFile(inputStream);
+ try {
+ HttpResponseWithRequestInfo<InputStream> responseWithRequestInfo = getServiceInputStream(uuid, false);
+
+ if (responseWithRequestInfo.getResponse().getStatus()>399) {
+ Logging.logResponse(LOGGER, HttpMethod.GET,
+ responseWithRequestInfo.getRequestUrl(), responseWithRequestInfo.getResponse());
+
+ String body = extractRawAsString(responseWithRequestInfo.getResponse());
+ throw new AsdcCatalogException(String.format("Http bad status code: %s, body: %s",
+ responseWithRequestInfo.getResponse().getStatus(),
+ body));
+ }
+
+ final InputStream csarInputStream = responseWithRequestInfo.getResponse().getBody();
+ Path toscaFilePath = createTmpFile(csarInputStream);
+ LOGGER.debug("Received {} {} . Tosca file was saved at: {}",
+ responseWithRequestInfo.getRequestHttpMethod().name(),
+ responseWithRequestInfo.getRequestUrl(),
+ toscaFilePath.toAbsolutePath());
+ return toscaFilePath;
+ } catch (ResponseProcessingException e) {
+ //Couldn't convert response to Java type
+ throw new AsdcCatalogException("ASDC response could not be processed", e);
+ } catch (ProcessingException e) {
+ //IO problems during request
+ throw new AsdcCatalogException("Failed to get a response from ASDC service. Cause: " + e.getMessage(), e);
+ } catch (RuntimeException e) {
+ throw new AsdcCatalogException(e);
+ }
}
@Override