Accept VNF Recreate Requests 03/67003/1
authorBenjamin, Max (mb388a) <mb388a@us.att.com>
Mon, 17 Sep 2018 13:37:20 +0000 (09:37 -0400)
committerBenjamin, Max (mb388a) <mb388a@us.att.com>
Mon, 17 Sep 2018 13:39:52 +0000 (09:39 -0400)
Updated nfRole in sample catdb json response
Added gr-api-default recipe for recreate
Updated description in catdb response json
Updated catdb response file to have the correct action
Added action to common package
Removed requestor ids and source from test requests
Began adding recreate endpoint and tests
Began adding validation for recreate and junit tests

Change-Id: I60c588be104b82b2d0dfb8587069e04f7b4710be
Issue-ID: SO-1057
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
19 files changed:
adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V4.11__RecreateRecipe.sql [new file with mode: 0644]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/network/async/client/ObjectFactory.java
mso-api-handlers/mso-api-handler-common/src/main/java/org/onap/so/apihandlerinfra/Action.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/Action.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/ServiceInstances.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/CloudConfigurationValidation.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/ModelInfoValidation.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/MsoRequestTest.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ServiceInstancesTest.java
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/CloudConfiguration/DeactivateAndCloudDeleteCloudConfiguration.json
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/CloudConfiguration/VnfRecreateCloudConfig.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelInvariantId.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelName.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelVersion.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelVersionId.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateNoModelCustomizationId.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/DeactivateAndCloudDeleteVfModule.json
mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/VnfRecreate.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/__files/catalogdb/vnfRecipe_ResponseWorkflowAction.json [new file with mode: 0644]

diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V4.11__RecreateRecipe.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V4.11__RecreateRecipe.sql
new file mode 100644 (file)
index 0000000..627f7a4
--- /dev/null
@@ -0,0 +1,5 @@
+use catalogdb;
+
+INSERT INTO `vnf_recipe` (`NF_ROLE`, `ACTION`, `VERSION_STR`, `DESCRIPTION`, `ORCHESTRATION_URI`, `RECIPE_TIMEOUT`) 
+VALUES
+('GR-API-DEFAULT', 'recreateInstance', '1', 'Gr api recipe to recreate vnf', '/mso/async/services/WorkflowActionBB', 180);
\ No newline at end of file
index d65cdc4..f2238fc 100644 (file)
@@ -4,7 +4,6 @@
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
- * Modifications Copyright 2018 IBM.
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
index 8dba63b..3a35c23 100644 (file)
@@ -43,5 +43,6 @@ public enum Action {
        compareModel,
        scaleInstance,
        deactivateAndCloudDelete,
-       scaleOut
+       scaleOut,
+       recreateInstance
 }
index 5b08cc1..6013677 100644 (file)
@@ -43,5 +43,6 @@ public enum Action implements Actions{
        compareModel,
        scaleInstance,
        deactivateAndCloudDelete,
-       scaleOut
+       scaleOut,
+       recreateInstance
 }
index 5d9ad76..bb7df4b 100644 (file)
@@ -372,6 +372,20 @@ public class ServiceInstances {
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);              
                return serviceInstances(request, Action.applyUpdatedConfig, instanceIdMap, version, requestId, getRequestUri(requestContext));
        }
+       
+       @POST
+       @Path("/{version:[vV][7]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/recreate")
+       @Consumes(MediaType.APPLICATION_JSON)
+       @Produces(MediaType.APPLICATION_JSON)
+       @ApiOperation(value="Recreate VNF Instance",response=Response.class)
+       public Response recreateVnfInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
+                                       @PathParam("vnfInstanceId") String vnfInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
+               String requestId = getRequestId(requestContext);
+               HashMap<String, String> instanceIdMap = new HashMap<>();
+               instanceIdMap.put("serviceInstanceId", serviceInstanceId);
+               instanceIdMap.put("vnfInstanceId", vnfInstanceId);              
+               return serviceInstances(request, Action.recreateInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+       }
 
 
        @DELETE
index f366c7e..b0ea857 100644 (file)
@@ -56,6 +56,9 @@ public class CloudConfigurationValidation implements ValidationRule{
                        if(requestScope.equalsIgnoreCase(ModelType.vfModule.name()) && (action == Action.deactivateAndCloudDelete || action == Action.scaleOut)){
                                throw new ValidationException("cloudConfiguration");
                        }
+                       if(requestScope.equals(ModelType.vnf.name()) && action == Action.recreateInstance){
+                               throw new ValidationException("cloudConfiguration", true);
+                       }
                }
                
                if (cloudConfiguration == null && ((aLaCarteFlag != null && !aLaCarteFlag) && requestScope.equalsIgnoreCase (ModelType.service.name ()) && reqVersion < 5)) {
index aa98d2a..c6fae6e 100644 (file)
@@ -60,7 +60,7 @@ public class ModelInfoValidation implements ValidationRule{
         }
         
         // modelCustomizationId or modelCustomizationName are required for VNF Replace
-        if(requestParameters != null && reqVersion > 4 && requestScope.equalsIgnoreCase(ModelType.vnf.name()) && action == Action.replaceInstance) {
+        if(requestParameters != null && reqVersion > 4 && requestScope.equalsIgnoreCase(ModelType.vnf.name()) && action == Action.replaceInstance || action == Action.recreateInstance) {
                if(!UUIDChecker.isValidUUID(modelInfo.getModelCustomizationId()) && modelInfo.getModelCustomizationName() == null) {
                        throw new ValidationException("modelCustomizationId or modelCustomizationName");
                }
@@ -77,14 +77,16 @@ public class ModelInfoValidation implements ValidationRule{
         if(empty(modelInfo.getModelInvariantId()) && (requestScope.equalsIgnoreCase(ModelType.vfModule.name()) && action == Action.scaleOut)){
                throw new ValidationException("modelInvariantId");
         }
-
+        if(empty(modelInfo.getModelInvariantId()) && (requestScope.equalsIgnoreCase(ModelType.vnf.name()) && action == Action.recreateInstance)){
+               throw new ValidationException("modelInvariantId", true);
+        }
         if (!empty (modelInfo.getModelInvariantId ()) && !UUIDChecker.isValidUUID (modelInfo.getModelInvariantId ())) {
                throw new ValidationException ("modelInvariantId format");
         }
 
         if(reqVersion >= 4 && !(requestScope.equalsIgnoreCase(ModelType.configuration.name())) && empty (modelInfo.getModelName ()) && (action == Action.createInstance || action == Action.updateInstance || 
-                       action == Action.addRelationships || action == Action.removeRelationships || ((action == Action.deleteInstance || action == Action.scaleOut) && (requestScope.equalsIgnoreCase (ModelType.vfModule.name ()))))){
-               throw new ValidationException ("modelName");
+                       action == Action.addRelationships || action == Action.removeRelationships || action == Action.recreateInstance || ((action == Action.deleteInstance || action == Action.scaleOut) && (requestScope.equalsIgnoreCase (ModelType.vfModule.name ()))))){
+               throw new ValidationException ("modelName", true);
         }
 
         if (empty (modelInfo.getModelVersion ()) && !(requestScope.equalsIgnoreCase(ModelType.configuration.name())) && 
@@ -92,6 +94,10 @@ public class ModelInfoValidation implements ValidationRule{
                                        && (action == Action.createInstance || action == Action.updateInstance || action == Action.addRelationships || action == Action.removeRelationships || action == Action.scaleOut))) {
                throw new ValidationException ("modelVersion");
         }
+        
+        if(empty(modelInfo.getModelVersion()) && (requestScope.equalsIgnoreCase(ModelType.vnf.name()) && action == Action.recreateInstance)){
+               throw new ValidationException("modelVersion", true);
+        }
 
         // is required for serviceInstance delete macro when aLaCarte=false in v4
         if (reqVersion >= 4 && empty (modelInfo.getModelVersionId()) && (((aLaCarteFlag != null && !aLaCarteFlag) && requestScope.equalsIgnoreCase(ModelType.service.name()) && action == Action.deleteInstance) ||
@@ -99,6 +105,9 @@ public class ModelInfoValidation implements ValidationRule{
                        (requestScope.equalsIgnoreCase(ModelType.configuration.name()) && (action == Action.activateInstance || action == Action.deactivateInstance))))) {
                throw new ValidationException ("modelVersionId");
          }
+        if(empty(modelInfo.getModelVersionId()) && (requestScope.equalsIgnoreCase(ModelType.vnf.name()) && action == Action.recreateInstance)){
+               throw new ValidationException("modelVersionId", true);
+        }
         if(empty(modelInfo.getModelVersionId()) && (requestScope.equalsIgnoreCase(ModelType.vfModule.name()) && action == Action.scaleOut)){
                throw new ValidationException("modelVersionId");
         }
index 63dc96f..fa3ce07 100644 (file)
@@ -193,6 +193,7 @@ public class MsoRequestTest extends BaseTest {
                        {"No valid cloudConfiguration is specified", mapper.readValue(inputStream("/CloudConfiguration/InPlaceSoftwareUpdateCloudConfiguration.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.inPlaceSoftwareUpdate, 6},
                        {"No valid cloudConfiguration is specified", mapper.readValue(inputStream("/CloudConfiguration/DeactivateAndCloudDeleteCloudConfiguration.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.deactivateAndCloudDelete, 7},
                        {"No valid cloudConfiguration is specified", mapper.readValue(inputStream("/CloudConfiguration/ScaleOutNoCloudConfig.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.scaleOut, 7},
+                       {"No valid cloudConfiguration is specified", mapper.readValue(inputStream("/CloudConfiguration/VnfRecreateCloudConfig.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.recreateInstance, 7},
                        {"No valid lcpCloudRegionId is specified", mapper.readValue(inputStream("/CloudConfiguration/EmptyLcpCloudConfiguration.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
                        {"No valid lcpCloudRegionId is specified", mapper.readValue(inputStream("/CloudConfiguration/InPlaceSoftwareUpdateCloudRegionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.inPlaceSoftwareUpdate, 6},
                        {"No valid tenantId is specified", mapper.readValue(inputStream("/CloudConfiguration/EmptyTenantId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
@@ -207,6 +208,7 @@ public class MsoRequestTest extends BaseTest {
                        {"No valid modelCustomizationId or modelCustomizationName is specified", mapper.readValue(inputStream("/ModelInfo/ModelCustomization.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.replaceInstance, 6},
                        {"No valid modelCustomizationId or modelCustomizationName is specified", mapper.readValue(inputStream("/ModelInfo/ModelCustomization.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.updateInstance, 6},
                        {"No valid modelCustomizationId or modelCustomizationName is specified", mapper.readValue(inputStream("/ModelInfo/VnfModelCustomizationId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.replaceInstance, 5},
+                       {"No valid modelCustomizationId or modelCustomizationName is specified", mapper.readValue(inputStream("/ModelInfo/VnfRecreateNoModelCustomizationId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.recreateInstance, 7},
                        {"No valid modelCustomizationId is specified", mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelCustomizationId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.scaleOut, 7},
                        {"No valid model-info is specified", mapper.readValue(inputStream("/ModelInfo/ModelInfoNull.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
                        {"No valid modelInvariantId format is specified", mapper.readValue(inputStream("/ModelInfo/InvalidModelInvariantId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 2},
@@ -218,13 +220,16 @@ public class MsoRequestTest extends BaseTest {
                        {"No valid modelInvariantId is specified", mapper.readValue(inputStream("/ModelInfo/v5DeactivateModelInvariantId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.deactivateInstance, 5},
                        {"No valid modelInvariantId is specified", mapper.readValue(inputStream("/ModelInfo/v3UpdateNetworkBad.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.updateInstance, 4},
                        {"No valid modelInvariantId is specified", mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelInvariantId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.scaleOut, 7},
+                       {"No valid modelInvariantId is specified", mapper.readValue(inputStream("/ModelInfo/VnfRecreateModelInvariantId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.recreateInstance, 7},
                        {"No valid modelName is specified", mapper.readValue(inputStream("/ModelInfo/VfModuleModelName.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.deleteInstance, 4},
                        {"No valid modelName is specified", mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelName.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.scaleOut, 7},
+                       {"No valid modelName is specified", mapper.readValue(inputStream("/ModelInfo/VnfRecreateModelName.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.recreateInstance, 7},
                        {"No valid modelType is specified", mapper.readValue(inputStream("/ModelInfo/ModelTypeNull.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
                        {"No valid modelVersion is specified", mapper.readValue(inputStream("/ModelInfo/ModelVersionService.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.updateInstance, 3},
                        {"No valid modelVersion is specified", mapper.readValue(inputStream("/ModelInfo/ModelVersionVfModule.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 3},
                        {"No valid modelVersion is specified", mapper.readValue(inputStream("/ModelInfo/ModelVersionServiceCreate.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 3},
                        {"No valid modelVersion is specified", mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelVersion.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.scaleOut, 7},
+                       {"No valid modelVersion is specified", mapper.readValue(inputStream("/ModelInfo/VnfRecreateModelVersion.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.recreateInstance, 7},
                        {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/ModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
                        {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/ConfigurationModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.activateInstance, 5},
                        {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/v2ModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.activateInstance, 4},
@@ -235,6 +240,7 @@ public class MsoRequestTest extends BaseTest {
                        {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/ModelVersionIdCreate.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
                        {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/v5ActivateModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.activateInstance, 5},
                        {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/ScaleOutNoModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.scaleOut, 7},
+                       {"No valid modelVersionId is specified", mapper.readValue(inputStream("/ModelInfo/VnfRecreateModelVersionId.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.recreateInstance, 7},
                        //ValidationException for Platform and LineOfBusiness
                        {"No valid lineOfBusinessName is specified", mapper.readValue(inputStream("/PlatformAndLineOfBusiness/EmptyLineOfBusiness.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 5},
                        {"No valid platform is specified", mapper.readValue(inputStream("/PlatformAndLineOfBusiness/Platform.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.createInstance, 6},
index cdb4c40..fddd149 100644 (file)
@@ -949,6 +949,42 @@ public class ServiceInstancesTest extends BaseTest{
         assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));        
     }
     @Test
+    public void recreateVnfInstance() throws IOException {
+        stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
+
+        stubFor(get(urlMatching(".*/vnfResourceCustomization/68dc9a92-214c-11e7-93ae-92361f002674"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBody(getWiremockResponseForCatalogdb("vnfResourceCustomization_Response"))
+                        .withStatus(org.apache.http.HttpStatus.SC_OK)));
+
+        stubFor(get(urlMatching(".*/vnfResourceCustomization/68dc9a92-214c-11e7-93ae-92361f002674/vnfResources"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBody(getWiremockResponseForCatalogdb("vnfResources_Response.json"))
+                        .withStatus(org.apache.http.HttpStatus.SC_OK)));
+               
+        stubFor(get(urlMatching(".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction[?]nfRole=GR-API-DEFAULT&action=recreateInstance"))
+                               .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                                               .withBody(getWiremockResponseForCatalogdb("vnfRecipe_ResponseWorkflowAction.json"))
+                                               .withStatus(org.apache.http.HttpStatus.SC_OK)));
+               
+        //expected response
+        ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
+        RequestReferences requestReferences = new RequestReferences();
+        requestReferences.setInstanceId("1882939");
+        expectedResponse.setRequestReferences(requestReferences);
+        uri = servInstanceuri + "v7" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/recreate";
+        ResponseEntity<String> response = sendRequest(inputStream("/VnfRecreate.json"), uri, HttpMethod.POST);
+        logger.debug(response.getBody());
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+        assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
+        ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
+        assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));        
+    }
+    @Test
     public void updateVnfInstance() throws IOException {       
         stubFor(post(urlPathEqualTo("/mso/async/services/WorkflowActionBB"))
                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/CloudConfiguration/VnfRecreateCloudConfig.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/CloudConfiguration/VnfRecreateCloudConfig.json
new file mode 100644 (file)
index 0000000..5d64500
--- /dev/null
@@ -0,0 +1,21 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelInvariantId":"ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelVersionId":"254583ad-b38c-498b-bdbd-b8de5e07541b",
+         "modelName":"vSAMP12",
+         "modelVersion":"2.0",
+         "modelCustomizationName":"vSAMP12 1",
+         "modelCustomizationId":"c539433a-84a6-4082-a12e-5c9b00c3b960"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelInvariantId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelInvariantId.json
new file mode 100644 (file)
index 0000000..15ec1a0
--- /dev/null
@@ -0,0 +1,24 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelVersionId":"254583ad-b38c-498b-bdbd-b8de5e07541b",
+         "modelName":"vSAMP12",
+         "modelVersion":"2.0",
+         "modelCustomizationName":"vSAMP12 1",
+         "modelCustomizationId":"c539433a-84a6-4082-a12e-5c9b00c3b960"
+      },
+      "cloudConfiguration":{
+         "lcpCloudRegionId":"mdt1",
+         "tenantId":"88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelName.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelName.json
new file mode 100644 (file)
index 0000000..caa7458
--- /dev/null
@@ -0,0 +1,24 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelInvariantId":"ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelVersionId":"254583ad-b38c-498b-bdbd-b8de5e07541b",
+         "modelVersion":"2.0",
+         "modelCustomizationName":"vSAMP12 1",
+         "modelCustomizationId":"c539433a-84a6-4082-a12e-5c9b00c3b960"
+      },
+      "cloudConfiguration":{
+         "lcpCloudRegionId":"mdt1",
+         "tenantId":"88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelVersion.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelVersion.json
new file mode 100644 (file)
index 0000000..5049be6
--- /dev/null
@@ -0,0 +1,24 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelInvariantId":"ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelVersionId":"254583ad-b38c-498b-bdbd-b8de5e07541b",
+         "modelName":"vSAMP12",
+         "modelCustomizationName":"vSAMP12 1",
+         "modelCustomizationId":"c539433a-84a6-4082-a12e-5c9b00c3b960"
+      },
+      "cloudConfiguration":{
+         "lcpCloudRegionId":"mdt1",
+         "tenantId":"88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelVersionId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateModelVersionId.json
new file mode 100644 (file)
index 0000000..99ee762
--- /dev/null
@@ -0,0 +1,24 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelInvariantId":"ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelName":"vSAMP12",
+         "modelVersion":"2.0",
+         "modelCustomizationName":"vSAMP12 1",
+         "modelCustomizationId":"c539433a-84a6-4082-a12e-5c9b00c3b960"
+      },
+      "cloudConfiguration":{
+         "lcpCloudRegionId":"mdt1",
+         "tenantId":"88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateNoModelCustomizationId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/ModelInfo/VnfRecreateNoModelCustomizationId.json
new file mode 100644 (file)
index 0000000..d98a9bc
--- /dev/null
@@ -0,0 +1,23 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelInvariantId":"ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelVersionId":"254583ad-b38c-498b-bdbd-b8de5e07541b",
+         "modelName":"vSAMP12",
+         "modelVersion":"2.0"
+      },
+      "cloudConfiguration":{
+         "lcpCloudRegionId":"mdt1",
+         "tenantId":"88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/VnfRecreate.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/VnfRecreate.json
new file mode 100644 (file)
index 0000000..7a76c6b
--- /dev/null
@@ -0,0 +1,25 @@
+{
+   "requestDetails":{
+      "modelInfo":{
+         "modelType":"vnf",
+         "modelInvariantId":"ff5256d1-5a33-55df-13ab-12abad84e7ff",
+         "modelVersionId":"254583ad-b38c-498b-bdbd-b8de5e07541b",
+         "modelName":"vSAMP12",
+         "modelVersion":"2.0",
+         "modelCustomizationName":"vSAMP12 1",
+         "modelCustomizationId":"c539433a-84a6-4082-a12e-5c9b00c3b960"
+      },
+      "cloudConfiguration":{
+         "lcpCloudRegionId":"mdt1",
+         "tenantId":"88a6ca3ee0394ade9403f075db23167e"
+      },
+      "requestInfo":{
+         "source":"source",
+         "suppressRollback":false,
+         "requestorId":"xxxxxx"
+      },
+      "requestParameters":{
+         "rebuildVolumeGroups":false
+      }
+   }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/__files/catalogdb/vnfRecipe_ResponseWorkflowAction.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/__files/catalogdb/vnfRecipe_ResponseWorkflowAction.json
new file mode 100644 (file)
index 0000000..c755714
--- /dev/null
@@ -0,0 +1,20 @@
+{
+  "id": 21,
+  "nfRole": "GR-API-DEFAULT",
+  "paramXsd": "",
+  "vfModuleId": "1882934",
+  "action": "recreateInstance",
+  "description": "gr-api-default for vnf recreate",
+  "orchestrationUri": "/mso/async/services/WorkflowActionBB",
+  "recipeTimeout": 180,
+  "serviceType": "GR-API-DEFAULT",
+  "created": "2016-06-03T04:44:10.000+0000",
+  "_links": {
+    "self": {
+      "href": "http://localhost:8090/vnfRecipe/21"
+    },
+    "vnfRecipe": {
+      "href": "http://localhost:8090/vnfRecipe/21"
+    }
+  }
+}
\ No newline at end of file