Merge "Changed VF creation to new MSO scaleout API"
diff --git a/epsdk-app-onap/src/main/webapp/WEB-INF/conf/system.properties b/epsdk-app-onap/src/main/webapp/WEB-INF/conf/system.properties
index dc9eb43..34ae55f 100755
--- a/epsdk-app-onap/src/main/webapp/WEB-INF/conf/system.properties
+++ b/epsdk-app-onap/src/main/webapp/WEB-INF/conf/system.properties
@@ -166,7 +166,7 @@
 mso.restapi.vnf.instance=/serviceInstances/v6/<service_instance_id>/vnfs

 mso.restapi.vnf.changemanagement.instance=/serviceInstances/v6/<service_instance_id>/vnfs/<vnf_instance_id>/<request_type>

 mso.restapi.network.instance=/serviceInstances/v6/<service_instance_id>/networks

-mso.restapi.vf.module.instance=/serviceInstances/v6/<service_instance_id>/vnfs/<vnf_instance_id>/vfModules

+mso.restapi.vf.module.instance=/serviceInstantiation/v7/serviceInstances/<service_instance_id>/vnfs/<vnf_instance_id>/vfModules/scaleOut

 mso.restapi.volume.group.instance=/serviceInstances/v6/<service_instance_id>/vnfs/<vnf_instance_id>/volumeGroups

 mso.restapi.get.orc.req=/orchestrationRequests/v6

 mso.restapi.get.orc.reqs=/orchestrationRequests/v6?

diff --git a/epsdk-app-onap/src/main/webapp/WEB-INF/conf/system_template.properties b/epsdk-app-onap/src/main/webapp/WEB-INF/conf/system_template.properties
index 5596de0..9445b73 100755
--- a/epsdk-app-onap/src/main/webapp/WEB-INF/conf/system_template.properties
+++ b/epsdk-app-onap/src/main/webapp/WEB-INF/conf/system_template.properties
@@ -109,7 +109,7 @@
 mso.restapi.vnf.instance=/onap/so/infra/serviceInstances/v6/<service_instance_id>/vnfs

 mso.restapi.vnf.changemanagement.instance=/onap/so/infra/serviceInstances/v6/<service_instance_id>/vnfs/<vnf_instance_id>/<request_type>

 mso.restapi.network.instance=/onap/so/infra/serviceInstances/v6/<service_instance_id>/networks

-mso.restapi.vf.module.instance=/onap/so/infra/serviceInstances/v6/<service_instance_id>/vnfs/<vnf_instance_id>/vfModules

+mso.restapi.vf.module.instance=/onap/so/infra/serviceInstantiation/v7/serviceInstances/<service_instance_id>/vnfs/<vnf_instance_id>/vfModules/scaleOut

 mso.restapi.volume.group.instance=/onap/so/infra/serviceInstances/v6/<service_instance_id>/vnfs/<vnf_instance_id>/volumeGroups

 mso.restapi.get.orc.req=/onap/so/infra/orchestrationRequests/v6

 mso.restapi.get.orc.reqs=/onap/so/infra/orchestrationRequests/v6?

diff --git a/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetails.java b/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetails.java
index df69148..9d198ad 100644
--- a/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetails.java
+++ b/vid-app-common/src/main/java/org/onap/vid/mso/rest/RequestDetails.java
@@ -26,6 +26,7 @@
 import org.apache.commons.lang.builder.ToStringBuilder;
 import org.onap.vid.domain.mso.*;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -41,7 +42,8 @@
         "relatedModelList",
         "requestInfo",
         "subscriberInfo",
-        "requestParameters"
+        "requestParameters",
+        "configurationParameters"
 })
 public class RequestDetails{
 
@@ -71,6 +73,9 @@
     @JsonProperty("requestParameters")
     private RequestParameters requestParameters;
 
+    @JsonProperty("configurationParameters")
+    protected List<Map<String, String>> configurationParameters = new ArrayList<>();
+
     /** The additional properties. */
     @JsonIgnore
     private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@@ -198,12 +203,31 @@
         this.additionalProperties.put(name, value);
     }
 
+    @JsonProperty("configurationParameters")
+    public List<Map<String, String>> getConfigurationParameters() {
+        return configurationParameters;
+    }
+
+    @JsonProperty("configurationParameters")
+    public void setConfigurationParameters(List<Map<String, String>> configurationParameters) {
+        this.configurationParameters = configurationParameters;
+    }
+
     /* (non-Javadoc)
      * @see org.onap.vid.domain.mso.RequestDetails#hashCode()
      */
     @Override
     public int hashCode() {
-        return new HashCodeBuilder().append(cloudConfiguration).append(modelInfo).append(relatedInstanceList).append(requestInfo).append(getRequestParameters()).append(subscriberInfo).append(additionalProperties).toHashCode();
+        return new HashCodeBuilder()
+                .append(cloudConfiguration)
+                .append(modelInfo)
+                .append(relatedInstanceList)
+                .append(requestInfo)
+                .append(getRequestParameters())
+                .append(subscriberInfo)
+                .append(additionalProperties)
+                .append(configurationParameters.hashCode())
+                .toHashCode();
     }
 
     /* (non-Javadoc)
@@ -214,11 +238,20 @@
         if (other == this) {
             return true;
         }
-        if ((other instanceof RequestDetails) == false) {
+        if (!(other instanceof RequestDetails)) {
             return false;
         }
         RequestDetails rhs = ((RequestDetails) other);
-        return new EqualsBuilder().append(cloudConfiguration, rhs.cloudConfiguration).append(modelInfo, rhs.modelInfo).append(relatedInstanceList, rhs.relatedInstanceList).append(requestInfo, rhs.requestInfo).append(getRequestParameters(), rhs.getRequestParameters()).append(subscriberInfo, rhs.subscriberInfo).append(additionalProperties, rhs.additionalProperties).isEquals();
+        return new EqualsBuilder()
+                .append(cloudConfiguration, rhs.cloudConfiguration)
+                .append(modelInfo, rhs.modelInfo)
+                .append(relatedInstanceList, rhs.relatedInstanceList)
+                .append(requestInfo, rhs.requestInfo)
+                .append(getRequestParameters(), rhs.getRequestParameters())
+                .append(subscriberInfo, rhs.subscriberInfo)
+                .append(additionalProperties, rhs.additionalProperties)
+                .append(configurationParameters, rhs.configurationParameters)
+                .isEquals();
     }
 
     public RequestParameters getRequestParameters() {
diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js
index c55092e..fca5a7c 100644
--- a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js
+++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js
@@ -10,7 +10,7 @@
         vm.hasScheduler = !!VIDCONFIGURATION.SCHEDULER_PORTAL_URL;
         vm.configUpdatePatternError = "Invalid file type. Please select a file with a CSV extension.";
         vm.configUpdateContentError = "Invalid file structure.";
-        
+
         vm.wizardStep = 1;
         vm.nextStep = function(){
             vm.wizardStep++;
@@ -193,9 +193,10 @@
 			var result = {};
 			result.requestType = changeManagement.workflow;
 			var workflowType = changeManagement.workflow;
+			var configurationParameters = changeManagement.configurationParameters;
 			result.requestDetails = [];
 			_.forEach(changeManagement.vnfNames, function (vnf) {
-				
+
 				try{
 				var requestInfoData ={};
 				var requestParametersData ={};
@@ -203,13 +204,13 @@
                     return !item.scale;
                 });
 				if (vnf.availableVersions && vnf.availableVersions.length!=0){
-					
+
 					requestInfoData ={
 						source: vnf.availableVersions[0].requestInfo.source,
 						suppressRollback: vnf.availableVersions[0].requestInfo.suppressRollback,
 						requestorId: vnf.availableVersions[0].requestInfo.requestorId
 					}
-					
+
 					if(workflowType=='Update'){
 						requestParametersData = {
 							usePreload: vnf.availableVersions[0].requestParameters.usePreload
@@ -278,7 +279,8 @@
                         cloudConfiguration: vnf.cloudConfiguration,
                         requestInfo: requestInfoData,
                         relatedInstanceList: [],
-                        requestParameters:requestParametersData
+                        requestParameters:requestParametersData,
+                        configurationParameters: JSON.parse(configurationParameters)
                     };
                     requestInfoData.instanceName = vnf.name + "_" + (moduleToScale.currentCount + 1);
                 }else{
@@ -297,7 +299,8 @@
                         cloudConfiguration: vnf.cloudConfiguration,
                         requestInfo: requestInfoData,
                         relatedInstanceList: [],
-                        requestParameters:requestParametersData
+                        requestParameters:requestParametersData,
+                        configurationParameters: []
                     };
                 }
 
@@ -352,7 +355,6 @@
 			});
 			return JSON.stringify(result);
 		}
-		
         vm.openModal = function () {
             if(vm.hasScheduler) { //scheduling supported
 				$scope.widgetParameter = ""; // needed by the scheduler?
@@ -370,7 +372,7 @@
 					widgetData: vm.changeManagement,
 					widgetParameter: $scope.widgetParameter
 				};
-			
+
 				window.parent.postMessage(data, VIDCONFIGURATION.SCHEDULER_PORTAL_URL);
 			} else {
 				//no scheduling support
@@ -380,7 +382,9 @@
                     if(vm.changeManagement.workflow==="VNF Scale Out") {
                         dataToSo = JSON.parse(dataToSo);
                         dataToSo = {requestDetails: dataToSo.requestDetails[0]};
-                        changeManagementService.postChangeManagementScaleOutNow(dataToSo, vm.changeManagement.vnfNames[0]["service-instance-node"][0].properties["service-instance-id"], vm.changeManagement.vnfNames[0].id);
+                        changeManagementService.postChangeManagementScaleOutNow(dataToSo,
+                            vm.changeManagement.vnfNames[0]["service-instance-node"][0].properties["service-instance-id"],
+                            vm.changeManagement.vnfNames[0].id);
                     }else{
                         //TODO: foreach
                         var vnfName = vm.changeManagement.vnfNames[0].name;
@@ -649,7 +653,7 @@
         vm.isConfigUpdate = function () {
             return vm.changeManagement.workflow === COMPONENT.WORKFLOWS.vnfConfigUpdate;
         }
-		
+
         vm.isScaleOut = function () {
             return vm.changeManagement.workflow === COMPONENT.WORKFLOWS.vnfScaleOut;
         }
diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.html b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.html
index ec1d4cd..21f9c5d 100644
--- a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.html
+++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.html
@@ -58,6 +58,10 @@
                 <option value="" disabled>Select workflow</option>
             </select>
         </div>
+        <div class="form-group" ng-if="vm.isScaleOut()">
+            <label class="control-label">Configuration Parameters</label>
+            <input type="text" name="configurationParameters" ng-model="vm.changeManagement.configurationParameters" id="configuration-parameters" required>
+        </div>
         <div class="form-group" ng-if="vm.isConfigUpdate()">
             <label class="control-label">Attach configuration file</label>
             <div class="file-wrapper">
@@ -143,4 +147,4 @@
             <button ng-if="vm.isScaleOut() && vm.wizardStep === 1" ng-click="vm.nextStep();" type="button" id="next" name="next" class="btn btn-primary" data-ng-disabled="newChangeManagement.$invalid">Next</button>
         </div>
     </div>
-</form>
+</form>
\ No newline at end of file
diff --git a/vid-app-common/src/test/resources/WEB-INF/conf/system.properties b/vid-app-common/src/test/resources/WEB-INF/conf/system.properties
index 689f55e..bf0f826 100644
--- a/vid-app-common/src/test/resources/WEB-INF/conf/system.properties
+++ b/vid-app-common/src/test/resources/WEB-INF/conf/system.properties
@@ -154,7 +154,7 @@
 mso.restapi.vnf.instance=/serviceInstances/v5/<service_instance_id>/vnfs
 mso.restapi.vnf.changemanagement.instance=/serviceInstances/v5/<service_instance_id>/vnfs/<vnf_instance_id>/<request_type>
 mso.restapi.network.instance=/serviceInstances/v5/<service_instance_id>/networks
-mso.restapi.vf.module.instance=/serviceInstances/v5/<service_instance_id>/vnfs/<vnf_instance_id>/vfModules
+mso.restapi.vf.module.instance=/serviceInstantiation/v7/<service_instance_id>/vnfs/<vnf_instance_id>/vfModules/scaleOut
 mso.restapi.volume.group.instance=/serviceInstances/v5/<service_instance_id>/vnfs/<vnf_instance_id>/volumeGroups
 mso.restapi.get.orc.req=/orchestrationRequests/v5
 mso.restapi.get.orc.reqs=/orchestrationRequests/v5?
diff --git a/vid-app-common/src/test/resources/mso.properties b/vid-app-common/src/test/resources/mso.properties
index fcd20bd..d021ffd 100644
--- a/vid-app-common/src/test/resources/mso.properties
+++ b/vid-app-common/src/test/resources/mso.properties
@@ -6,7 +6,7 @@
 mso.restapi.svc.instance=/serviceInstances/v3
 mso.restapi.vnf.instance=/serviceInstances/v3/<service_instance_id>/vnfs
 mso.restapi.network.instance=/serviceInstances/v3/<service_instance_id>/networks
-mso.restapi.vf.module.instance=/serviceInstances/v3/<service_instance_id>/vnfs/<vnf_instance_id>/vfModules
+mso.restapi.vf.module.instance=/serviceInstantiation/v7/<service_instance_id>/vnfs/<vnf_instance_id>/vfModules/scaleOut
 mso.restapi.volume.group.instance=/serviceInstances/v3/<service_instance_id>/vnfs/<vnf_instance_id>/volumeGroups
 mso.restapi.configurations=/serviceInstances/v6/<service_instance_id>/configurations
 mso.restapi.get.orc.req=/orchestrationRequests/v3
diff --git a/vid-app-common/src/test/resources/payload_jsons/activateOperationalEnvironmentsPayloadToMso.json b/vid-app-common/src/test/resources/payload_jsons/activateOperationalEnvironmentsPayloadToMso.json
index 400a55f..7547410 100644
--- a/vid-app-common/src/test/resources/payload_jsons/activateOperationalEnvironmentsPayloadToMso.json
+++ b/vid-app-common/src/test/resources/payload_jsons/activateOperationalEnvironmentsPayloadToMso.json
@@ -5,6 +5,7 @@
       "source": "VID",
       "requestorId": "<userId>"
     },
+    "configurationParameters" : [ ],
     "relatedInstanceList": [
       {
         "relatedInstance": {
diff --git a/vid-app-common/src/test/resources/payload_jsons/deactivateOperationalEnvironmentsPayloadToMso.json b/vid-app-common/src/test/resources/payload_jsons/deactivateOperationalEnvironmentsPayloadToMso.json
index b9ff151..c50a66c 100644
--- a/vid-app-common/src/test/resources/payload_jsons/deactivateOperationalEnvironmentsPayloadToMso.json
+++ b/vid-app-common/src/test/resources/payload_jsons/deactivateOperationalEnvironmentsPayloadToMso.json
@@ -5,6 +5,7 @@
       "source": "VID",
       "requestorId": "<userId>"
     },
+    "configurationParameters" : [ ],
     "requestParameters": {
       "operationalEnvironmentType": "VNF"
     }