diff options
Diffstat (limited to 'vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js')
-rw-r--r-- | vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.controller.js | 142 |
1 files changed, 110 insertions, 32 deletions
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 88caef29e..246834cdd 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 @@ -380,33 +380,80 @@ }); return JSON.stringify(result); } + + function getWorkflowParametersFromForm() { + let workflowParameters = + {requestDetails:{ + cloudConfiguration:{}, + requestParameters:{userParams:[{}]} + }}; + workflowParameters.requestDetails.cloudConfiguration = vm.changeManagement.vnfNames[0].cloudConfiguration; + + let parameters = vm.getRemoteWorkFlowParameters(vm.changeManagement.workflow); + parameters.forEach((parameter)=>{ + let inputField = document.getElementById('so-workflow-parameter-'+parameter.soFieldName); + workflowParameters.requestDetails.requestParameters.userParams[0][parameter.soFieldName]=inputField.value; + }); + + return workflowParameters; + } + vm.openModal = function () { if(vm.hasScheduler) { //scheduling supported - $scope.widgetParameter = ""; // needed by the scheduler? - - // properties needed by the scheduler so it knows whether to show - // policy or sniro related features on the scheduler UI or not. - vm.changeManagement.policyYN = "Y"; - vm.changeManagement.sniroYN = "Y"; - - if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_ADD_MSO_TESTAPI_FIELD)) { - vm.changeManagement.testApi = DataService.getMsoRequestParametersTestApi(); - } - var data = { - widgetName: 'Portal-Common-Scheduler', - widgetData: vm.changeManagement, - widgetParameter: $scope.widgetParameter - }; - - window.parent.postMessage(data, VIDCONFIGURATION.SCHEDULER_PORTAL_URL); + vm.scheduleWorkflow(); } else { - //no scheduling support - var dataToSo = extractChangeManagementCallbackDataStr(vm.changeManagement); - if(dataToSo) { - var vnfName = vm.changeManagement.vnfNames[0].name; - changeManagementService.postChangeManagementNow(dataToSo, vnfName); + //no scheduling support + vm.executeWorkflow(); + } + }; + + vm.scheduleWorkflow = function () { + $scope.widgetParameter = ""; // needed by the scheduler? + + // properties needed by the scheduler so it knows whether to show + // policy or sniro related features on the scheduler UI or not. + vm.changeManagement.policyYN = "Y"; + vm.changeManagement.sniroYN = "Y"; + + if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_ADD_MSO_TESTAPI_FIELD)) { + vm.changeManagement.testApi = DataService.getMsoRequestParametersTestApi(); + } + var data = { + widgetName: 'Portal-Common-Scheduler', + widgetData: vm.changeManagement, + widgetParameter: $scope.widgetParameter + }; + + window.parent.postMessage(data, VIDCONFIGURATION.SCHEDULER_PORTAL_URL); + }; + + vm.executeWorkflow = function () { + if (vm.localWorkflows && vm.localWorkflows.length > 0) { + vm.triggerLocalWorkflow(); + } else { + vm.triggerRemoteWorkflow(); + } + }; + + vm.triggerLocalWorkflow = function () { + var dataToSo = extractChangeManagementCallbackDataStr(vm.changeManagement); + if (dataToSo) { + var vnfName = vm.changeManagement.vnfNames[0].name; + changeManagementService.postChangeManagementNow(dataToSo, vnfName); + } + }; + + vm.triggerRemoteWorkflow = function () { + let cachedWorkflowDetails = vm.getCachedWorkflowDetails(vm.changeManagement.workflow); + if (cachedWorkflowDetails.length > 0) { + let workflowParameters = getWorkflowParametersFromForm(); + if (workflowParameters) { + let servieInstanceId = vm.changeManagement.vnfNames[0]['service-instance-node'][0].properties['service-instance-id']; + let vnfInstanceId = vm.changeManagement.vnfNames[0].id; + let workflow_UUID = cachedWorkflowDetails[0].id; + changeManagementService.postWorkflowsParametersNow(servieInstanceId, vnfInstanceId, workflow_UUID, workflowParameters); } - } + } }; vm.loadSubscribers = function () { @@ -660,8 +707,8 @@ }; vm.loadRemoteWorkFlows = function () { - let vnfNames = vm.changeManagement.vnfNames.map(vnfName => vnfName.name); - return changeManagementService.getSOWorkflows(vnfNames) + let vnfModelIDs = vm.changeManagement.vnfNames.map(vnfName => vnfName.modelVersionId); + return changeManagementService.getSOWorkflows(vnfModelIDs) .then(function (response) { vm.remoteWorkflows = response.data || []; }).catch(function (error) { @@ -699,13 +746,37 @@ }; vm.loadRemoteWorkFlowParameters = function (workflow) { - changeManagementService.getSOWorkflowParameter(workflow.id) - .then(function (response) { - vm.remoteWorkflowsParameters.set(workflow.name, response.data.parameterDefinitions); - }) - .catch(function (error) { - $log.error(error); - }); + let parameters = []; + workflow.workflowInputParameters + .filter( function (param) { + return param.soPayloadLocation === "userParams" + }) + .forEach(function (param) { + let workflowParams = vm.repackAttributes(param); + if (param.validation.length > 0) { + let validation = param.validation[0]; + if ('maxLength' in validation) { + workflowParams.maxLength = validation.maxLength; + } + if ('allowableChars' in validation) { + workflowParams.pattern = validation.allowableChars; + } + } + parameters.push(workflowParams); + } + ); + vm.remoteWorkflowsParameters.set(workflow.name, parameters); + }; + + vm.repackAttributes = function (workflowParam){ + return { + name: workflowParam.label, + required: workflowParam.required, + id: workflowParam.soFieldName, + soFieldName: workflowParam.soFieldName, + maxLength: '500', + pattern: '.*' + } }; vm.getRemoteWorkFlowParameters = function (workflow) { @@ -728,6 +799,13 @@ } }; + vm.getCachedWorkflowDetails = function (workflow) { + return vm.remoteWorkflows.filter( function (remoteWorkflow) { + return remoteWorkflow.name === workflow; + }); + + }; + //Must be $scope because we bind to the onchange of the html (cannot attached to vm variable). $scope.selectFileForVNFName = function (fileInput) { if (fileInput && fileInput.id) { |