X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=vid-app-common%2Fsrc%2Fmain%2Fwebapp%2Fapp%2Fvid%2Fscripts%2Fmodals%2Fnew-change-management%2Fnew-change-management.controller.js;h=d37bcb8c166430f8f873e8a1d697fbfaff57db42;hb=cd389fd8381b37db031b777791910fd4a062912c;hp=2444646fe5aa1358edb9ae4073ce26609846b8a7;hpb=80098ffa01c5a0f4dd5b99f41c31d51e9dc25762;p=vid.git 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 2444646fe..d37bcb8c1 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 @@ -7,8 +7,19 @@ function newChangeManagementModalController($uibModalInstance, $uibModal,$q, AaiService, changeManagementService, Upload, $log, $scope, _, COMPONENT, VIDCONFIGURATION) { var vm = this; + 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.controllers = VIDCONFIGURATION.SCALE_OUT_CONTROLLERS; + vm.wizardStep = 1; + vm.nextStep = function(){ + vm.wizardStep++; + $(".modal-dialog").animate({"width":"1200px"},400,'linear'); + }; + vm.prevStep = function(){ + vm.wizardStep--; + $(".modal-dialog").animate({"width":"600px"},400,'linear'); + }; vm.softwareVersionRegex = "[-a-zA-Z0-9\.]+"; @@ -49,6 +60,21 @@ _.each(response.data.vnfs, function (vnf) { if (newVNFName["invariant-id"] === vnf.invariantUuid) { availableVersions.push(extractVNFModel(vnf, response.data.service, newVNFName)); + + //for scale out screen + if(service.uuid === newVNFName["service-instance-node"][0].properties["model-version-id"]) { + newVNFName.vfModules = vnf.vfModules; + newVNFName.category = response.data.service.category; + newVNFName.groupModules = _.groupBy(newVNFName.vfModules, "customizationUuid"); + _.forEach(newVNFName.vfModules, function (mdl, key) { + mdl.scale = false; //defaults to not scale unless user changes it + if(mdl.properties && mdl.properties.max_vf_module_instances) { + mdl.scalable = mdl.properties.max_vf_module_instances.value - newVNFName.groupModules[mdl.customizationUuid].length > 0; + }else{ + mdl.scalable = false; + } + }); + } } }); var versions = _.uniqBy(availableVersions, 'modelInfo.modelVersion'); @@ -132,7 +158,7 @@ }; - /***converting objects to scheduler format (taken from IST)***/ + /***converting objects to scheduler format (taken from IST) - was altered for Scale out support ***/ function extractChangeManagementCallbackDataStr(changeManagement) { console.log(changeManagement); var result = {}; @@ -144,6 +170,9 @@ try{ var requestInfoData ={}; var requestParametersData ={}; + var moduleToScale = _.find(vnf.vfModules, function(key, item){ + return !item.scale; + }); if (vnf.availableVersions && vnf.availableVersions.length!=0){ requestInfoData ={ @@ -167,13 +196,30 @@ 'operations_timeout':changeManagement.operationTimeout }; requestParametersData = { - payload: JSON.stringify(payloadObj) + controllerType: changeManagement.controllerType, + payload: JSON.stringify(payloadObj) } }else if(workflowType=="VNF Config Update"){ requestParametersData = { payload: changeManagement.configUpdateFile } - } + }else if(workflowType=="VNF Scale Out"){ + if(!moduleToScale) return null; + + if(moduleToScale.userParams) { + requestParametersData = { + controllerType: changeManagement.controllerType, + userParams: moduleToScale.userParams + //,usePreload: true + } + }else{ + requestParametersData = { + controllerType: changeManagement.controllerType, + userParams: [] + //,usePreload: false + } + } + } $log.info('SchedulerWidgetCtrl:extractChangeManagementCallbackDataStr info:: workflowType '+ workflowType); $log.info('SchedulerWidgetCtrl:extractChangeManagementCallbackDataStr info:: requestParametersData '+ requestParametersData); @@ -190,25 +236,47 @@ requestParametersData = { payload: changeManagement.configUpdateFile } - } - - var data = { - vnfName: vnf.name, - vnfInstanceId: vnf.id, - modelInfo: { - modelType: 'vnf', - modelInvariantId: vnf.properties['model-invariant-id'], - modelVersionId: vnf.modelVersionId, - modelName: vnf.properties['vnf-name'], - modelVersion: vnf.version, - modelCustomizationName: vnf.properties['model-customization-name'], - modelCustomizationId: vnf.properties['model-customization-id'] - }, - cloudConfiguration: vnf.cloudConfiguration, - requestInfo: requestInfoData, - relatedInstanceList: [], - requestParameters:requestParametersData - }; + } + + + var data; + if(workflowType=="VNF Scale Out") { + var name = moduleToScale.modelCustomizationName.split('-')[0]; //example: vSAMP12..base..module-0 + name = name + "-" + vnf.groupModules[moduleToScale.customizationUuid].length; + + data = { + modelInfo: { + modelType: 'vfModule', + modelInvariantId: moduleToScale.invariantUuid, + modelName: name, + modelVersion: moduleToScale.version, + modelVersionId: moduleToScale.uuid + }, + cloudConfiguration: vnf.cloudConfiguration, + requestInfo: requestInfoData, + relatedInstanceList: [], + requestParameters:requestParametersData + } + requestInfoData.instanceName = vnf.name; + }else{ + data = { + vnfName: vnf.name, + vnfInstanceId: vnf.id, + modelInfo: { + modelType: 'vnf', + modelInvariantId: vnf.properties['model-invariant-id'], + modelVersionId: vnf.modelVersionId, + modelName: vnf.properties['vnf-name'], + modelVersion: vnf.version, + modelCustomizationName: vnf.properties['model-customization-name'], + modelCustomizationId: vnf.properties['model-customization-id'] + }, + cloudConfiguration: vnf.cloudConfiguration, + requestInfo: requestInfoData, + relatedInstanceList: [], + requestParameters:requestParametersData + } + } var serviceInstanceId = ''; _.forEach(vnf['service-instance-node'], function (instanceNode) { @@ -237,7 +305,22 @@ data.relatedInstanceList.push({relatedInstance: relatedInstance}); }); - } + if(workflowType=="VNF Scale Out") { + //push vnf to related as well as the service instance + var relatedInstance = { + instanceId: vnf.id, + modelInfo: { + modelCustomizationName: vnf.availableVersions[0].modelInfo.modelCustomizationName, + modelInvariantId: vnf.availableVersions[0].modelInfo.modelInvariantId, + modelName: vnf.availableVersions[0].modelInfo.modelName, + modelType: vnf.availableVersions[0].modelInfo.modelType, + modelVersion: vnf.availableVersions[0].modelInfo.modelVersion, + modelVersionId: vnf.availableVersions[0].modelInfo.modelVersionId + } + }; + data.relatedInstanceList.push({relatedInstance: relatedInstance}); + } + } }catch(err){ $log.error('SchedulerCtrl::extractChangeManagementCallbackDataStr error: ' + err); } @@ -248,7 +331,7 @@ } vm.openModal = function () { - if(VIDCONFIGURATION.SCHEDULER_PORTAL_URL) { //scheduling supported + if(vm.hasScheduler) { //scheduling supported $scope.widgetParameter = ""; // needed by the scheduler? // properties needed by the scheduler so it knows whether to show @@ -266,8 +349,18 @@ } else { //no scheduling support var dataToSo = extractChangeManagementCallbackDataStr(vm.changeManagement); - var vnfName = vm.changeManagement.vnfNames[0].name; - changeManagementService.postChangeManagementNow(dataToSo, vnfName); + if(dataToSo) { + + 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); + }else{ + //TODO: foreach + var vnfName = vm.changeManagement.vnfNames[0].name; + changeManagementService.postChangeManagementNow(dataToSo, vnfName); + } + } } }; @@ -525,11 +618,31 @@ vm.isConfigUpdate = function () { return vm.changeManagement.workflow === COMPONENT.WORKFLOWS.vnfConfigUpdate; } + + vm.isScaleOut = function () { + return vm.changeManagement.workflow === COMPONENT.WORKFLOWS.vnfScaleOut; + } vm.shouldShowVnfInPlaceFields = function () { return vm.changeManagement.workflow === COMPONENT.WORKFLOWS.vnfInPlace; }; + vm.setPreload = function (fileEl) { + var files = fileEl.files; + var file = files[0]; + var reader = new FileReader(); + + reader.onloadend = function(evt) { + if (evt.target.readyState === FileReader.DONE) { + $scope.$apply(function () { + $scope.moduleArr[0].userParams = JSON.parse(evt.target.result); + }); + } + }; + + reader.readAsText(file); + }; + init(); } })(); \ No newline at end of file