aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src
diff options
context:
space:
mode:
authorEylon Malin <eylon.malin@intl.att.com>2019-08-05 23:38:18 +0300
committerEylon Malin <eylon.malin@intl.att.com>2019-08-06 12:32:00 +0300
commit151d768e923994b3e81ade049d21bf65e931faac (patch)
tree797fe529428d0dc399992491acd584de58b3107d /vid-app-common/src
parent84d0b4b11a1ae178a6759ce423ce2bd62315ce15 (diff)
handle errors in change management and tenant isolation
use more tolerance way for parsing responses from MSO so VID can handle error responses with html body Issue-ID: VID-378 Signed-off-by: Eylon Malin <eylon.malin@intl.att.com> Change-Id: I72741ec1bf636a1200e8ecbd684ab1f3b2ab332a Signed-off-by: Ittay Stern <ittay.stern@att.com> Signed-off-by: Eylon Malin <eylon.malin@intl.att.com>
Diffstat (limited to 'vid-app-common/src')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/controller/OperationalEnvironmentController.java20
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/mso/MsoResponseWrapper2.java6
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/mso/MsoUtil.java20
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/mso/rest/MsoRestClientNew.java4
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientTest.java16
5 files changed, 38 insertions, 28 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/OperationalEnvironmentController.java b/vid-app-common/src/main/java/org/onap/vid/controller/OperationalEnvironmentController.java
index a6778ad0c..44bdc813b 100644
--- a/vid-app-common/src/main/java/org/onap/vid/controller/OperationalEnvironmentController.java
+++ b/vid-app-common/src/main/java/org/onap/vid/controller/OperationalEnvironmentController.java
@@ -33,6 +33,7 @@ import org.onap.vid.model.RequestReferencesContainer;
import org.onap.vid.mso.MsoBusinessLogic;
import org.onap.vid.mso.MsoInterface;
import org.onap.vid.mso.MsoResponseWrapper2;
+import org.onap.vid.mso.MsoUtil;
import org.onap.vid.mso.model.OperationalEnvironmentActivateInfo;
import org.onap.vid.mso.model.OperationalEnvironmentDeactivateInfo;
import org.onap.vid.mso.rest.OperationalEnvironment.OperationEnvironmentRequestDetails;
@@ -80,9 +81,7 @@ public class OperationalEnvironmentController extends VidRestrictedBaseControlle
RequestDetailsWrapper<OperationEnvironmentRequestDetails> requestDetailsWrapper = msoBusinessLogic.convertParametersToRequestDetails(operationalEnvironment, userId);
String path = msoBusinessLogic.getOperationalEnvironmentCreationPath();
- HttpResponse<RequestReferencesContainer> msoResponse = restMso.post(path, requestDetailsWrapper, RequestReferencesContainer.class);
- debugEnd(msoResponse);
- return new MsoResponseWrapper2<>(msoResponse);
+ return MsoUtil.wrapResponse2(restMso.post(path, requestDetailsWrapper, String.class), RequestReferencesContainer.class);
}
@RequestMapping(value = "/activate", method = RequestMethod.POST)
@@ -105,10 +104,7 @@ public class OperationalEnvironmentController extends VidRestrictedBaseControlle
String path = msoBusinessLogic.getOperationalEnvironmentActivationPath(activateInfo);
RequestDetailsWrapper<RequestDetails> requestDetailsWrapper = msoBusinessLogic.createOperationalEnvironmentActivationRequestDetails(activateInfo);
- HttpResponse<RequestReferencesContainer> msoResponse = restMso.post(path, requestDetailsWrapper, RequestReferencesContainer.class);
-
- debugEnd(msoResponse);
- return new MsoResponseWrapper2<>(msoResponse);
+ return MsoUtil.wrapResponse2(restMso.post(path, requestDetailsWrapper, String.class), RequestReferencesContainer.class);
}
@RequestMapping(value = "/deactivate", method = RequestMethod.POST)
@@ -126,10 +122,7 @@ public class OperationalEnvironmentController extends VidRestrictedBaseControlle
String path = msoBusinessLogic.getOperationalEnvironmentDeactivationPath(deactivateInfo);
RequestDetailsWrapper<RequestDetails> requestDetailsWrapper = msoBusinessLogic.createOperationalEnvironmentDeactivationRequestDetails(deactivateInfo);
- HttpResponse<RequestReferencesContainer> msoResponse = restMso.post(path, requestDetailsWrapper, RequestReferencesContainer.class);
-
- debugEnd(msoResponse);
- return new MsoResponseWrapper2<>(msoResponse);
+ return MsoUtil.wrapResponse2(restMso.post(path, requestDetailsWrapper, String.class), RequestReferencesContainer.class);
}
@RequestMapping(value = "/requestStatus", method = RequestMethod.GET)
@@ -140,10 +133,7 @@ public class OperationalEnvironmentController extends VidRestrictedBaseControlle
verifyIsNotEmpty(requestId, "requestId");
String path = msoBusinessLogic.getCloudResourcesRequestsStatusPath(requestId);
- HttpResponse<HashMap> msoResponse = restMso.get(path, HashMap.class);
-
- LOGGER.debug(EELFLoggerDelegate.debugLogger, "end {}() => {}", getMethodName(), msoResponse);
- return new MsoResponseWrapper2<>(msoResponse);
+ return MsoUtil.wrapResponse2(restMso.get(path, String.class), HashMap.class);
}
@ExceptionHandler({
diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/MsoResponseWrapper2.java b/vid-app-common/src/main/java/org/onap/vid/mso/MsoResponseWrapper2.java
index 9b617189c..318aa6e23 100644
--- a/vid-app-common/src/main/java/org/onap/vid/mso/MsoResponseWrapper2.java
+++ b/vid-app-common/src/main/java/org/onap/vid/mso/MsoResponseWrapper2.java
@@ -65,6 +65,12 @@ public class MsoResponseWrapper2<T> implements MsoResponseWrapperInterface {
this.raw = null;
}
+ public MsoResponseWrapper2(int status, T entity, String raw) {
+ this.status = status;
+ this.entity = entity;
+ this.raw = raw;
+ }
+
public int getStatus() {
return status;
}
diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/MsoUtil.java b/vid-app-common/src/main/java/org/onap/vid/mso/MsoUtil.java
index fcc20fafd..5171b7ac8 100644
--- a/vid-app-common/src/main/java/org/onap/vid/mso/MsoUtil.java
+++ b/vid-app-common/src/main/java/org/onap/vid/mso/MsoUtil.java
@@ -25,7 +25,6 @@ import static org.onap.vid.utils.KotlinUtilsKt.JACKSON_OBJECT_MAPPER;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
import io.joshworks.restclient.http.HttpResponse;
import java.io.IOException;
import org.apache.commons.lang3.StringUtils;
@@ -34,7 +33,6 @@ import org.onap.vid.exceptions.GenericUncheckedException;
public class MsoUtil {
- static final ObjectMapper objectMapper = new ObjectMapper();
private MsoUtil() {
}
@@ -51,7 +49,7 @@ public class MsoUtil {
if (httpResponse.getRawBody() != null) {
try {
T body = httpResponse.getBody();
- String entityStr = body instanceof String ? (String) body : objectMapper.writeValueAsString(httpResponse.getBody());
+ String entityStr = body instanceof String ? (String) body : JACKSON_OBJECT_MAPPER.writeValueAsString(httpResponse.getBody());
msoResponseWrapper.setEntity(entityStr);
} catch(JsonProcessingException e) {
ExceptionUtils.rethrow(e);
@@ -60,6 +58,22 @@ public class MsoUtil {
return msoResponseWrapper;
}
+ public static <T> MsoResponseWrapper2<T> wrapResponse2(HttpResponse<String> httpResponse, Class<T> clazz) {
+ String raw = httpResponse.getBody(); // As body's T is String, use getBody as a simple way to get raw
+ if (raw != null) {
+ try {
+ T entity = JACKSON_OBJECT_MAPPER.readValue(raw, clazz);
+ return new MsoResponseWrapper2<>(httpResponse.getStatus(), entity, raw);
+ } catch (JsonProcessingException exception) {
+ return new MsoResponseWrapper2<>(httpResponse.getStatus(), null, raw);
+ } catch (IOException exception) {
+ ExceptionUtils.rethrow(exception);
+ }
+ }
+
+ return new MsoResponseWrapper2<>(httpResponse.getStatus(), null, null);
+ }
+
public static String formatExceptionAdditionalInfo(int statusCode, String msoResponse) {
String errorMsg = "Http Code:" + statusCode;
if (!StringUtils.isEmpty(msoResponse)) {
diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/rest/MsoRestClientNew.java b/vid-app-common/src/main/java/org/onap/vid/mso/rest/MsoRestClientNew.java
index 64182e088..df8034b22 100644
--- a/vid-app-common/src/main/java/org/onap/vid/mso/rest/MsoRestClientNew.java
+++ b/vid-app-common/src/main/java/org/onap/vid/mso/rest/MsoRestClientNew.java
@@ -330,8 +330,8 @@ public class MsoRestClientNew extends RestMsoImplementation implements MsoInterf
@Override
public MsoResponseWrapperInterface changeManagementUpdate(RequestDetailsWrapper requestDetails, String endpoint) {
String path = baseUrl + endpoint;
- HttpResponse<RequestReferencesContainer> response = client.post(path, commonHeaders, requestDetails, RequestReferencesContainer.class);
- return MsoUtil.wrapResponse(response);
+ HttpResponse<String> response = client.post(path, commonHeaders, requestDetails, String.class);
+ return MsoUtil.wrapResponse2(response, RequestReferencesContainer.class);
}
public MsoResponseWrapper replaceInstance(org.onap.vid.changeManagement.RequestDetails request, String path) {
diff --git a/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientTest.java b/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientTest.java
index 8ea4836a2..e4e699d55 100644
--- a/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/mso/rest/MsoRestClientTest.java
@@ -29,6 +29,7 @@ import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
+import com.fasterxml.jackson.core.JsonProcessingException;
import io.joshworks.restclient.http.HttpResponse;
import io.joshworks.restclient.http.JsonMapper;
import org.apache.http.ProtocolVersion;
@@ -60,6 +61,7 @@ import java.util.UUID;
import static org.mockito.ArgumentMatchers.refEq;
import static org.mockito.hamcrest.MockitoHamcrest.argThat;
+import static org.onap.vid.utils.KotlinUtilsKt.JACKSON_OBJECT_MAPPER;
@ContextConfiguration(classes = {LocalWebConfig.class, SystemProperties.class})
@@ -593,25 +595,23 @@ public class MsoRestClientTest {
}
@Test
- public void shouldProperlyChangeManagementUpdate() {
+ public void shouldProperlyChangeManagementUpdate() throws JsonProcessingException {
// given
RequestDetails requestDetails = MsoRestClientTestUtil.generateMockMsoRequest();
RequestDetailsWrapper<RequestDetails> requestDetailsWrapper = new RequestDetailsWrapper<>(requestDetails);
String endpoint = "testEndpoint";
- HttpResponse<RequestReferencesContainer> httpResponse = HttpResponse.fallback(
- new RequestReferencesContainer(
- new RequestReferences()));
+ RequestReferencesContainer entity = new RequestReferencesContainer(new RequestReferences());
+ HttpResponse<String> httpResponse = HttpResponse.fallback(JACKSON_OBJECT_MAPPER.writeValueAsString(entity));
- MsoResponseWrapperInterface expectedResponse = MsoUtil.wrapResponse(httpResponse);
-
- when(client.post(eq(baseUrl + endpoint), anyMap(), eq(requestDetailsWrapper), eq(RequestReferencesContainer.class))).thenReturn(httpResponse);
+ when(client.post(eq(baseUrl + endpoint), anyMap(), eq(requestDetailsWrapper), eq(String.class))).thenReturn(httpResponse);
// when
MsoResponseWrapperInterface response = restClient.changeManagementUpdate(requestDetailsWrapper, endpoint);
// then
- assertThat(expectedResponse).isEqualToComparingFieldByField(response);
+ assertThat(response.getEntity()).isEqualToComparingFieldByField(entity);
+ assertThat(response.getStatus()).isEqualTo(0);
}
@Test