Populate serviceInstanceId from instanceMap on validation error.
Use Optional for return value for serviceInstanceId assist methods.
Issue-ID: SO-3224
Signed-off-by: Benjamin, Max (mb388a) <mb388a@att.com>
Change-Id: I36a44ae42bb89d621dec5a2f85266458ea0e0766
}
protected String setServiceInstanceId(String requestScope, ServiceInstancesRequest sir) {
+ String serviceInstanceId = null;
if (sir.getServiceInstanceId() != null) {
- return sir.getServiceInstanceId();
- } else if (requestScope.equalsIgnoreCase(ModelType.instanceGroup.toString())) {
- RelatedInstanceList[] relatedInstances = sir.getRequestDetails().getRelatedInstanceList();
- if (relatedInstances != null) {
- for (RelatedInstanceList relatedInstanceList : relatedInstances) {
- RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
- if (relatedInstance.getModelInfo().getModelType() == ModelType.service) {
- return relatedInstance.getInstanceId();
- }
- }
+ serviceInstanceId = sir.getServiceInstanceId();
+ } else {
+ Optional<String> serviceInstanceIdForInstance = getServiceInstanceIdForInstanceGroup(requestScope, sir);
+ if (serviceInstanceIdForInstance.isPresent()) {
+ serviceInstanceId = serviceInstanceIdForInstance.get();
}
}
- return null;
+ return serviceInstanceId;
}
private String requestScopeFromUri(String requestUri) {
return null;
}
+ protected Optional<String> getServiceInstanceIdForValidationError(ServiceInstancesRequest sir,
+ HashMap<String, String> instanceIdMap, String requestScope) {
+ if (instanceIdMap != null && !instanceIdMap.isEmpty() && instanceIdMap.get("serviceInstanceId") != null) {
+ return Optional.of(instanceIdMap.get("serviceInstanceId"));
+ } else {
+ return getServiceInstanceIdForInstanceGroup(requestScope, sir);
+ }
+ }
+
+ protected Optional<String> getServiceInstanceIdForInstanceGroup(String requestScope, ServiceInstancesRequest sir) {
+ if (requestScope.equalsIgnoreCase(ModelType.instanceGroup.toString())) {
+ RelatedInstanceList[] relatedInstances = sir.getRequestDetails().getRelatedInstanceList();
+ if (relatedInstances != null) {
+ for (RelatedInstanceList relatedInstanceList : relatedInstances) {
+ RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
+ if (relatedInstance.getModelInfo().getModelType() == ModelType.service) {
+ return Optional.ofNullable(relatedInstance.getInstanceId());
+ }
+ }
+ }
+ }
+ return Optional.empty();
+ }
+
private RecipeLookupResult getDefaultVnfUri(ServiceInstancesRequest sir, Actions action) {
String defaultSource = getDefaultModel(sir);
VnfRecipe vnfRecipe = catalogDbClient.getFirstVnfRecipeByNfRoleAndAction(defaultSource, action.toString());
requestValidatorListenerRunner.runValidations(requestUri, instanceIdMap, sir, queryParams, action);
} catch (ApiException e) {
msoRequest.createErrorRequestRecord(Status.FAILED, requestId, e.getMessage(), action, requestScope,
- requestJSON, sir.getServiceInstanceId());
+ requestJSON, requestHandlerUtils
+ .getServiceInstanceIdForValidationError(sir, instanceIdMap, requestScope).orElse(null));
throw e;
}
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Paths;
+import java.util.HashMap;
import java.util.List;
import javax.ws.rs.core.MediaType;
import org.apache.http.HttpStatus;
assertEquals(expectedBasicAuth, basicAuth);
}
+ @Test
+ public void getServiceInstanceIdForValidationErrorTest() {
+ ServiceInstancesRequest sir = new ServiceInstancesRequest();
+ String requestScope = "vnf";
+ HashMap<String, String> instanceIdMap = new HashMap<String, String>();
+ instanceIdMap.put("serviceInstanceId", "testServiceInstanceId");
+ String serviceInstanceId =
+ requestHandlerUtils.getServiceInstanceIdForValidationError(sir, instanceIdMap, requestScope).get();
+ assertEquals("testServiceInstanceId", serviceInstanceId);
+ }
+
+ @Test
+ public void getServiceInstanceIdForValidationErrorInstanceGroupTest() throws Exception {
+ ServiceInstancesRequest sir =
+ mapper.readValue(inputStream("/CreateInstanceGroup.json"), ServiceInstancesRequest.class);
+ String requestScope = "instanceGroup";
+ String serviceInstanceId =
+ requestHandlerUtils.getServiceInstanceIdForValidationError(sir, null, requestScope).get();
+ assertEquals("ddcbbf3d-f2c1-4ca0-8852-76a807285efc", serviceInstanceId);
+ }
+
+ @Test
+ public void getServiceInstanceIdForInstanceGroupTest() throws Exception {
+ ServiceInstancesRequest sir =
+ mapper.readValue(inputStream("/CreateInstanceGroup.json"), ServiceInstancesRequest.class);
+ String requestScope = "instanceGroup";
+ String serviceInstanceId = requestHandlerUtils.getServiceInstanceIdForInstanceGroup(requestScope, sir).get();
+ assertEquals("ddcbbf3d-f2c1-4ca0-8852-76a807285efc", serviceInstanceId);
+ }
+
}