From 4a5c1dd02d87c31360efb32347a6656e8b29161e Mon Sep 17 00:00:00 2001 From: Amichai Hemli Date: Wed, 25 Dec 2019 08:52:07 +0200 Subject: rewrite message when timed out while waiting for MSO Issue-ID: VID-736 Signed-off-by: Amichai Hemli Change-Id: Ica18071db59c3b4453573a89b8451b343716f6ec --- .../webapp/app/vid/scripts/services/msoService.js | 1162 ++++++++++---------- .../integration/iFrames/commitDialog.e2e.ts | 89 ++ 2 files changed, 673 insertions(+), 578 deletions(-) create mode 100644 vid-webpack-master/cypress/integration/iFrames/commitDialog.e2e.ts diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/services/msoService.js b/vid-app-common/src/main/webapp/app/vid/scripts/services/msoService.js index ac6eeeac6..04a20f286 100755 --- a/vid-app-common/src/main/webapp/app/vid/scripts/services/msoService.js +++ b/vid-app-common/src/main/webapp/app/vid/scripts/services/msoService.js @@ -1,578 +1,584 @@ -/*- - * ============LICENSE_START======================================================= - * VID - * ================================================================================ - * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -"use strict"; - -var MsoService = function($http, $log, $q, PropertyService, AaiService, UtilityService, COMPONENT, FIELD, moment) { - - var _this = this; - - /* - * Common function to handle both create and delete instance requests - */ - var requestInstanceUpdate = function(request, successCallbackFunction) { - $log.debug("MsoService:requestInstanceUpdate: request:"); - $log.debug(request); - $http.post( "mso/" + request.url, { - requestDetails : request.requestDetails - }, { - timeout : PropertyService.getServerResponseTimeoutMsec() - }).then(successCallbackFunction)["catch"] - (UtilityService.runHttpErrorHandler); - }; - - var checkValidStatus = function(response) { - if (response.data.status < 200 || response.data.status > 202) { - throw { - type : FIELD.ID.MSO_FAILURE - }; - } - }; - - var addListEntry = function(name, value) { - var entry = '"' + name + '": '; - if (value === undefined) { - return entry + "undefined"; - } else { - return entry + '"' + value + '"'; - } - }; - - var buildPayloadForServiceActivateDeactivate = function (model, userId) { - var requestDetails = { - "modelInfo": { - "modelType": "service", - "modelInvariantId": model.service.invariantUuid, - "modelVersionId": model.service.uuid, - "modelName": model.service.name, - "modelVersion": model.service.version - }, - "requestInfo": { - "source": "VID", - "requestorId": userId - }, - "requestParameters": { - // aicZone was sent from here - "userParams": [] - } - }; - - $log.debug("Service Activate/Deactivate payload", requestDetails); - - return requestDetails; - - }; - - var buildPayloadForActivateFabricConfiguration = function (model, userId) { - var requestDetails = { - "modelInfo": { - "modelType": "service", - "modelInvariantId": model.service.invariantUuid, - "modelVersionId": model.service.uuid, - "modelName": model.service.name, - "modelVersion": model.service.version - }, - "requestInfo": { - "source": "VID", - "requestorId": userId - }, - "requestParameters": { - "aLaCarte": false - } - }; - - $log.debug("Service Activate Fabric Configuration payload", requestDetails); - - return requestDetails; - - }; - - var activateInstance = function(requestParams) { - var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId); - - return sendPostRequest(COMPONENT.MSO_ACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId), - requestDetails); - }; - - var deactivateInstance = function(requestParams) { - var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId); - - return sendPostRequest(COMPONENT.MSO_DEACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId), - requestDetails); - }; - - var sendPostRequestWithBody = function(url, requestBody) { - var deferred = $q.defer(); - if (url) { - $http.post(url, requestBody, { - timeout: PropertyService.getServerResponseTimeoutMsec() - }).success(function (response) { - deferred.resolve({data: response}); - }).error(function (data, status) { - deferred.reject({message: data, status: status}); - }); - } - - return deferred.promise; - }; - - var sendPostRequest = function(url, requestDetails) { - return sendPostRequestWithBody(url, {requestDetails: requestDetails}); - }; - - return { - createInstance : requestInstanceUpdate, - deleteInstance : requestInstanceUpdate, - createAndDeleteInstance: function(requestParams) { - return sendPostRequest("mso/" + requestParams.url, requestParams.requestDetails); - }, - getOrchestrationRequest : function(requestId, successCallbackFunction) { - $log.debug("MsoService:getOrchestrationRequest: requestId: " - + requestId); - $http.get( - "mso/mso_get_orch_req/" - + requestId + "?r=" + Math.random(), - { - timeout : PropertyService - .getServerResponseTimeoutMsec() - }).then(successCallbackFunction)["catch"] - (UtilityService.runHttpErrorHandler); - }, - getOrchestrationRequests : function(filterString, - successCallbackFunction) { - $log.debug("MsoService:getOrchestrationRequests: filterString: " - + filterString); - $http.get( - "mso/mso_get_orch_reqs/" - + encodeURIComponent(filterString) + "?r=" - + Math.random(), - { - timeout : PropertyService - .getServerResponseTimeoutMsec() - }).then(successCallbackFunction)["catch"] - (UtilityService.runHttpErrorHandler); - }, - getFormattedCommonResponse : function(response) { - return UtilityService.getCurrentTime() + " HTTP Status: " - + UtilityService.getHttpStatusText(response.data.status) - + "\n" + angular.toJson(response.data.entity, true); - - }, - checkValidStatus : checkValidStatus, - getFormattedGetOrchestrationRequestsResponse : function(response) { - UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity); - UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status); - checkValidStatus(response); - - var list = response.data.entity.requestList; - UtilityService.checkUndefined(FIELD.ID.REQUEST_LIST, list); - - var message = ""; - - for (var i = 0; i < list.length; i++) { - var request = list[i].request; - message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n"; - message += addListEntry(FIELD.ID.REQUEST_TYPE, request.requestType) - + ",\n"; - var status = request.requestStatus; - if (status === undefined) { - message += addListEntry(FIELD.ID.REQUEST_STATUS, undefined) + "\n"; - } else { - if(status.finishTime) { - message += addListEntry(FIELD.ID.TIMESTAMP, moment(new Date(status.finishTime)).format("ddd, DD MMM YYYY HH:mm:ss")) - + ",\n"; - } - message += addListEntry(FIELD.ID.REQUEST_STATE, status.requestState) - + ",\n"; - message += addListEntry(FIELD.ID.REQUEST_STATUS, - status.statusMessage) - + ",\n"; - message += addListEntry(FIELD.ID.PERCENT_PROGRESS, - status.percentProgress) - + "\n"; - } - if (i < (list.length - 1)) { - message += "\n"; - } - } - return message; - }, - getFormattedSingleGetOrchestrationRequestResponse : function (response) { - UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity); - UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status); - //checkValidStatus(response); - - var message = ""; - if (! (response && response.data && response.data.entity)) { - return message; - } - if ( UtilityService.hasContents (response.data.entity.request) ) { - var request = response.data.entity.request; - message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n"; - message += addListEntry(FIELD.ID.REQUEST_TYPE, request.requestType) - + ",\n"; - var status = request.requestStatus; - if (status === undefined) { - message += addListEntry(FIELD.ID.REQUEST_STATUS, undefined) + "\n"; - } else { - message += addListEntry(FIELD.ID.TIMESTAMP, moment(new Date()).format("ddd, DD MMM YYYY HH:mm:ss")) - + ",\n"; - message += addListEntry(FIELD.ID.REQUEST_STATE, status.requestState) - + ",\n"; - message += addListEntry(FIELD.ID.REQUEST_STATUS, - status.statusMessage) - + ",\n"; - message += addListEntry(FIELD.ID.PERCENT_PROGRESS, - status.percentProgress) - + "\n\n"; - } - } - else { - if (UtilityService.hasContents(response.data.status) && UtilityService.hasContents(response.data.entity)) { - message = this.getFormattedCommonResponse(response) + "\n"; - } - } - return message; - }, - getManualTasks : function(requestId) { - $log.debug("MsoService:getManualTasks: requestId: " - + requestId); - return $http.get( - "mso/mso_get_man_task/" + requestId, - { - timeout: PropertyService - .getServerResponseTimeoutMsec() - }) - .catch(UtilityService.runHttpErrorHandler); - }, - completeTask: function(taskId, taskToComplete) { - var promise = new Promise(function (resolve, reject) { - $log.debug("MsoService:completeTask: taskId: " - + taskId); - AaiService.getLoggedInUserID(function (response) { - var attuid = response.data; - var source = "VID"; - var data = { - requestDetails: { - requestInfo: { - source: source, - responseValue: taskToComplete, - requestorId: attuid - } - } - }; - - return $http.post( - "mso/mso_post_man_task/" + taskId, data, - { - timeout: PropertyService - .getServerResponseTimeoutMsec() - }).then(function (response) { - resolve(response); - }) - .catch(UtilityService.runHttpErrorHandler); - }, function () { - reject(); - }); - }); - - return promise; - }, - showResponseContentError : function(error, showFunction) { - switch (error.type) { - case "undefinedObject": - showFunction(FIELD.ERROR.SYSTEM_FAILURE, error.message); - break; - case "msoFailure": - showFunction(FIELD.ERROR.MSO, ""); - break; - default: - showFunction(FIELD.ERROR.SYSTEM_FAILURE); - } - }, - activateInstance: activateInstance, - deactivateInstance: deactivateInstance, - - - createConfigurationInstance: function(requestParams) { - - const modelInfoOf = function (instance) { - const modelInfo = { - "modelType": "vnf", - "modelInvariantId": instance.properties['model-invariant-id'], - "modelVersionId": instance.properties['model-version-id'], - "modelName": instance.properties['model-name'], - "modelVersion": instance.properties['model-version'], - "modelCustomizationId": instance.properties['model-customization-id'] - }; - - $log.debug("model info from instance", instance); - $log.debug("model info to model", modelInfo); - - return modelInfo; - }; - - var payload = { - "requestDetails": { - "modelInfo": { - "modelType": "configuration", - "modelInvariantId": requestParams.configurationModelInfo.modelInvariantId, - "modelVersionId": requestParams.configurationModelInfo.modelNameVersionId, - "modelName": requestParams.configurationModelInfo.modelName, // "Port Mirroring Configuration" - "modelVersion": requestParams.configurationModelInfo.modelVersion, - "modelCustomizationId": requestParams.configurationModelInfo.customizationUuid, - "modelCustomizationName": requestParams.configurationModelInfo.modelCustomizationName - }, - "cloudConfiguration": { - "lcpCloudRegionId": requestParams.portMirroringConfigFields.cloudRegionId, - "cloudOwner" : requestParams.portMirroringConfigFields.cloudOwner - }, - "requestInfo": { - "instanceName": requestParams.portMirroringConfigFields.instanceName.value, - "source": "VID", - "requestorId": requestParams.attuuid - }, - "relatedInstanceList": [ - { - "relatedInstance": { - "instanceId": requestParams.topServiceInstanceId, - "modelInfo": { - "modelType": "service", // relatedTopModelsInfo.modelType - "modelInvariantId": requestParams.relatedTopModelsInfo.modelInvariantId, - "modelVersionId": requestParams.relatedTopModelsInfo.modelNameVersionId, - "modelName": requestParams.relatedTopModelsInfo.modelName, - "modelVersion": requestParams.relatedTopModelsInfo.modelVersion - } - } - }, - { - "relatedInstance": { - "instanceId": requestParams.portMirroringConfigFields.sourceInstance.properties['vnf-id'], - "instanceDirection": "source", - "modelInfo": modelInfoOf(requestParams.portMirroringConfigFields.sourceInstance) - } - }, - { - "relatedInstance": requestParams.configurationByPolicy ? { - "instanceName": requestParams.portMirroringConfigFields.destinationInstance.properties['pnfName'], - "instanceDirection": "destination", - "modelInfo": { - "modelType": "pnf" - } - } : { - "instanceId": requestParams.portMirroringConfigFields.destinationInstance.properties['vnf-id'], - "instanceDirection": "destination", - "modelInfo": modelInfoOf(requestParams.portMirroringConfigFields.destinationInstance) - } - } - ], - "requestParameters": { - "userParams": [] - } - } - }; - - $log.debug("payload", payload); - - var deferred = $q.defer(); - $http.post([ - 'mso','mso_create_configuration_instance', - requestParams.topServiceInstanceId, - 'configurations','' - ].join(COMPONENT.FORWARD_SLASH), - payload) - .success(function (response) { - deferred.resolve({data : response}); - }).error(function (data, status) { - deferred.reject({message: data, status: status}); - }); - return deferred.promise; - }, - deleteConfiguration: function(requestParams, configuration) { - - var requestDetails = { - "modelInfo": requestParams.configurationModel, - "cloudConfiguration": { - "lcpCloudRegionId": configuration.configData.cloudRegionId - }, - "requestInfo": { - "source": "VID", - "requestorId": requestParams.userId - }, - "requestParameters": { - "userParams": [] - } - }; - - var url = "mso/mso_delete_configuration/" + requestParams.serviceInstanceId + "/configurations/" + requestParams.configurationId; - return sendPostRequest(url, requestDetails); - }, - toggleConfigurationStatus: function(requestParams, configuration) { - - var requestDetails = { - "modelInfo": requestParams.configurationModel, - "cloudConfiguration": { - "lcpCloudRegionId": configuration && configuration.configData ? configuration.configData.cloudRegionId : null - }, - "requestInfo": { - "source": "VID", - "requestorId": requestParams.userId - }, - "relatedInstanceList": [{ - "relatedInstance": { - "instanceId": requestParams.serviceInstanceId, - "modelInfo": requestParams.serviceModel - } - }], - "requestParameters": { - "userParams": [] - } - }; - - var url; - switch (requestParams.configStatus) { - case FIELD.STATUS.AAI_CREATED: - case FIELD.STATUS.AAI_INACTIVE: - url = "mso/mso_activate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId; - break; - case FIELD.STATUS.AAI_ACTIVE: - url = "mso/mso_deactivate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId; - break; - } - - return sendPostRequest(url, requestDetails); - }, - - togglePortStatus: function(requestParams, configuration, defaultParams) { - - var requestDetails = { - "modelInfo": requestParams.configurationModel, - "cloudConfiguration": { - "lcpCloudRegionId": configuration && configuration.configData ? configuration.configData.cloudRegionId : null - }, - "requestInfo": { - "source": "VID", - "requestorId": requestParams.userId - }, - "relatedInstanceList": [ - { - "relatedInstance": { - "instanceId": requestParams.serviceInstanceId, - "modelInfo": requestParams.serviceModel - } - }, - { - "relatedInstance": { - "instanceId": requestParams.portId, - "instanceDirection": "source", - "modelInfo": { - "modelType": "connectionPoint" - } - } - } - ] - }; - - var url; - switch (requestParams.portStatus) { - case FIELD.STATUS.AAI_ENABLED: - url = "mso/mso_disable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId; - break; - case FIELD.STATUS.AAI_DISABLED: - url = "mso/mso_enable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId; - break; - } - - return sendPostRequest(url, requestDetails); - }, - - buildPayloadForAssociateDissociate: function(serviceModelInfo, attuuid, instanceId, pnf) { - var payload = { - "modelInfo": { - "modelType": "service", - "modelInvariantId": serviceModelInfo.invariantUuid, - "modelVersionId": serviceModelInfo.uuid, - "modelName": serviceModelInfo.name, - "modelVersion": serviceModelInfo.version - }, - "requestInfo": { - "source": "VID", - "requestorId": attuuid - }, - "relatedInstanceList": [ - { - "relatedInstance": { - "instanceName": pnf, - "modelInfo": { - "modelType": "pnf" - } - } - }], - "requestParameters": { - "aLaCarte": true - } - }; - - $log.debug("payload", payload); - - return payload; - }, - associatePnf: function(requestParams) { - - var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.instanceId, requestParams.pnf); - return sendPostRequest([ - COMPONENT.MSO, COMPONENT.MSO_CREATE_REALATIONSHIP, - requestParams.instanceId, - '' - ].join(COMPONENT.FORWARD_SLASH), payload); - }, - dissociatePnf: function(requestParams) { - - var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.serviceInstanceId, requestParams.pnf); - - return sendPostRequest([ - COMPONENT.MSO, COMPONENT.MSO_REMOVE_RELATIONSHIP, - requestParams.serviceInstanceId, - '' - ].join(COMPONENT.FORWARD_SLASH), payload); - }, - activateFabricConfiguration: function(requestParams) { - var payload = buildPayloadForActivateFabricConfiguration(requestParams.model, requestParams.userId); - - var url = COMPONENT.MSO_ACTIVATE_FABRIC_CONFIGURATION_INSTANCE.replace('@serviceInstanceId', requestParams.serviceInstanceId); - return sendPostRequest(url, payload); - }, - deactivateAndCloudDelete : function (requestParams) { - var payload = { - tenantId: requestParams.tenantId, - lcpCloudRegionId: requestParams.lcpCloudRegionId, - userId: requestParams.userId - }; - - var url = COMPONENT.MSO_DEACTIVATE_AND_CLOUD_DELETE_INSTANCE.replace('@serviceInstanceId', requestParams.serviceInstanceId) - .replace('@vnfInstanceId', requestParams.vnfInstanceId) - .replace('@vfModuleInstanceId', requestParams.vfModuleInstanceId); - - return sendPostRequestWithBody(url, payload); - } - }; -}; - -appDS2.factory("MsoService", MsoService ); +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +"use strict"; + +var MsoService = function($http, $log, $q, PropertyService, AaiService, UtilityService, COMPONENT, FIELD, moment) { + + var _this = this; + + /* + * Common function to handle both create and delete instance requests + */ + var requestInstanceUpdate = function(request, successCallbackFunction) { + $log.debug("MsoService:requestInstanceUpdate: request:"); + $log.debug(request); + $http.post( "mso/" + request.url, { + requestDetails : request.requestDetails + }, { + timeout : PropertyService.getServerResponseTimeoutMsec() + }).then(successCallbackFunction)["catch"] + (UtilityService.runHttpErrorHandler); + }; + + var checkValidStatus = function(response) { + if (response.data.status < 200 || response.data.status > 202) { + throw { + type : FIELD.ID.MSO_FAILURE + }; + } + }; + + var addListEntry = function(name, value) { + var entry = '"' + name + '": '; + if (value === undefined) { + return entry + "undefined"; + } else { + return entry + '"' + value + '"'; + } + }; + + var buildPayloadForServiceActivateDeactivate = function (model, userId) { + var requestDetails = { + "modelInfo": { + "modelType": "service", + "modelInvariantId": model.service.invariantUuid, + "modelVersionId": model.service.uuid, + "modelName": model.service.name, + "modelVersion": model.service.version + }, + "requestInfo": { + "source": "VID", + "requestorId": userId + }, + "requestParameters": { + // aicZone was sent from here + "userParams": [] + } + }; + + $log.debug("Service Activate/Deactivate payload", requestDetails); + + return requestDetails; + + }; + + var buildPayloadForActivateFabricConfiguration = function (model, userId) { + var requestDetails = { + "modelInfo": { + "modelType": "service", + "modelInvariantId": model.service.invariantUuid, + "modelVersionId": model.service.uuid, + "modelName": model.service.name, + "modelVersion": model.service.version + }, + "requestInfo": { + "source": "VID", + "requestorId": userId + }, + "requestParameters": { + "aLaCarte": false + } + }; + + $log.debug("Service Activate Fabric Configuration payload", requestDetails); + + return requestDetails; + + }; + + var activateInstance = function(requestParams) { + var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId); + + return sendPostRequest(COMPONENT.MSO_ACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId), + requestDetails); + }; + + var deactivateInstance = function(requestParams) { + var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId); + + return sendPostRequest(COMPONENT.MSO_DEACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId), + requestDetails); + }; + + var sendPostRequestWithBody = function(url, requestBody) { + var deferred = $q.defer(); + if (url) { + $http.post(url, requestBody, { + timeout: PropertyService.getServerResponseTimeoutMsec() + }).success(function (response) { + deferred.resolve({data: response}); + }).error(function (data, status) { + deferred.reject({message: data, status: status}); + }); + } + + return deferred.promise; + }; + + var sendPostRequest = function(url, requestDetails) { + return sendPostRequestWithBody(url, {requestDetails: requestDetails}); + }; + + return { + createInstance : requestInstanceUpdate, + deleteInstance : requestInstanceUpdate, + createAndDeleteInstance: function(requestParams) { + return sendPostRequest("mso/" + requestParams.url, requestParams.requestDetails); + }, + getOrchestrationRequest : function(requestId, successCallbackFunction) { + $log.debug("MsoService:getOrchestrationRequest: requestId: " + + requestId); + $http.get( + "mso/mso_get_orch_req/" + + requestId + "?r=" + Math.random(), + { + timeout : PropertyService + .getServerResponseTimeoutMsec() + }).then(successCallbackFunction)["catch"] + (UtilityService.runHttpErrorHandler); + }, + getOrchestrationRequests : function(filterString, + successCallbackFunction) { + $log.debug("MsoService:getOrchestrationRequests: filterString: " + + filterString); + $http.get( + "mso/mso_get_orch_reqs/" + + encodeURIComponent(filterString) + "?r=" + + Math.random(), + { + timeout : PropertyService + .getServerResponseTimeoutMsec() + }).then(successCallbackFunction)["catch"] + (UtilityService.runHttpErrorHandler); + }, + getFormattedCommonResponse : function(response) { + if (response && response.data && response.data.status) { + return UtilityService.getCurrentTime() + " HTTP Status: " + + UtilityService.getHttpStatusText(response.data.status) + + "\n" + angular.toJson(response.data.entity, true); + } + else { + return UtilityService.getCurrentTime() + " HTTP Status: " + + "N/A\nVID has timed out waiting for an MSO response.\nPlease close this popup or refresh page."; + } + + }, + checkValidStatus : checkValidStatus, + getFormattedGetOrchestrationRequestsResponse : function(response) { + UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity); + UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status); + checkValidStatus(response); + + var list = response.data.entity.requestList; + UtilityService.checkUndefined(FIELD.ID.REQUEST_LIST, list); + + var message = ""; + + for (var i = 0; i < list.length; i++) { + var request = list[i].request; + message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n"; + message += addListEntry(FIELD.ID.REQUEST_TYPE, request.requestType) + + ",\n"; + var status = request.requestStatus; + if (status === undefined) { + message += addListEntry(FIELD.ID.REQUEST_STATUS, undefined) + "\n"; + } else { + if(status.finishTime) { + message += addListEntry(FIELD.ID.TIMESTAMP, moment(new Date(status.finishTime)).format("ddd, DD MMM YYYY HH:mm:ss")) + + ",\n"; + } + message += addListEntry(FIELD.ID.REQUEST_STATE, status.requestState) + + ",\n"; + message += addListEntry(FIELD.ID.REQUEST_STATUS, + status.statusMessage) + + ",\n"; + message += addListEntry(FIELD.ID.PERCENT_PROGRESS, + status.percentProgress) + + "\n"; + } + if (i < (list.length - 1)) { + message += "\n"; + } + } + return message; + }, + getFormattedSingleGetOrchestrationRequestResponse : function (response) { + UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity); + UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status); + //checkValidStatus(response); + + var message = ""; + if (! (response && response.data && response.data.entity)) { + return message; + } + if ( UtilityService.hasContents (response.data.entity.request) ) { + var request = response.data.entity.request; + message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n"; + message += addListEntry(FIELD.ID.REQUEST_TYPE, request.requestType) + + ",\n"; + var status = request.requestStatus; + if (status === undefined) { + message += addListEntry(FIELD.ID.REQUEST_STATUS, undefined) + "\n"; + } else { + message += addListEntry(FIELD.ID.TIMESTAMP, moment(new Date()).format("ddd, DD MMM YYYY HH:mm:ss")) + + ",\n"; + message += addListEntry(FIELD.ID.REQUEST_STATE, status.requestState) + + ",\n"; + message += addListEntry(FIELD.ID.REQUEST_STATUS, + status.statusMessage) + + ",\n"; + message += addListEntry(FIELD.ID.PERCENT_PROGRESS, + status.percentProgress) + + "\n\n"; + } + } + else { + if (UtilityService.hasContents(response.data.status) && UtilityService.hasContents(response.data.entity)) { + message = this.getFormattedCommonResponse(response) + "\n"; + } + } + return message; + }, + getManualTasks : function(requestId) { + $log.debug("MsoService:getManualTasks: requestId: " + + requestId); + return $http.get( + "mso/mso_get_man_task/" + requestId, + { + timeout: PropertyService + .getServerResponseTimeoutMsec() + }) + .catch(UtilityService.runHttpErrorHandler); + }, + completeTask: function(taskId, taskToComplete) { + var promise = new Promise(function (resolve, reject) { + $log.debug("MsoService:completeTask: taskId: " + + taskId); + AaiService.getLoggedInUserID(function (response) { + var attuid = response.data; + var source = "VID"; + var data = { + requestDetails: { + requestInfo: { + source: source, + responseValue: taskToComplete, + requestorId: attuid + } + } + }; + + return $http.post( + "mso/mso_post_man_task/" + taskId, data, + { + timeout: PropertyService + .getServerResponseTimeoutMsec() + }).then(function (response) { + resolve(response); + }) + .catch(UtilityService.runHttpErrorHandler); + }, function () { + reject(); + }); + }); + + return promise; + }, + showResponseContentError : function(error, showFunction) { + switch (error.type) { + case "undefinedObject": + showFunction(FIELD.ERROR.SYSTEM_FAILURE, error.message); + break; + case "msoFailure": + showFunction(FIELD.ERROR.MSO, ""); + break; + default: + showFunction(FIELD.ERROR.SYSTEM_FAILURE); + } + }, + activateInstance: activateInstance, + deactivateInstance: deactivateInstance, + + + createConfigurationInstance: function(requestParams) { + + const modelInfoOf = function (instance) { + const modelInfo = { + "modelType": "vnf", + "modelInvariantId": instance.properties['model-invariant-id'], + "modelVersionId": instance.properties['model-version-id'], + "modelName": instance.properties['model-name'], + "modelVersion": instance.properties['model-version'], + "modelCustomizationId": instance.properties['model-customization-id'] + }; + + $log.debug("model info from instance", instance); + $log.debug("model info to model", modelInfo); + + return modelInfo; + }; + + var payload = { + "requestDetails": { + "modelInfo": { + "modelType": "configuration", + "modelInvariantId": requestParams.configurationModelInfo.modelInvariantId, + "modelVersionId": requestParams.configurationModelInfo.modelNameVersionId, + "modelName": requestParams.configurationModelInfo.modelName, // "Port Mirroring Configuration" + "modelVersion": requestParams.configurationModelInfo.modelVersion, + "modelCustomizationId": requestParams.configurationModelInfo.customizationUuid, + "modelCustomizationName": requestParams.configurationModelInfo.modelCustomizationName + }, + "cloudConfiguration": { + "lcpCloudRegionId": requestParams.portMirroringConfigFields.cloudRegionId, + "cloudOwner" : requestParams.portMirroringConfigFields.cloudOwner + }, + "requestInfo": { + "instanceName": requestParams.portMirroringConfigFields.instanceName.value, + "source": "VID", + "requestorId": requestParams.attuuid + }, + "relatedInstanceList": [ + { + "relatedInstance": { + "instanceId": requestParams.topServiceInstanceId, + "modelInfo": { + "modelType": "service", // relatedTopModelsInfo.modelType + "modelInvariantId": requestParams.relatedTopModelsInfo.modelInvariantId, + "modelVersionId": requestParams.relatedTopModelsInfo.modelNameVersionId, + "modelName": requestParams.relatedTopModelsInfo.modelName, + "modelVersion": requestParams.relatedTopModelsInfo.modelVersion + } + } + }, + { + "relatedInstance": { + "instanceId": requestParams.portMirroringConfigFields.sourceInstance.properties['vnf-id'], + "instanceDirection": "source", + "modelInfo": modelInfoOf(requestParams.portMirroringConfigFields.sourceInstance) + } + }, + { + "relatedInstance": requestParams.configurationByPolicy ? { + "instanceName": requestParams.portMirroringConfigFields.destinationInstance.properties['pnfName'], + "instanceDirection": "destination", + "modelInfo": { + "modelType": "pnf" + } + } : { + "instanceId": requestParams.portMirroringConfigFields.destinationInstance.properties['vnf-id'], + "instanceDirection": "destination", + "modelInfo": modelInfoOf(requestParams.portMirroringConfigFields.destinationInstance) + } + } + ], + "requestParameters": { + "userParams": [] + } + } + }; + + $log.debug("payload", payload); + + var deferred = $q.defer(); + $http.post([ + 'mso','mso_create_configuration_instance', + requestParams.topServiceInstanceId, + 'configurations','' + ].join(COMPONENT.FORWARD_SLASH), + payload) + .success(function (response) { + deferred.resolve({data : response}); + }).error(function (data, status) { + deferred.reject({message: data, status: status}); + }); + return deferred.promise; + }, + deleteConfiguration: function(requestParams, configuration) { + + var requestDetails = { + "modelInfo": requestParams.configurationModel, + "cloudConfiguration": { + "lcpCloudRegionId": configuration.configData.cloudRegionId + }, + "requestInfo": { + "source": "VID", + "requestorId": requestParams.userId + }, + "requestParameters": { + "userParams": [] + } + }; + + var url = "mso/mso_delete_configuration/" + requestParams.serviceInstanceId + "/configurations/" + requestParams.configurationId; + return sendPostRequest(url, requestDetails); + }, + toggleConfigurationStatus: function(requestParams, configuration) { + + var requestDetails = { + "modelInfo": requestParams.configurationModel, + "cloudConfiguration": { + "lcpCloudRegionId": configuration && configuration.configData ? configuration.configData.cloudRegionId : null + }, + "requestInfo": { + "source": "VID", + "requestorId": requestParams.userId + }, + "relatedInstanceList": [{ + "relatedInstance": { + "instanceId": requestParams.serviceInstanceId, + "modelInfo": requestParams.serviceModel + } + }], + "requestParameters": { + "userParams": [] + } + }; + + var url; + switch (requestParams.configStatus) { + case FIELD.STATUS.AAI_CREATED: + case FIELD.STATUS.AAI_INACTIVE: + url = "mso/mso_activate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId; + break; + case FIELD.STATUS.AAI_ACTIVE: + url = "mso/mso_deactivate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId; + break; + } + + return sendPostRequest(url, requestDetails); + }, + + togglePortStatus: function(requestParams, configuration, defaultParams) { + + var requestDetails = { + "modelInfo": requestParams.configurationModel, + "cloudConfiguration": { + "lcpCloudRegionId": configuration && configuration.configData ? configuration.configData.cloudRegionId : null + }, + "requestInfo": { + "source": "VID", + "requestorId": requestParams.userId + }, + "relatedInstanceList": [ + { + "relatedInstance": { + "instanceId": requestParams.serviceInstanceId, + "modelInfo": requestParams.serviceModel + } + }, + { + "relatedInstance": { + "instanceId": requestParams.portId, + "instanceDirection": "source", + "modelInfo": { + "modelType": "connectionPoint" + } + } + } + ] + }; + + var url; + switch (requestParams.portStatus) { + case FIELD.STATUS.AAI_ENABLED: + url = "mso/mso_disable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId; + break; + case FIELD.STATUS.AAI_DISABLED: + url = "mso/mso_enable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId; + break; + } + + return sendPostRequest(url, requestDetails); + }, + + buildPayloadForAssociateDissociate: function(serviceModelInfo, attuuid, instanceId, pnf) { + var payload = { + "modelInfo": { + "modelType": "service", + "modelInvariantId": serviceModelInfo.invariantUuid, + "modelVersionId": serviceModelInfo.uuid, + "modelName": serviceModelInfo.name, + "modelVersion": serviceModelInfo.version + }, + "requestInfo": { + "source": "VID", + "requestorId": attuuid + }, + "relatedInstanceList": [ + { + "relatedInstance": { + "instanceName": pnf, + "modelInfo": { + "modelType": "pnf" + } + } + }], + "requestParameters": { + "aLaCarte": true + } + }; + + $log.debug("payload", payload); + + return payload; + }, + associatePnf: function(requestParams) { + + var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.instanceId, requestParams.pnf); + return sendPostRequest([ + COMPONENT.MSO, COMPONENT.MSO_CREATE_REALATIONSHIP, + requestParams.instanceId, + '' + ].join(COMPONENT.FORWARD_SLASH), payload); + }, + dissociatePnf: function(requestParams) { + + var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.serviceInstanceId, requestParams.pnf); + + return sendPostRequest([ + COMPONENT.MSO, COMPONENT.MSO_REMOVE_RELATIONSHIP, + requestParams.serviceInstanceId, + '' + ].join(COMPONENT.FORWARD_SLASH), payload); + }, + activateFabricConfiguration: function(requestParams) { + var payload = buildPayloadForActivateFabricConfiguration(requestParams.model, requestParams.userId); + + var url = COMPONENT.MSO_ACTIVATE_FABRIC_CONFIGURATION_INSTANCE.replace('@serviceInstanceId', requestParams.serviceInstanceId); + return sendPostRequest(url, payload); + }, + deactivateAndCloudDelete : function (requestParams) { + var payload = { + tenantId: requestParams.tenantId, + lcpCloudRegionId: requestParams.lcpCloudRegionId, + userId: requestParams.userId + }; + + var url = COMPONENT.MSO_DEACTIVATE_AND_CLOUD_DELETE_INSTANCE.replace('@serviceInstanceId', requestParams.serviceInstanceId) + .replace('@vnfInstanceId', requestParams.vnfInstanceId) + .replace('@vfModuleInstanceId', requestParams.vfModuleInstanceId); + + return sendPostRequestWithBody(url, payload); + } + }; +}; + +appDS2.factory("MsoService", MsoService ); diff --git a/vid-webpack-master/cypress/integration/iFrames/commitDialog.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/commitDialog.e2e.ts new file mode 100644 index 000000000..22f201aab --- /dev/null +++ b/vid-webpack-master/cypress/integration/iFrames/commitDialog.e2e.ts @@ -0,0 +1,89 @@ +/// +import {JsonBuilder} from '../../support/jsonBuilders/jsonBuilder'; +import {ServiceModel} from '../../support/jsonBuilders/models/service.model'; +import {AaiServiceInstancesModel} from '../../support/jsonBuilders/models/serviceInstances.model'; +import {AAISubDetailsModel} from '../../support/jsonBuilders/models/aaiSubDetails.model'; +import {AAISubViewEditModel} from '../../support/jsonBuilders/models/aaiSubViewEdit.model'; + +describe('MSO Commit dialog', function () { + + + let jsonBuilderAAIService: JsonBuilder = new JsonBuilder(); + let jsonBuilderAAISubViewEditModel: JsonBuilder = new JsonBuilder(); + let jsonBuilderAAISubDetailsModel: JsonBuilder = new JsonBuilder(); + let jsonBuilderAaiServiceInstances: JsonBuilder = new JsonBuilder(); + beforeEach(() => { + cy.readFile('cypress/support/jsonBuilders/mocks/jsons/defect710619/serviceE2E.json').then((res) => { + jsonBuilderAAIService.basicJson( + res, + Cypress.config('baseUrl') + "/rest/models/services/**", + 200, 0, + "service-complexService") + }); + + + cy.readFile('cypress/support/jsonBuilders/mocks/jsons/defect710619/aaiSubViewEditForServiceWithSomeVFModuleE2E.json').then((res) => { + jsonBuilderAAISubViewEditModel.basicJson( + res, + Cypress.config('baseUrl') + "/aai_sub_viewedit/**", + 200, + 0, + "aai-sub-view-edit") + }); + + cy.readFile('cypress/support/jsonBuilders/mocks/jsons/defect710619/aaiSubDetailsE2E.json').then((res) => { + jsonBuilderAAISubDetailsModel.basicJson( + res, + Cypress.config('baseUrl') + "/aai_sub_details/**", + 200, + 0, + "aai-sub-details") + }); + + cy.readFile('cypress/support/jsonBuilders/mocks/jsons/defect710619/aaiServiceInstancesE2E.json').then((res) => { + jsonBuilderAaiServiceInstances.basicJson( + res, + Cypress.config('baseUrl') + "/search_service_instances**", + 200, + 0, + "aai-get-service-instances") + }); + + cy.server().route({ + url: Cypress.config('baseUrl') + '/mso/mso_create_vfmodule_instance/dedd680f-f3bd-46d8-97c7-b6fc28db9317/vnfs/1d45e992-e282-4ba5-b17a-9ca6562169e3', + method: 'POST', + status: 200, + response: [], + }).as("actualResumeCall"); + + cy.initVidMock(); + + cy.initTenants(); + + cy.login(); + }); + + afterEach(() => { + cy.screenshot(); + }); + + it(`When showing the commit dialog and unexpected response - we don't have an http status therefor we display a proper message`, function () { + cy.visit('/serviceModels.htm#/instantiate?subscriberId=e433710f-9217-458d-a79d-1c7aff376d89&subscriberName=SILVIA ROBBINS&serviceType=TYLER%20SILVIA&serviceInstanceId=dedd680f-f3bd-46d8-97c7-b6fc28db9317&aaiModelVersionId=4b60252a-bf6c-40df-9db5-98b4c363fdf4&isPermitted=true').then(()=>{ + cy.wait('@service-complexService'); + checkResumeAndPopup("dpa2bccfx5992v_base_module","vfModuleTreeNode-assigned"); + }); + }); + + function checkResumeAndPopup(vfModuleName:string, vfModuleClassName:string) { + cy.get('div').find('.' + vfModuleClassName) + .getElementByDataTestsId('resumeVFModuleButton-' + vfModuleName).click().then(()=> { + cy.getElementByDataTestsId('lcpRegion').should('be.visible').select("option-irma-aic-hvf6") + .getElementByDataTestsId('tenant').should('be.visible').select("bae71557c5bb4d5aac6743a4e5f1d054"); + cy.getElementByDataTestsId('confirmResumeDeleteButton').not('.button--inactive').click().then(()=> { + cy.getElementByDataTestsId('msoCommitLog').contains('VID has timed out waiting for an MSO response'); + }); + }); + } + +}); + -- cgit 1.2.3-korg