+ var vnfModelCustomizationUuid = null;\r
+ var vnfModel = null;\r
+ var vnfModelVersionId = null;\r
+\r
+ vnfModelVersionId = vnf.object[FIELD.ID.MODEL_VERSION_ID];\r
+ vnfModelCustomizationUuid = vnf.object[FIELD.ID.MODEL_CUSTOMIZATION_ID];\r
+\r
+ DataService.setModelInfo(COMPONENT.VOLUME_GROUP, {\r
+ "modelInvariantId": "",\r
+ "modelVersion": "",\r
+ "modelNameVersionId": "",\r
+ "modelCustomizationName": "",\r
+ "customizationUuid": "",\r
+ "modelName": "",\r
+ "inputs": ""\r
+ });\r
+\r
+ if ((!($scope.isObjectEmpty(svcModel))) && (!($scope.isObjectEmpty(svcModel.vnfs)))) {\r
+ if ((svcModel.isNewFlow) && (vnfModelCustomizationUuid != null)) {\r
+ vnfModel = svcModel.vnfs[vnfModelCustomizationUuid];\r
+ }\r
+ else {\r
+ vnfModel = svcModel.vnfs[vnfModelVersionId];\r
+ }\r
+ }\r
+\r
+\r
+ // volume groups don't have model-invariant-id/version in a&ai.\r
+ // Their model-invariant-id/version is the one for the associated vfModule\r
+\r
+ var vfModuleModelVersionId = vfModule.object[FIELD.ID.MODEL_VERSION_ID];\r
+ var vfModuleCustomizationUuid = vfModule.object[FIELD.ID.MODEL_CUSTOMIZATION_ID];\r
+ var volGroupModel = null;\r
+\r
+ if (!($scope.isObjectEmpty(vnfModel)) && !($scope.isObjectEmpty(vnfModel.volumeGroups))) {\r
+ if ((svcModel.isNewFlow) && (UtilityService.hasContents(vfModuleCustomizationUuid))) {\r
+ volGroupModel = vnfModel.volumeGroups[vfModuleCustomizationUuid];\r
+ }\r
+ else {\r
+ volGroupModel = vnfModel.volumeGroups[vfModuleModelVersionId];\r
+ }\r
+ if (!($scope.isObjectEmpty(volGroupModel))) {\r
+ DataService.setModelInfo(COMPONENT.VOLUME_GROUP, {\r
+ "modelInvariantId": volGroupModel.invariantUuid,\r
+ "modelVersion": volGroupModel.version,\r
+ "modelNameVersionId": volGroupModel.uuid,\r
+ "modelCustomizationName": volGroupModel.modelCustomizationName,\r
+ "customizationUuid": volGroupModel.customizationUuid,\r
+ "modelName": volGroupModel.name,\r
+ "inputs": ""\r
+ });\r
+\r
+ }\r
+ }\r
+ }\r
+\r
+ function setCurrentVolumeGroupModelInfoByVfModuleFromScope(vnf, volumeGroup) {\r
+ var svcModel = $scope.service.convertedModel;\r
+\r
+ var vnfModelCustomizationUuid = null;\r
+ var vnfModel = null;\r
+ var vnfModelVersionId = null;\r
+\r
+ vnfModelVersionId = vnf.object[FIELD.ID.MODEL_VERSION_ID];\r
+ vnfModelCustomizationUuid = vnf.object[FIELD.ID.MODEL_CUSTOMIZATION_ID];\r
+\r
+ DataService.setModelInfo(COMPONENT.VOLUME_GROUP, {\r
+ "modelInvariantId": "",\r
+ "modelVersion": "",\r
+ "modelNameVersionId": "",\r
+ "modelCustomizationName": "",\r
+ "customizationUuid": "",\r
+ "modelName": "",\r
+ "inputs": ""\r
+ });\r
+\r
+ if ((!($scope.isObjectEmpty(svcModel))) && (!($scope.isObjectEmpty(svcModel.vnfs)))) {\r
+ if ((svcModel.isNewFlow) && (vnfModelCustomizationUuid != null)) {\r
+ vnfModel = svcModel.vnfs[vnfModelCustomizationUuid];\r
+ }\r
+ else {\r
+ vnfModel = svcModel.vnfs[vnfModelVersionId];\r
+ }\r
+ }\r
+\r
+\r
+ // volume groups don't have model-invariant-id/version in a&ai.\r
+ // Their model-invariant-id/version is the one for the associated vfModule\r
+\r
+ var vfModuleModelVersionId = volumeGroup.object[FIELD.ID.VF_MODULE_MODEL_VERSION_ID];\r
+ var vfModuleCustomizationUuid = volumeGroup.object[FIELD.ID.VF_MODULE_MODEL_CUSTOMIZATION_ID];\r
+ var volGroupModel = null;\r
+ if ((!($scope.isObjectEmpty(vnfModel))) && (!($scope.isObjectEmpty(vnfModel.volumeGroups)))) {\r
+ if ((svcModel.isNewFlow) && (UtilityService.hasContents(vfModuleCustomizationUuid))) {\r
+ volGroupModel = vnfModel.volumeGroups[vfModuleCustomizationUuid];\r
+ }\r
+ else {\r
+ volGroupModel = vnfModel.volumeGroups[vfModuleModelVersionId];\r
+ }\r
+ if (!($scope.isObjectEmpty(volGroupModel))) {\r
+ DataService.setModelInfo(COMPONENT.VOLUME_GROUP, {\r
+ "modelInvariantId": volGroupModel.invariantUuid,\r
+ "modelVersion": volGroupModel.version,\r
+ "modelNameVersionId": volGroupModel.uuid,\r
+ "modelCustomizationName": volGroupModel.modelCustomizationName,\r
+ "customizationUuid": volGroupModel.customizationUuid,\r
+ "modelName": volGroupModel.name,\r
+ "inputs": ""\r
+ });\r
+\r
+ }\r
+ }\r
+ }\r
+\r
+ $scope.deleteVnf = function (serviceObject, vnf) {\r
+ console.log("Removing VNF " + vnf.name);\r
+\r
+ var serviceInstance = serviceObject.object;\r
+ var svcModel = $scope.service.convertedModel;\r
+ DataService.setInventoryItem(vnf.object);\r
+\r
+ /*var vnftype = vnf.object['vnf-type'];\r
+ if (vnftype == null)\r
+ vnftype = "";\r
+ else\r
+ {\r
+ var n = vnftype.search("/");\r
+ if (n >= 0)\r
+ vnftype = vnftype.substring(n+1);\r
+ }*/\r
+\r
+ var svcModel = $scope.service.convertedModel;\r
+ var vnfModelInvariantUuid = null;\r
+ var vnfModelVersion = null;\r
+ var vnfModelCustomizationUuid = null;\r
+ var vnfModel = null;\r
+ var vnfModelVersionId = null;\r
+\r
+ vnfModelInvariantUuid = vnf.object[FIELD.ID.MODEL_INVAR_ID];\r
+ vnfModelVersionId = vnf.object[FIELD.ID.MODEL_VERSION_ID];\r
+ vnfModelCustomizationUuid = vnf.object[FIELD.ID.MODEL_CUSTOMIZATION_ID];\r
+\r
+ DataService.setModelInfo(COMPONENT.VNF, {\r
+ "modelInvariantId": vnfModelInvariantUuid,\r
+ "modelVersion": "",\r
+ "modelNameVersionId": vnfModelVersionId,\r
+ "modelCustomizationName": "",\r
+ "customizationUuid": vnfModelCustomizationUuid,\r
+ "modelName": "",\r
+ "inputs": ""\r
+ });\r
+\r
+ if ((!($scope.isObjectEmpty(svcModel))) && (!($scope.isObjectEmpty(svcModel.vnfs)))) {\r
+ if ((svcModel.isNewFlow) && (vnfModelCustomizationUuid != null)) {\r
+ vnfModel = svcModel.vnfs[vnfModelCustomizationUuid];\r
+ }\r
+ else {\r
+ vnfModel = svcModel.vnfs[vnfModelVersionId];\r
+ }\r
+ //console.log ( "vnf models: "); console.log ( JSON.stringify ($scope.service.convertedModel.vnfs, null, 4) );\r
+ if (!($scope.isObjectEmpty(vnfModel))) {\r
+\r
+ DataService.setModelInfo(COMPONENT.VNF, {\r
+ "modelInvariantId": vnfModel.invariantUuid,\r
+ "modelVersion": vnfModel.version,\r
+ "modelNameVersionId": vnfModel.uuid,\r
+ "modelCustomizationName": vnfModel.modelCustomizationName,\r
+ "customizationUuid": vnfModel.customizationUuid,\r
+ "modelName": vnfModel.name,\r
+ "inputs": ""\r
+ });\r
+ }\r
+ }\r
+\r
+ DataService.setVnfInstanceId(vnf.object[FIELD.ID.VNF_ID]);\r
+\r
+ DataService.setSubscriberName(serviceObject[COMPONENT.SUBSCRIBER_NAME]);\r
+ DataService.setServiceType(serviceObject[COMPONENT.SERVICE_TYPE]);\r
+ DataService.setServiceInstanceId(serviceInstance[FIELD.ID.SERVICE_INSTANCE_ID]);\r
+\r
+ DataService.setGlobalCustomerId(serviceObject[FIELD.ID.GLOBAL_CUST_ID]);\r
+ DataService.setServiceInstanceName($scope.service.instance.name);\r
+\r
+ DataService.setServiceName($scope.service.model.service.name);\r
+\r
+ DataService.setServiceUuid($scope.service.model.service.uuid);\r
+\r
+ $scope.$broadcast(COMPONENT.DELETE_RESUME_COMPONENT, {\r
+ componentId: COMPONENT.VNF,\r
+ callbackFunction: deleteOrResumeCallback,\r
+ dialogMethod: COMPONENT.DELETE\r
+ });\r
+\r
+ };\r
+\r
+ $scope.deleteVolumeGroup = function (serviceObject, vnf, vfModule, volumeGroup) {\r
+\r
+ console.log("Removing Volume Group " + volumeGroup.name);\r
+ var haveModel = false;\r
+\r
+ var serviceInstance = serviceObject.object;\r
+\r
+ setCurrentVolumeGroupModelInfoFromScope(vnf, vfModule);\r
+\r
+ DataService.setInventoryItem(volumeGroup.object);\r
+\r
+ DataService.setSubscriberName(serviceObject[COMPONENT.SUBSCRIBER_NAME]);\r
+ DataService.setServiceType(serviceObject[COMPONENT.SERVICE_TYPE]);\r
+ DataService.setServiceInstanceId(serviceInstance[FIELD.ID.SERVICE_INSTANCE_ID]);\r
+\r
+ DataService.setGlobalCustomerId(serviceObject[FIELD.ID.GLOBAL_CUST_ID]);\r
+ DataService.setServiceInstanceName($scope.service.instance.name);\r
+\r
+ DataService.setServiceName($scope.service.model.service.name);\r
+\r
+ DataService.setServiceUuid($scope.service.model.service.uuid);\r
+ DataService.setVnfInstanceId(vnf.nodeId);\r
+ DataService.setVolumeGroupInstanceId(volumeGroup.nodeId);\r
+\r
+ $scope.$broadcast(COMPONENT.DELETE_RESUME_COMPONENT, {\r
+ componentId: COMPONENT.VOLUME_GROUP,\r
+ dialogMethod: COMPONENT.DELETE\r
+ });\r
+ };\r
+\r
+ $scope.deleteVnfVolumeGroup = function (serviceObject, vnf, volumeGroup) {\r
+\r
+ console.log("Removing Volume Group " + volumeGroup.name);\r
+ var serviceInstance = serviceObject.object;\r
+\r
+ DataService.setInventoryItem(volumeGroup.object);\r
+\r
+ var svcModel = $scope.service.convertedModel;\r
+\r
+ var vnfModelInvariantUuid = vnf.object[FIELD.ID.MODEL_INVAR_ID];\r
+ var vnfModelVersionId = vnf.object[FIELD.ID.MODEL_VERSION_ID];\r
+ var vnfModelCustomizationUuid = vnf.object[FIELD.ID.MODEL_CUSTOMIZATION_ID];\r
+\r
+ var volGroupModelInvariantUuid = volumeGroup.object[FIELD.ID.MODEL_INVAR_ID];\r
+ var volGroupModelVersionId = volumeGroup.object[FIELD.ID.MODEL_VERSION_ID];\r
+ var volGroupModelCustomizationUuid = volumeGroup.object[FIELD.ID.MODEL_CUSTOMIZATION_ID];\r
+\r
+ var vnfModel = null;\r
+ var volGroupModel = null;\r
+\r
+ // send an empty model by default since model is not required for deletes\r
+ DataService.setModelInfo(COMPONENT.VOLUME_GROUP, {});\r
+\r
+ if (svcModel.isNewFlow) {\r
+ vnfModel = svcModel.vnfs[vnfModelCustomizationUuid];\r
+ if (UtilityService.hasContents(volGroupModelCustomizationUuid)) {\r
+ volGroupModel = vnfModel.volumeGroups[volGroupModelCustomizationUuid];\r
+ }\r
+ }\r
+ else {\r
+\r
+ vnfModel = svcModel.vnfs[vnfModelVersionId];\r
+ if (UtilityService.hasContents(volGroupModelVersionId)) {\r
+ volGroupModel = vnfModel.volumeGroups[volGroupModelVersionId];\r
+ }\r
+ }\r
+ if (!($scope.isObjectEmpty(volGroupModel))) {\r
+ DataService.setModelInfo(COMPONENT.VOLUME_GROUP, {\r
+ "modelInvariantId": volGroupModel.invariantUuid,\r
+ "modelVersion": volGroupModel.version,\r
+ "modelNameVersionId": volGroupModel.uuid,\r
+ "modelName": volGroupModel.name,\r
+ "modelCustomizationName": volGroupModel.modelCustomizationName,\r
+ "customizationUuid": volGroupModel.customizationUuid,\r
+ "inputs": ""\r
+ });\r
+ }\r
+\r
+ DataService.setVnfInstanceId(vnf.object[FIELD.ID.VNF_ID]);\r
+\r
+ DataService.setSubscriberName(serviceObject[COMPONENT.SUBSCRIBER_NAME]);\r
+ DataService.setServiceType(serviceObject[COMPONENT.SERVICE_TYPE]);\r
+ DataService.setServiceInstanceId(serviceInstance[FIELD.ID.SERVICE_INSTANCE_ID]);\r
+\r
+ DataService.setGlobalCustomerId(serviceObject[FIELD.ID.GLOBAL_CUST_ID]);\r
+ DataService.setServiceInstanceName($scope.service.instance.name);\r
+\r
+ DataService.setServiceName($scope.service.model.service.name);\r
+\r
+ DataService.setServiceUuid($scope.service.model.service.uuid);\r
+ DataService.setVnfInstanceId(vnf.nodeId);\r
+ DataService.setVolumeGroupInstanceId(volumeGroup.nodeId);\r
+\r
+ $scope.$broadcast(COMPONENT.DELETE_RESUME_COMPONENT, {\r
+ componentId: COMPONENT.VOLUME_GROUP,\r
+ callbackFunction: deleteOrResumeCallback,\r
+ dialogMethod: COMPONENT.DELETE\r
+ });\r
+ };\r
+\r
+ $scope.describeNetwork = function (serviceObject, networkObject) {\r
+ var serviceInstance = serviceObject.object;\r
+ var network = networkObject.object;\r
+ //console.log ("networkObject="); console.log (JSON.stringify(networkObject, null, 4));\r
+\r
+ DataService.setResCustomizationUuid(" ");\r
+\r
+ setCurrentServiceModelInfoFromScope();\r
+ setCurrentNetworkModelInfoFromScope(networkObject);\r
+\r
+ DataService.setNetworkInstanceId(network[FIELD.ID.NETWORK_ID]);\r
+ DataService.setInventoryItem(networkObject);\r
+ DataService.setSubscriberName(serviceObject.subscriberName);\r
+ DataService.setServiceType(serviceObject[COMPONENT.SERVICE_TYPE]);\r
+ DataService.setServiceInstanceId(serviceInstance[FIELD.ID.SERVICE_INSTANCE_ID]);\r
+\r
+ $scope.$broadcast(COMPONENT.SHOW_COMPONENT_DETAILS, {\r
+ componentId: COMPONENT.NETWORK\r
+ });\r
+ };\r
+\r
+ // for service instance id - no need for this!\r
+ $scope.describeService = function (serviceObject) {\r
+ var serviceInstance = serviceObject.object;\r
+ setCurrentServiceModelInfoFromScope();\r
+\r
+ DataService.setInventoryItem(serviceInstance);\r
+ //DataService.setModelInfo(serviceInstance['service-instance-id'], serviceInstance);\r
+\r
+ DataService.setSubscriberName(serviceObject[COMPONENT.SUBSCRIBER_NAME]);\r
+ DataService.setServiceType(serviceObject[COMPONENT.SERVICE_TYPE]);\r
+ DataService.setServiceInstanceId(serviceInstance[FIELD.ID.SERVICE_INSTANCE_ID]);\r
+\r
+ //Display popup with additional service information\r
+ $scope.$broadcast(COMPONENT.SHOW_COMPONENT_DETAILS, {\r
+ componentId: COMPONENT.SERVICE\r
+ });\r
+\r
+ };\r
+\r
+ $scope.describeVfModule = function (serviceObject, vfModuleObject, vnf) {\r
+ var serviceInstance = serviceObject.object;\r
+ var vfModule = vfModuleObject.object;\r
+\r
+ /*var vfModuleInvariantUuid = vfModule[FIELD.ID.MODEL_INVAR_ID];\r
+ var vfModuleModelVersionId = vfModule[FIELD.ID.MODEL_VERSION_ID];*/\r
+ var vfModuleCustomizationUuid = vfModule[FIELD.ID.MODEL_CUSTOMIZATION_ID];\r
+\r
+ setCurrentServiceModelInfoFromScope();\r
+ setCurrentVfModuleModelInfoFromScope(vnf, vfModuleObject);\r
+\r
+ DataService.setCustomizationUuid(" ");\r
+ if (UtilityService.hasContents(vfModuleCustomizationUuid)) {\r
+ DataService.setCustomizationUuid(vfModuleCustomizationUuid);\r
+ }\r
+\r
+ //Display popup with additional VF-Module information\r
+ DataService.setVfModuleInstanceId(vfModule[FIELD.ID.VF_MODULE_ID]);\r
+ DataService.setInventoryItem(vfModule)\r
+\r
+ DataService.setSubscriberName(serviceObject[COMPONENT.SUBSCRIBER_NAME]);\r
+ DataService.setServiceType(serviceObject[COMPONENT.SERVICE_TYPE]);\r
+ DataService.setServiceInstanceId(serviceInstance[FIELD.ID.SERVICE_INSTANCE_ID]);\r
+\r
+ $scope.$broadcast(COMPONENT.SHOW_COMPONENT_DETAILS, {\r
+ componentId: COMPONENT.VF_MODULE\r
+ });\r
+ };\r
+\r
+ $scope.getStatusOfVnf = function (serviceObject, vnfObject) {\r
+ var serviceInstance = serviceObject.object;\r
+ var vnf = vnfObject.object;\r
+\r
+ DataService.setVnfInstanceId(vnf[FIELD.ID.VNF_ID]);\r
+ DataService.setInventoryItem(vnf);\r
+\r
+ DataService.setSubscriberName(serviceObject[COMPONENT.SUBSCRIBER_NAME]);\r
+ DataService.setServiceType(serviceObject[COMPONENT.SERVICE_TYPE]);\r
+ DataService.setServiceInstanceId(serviceInstance[FIELD.ID.SERVICE_INSTANCE_ID]);\r
+ DataService.setServiceInstanceName(serviceInstance[FIELD.ID.SERVICE_INSTANCE_NAME]);\r
+\r
+ $scope.$broadcast(COMPONENT.COMPONENT_STATUS, {\r
+ componentId: COMPONENT.VNF,\r
+ callbackFunction: updateProvStatusVnfCallbackFunction\r
+ });\r
+ };\r
+\r
+ $scope.describeVnf = function (serviceObject, vnfObject) {\r
+ var serviceInstance = serviceObject.object;\r
+ var vnf = vnfObject.object;\r
+ DataService.setResCustomizationUuid(" ");\r
+\r
+ //var vnfInvariantUuid = vnf[FIELD.ID.MODEL_INVAR_ID];\r
+ //var vnfVersionId = vnf[FIELD.ID.MODEL_VERSION_ID];\r
+ var vnfCustomizationUuid = vnf[FIELD.ID.MODEL_CUSTOMIZATION_ID];\r
+\r
+ if (UtilityService.hasContents(vnfCustomizationUuid)) {\r
+ DataService.setResCustomizationUuid(vnfCustomizationUuid);\r
+ }\r
+\r
+ setCurrentServiceModelInfoFromScope();\r
+ setCurrentVNFModelInfo(vnfObject);\r
+\r
+ //Display popup with additional VNF information\r
+ DataService.setVnfInstanceId(vnf[FIELD.ID.VNF_ID]);\r
+ DataService.setInventoryItem(vnf);\r
+\r
+ DataService.setSubscriberName(serviceObject[COMPONENT.SUBSCRIBER_NAME]);\r
+ DataService.setServiceType(serviceObject[COMPONENT.SERVICE_TYPE]);\r
+ DataService.setServiceInstanceId(serviceInstance[FIELD.ID.SERVICE_INSTANCE_ID]);\r
+\r
+ $scope.$broadcast(COMPONENT.SHOW_COMPONENT_DETAILS, {\r
+ componentId: COMPONENT.VNF\r
+ });\r
+ };\r
+\r
+ $scope.describeVolumeGroup = function (serviceObject, vnf, volumeGroupObject) {\r
+\r
+ var serviceInstance = serviceObject.object;\r
+ var volumeGroup = volumeGroupObject.object;\r
+\r
+ var volGroupCustomizationUuid = volumeGroup[FIELD.ID.MODEL_CUSTOMIZATION_ID];\r
+\r
+ setCurrentServiceModelInfoFromScope();\r
+ setCurrentVolumeGroupModelInfoByVfModuleFromScope(vnf, volumeGroupObject);\r
+\r
+ DataService.setCustomizationUuid(" ");\r
+ if (UtilityService.hasContents(volGroupCustomizationUuid)) {\r
+ DataService.setCustomizationUuid(volGroupCustomizationUuid);\r
+ }\r
+ DataService.setVolumeGroupInstanceId(volumeGroup[FIELD.ID.VOLUME_GROUP_ID]);\r
+ DataService.setInventoryItem(volumeGroup);\r
+\r
+ DataService.setSubscriberName(serviceObject[COMPONENT.SUBSCRIBER_NAME]);\r
+ DataService.setServiceType(serviceObject[COMPONENT.SERVICE_TYPE]);\r
+ DataService.setServiceInstanceId(serviceInstance[FIELD.ID.SERVICE_INSTANCE_ID]);\r
+\r
+\r
+ $scope.$broadcast(COMPONENT.SHOW_COMPONENT_DETAILS, {\r
+ componentId: COMPONENT.VOLUME_GROUP\r
+ });\r
+ };\r
+\r
+ $scope.addNetworkInstance = function (netModel, existingVnfs) {\r
+\r
+ // For networks we assume that we always follow the new flow\r
+ console.log("Adding network to service instance" + this.service.instance.name);\r
+ if (VIDCONFIGURATION.VNF_STATUS_CHECK_ENABLED && (UtilityService.hasContents(existingVnfs)) && (existingVnfs.length > 0)) {\r
+ var msg = VnfService.isVnfListStatusValid(existingVnfs);\r
+ if (msg != "") {\r
+ alert(msg);\r
+ return;\r
+ }\r
+ }\r
+\r
+ DataService.setSubscriberName($scope.service.instance.subscriberName);\r
+ DataService.setGlobalCustomerId($scope.service.instance.globalCustomerId);\r
+ DataService.setServiceType($scope.service.instance.serviceType);\r
+ DataService.setServiceInstanceName($scope.service.instance.name);\r
+ DataService.setServiceInstanceId($scope.service.instance.id);\r
+ DataService.setServiceName($scope.service.model.service.name);\r
+\r
+ DataService.setModelInfo(COMPONENT.NETWORK, {\r
+ "modelType": "network",\r
+ "modelInvariantId": netModel.invariantUuid,\r
+ "modelVersion": netModel.version,\r
+ "modelNameVersionId": netModel.uuid,\r
+ "modelName": netModel.name,\r
+ "modelCustomizationName": netModel.modelCustomizationName,\r
+ "customizationUuid": netModel.customizationUuid,\r
+ "inputs": "",\r
+ "displayInputs": netModel.displayInputs\r
+ });\r
+ setCurrentServiceModelInfoFromScope();\r
+\r
+\r
+ $scope.$broadcast(COMPONENT.CREATE_COMPONENT, {\r
+ componentId: COMPONENT.NETWORK,\r
+ callbackFunction: createVnfCallbackFunction\r
+ });\r
+ };\r
+\r
+ $scope.addVnfInstance = function (vnf, existingVnfs) {\r
+\r
+ if (VIDCONFIGURATION.VNF_STATUS_CHECK_ENABLED && (UtilityService.hasContents(existingVnfs)) && (existingVnfs.length > 0)) {\r
+ var msg = VnfService.isVnfListStatusValid(existingVnfs);\r
+ if (msg != "") {\r
+ alert(msg);\r
+ return;\r
+ }\r
+ }\r
+\r
+ var isVfc = false;\r
+\r
+ _.map($scope.service.model.vnfs, function (value, key) {\r
+ if (value.uuid == vnf.uuid) {\r
+ if (!_.isEmpty(value.vfcInstanceGroups)) {\r
+ isVfc = true;\r
+ var queryData = {\r
+ serviceModelId: $scope.service.model.service.uuid,\r
+ serviceInstanceID: $scope.service.instance.id,\r
+ globalCustomerId: $scope.service.instance.globalCustomerId,\r
+ serviceType: $scope.service.instance.serviceType,\r
+ serviceInstanceName: $scope.service.instance.name,\r
+ modelCustomizationName: value.modelCustomizationName,\r
+ modelCustomizationId: value.customizationUuid,\r
+ subscriberName: $scope.service.instance.subscriberName\r
+ };\r
+\r
+ $scope.$broadcast(COMPONENT.IFRAME_DIALOG, queryData);\r
+ return;\r
+ }\r
+ }\r
+ });\r
+\r
+ DataService.setSubscriberName($scope.service.instance.subscriberName);\r
+ DataService.setGlobalCustomerId($scope.service.instance.globalCustomerId);\r
+ DataService.setServiceType($scope.service.instance.serviceType);\r
+ DataService.setServiceInstanceName($scope.service.instance.name);\r
+ DataService.setServiceInstanceId($scope.service.instance.id);\r
+ DataService.setServiceName($scope.service.model.service.name);\r
+\r
+ console.log("existingVnfs: ");\r
+ console.log(JSON.stringify(existingVnfs, null, 4));\r
+ console.log("existingVnfs: ");\r
+ console.log(JSON.stringify(existingVnfs, null, 4));\r
+ var vnf_type = "";\r
+ var vnf_role = "";\r
+ var vnf_function = "";\r
+ var vnf_code = "";\r
+\r
+ if (UtilityService.hasContents(vnf.nfType)) {\r
+ vnf_type = vnf.nfType;\r
+ }\r
+ if (UtilityService.hasContents(vnf.nfRole)) {\r
+ vnf_role = vnf.nfRole;\r
+ }\r
+ if (UtilityService.hasContents(vnf.nfFunction)) {\r
+ vnf_function = vnf.nfFunction;\r
+ }\r
+ if (UtilityService.hasContents(vnf.nfCode)) {\r
+ vnf_code = vnf.nfCode;\r
+ }\r
+ DataService.setModelInfo(COMPONENT.VNF, {\r
+ "modelType": vnf.isPnf ? "pnf" : "vnf",\r
+ "modelInvariantId": vnf.invariantUuid,\r
+ "modelVersion": vnf.version,\r
+ "modelNameVersionId": vnf.uuid,\r
+ "modelName": vnf.name,\r
+ "modelCustomizationName": vnf.modelCustomizationName,\r
+ "customizationUuid": vnf.customizationUuid,\r
+ "inputs": "",\r
+ "displayInputs": vnf.displayInputs,\r
+ "vnfType": vnf_type,\r
+ "vnfRole": vnf_role,\r
+ "vnfFunction": vnf_function,\r
+ "vnfCode": vnf_code,\r
+ "properties": vnf.properties\r
+ });\r
+\r
+ DataService.setModelInstanceName($scope.service.model.service.name);\r
+ setCurrentServiceModelInfoFromScope();\r
+\r
+ if (vnf.isConfig) {\r
+ DataService.setServiceProxies($scope.service.model.serviceProxies);\r
+ DataService.setSourceServiceProxies(vnf.sourceNodes);\r
+ DataService.setCollectorServiceProxies(vnf.collectorNodes);\r
+ DataService.setConfigurationByPolicy(vnf.isConfigurationByPolicy);\r
+ $location.path("/addNetworkNode");\r
+ } else if (vnf.isPnf) {\r
+ $location.path("/pnfSearchAssociation");\r
+ } else if (isVfc) {\r
+ //do nothing\r
+ } else {\r
+ $scope.$broadcast(COMPONENT.CREATE_COMPONENT, {\r
+ componentId: COMPONENT.VNF,\r
+ callbackFunction: createVnfCallbackFunction\r
+ });\r
+ }\r
+ };\r
+\r
+ $scope.addVfModuleInstance = function (vnfInstance, vfModuleModel) {\r
+\r
+ if (VIDCONFIGURATION.VNF_STATUS_CHECK_ENABLED) {\r
+ var msg = VnfService.isVnfStatusValid(vnfInstance);\r
+ if (msg != "") {\r
+ alert(msg);\r
+ return;\r
+ }\r
+\r
+ }\r
+ var svcModel = $scope.service.convertedModel;\r
+ DataService.setSubscriberName($scope.service.instance.subscriberName);\r
+ DataService.setGlobalCustomerId($scope.service.instance.globalCustomerId);\r
+ DataService.setServiceType($scope.service.instance.serviceType);\r
+ DataService.setServiceInstanceName($scope.service.instance.name);\r
+ DataService.setServiceInstanceId($scope.service.instance.id);\r
+ DataService.setServiceName($scope.service.model.service.name);\r
+\r
+ var vnfModelInvariantUuid = vnfInstance.object[FIELD.ID.MODEL_INVAR_ID];\r
+ var vnfModelVersionId = vnfInstance.object[FIELD.ID.MODEL_VERSION_ID];\r
+ var vnfModelCustomizationUuid = vnfInstance.object[FIELD.ID.MODEL_CUSTOMIZATION_ID];\r
+ var vnfModel = null;\r
+ if (svcModel.isNewFlow) {\r
+ vnfModel = svcModel.vnfs[vnfModelCustomizationUuid];\r
+ }\r
+ else {\r
+ vnfModel = svcModel.vnfs[vnfModelVersionId];\r
+ }\r
+\r
+ var availableVolumeGroupList = [];\r
+ angular.forEach(vnfInstance[FIELD.ID.AVAILABLEVOLUMEGROUPS], function (volumeGroupInstance, key) {\r
+ availableVolumeGroupList.push({"instance": volumeGroupInstance});\r
+ });\r
+\r
+ DataService.setAvailableVolumeGroupList(availableVolumeGroupList);\r
+ setCurrentServiceModelInfoFromScope();\r
+\r
+ DataService.setVnfInstanceId(vnfInstance.object[FIELD.ID.VNF_ID]);\r
+\r
+ DataService.setModelInfo(COMPONENT.VNF, {\r
+ "modelInvariantId": vnfModel.invariantUuid,\r
+ "modelVersion": vnfModel.version,\r
+ "modelNameVersionId": vnfModel.uuid,\r
+ "modelName": vnfModel.name,\r
+ "modelCustomizationName": vnfModel.modelCustomizationName,\r
+ "customizationUuid": vnfModel.customizationUuid,\r
+ "inputs": ""\r
+ });\r
+\r
+ DataService.setModelInfo(COMPONENT.VF_MODULE, {\r
+ "modelInvariantId": vfModuleModel.invariantUuid,\r
+ "modelVersion": vfModuleModel.version,\r
+ "modelNameVersionId": vfModuleModel.uuid,\r
+ "customizationUuid": vfModuleModel.customizationUuid,\r
+ "modelCustomizationName": vfModuleModel.modelCustomizationName,\r
+ "modelName": vfModuleModel.name,\r
+ "inputs": ""\r
+ });\r
+\r
+ $scope.$broadcast(COMPONENT.CREATE_COMPONENT, {\r
+ componentId: COMPONENT.VF_MODULE,\r
+ callbackFunction: createVfModuleCallbackFunction\r
+ });\r
+\r
+ };\r
+\r
+ $scope.addVolumeGroupInstance = function (vnfInstance, volumeGroupModel) {\r
+ if (VIDCONFIGURATION.VNF_STATUS_CHECK_ENABLED) {\r
+ var msg = VnfService.isVnfStatusValid(vnfInstance);\r
+ if (msg != "") {\r
+ alert(msg);\r
+ return;\r
+ }\r
+ }\r
+ var svcModel = $scope.service.convertedModel;\r
+ DataService.setSubscriberName($scope.service.instance.subscriberName);\r
+ DataService.setGlobalCustomerId($scope.service.instance.globalCustomerId);\r
+ DataService.setServiceType($scope.service.instance.serviceType);\r
+ DataService.setServiceInstanceName($scope.service.instance.name);\r
+ DataService.setServiceInstanceId($scope.service.instance.id);\r
+ DataService.setServiceName($scope.service.model.service.name);\r
+ setCurrentServiceModelInfoFromScope();\r
+\r
+ DataService.setModelInfo(COMPONENT.SERVICE, {\r
+ "modelInvariantId": $scope.service.model.service.invariantUuid,\r
+ "modelVersion": $scope.service.model.service.version,\r
+ "modelNameVersionId": $scope.service.model.service.uuid,\r
+ "modelName": $scope.service.model.service.name,\r
+ "inputs": ""\r
+ });\r
+\r
+ DataService.setVnfInstanceId(vnfInstance.object[FIELD.ID.VNF_ID]);\r
+\r
+ var vnfModelInvariantUuid = vnfInstance.object[FIELD.ID.MODEL_INVAR_ID];\r
+ var vnfModelVersionId = vnfInstance.object[FIELD.ID.MODEL_VERSION_ID];\r
+ var vnfCustomizationUuid = vnfInstance.object[FIELD.ID.MODEL_CUSTOMIZATION_ID];\r
+ var vnfModel = null;\r
+\r
+ if (svcModel.isNewFlow) {\r
+ vnfModel = svcModel.vnfs[vnfCustomizationUuid];\r
+ }\r
+ else {\r
+ vnfModel = svcModel.vnfs[vnfModelVersionId];\r
+ }\r
+\r
+ DataService.setModelInfo(COMPONENT.VNF, {\r
+ "modelInvariantId": vnfModel.invariantUuid,\r
+ "modelVersion": vnfModel.version,\r
+ "modelNameVersionId": vnfModel.uuid,\r
+ "modelName": vnfModel.name,\r
+ "modelCustomizationName": vnfModel.modelCustomizationName,\r
+ "customizationUuid": vnfModel.customizationUuid,\r
+ "inputs": ""\r
+ });\r
+\r
+ DataService.setModelInfo(COMPONENT.VOLUME_GROUP, {\r
+ "modelInvariantId": volumeGroupModel.invariantUuid,\r
+ "modelVersion": volumeGroupModel.version,\r
+ "modelNameVersionId": volumeGroupModel.uuid,\r
+ "modelName": volumeGroupModel.name,\r
+ "modelCustomizationName": volumeGroupModel.modelCustomizationName,\r
+ "customizationUuid": volumeGroupModel.customizationUuid,\r
+ "inputs": ""\r
+ });\r
+\r
+ $scope.$broadcast(COMPONENT.CREATE_COMPONENT, {\r
+ componentId: COMPONENT.VOLUME_GROUP,\r
+ callbackFunction: createVolumeGroupCallbackFunction\r
+ });\r
+ };\r
+\r
+ $scope.resume = function (serviceObject, vfModule, vnfModel) {\r
+ populate_popup_vfModule(serviceObject, vfModule, vnfModel);\r
+ setCurrentVNFModelInfo(vnfModel);\r
+ DataService.setVfModuleInstanceName(vfModule.object[FIELD.ID.VF_MODULE_NAME]);\r
+ setCurrentServiceModelInfoFromScope();\r
+ $scope.$broadcast(COMPONENT.DELETE_RESUME_COMPONENT, {\r
+ componentId: COMPONENT.VF_MODULE,\r
+ callbackFunction: deleteOrResumeCallback,\r
+ dialogMethod: COMPONENT.RESUME\r
+ });\r
+ };\r
+\r
+ $scope.deleteConfiguration = function (serviceObject, configuration) {\r
+ console.log("Deleting Configuration " + configuration.name);\r
+\r
+ var serviceInstance = serviceObject.object;\r
+ var svcModel = $scope.service.convertedModel;\r
+ var configModel;\r
+ DataService.setInventoryItem(configuration.object);\r
+ // set model default and override later if found\r
+ DataService.setModelInfo(COMPONENT.CONFIGURATION, {});\r
+\r
+ if (configuration.object != null) {\r
+\r
+ //var netModelInvariantUuid = network.object[FIELD.ID.MODEL_INVAR_ID];\r
+ var configModelVersionId = configuration.object[FIELD.ID.MODEL_VERSION_ID]; // model uuid\r
+ var configModelCustomizationUuid = configuration.object[FIELD.ID.MODEL_CUSTOMIZATION_ID];\r
+\r
+ //configurations added to vnfs list, in order to be part of the "Add VNF" drop-down list\r
+ if ((!($scope.isObjectEmpty(svcModel))) && (!($scope.isObjectEmpty(svcModel.vnfs)))) {\r
+ if ((svcModel.isNewFlow) && (UtilityService.hasContents(configModelCustomizationUuid))) {\r
+ configModel = svcModel.vnfs[configModelCustomizationUuid];\r
+ }\r
+ else {\r
+\r
+ if (UtilityService.hasContents(configModelVersionId)) {\r
+ configModel = svcModel.vnfs[configModelVersionId];\r
+ }\r
+\r
+ }\r
+ }\r
+ }\r
+ if (!($scope.isObjectEmpty(configModel))) {\r
+ DataService.setModelInfo(COMPONENT.CONFIGURATION, {\r
+ "modelInvariantId": configModel.invariantUuid,\r
+ "modelVersion": configModel.version,\r
+ "modelNameVersionId": configModel.uuid,\r
+ "modelCustomizationName": configModel.modelCustomizationName,\r
+ "customizationUuid": configModel.customizationUuid,\r
+ "modelName": configModel.name,\r
+ "inputs": ""\r
+ });\r
+ }\r
+\r
+ DataService.setSubscriberName(serviceObject[COMPONENT.SUBSCRIBER_NAME]);\r
+ DataService.setServiceType(serviceObject[COMPONENT.SERVICE_TYPE]);\r
+ DataService.setServiceInstanceId(serviceInstance[FIELD.ID.SERVICE_INSTANCE_ID]);\r
+\r
+ DataService.setGlobalCustomerId(serviceObject[FIELD.ID.GLOBAL_CUST_ID]);\r
+ DataService.setServiceInstanceName($scope.service.instance.name);\r
+ DataService.setServiceName($scope.service.model.service.name);\r
+ DataService.setServiceUuid($scope.service.model.service.uuid);\r
+ DataService.setConfigurationInstanceId(configuration.object[FIELD.ID.CONFIGURATION_ID]);\r
+\r
+ $scope.$broadcast(COMPONENT.DELETE_RESUME_COMPONENT, {\r
+ componentId: COMPONENT.CONFIGURATION,\r
+ dialogMethod: COMPONENT.DELETE,\r
+ callbackFunction: deleteCallbackFunction\r
+ });\r
+ };\r
+\r
+ var deleteCallbackFunction = function () {\r
+ console.log('hi')\r
+ }\r
+\r
+ $scope.resetProgress = function () {\r
+ $scope.percentProgress = 0;\r
+ $scope.progressClass = FIELD.STYLE.PROGRESS_BAR_INFO;\r
+ };\r
+\r
+ $scope.setProgress = function (percentProgress) {\r
+ percentProgress = parseInt(percentProgress);\r
+ if (percentProgress >= 100) {\r
+ $scope.progressClass = FIELD.STYLE.PROGRESS_BAR_SUCCESS;\r
+ }\r
+\r
+ if (percentProgress < $scope.percentProgress) {\r
+ return;\r
+ }\r
+\r
+ $scope.percentProgress = percentProgress;\r
+ $scope.progressWidth = {width: percentProgress + "%"};\r
+ if (percentProgress >= 5) {\r
+ $scope.progressText = percentProgress + " %";\r
+ } else {\r
+ // Hidden since color combination is barely visible when progress portion is narrow.\r
+ $scope.progressText = "";\r
+ }\r
+ };\r
+ $scope.isObjectEmpty = function (o) {\r
+ var len = 0;\r
+ if (UtilityService.hasContents(o)) {\r
+ var keys = Object.keys(o);\r
+ len = keys.length;\r
+ if (len == 0) {\r
+ return true;\r
+ }\r
+ else {\r
+ return false;\r
+ }\r
+ }\r
+ else {\r
+ return true;\r
+ }\r
+ }\r
+ $scope.isMacro = function () {\r
+ return $scope.service && AsdcService.isMacro($scope.service.model);\r
+ }\r
+ $scope.reloadRoute = function () {\r
+ $route.reload();\r
+ }\r
+\r
+\r
+ /*\r
+Private metthods\r
+*/\r
+\r
+ /*\r
+ setPnf\r
+ * set the controller pnf param using api call\r
+ * return: void\r
+ */\r
+ function _setPnf(data) { // data is the $scope.service.instance object\r
+ return PnfService.getPnfs(data)\r
+ .then(\r
+ function success(response) {\r
+ return response.data;\r
+ // * can add here changes on the data that are needed to the view ( filter, ect..)\r
+ },\r
+ function error(error) {\r
+ console.error(error);\r
+ }\r
+ );\r
+ }\r
+\r
+\r
+ function _setCr(data) { // data is the $scope.service.instance object\r
+ return CrService.getCr(data)\r
+ .then(\r
+ function success(response) {\r
+ return response.data.results;\r
+ // * can add here changes on the data that are needed to the view ( filter, ect..)\r
+ },\r
+ function error(error) {\r
+ console.error(error);\r
+ }\r
+ );\r
+ }\r
+\r
+\r
+ /*\r
+ Callbaks functions\r
+\r
+ */\r
+ var updateProvStatusVnfCallbackFunction = function (response) {\r
+ $scope.callbackResults = "";\r
+ var color = FIELD.ID.COLOR_NONE;\r
+ $scope.callbackStyle = {\r
+ "background-color": color\r
+ };\r
+ $scope.reloadRoute();\r
+ /*\r
+ * This 1/2 delay was only added to visually highlight the status\r
+ * change. Probably not needed in the real application code.\r
+ */\r
+ $timeout(function () {\r
+ $scope.callbackResults = UtilityService.getCurrentTime()\r
+ + FIELD.STATUS.IS_SUCCESSFUL + response.isSuccessful;\r
+ if (response.isSuccessful) {\r
+ color = FIELD.ID.COLOR_8F8;\r
+\r
+ } else {\r
+ color = FIELD.ID.COLOR_F88;\r
+ }\r
+ $scope.callbackStyle = {\r
+ "background-color": color\r
+ };\r
+ }, 500);\r
+\r
+ };\r
+\r
+ var createVnfCallbackFunction = function (response) {\r
+ $scope.callbackResults = "";\r
+ var color = FIELD.ID.COLOR_NONE;\r
+ $scope.callbackStyle = {\r
+ "background-color": color\r
+ };\r
+\r
+ /*\r
+ * This 1/2 delay was only added to visually highlight the status\r
+ * change. Probably not needed in the real application code.\r
+ */\r
+ $timeout(function () {\r
+ $scope.callbackResults = UtilityService.getCurrentTime()\r
+ + FIELD.STATUS.IS_SUCCESSFUL + response.isSuccessful;\r
+ if (response.isSuccessful) {\r
+ color = FIELD.ID.COLOR_8F8;\r
+ $scope.reloadRoute();\r
+ } else {\r
+ color = FIELD.ID.COLOR_F88;\r
+ }\r
+ $scope.callbackStyle = {\r
+ "background-color": color\r
+ };\r
+ }, 500);\r
+\r
+\r
+ };\r
+\r
+ var deleteOrResumeCallback = function (response) {\r
+ $scope.callbackResults = "";\r
+ var color = FIELD.ID.COLOR_NONE;\r
+ $scope.callbackStyle = {\r
+ "background-color": color\r
+ };\r
+\r
+ /*\r
+ * This 1/2 delay was only added to visually highlight the status\r
+ * change. Probably not needed in the real application code.\r
+ */\r
+ $timeout(function () {\r
+ $scope.callbackResults = UtilityService.getCurrentTime()\r
+ + FIELD.STATUS.IS_SUCCESSFUL + response.isSuccessful;\r
+ if (response.isSuccessful) {\r
+ color = FIELD.ID.COLOR_8F8;\r
+ $scope.reloadRoute();\r
+ } else {\r
+ color = FIELD.ID.COLOR_F88;\r
+ }\r
+ $scope.callbackStyle = {\r
+ "background-color": color\r
+ };\r
+ }, 500);\r
+\r
+ };\r
+\r
+ var createVfModuleCallbackFunction = function (response) {\r
+ $scope.callbackResults = "";\r
+ var color = FIELD.ID.COLOR_NONE;\r
+ $scope.callbackStyle = {\r
+ "background-color": color\r
+ };\r
+\r
+ /*\r
+ * This 1/2 delay was only added to visually highlight the status\r
+ * change. Probably not needed in the real application code.\r
+ */\r
+ $timeout(function () {\r
+ $scope.callbackResults = UtilityService.getCurrentTime()\r
+ + FIELD.STATUS.IS_SUCCESSFUL + response.isSuccessful;\r
+ if (response.isSuccessful) {\r
+ color = FIELD.ID.COLOR_8F8;\r
+ $scope.reloadRoute();\r
+ } else {\r
+ color = FIELD.ID.COLOR_F88;\r
+ }\r
+ $scope.callbackStyle = {\r
+ "background-color": color\r
+ };\r
+ }, 500);\r
+\r
+ };\r
+\r
+ var deleteServiceInstanceCallbackFunction = function (response) {\r
+ $scope.callbackResults = "";\r
+ var color = FIELD.ID.COLOR_NONE;\r
+ $scope.callbackStyle = {\r
+ "background-color": color\r
+ };\r
+\r
+ /*\r
+ * This 1/2 delay was only added to visually highlight the status\r
+ * change. Probably not needed in the real application code.\r
+ */\r
+ $timeout(function () {\r
+ $scope.callbackResults = UtilityService.getCurrentTime()\r
+ + FIELD.STATUS.IS_SUCCESSFUL + response.isSuccessful;\r
+ if (response.isSuccessful) {\r
+ color = FIELD.ID.COLOR_8F8;\r
+ $location.path(COMPONENT.SERVICEMODELS_MODELS_SERVICES_PATH)\r
+ } else {\r
+ color = FIELD.ID.COLOR_F88;\r
+ }\r
+ $scope.callbackStyle = {\r
+ "background-color": color\r
+ };\r
+ }, 500);\r
+\r
+ };\r
+\r
+ var createVolumeGroupCallbackFunction = function (response) {\r
+ $scope.callbackResults = "";\r
+ var color = FIELD.ID.COLOR_NONE;\r
+ $scope.callbackStyle = {\r
+ "background-color": color\r
+ };\r
+\r
+ /*\r
+ * This 1/2 delay was only added to visually highlight the status\r
+ * change. Probably not needed in the real application code.\r
+ */\r
+ $timeout(function () {\r
+ $scope.callbackResults = UtilityService.getCurrentTime()\r
+ + FIELD.STATUS.IS_SUCCESSFUL + response.isSuccessful;\r
+ if (response.isSuccessful) {\r
+ color = FIELD.ID.COLOR_8F8;\r
+ $scope.reloadRoute();\r
+ } else {\r
+ color = FIELD.ID.COLOR_F88;\r
+ }\r
+ $scope.callbackStyle = {\r
+ "background-color": color\r
+ };\r
+ }, 500);\r
+\r
+\r
+ };\r
+\r
+ });\r