1710 Rebase - Second Attempt

This commit rebases changes from openecomp-mso/internal-staging-1710 up to and including this codecloud commit:
54483fc6606ddb1591a2e9da61bff8712325f924
Wed Sep 6 18:12:56 2017 -0400

Rebasing was done on a branch on top of this commit in so/master in ONAP:
93fbdfbe46104f8859d4754040f979cb7997c157
Thu Sep 7 16:42:59 2017 +0000

Change-Id: I4ad9abf40da32bf5bdca43e868b8fa2dbcd9dc59
Issue-id: SO-107
Signed-off-by: Arthur Martella <amartell@research.att.com>
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/MsoRequestTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/MsoRequestTest.java
index dde7ecf..c956e4d 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/MsoRequestTest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/MsoRequestTest.java
@@ -19,18 +19,24 @@
  */
 package org.openecomp.mso.apihandlerinfra;
 
-import org.openecomp.mso.apihandler.common.ValidationException;
-import org.openecomp.mso.apihandlerinfra.serviceinstancebeans.ServiceInstancesRequest;
 import org.apache.commons.io.IOUtils;
 import org.codehaus.jackson.JsonParseException;
 import org.codehaus.jackson.map.JsonMappingException;
 import org.codehaus.jackson.map.ObjectMapper;
 import org.junit.Test;
 
+import static org.junit.Assert.assertEquals;
+
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
 import java.io.IOException;
 import java.util.HashMap;
 
-import static org.junit.Assert.*;
+import org.openecomp.mso.apihandler.common.ValidationException;
+import org.openecomp.mso.apihandlerinfra.serviceinstancebeans.ServiceInstancesRequest;
 
 public class MsoRequestTest {
 
@@ -232,4 +238,64 @@
 
 	}
 
+	@Test
+	public void testVfModuleV4UsePreLoad() throws JsonParseException, JsonMappingException, IOException, ValidationException {
+		String requestJSON;
+		 try {
+			  requestJSON = IOUtils.toString (ClassLoader.class.getResourceAsStream ("/v4CreateVfModule.json"));
+	           
+	        } catch (IOException e) {
+	            fail ("Exception caught");
+	            e.printStackTrace ();
+	            return;
+	        }
+		 
+			ObjectMapper mapper = new ObjectMapper();
+			HashMap<String, String> instanceIdMap = new HashMap<String,String>();
+			instanceIdMap.put("serviceInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			instanceIdMap.put("vnfInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			ServiceInstancesRequest sir  = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
+			MsoRequest msoRequest = new MsoRequest ("1234");
+			msoRequest.parse(sir, instanceIdMap, Action.createInstance, "v4");
+			
+			
+			
+		 try {
+			  requestJSON = IOUtils.toString (ClassLoader.class.getResourceAsStream ("/v4CreateVfModuleNoCustomizationId.json"));
+	           
+	        } catch (IOException e) {
+	            fail ("Exception caught");
+	            e.printStackTrace ();
+	            return;
+	        }
+		 
+			mapper = new ObjectMapper();
+			instanceIdMap = new HashMap<String,String>();
+			instanceIdMap.put("serviceInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			instanceIdMap.put("vnfInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			sir  = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
+			msoRequest = new MsoRequest ("1234");
+			msoRequest.parse(sir, instanceIdMap, Action.createInstance, "v4");
+	}
+	
+	@Test(expected = ValidationException.class)
+	public void testV4UsePreLoadMissingModelCustomizationId() throws JsonParseException, JsonMappingException, IOException, ValidationException {
+		String requestJSON;
+		 try {
+			  requestJSON = IOUtils.toString (ClassLoader.class.getResourceAsStream ("/v4CreateVfModuleMissingModelCustomizationId.json"));
+	           
+	        } catch (IOException e) {
+	            fail ("Exception caught");
+	            e.printStackTrace ();
+	            return;
+	        }
+		 
+			ObjectMapper mapper = new ObjectMapper();
+			HashMap<String, String> instanceIdMap = new HashMap<String,String>();
+			instanceIdMap.put("serviceInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			instanceIdMap.put("vnfInstanceId", "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc");
+			ServiceInstancesRequest sir  = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
+			MsoRequest msoRequest = new MsoRequest ("1234");
+			msoRequest.parse(sir, instanceIdMap, Action.createInstance, "v4");
+	}
 }
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/v4CreateVfModule.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v4CreateVfModule.json
new file mode 100644
index 0000000..eb39ef1
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v4CreateVfModule.json
@@ -0,0 +1,62 @@
+{

+  "requestDetails": {

+      "modelInfo": {

+          "modelType": "vfModule",

+          "modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff",

+          "modelVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe",

+          "modelCustomizationId": "856f9806-b01a-11e6-80f5-76304dec7eb7",

+          "modelName": "Test",

+          "modelVersion": "1"

+      },

+      "cloudConfiguration": {

+          "lcpCloudRegionId": "mdt1",

+          "tenantId": "88a6ca3ee0394ade9403f075db23167e"

+      },

+      "requestInfo": {

+          "instanceName": "MSOTEST103a-vSAMP12_base_module-0",

+          "source": "VID",

+          "suppressRollback": true,

+          "requestorId": "az2016"

+      },

+      "relatedInstanceList": [

+         {

+            "relatedInstance": {

+               "instanceId": "17ef4658-bd1f-4ef0-9ca0-ea76e2bf122c",

+               "instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",

+               "modelInfo": {   

+                  "modelType": "volumeGroup"

+               }

+            }

+         },

+         {

+            "relatedInstance": {

+               "instanceId": "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc",

+               "modelInfo": {   

+                  "modelType": "service",

+                  "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",

+                  "modelVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",

+                  "modelName": "Test",

+                  "modelVersion": "1.0"

+               }

+            }

+         },

+         {

+            "relatedInstance": {

+               "instanceId": "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc",

+               "modelInfo": {

+                  "modelType": "vnf",

+                  "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff",

+                  "modelVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",

+                  "modelName": "vSAMP12",

+                  "modelVersion": "1.0",

+		     "modelCustomizationName": "vSAMP12 1"

+               }

+            }

+         }

+      ],

+      "requestParameters": {

+          "usePreload": true,

+          "userParams": []

+      }

+  }

+}

diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/v4CreateVfModuleMissingModelCustomizationId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v4CreateVfModuleMissingModelCustomizationId.json
new file mode 100644
index 0000000..2fd0e03
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v4CreateVfModuleMissingModelCustomizationId.json
@@ -0,0 +1,61 @@
+{

+  "requestDetails": {

+      "modelInfo": {

+          "modelType": "vfModule",

+          "modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff",

+          "modelVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe",

+          "modelName": "Test",

+          "modelVersion": "1"

+      },

+      "cloudConfiguration": {

+          "lcpCloudRegionId": "mdt1",

+          "tenantId": "88a6ca3ee0394ade9403f075db23167e"

+      },

+      "requestInfo": {

+          "instanceName": "MSOTEST103a-vSAMP12_base_module-0",

+          "source": "VID",

+          "suppressRollback": true,

+          "requestorId": "az2016"

+      },

+      "relatedInstanceList": [

+         {

+            "relatedInstance": {

+               "instanceId": "17ef4658-bd1f-4ef0-9ca0-ea76e2bf122c",

+               "instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",

+               "modelInfo": {   

+                  "modelType": "volumeGroup"

+               }

+            }

+         },

+         {

+            "relatedInstance": {

+               "instanceId": "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc",

+               "modelInfo": {   

+                  "modelType": "service",

+                  "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",

+                  "modelVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",

+                  "modelName": "Test",

+                  "modelVersion": "1.0"

+               }

+            }

+         },

+         {

+            "relatedInstance": {

+               "instanceId": "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc",

+               "modelInfo": {

+                  "modelType": "vnf",

+                  "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff",

+                  "modelVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",

+                  "modelName": "vSAMP12",

+                  "modelVersion": "1.0",

+		     	  "modelCustomizationName": "vSAMP12 1"

+               }

+            }

+         }

+      ],

+      "requestParameters": {

+          "usePreload": false,

+          "userParams": []

+      }

+  }

+}

diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/v4CreateVfModuleNoCustomizationId.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v4CreateVfModuleNoCustomizationId.json
new file mode 100644
index 0000000..9c892a4
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/v4CreateVfModuleNoCustomizationId.json
@@ -0,0 +1,61 @@
+{

+  "requestDetails": {

+      "modelInfo": {

+          "modelType": "vfModule",

+          "modelInvariantId": "ff5256d2-5a33-55df-13ab-12abad84e7ff",

+          "modelVersionId": "fe6478e5-ea33-3346-ac12-ab121484a3fe",

+          "modelName": "Test",

+          "modelVersion": "1"

+      },

+      "cloudConfiguration": {

+          "lcpCloudRegionId": "mdt1",

+          "tenantId": "88a6ca3ee0394ade9403f075db23167e"

+      },

+      "requestInfo": {

+          "instanceName": "MSOTEST103a-vSAMP12_base_module-0",

+          "source": "VID",

+          "suppressRollback": true,

+          "requestorId": "az2016"

+      },

+      "relatedInstanceList": [

+         {

+            "relatedInstance": {

+               "instanceId": "17ef4658-bd1f-4ef0-9ca0-ea76e2bf122c",

+               "instanceName": "MSOTESTVOL103a-vSAMP12_base_module-0_vol",

+               "modelInfo": {   

+                  "modelType": "volumeGroup"

+               }

+            }

+         },

+         {

+            "relatedInstance": {

+               "instanceId": "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc",

+               "modelInfo": {   

+                  "modelType": "service",

+                  "modelInvariantId": "ff3514e3-5a33-55df-13ab-12abad84e7ff",

+                  "modelVersionId": "fe6985cd-ea33-3346-ac12-ab121484a3fe",

+                  "modelName": "Test",

+                  "modelVersion": "1.0"

+               }

+            }

+         },

+         {

+            "relatedInstance": {

+               "instanceId": "3eecada1-83a4-4f33-9ed2-7937e7b8dbbc",

+               "modelInfo": {

+                  "modelType": "vnf",

+                  "modelInvariantId": "ff5256d1-5a33-55df-13ab-12abad84e7ff",

+                  "modelVersionId": "fe6478e4-ea33-3346-ac12-ab121484a3fe",

+                  "modelName": "vSAMP12",

+                  "modelVersion": "1.0",

+		     "modelCustomizationName": "vSAMP12 1"

+               }

+            }

+         }

+      ],

+      "requestParameters": {

+          "usePreload": true,

+          "userParams": []

+      }

+  }

+}