\r
"use strict";\r
\r
-appDS2.controller("aaiSubscriberController", [ "COMPONENT", "FIELD", "PARAMETER", "DataService", "PropertyService", "$scope", "$http", "$timeout", "$location", "$log", "$route", "VIDCONFIGURATION", "UtilityService", "vidService","AaiService",\r
- function(COMPONENT, FIELD, PARAMETER, DataService, PropertyService, $scope, $http, $timeout, $location, $log, $route, VIDCONFIGURATION, UtilityService, vidService, AaiService) {\r
-\r
- $scope.showVnfDetails = function(vnf) {\r
- console.log("showVnfDetails");\r
- DataService.setVnfInstanceId(COMPONENT.VNF_INSTANCE_ID);\r
- DataService\r
- .setInventoryItem(aaiResult[FIELD.ID.INVENTORY_RESPONSE_ITEMS][FIELD.ID.INVENTORY_RESPONSE_ITEM][0]);\r
-\r
- $scope.$broadcast(COMPONENT.SHOW_COMPONENT_DETAILS, {\r
- componentId : COMPONENT.VNF,\r
- callbackFunction : callbackFunction\r
- });\r
- }\r
- $scope.popup = new Object();\r
-\r
-\r
- $scope.isPopupVisible = false;\r
- $scope.defaultBaseUrl = "";\r
- $scope.responseTimeoutMsec = 60000;\r
-\r
- $scope.serviceTypes=[ FIELD.PROMPT.SELECT_SERVICE ];\r
- $scope.defaultSubscriberName=[ FIELD.PROMPT.SELECT_SUB ];\r
-\r
- var callbackFunction = function(response) {\r
- alert(response);\r
- };\r
-\r
- $scope.getSubs = function() {\r
- $scope.init();\r
- $scope.fetchSubs(FIELD.PROMPT.FETCHING_SUBS);\r
- $scope.fetchServices();\r
-\r
- };\r
- \r
- $scope.cancelCreateSI = function(){\r
- \r
- window.location.href = COMPONENT.WELCOME_PATH;\r
- \r
- };\r
- \r
- $scope.getServiceTypes = function(globalCustomerId){\r
- DataService.setGlobalCustomerId(globalCustomerId);\r
- DataService.setServiceIdList($scope.customerList)\r
-\r
- if (globalCustomerId !== "" && globalCustomerId !== undefined ) {\r
- window.location.href = COMPONENT.SERVICE_TYPE_LIST_PATH + $scope.serviceTypeList;\r
- }\r
- }\r
- \r
- $scope.refreshServiceTypes = function(globalCustomerId){\r
- DataService.setGlobalCustomerId(globalCustomerId);\r
- \r
- $scope.getServiceTypesList();\r
- }\r
- \r
- $scope.subId="";\r
- $scope.createSubscriberName="";\r
- $scope.serviceTypeList={};\r
- $scope.custSubList=[];\r
- $scope.getServiceTypesList = function(){\r
- var notFound = true;\r
- var globalCustomerId = DataService.getGlobalCustomerId();\r
- $scope.custSubList = DataService.getServiceIdList();\r
- if(globalCustomerId !== "" && globalCustomerId !== undefined ){\r
- $scope.subId=globalCustomerId;\r
- $scope.init();\r
- $scope.status = FIELD.PROMPT.FETCHING_SERVICE_TYPES;\r
- DataService.setGlobalCustomerId(globalCustomerId);\r
- \r
- AaiService.getSubscriptionServiceTypeList(DataService\r
- .getGlobalCustomerId(), function(response) {\r
- notFound = false;\r
- $scope.setProgress(100); // done\r
- $scope.status = FIELD.STATUS.DONE;\r
- $scope.isSpinnerVisible = false;\r
- $scope.serviceTypeList = response;\r
- for(var i=0; i<$scope.custSubList.length;i++){\r
- if(globalCustomerId === $scope.custSubList[i].globalCustomerId){\r
- $scope.createSubscriberName = $scope.custSubList[i].subscriberName;\r
- }\r
- }\r
- }, function(response) { // failure\r
- $scope.showError(FIELD.ERROR.AAI);\r
- $scope.errorMsg = FIELD.ERROR.FETCHING_SERVICE_TYPES + response.status;\r
- $scope.errorDetails = response.data;\r
- });\r
- } else {\r
- alert(FIELD.ERROR.SELECT);\r
- }\r
- \r
- };\r
- \r
- $scope.subList = [];\r
- $scope.getAaiServiceModels = function(selectedServicetype,subName){\r
- DataService.setGlobalCustomerId(selectedServicetype);\r
- DataService.setServiceIdList($scope.serviceTypeList)\r
- DataService.setSubscriberName(subName);\r
- \r
- DataService.setSubscribers($scope.custSubList);\r
-\r
- if (selectedServicetype !== "" && selectedServicetype !== 'undefined') {\r
- $location.path(COMPONENT.CREATE_INSTANCE_PATH);\r
- } \r
- };\r
- \r
- $scope.serviceTypeName="";\r
- $scope.getAaiServiceModelsList = function(){\r
- var globalCustomerId="";\r
- var serviceTypeId = DataService.getGlobalCustomerId(); \r
- $scope.serviceTypeList = DataService.getServiceIdList();\r
- $scope.createSubscriberName = DataService.getSubscriberName();\r
- $scope.status = FIELD.STATUS.FETCHING_SERVICE_CATALOG;\r
- $scope.custSubList = DataService.getSubscribers();\r
- for(var i=0; i<$scope.serviceTypeList.length;i++){\r
- if(parseInt(serviceTypeId) === i ){\r
- $scope.serviceTypeName = $scope.serviceTypeList[i];\r
- }\r
- };\r
- for(var i=0; i<$scope.custSubList.length;i++){\r
- if($scope.createSubscriberName === $scope.custSubList[i].subscriberName){\r
- globalCustomerId = $scope.custSubList[i].globalCustomerId;\r
- }\r
- };\r
- \r
- var pathQuery ="";\r
- \r
- if(null !== globalCustomerId && "" !== globalCustomerId && undefined !== globalCustomerId\r
- && null !== serviceTypeId && "" !== serviceTypeId && undefined !== serviceTypeId){\r
- pathQuery = COMPONENT.SERVICES_PATH +globalCustomerId+"/"+$scope.serviceTypeName;\r
- }\r
- \r
- AaiService.getServiceModels(globalCustomerId,$scope.serviceTypeName,function(response) { // success\r
- console.log("service models : "+response.data);\r
- DataService.setServiceIdList(response);\r
- }, function(response) { // failure\r
- $scope.showError(FIELD.ERROR.AAI);\r
- $scope.errorMsg = FIELD.ERROR.FETCHING_SERVICES+ response.status;\r
- $scope.errorDetails = response.data;\r
- });\r
- \r
- /*$http.get('/aai_get_services/'+globalCustomerId+''+$scope.serviceTypeName)\r
- .then(function successCallback(response) {\r
- $scope.services = [];\r
- if (angular.isArray(response.data)) {\r
- $scope.services = response.data;\r
- $scope.viewPerPage=10;\r
- $scope.totalPage=$scope.services.length/$scope.viewPerPage;\r
- $scope.sortBy="name";\r
- $scope.scrollViewPerPage=2;\r
- $scope.currentPage=1;\r
- $scope.searchCategory;\r
- $scope.searchString="";\r
- $scope.currentPageNum=1;\r
- $scope.isSpinnerVisible = false;\r
- $scope.isProgressVisible = false;\r
- } else {\r
- $scope.status = "Failed to get service models from SDC.";\r
- $scope.error = true;\r
- $scope.isSpinnerVisible = false;\r
- }\r
- }, function errorCallback(response) {\r
- console.log("Error: " + response);\r
- }); */\r
- \r
- \r
- };\r
- \r
- $scope.cancelCreateSIType = function(){\r
- \r
- window.location.href = COMPONENT.SERVICE_MODLES_INSTANCES_SUBSCRIBERS_PATH;\r
- \r
- }\r
-\r
- $scope.fetchServices = function() { \r
- var serviceIdList = [];\r
-\r
- AaiService.getServices2(function(response) { // success\r
- DataService.setServiceIdList(response);\r
- }, function(response) { // failure\r
- $scope.showError(FIELD.ERROR.AAI);\r
- $scope.errorMsg = FIELD.ERROR.FETCHING_SERVICES + response.status;\r
- $scope.errorDetails = response.data;\r
- });\r
- }\r
-\r
- $scope.refreshSubs = function() {\r
- $scope.fetchSubs(FIELD.PROMPT.REFRESH_SUB_LIST);\r
- $scope.fetchServices();\r
- };\r
-\r
- $scope.fetchSubs = function(status) {\r
- $scope.status = status;\r
-\r
- AaiService.getSubList(function(response) { // sucesss\r
- $scope.setProgress(100); // done\r
- $scope.status = FIELD.STATUS.DONE;\r
- $scope.isSpinnerVisible = false;\r
- $scope.customerList = response;\r
- }, function(response) { // failure\r
- $scope.showError(FIELD.ERROR.AAI);\r
- $scope.errorMsg = FIELD.ERROR.AAI_FETCHING_CUST_DATA + response.status;\r
- $scope.errorDetails = response.data;\r
- });\r
- }\r
-\r
-\r
- $scope.getSubDetails = function(request) {\r
-\r
- $scope.init();\r
- $scope.selectedSubscriber = $location.search().selectedSubscriber;\r
- $scope.selectedServiceInstance = $location.search().selectedServiceInstance;\r
- $scope.status = FIELD.STATUS.FETCHING_SUB_DETAILS + $scope.selectedSubscriber;\r
-\r
- $scope.displayData = [];\r
- AaiService.getSubDetails($scope.selectedSubscriber, $scope.selectedServiceInstance, function(displayData, subscriberName) {\r
- $scope.displayData = displayData;\r
- $scope.viewPerPage=10;\r
- $scope.totalPage=$scope.displayData.length/$scope.viewPerPage;\r
- $scope.scrollViewPerPage=2;\r
- $scope.currentPage=1;\r
- $scope.searchCategory;\r
- $scope.searchString="";\r
- $scope.currentPageNum=1;\r
- $scope.defaultSort=COMPONENT.SUBSCRIBER_NAME;\r
- $scope.setProgress(100); // done\r
- $scope.status = FIELD.STATUS.DONE;\r
- $scope.isSpinnerVisible = false;\r
- $scope.subscriberName = subscriberName;\r
- }, function(response) { \r
- $scope.showError(FIELD.ERROR.AAI);\r
- $scope.errorMsg = FIELD.ERROR.AAI_FETCHING_CUST_DATA + response.status;\r
- $scope.errorDetails = response.data;\r
- });\r
- }\r
-\r
-\r
- $scope.$on(COMPONENT.MSO_DELETE_REQ, function(event, request) {\r
- // $log.debug("deleteInstance: request:");\r
- // $log.debug(request);\r
- $scope.init();\r
-\r
- $http.post($scope.baseUrl + request.url, {\r
- requestDetails: request.requestDetails\r
- },{\r
- timeout: $scope.responseTimeoutMsec\r
- }).then($scope.handleInitialResponse)\r
- ["catch"]($scope.handleServerError);\r
- });\r
-\r
- $scope.init = function() {\r
-\r
- //PropertyService.setAaiBaseUrl("testaai");\r
- //PropertyService.setAsdcBaseUrl("testasdc");\r
-\r
- // takes a default value, retrieves the prop value from the file system and sets it\r
- var msecs = PropertyService.retrieveMsoMaxPollingIntervalMsec();\r
- PropertyService.setMsoMaxPollingIntervalMsec(msecs);\r
-\r
- // takes a default value, retrieves the prop value from the file system and sets it\r
- var polls = PropertyService.retrieveMsoMaxPolls();\r
- PropertyService.setMsoMaxPolls(polls);\r
-\r
- //PropertyService.setMsoBaseUrl("testmso");\r
- PropertyService.setServerResponseTimeoutMsec();\r
-\r
- /*\r
- * Common parameters that would typically be set when the page is\r
- * displayed for a specific service instance id.\r
- */\r
-\r
- $scope.baseUrl = $scope.defaultBaseUrl;\r
-\r
- $scope.isSpinnerVisible = true;\r
- $scope.isProgressVisible = true;\r
- $scope.isPopupVisible = true;\r
- $scope.requestId = "";\r
- $scope.error = "";\r
- $scope.pollAttempts = 0;\r
- $scope.log = ""; \r
- $scope.enableCloseButton(false);\r
- $scope.resetProgress();\r
- $scope.setProgress(2); // Show "a little" progress\r
- }\r
-\r
- $scope.getComponentList = function(event, request) {\r
-\r
- $scope.isSpinnerVisible = true;\r
- $scope.isProgressVisible = true;\r
- $scope.isPopupVisible = true;\r
- $scope.requestId = "";\r
- $scope.error = "";\r
- $scope.pollAttempts = 0;\r
- $scope.log = ""; \r
-\r
- $scope.resetProgress();\r
- $scope.setProgress(2); // Show "a little" progress\r
-\r
- $scope.globalCustomerId = $location.search().subscriberId;\r
- $scope.serviceType = $location.search().serviceType;\r
- $scope.serviceInstanceId = $location.search().serviceInstanceId;\r
- $scope.subscriberName = $location.search().subscriberName;\r
-\r
- //$scope.getAsdcModel($location.search().modelUuid);\r
-\r
- $scope.namedQueryId = VIDCONFIGURATION.COMPONENT_LIST_NAMED_QUERY_ID;\r
- $scope.status = FIELD.STATUS.FETCHING_SERVICE_INST_DATA + $scope.serviceInstanceId;\r
-\r
- AaiService.runNamedQuery($scope.namedQueryId, $scope.globalCustomerId, $scope.serviceType, $scope.serviceInstanceId, \r
- function(response) { //success\r
- $scope.handleInitialResponseInventoryItems(response);\r
- $scope.setProgress(100); // done\r
- $scope.status = FIELD.STATUS.DONE;\r
- $scope.isSpinnerVisible = false;\r
- }, \r
- function(response){ //failure\r
- $scope.showError(FIELD.ERROR.AAI);\r
- $scope.errorMsg = FIELD.ERROR.FETCHING_SERVICE_INSTANCE_DATA + response.status;\r
- $scope.errorDetails = response.data;\r
- }\r
- );\r
-\r
- }\r
-\r
- $scope.handleServerError = function(response, status) { \r
- alert(response.statusText);\r
- }\r
- \r
- $scope.getAsdcModel = function(disData) {\r
-\r
- console.log ("disData"); console.log (JSON.stringify (disData, null, 4));\r
- \r
- if ( !(UtilityService.hasContents (disData.aaiModelVersionId)) ) {\r
- $scope.errorMsg = FIELD.ERROR.MODEL_VERSION_ID_MISSING;\r
- alert($scope.errorMsg);\r
- return;\r
- }\r
- \r
- // aaiModelVersionId is the model uuid\r
- var pathQuery = COMPONENT.SERVICES_PATH + disData.aaiModelVersionId;\r
- $http({\r
- method: 'GET',\r
- url: pathQuery\r
- }).then(function successCallback(response) {\r
- vidService.setModel(response.data);\r
- window.location.href = COMPONENT.INSTANTIATE_ROOT_PATH + disData.globalCustomerId + COMPONENT.SUBSCRIBERNAME_SUB_PATH + disData.subscriberName + COMPONENT.SERVICETYPE_SUB_PATH + disData.serviceType + COMPONENT.SERVICEINSTANCEID_SUB_PATH + disData.serviceInstanceId;\r
- console.log("aaiSubscriber getAsdcModel DONE!!!!");\r
- }, function errorCallback(response) {\r
- console.log("aaiSubscriber getAsdcModel - No matching model found matching the A&AI model version ID = " + disData.aaiModelVersionId);\r
- $scope.errorMsg = FIELD.ERROR.NO_MATCHING_MODEL_AAI + disData.aaiModelVersionId;\r
- alert($scope.errorMsg);\r
- });\r
-\r
- }\r
-\r
- $scope.getTenants = function(globalCustomerId) {\r
- $http.get(FIELD.ID.AAI_GET_TENTANTS + globalCustomerId)\r
- .then(function successCallback(response) {\r
- return response.data;\r
- //$location.path("/instantiate");\r
- }, function errorCallback(response) {\r
- //TODO\r
- });\r
- }\r
-\r
- $scope.handleInitialResponseInventoryItems = function(response) {\r
-\r
- $scope.inventoryResponseItemList = response.data[FIELD.ID.INVENTORY_RESPONSE_ITEM]; // get data from json\r
- console.log($scope.inventoryResponseItemList.toString());\r
-\r
- $scope.displayData = [];\r
- $scope.vnfs = [];\r
-\r
- $scope.counter = 100;\r
-\r
- $scope.subscriberName = "";\r
- // just look up the subscriber name in A&AI here...\r
- AaiService.getSubscriberName($scope.globalCustomerId, function(response) {\r
- $scope.subscriberName = response;\r
- DataService.setSubscriberName($scope.subscriberName);\r
-\r
- angular.forEach($scope.inventoryResponseItemList, function(inventoryResponseItem, key) {\r
-\r
- $scope.inventoryResponseItem = inventoryResponseItem;\r
-\r
- $scope.service.instance = {\r
- "name": $scope.inventoryResponseItem[FIELD.ID.SERVICE_INSTANCE][FIELD.ID.SERVICE_INSTANCE_NAME],\r
- "serviceInstanceId": $scope.serviceInstanceId,\r
- "serviceType": $scope.serviceType,\r
- "globalCustomerId": $scope.globalCustomerId,\r
- "subscriberName": $scope.subscriberName,\r
- "id": $scope.serviceInstanceId,\r
- "inputs": {\r
- "a": {\r
- "type": PARAMETER.STRING,\r
- "description": FIELD.PROMPT.VAR_DESCRIPTION_A,\r
- "default": FIELD.PROMPT.DEFAULT_A\r
- },\r
- "b": {\r
- "type": PARAMETER.STRING,\r
- "description": FIELD.PROMPT.VAR_DESCRIPTION_B,\r
- "default": FIELD.PROMPT.DEFAULT_B\r
- },\r
- },\r
- "object": $scope.inventoryResponseItem[FIELD.ID.SERVICE_INSTANCE],\r
- "vnfs": [],\r
- "networks": []\r
- }\r
-\r
- if (inventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS] != null) {\r
-\r
- angular.forEach(inventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS][FIELD.ID.INVENTORY_RESPONSE_ITEM], function(subInventoryResponseItem, key) {\r
- // i expect to find vnfs now\r
-\r
- if (subInventoryResponseItem[FIELD.ID.L3_NETWORK] != null) { \r
- var l3NetworkObject = subInventoryResponseItem[FIELD.ID.L3_NETWORK];\r
- var l3Network = { "id": $scope.counter++, \r
- "name": l3NetworkObject[FIELD.ID.NETWORK_NAME],\r
- "itemType": FIELD.ID.L3_NETWORK,\r
- "nodeId": l3NetworkObject[FIELD.ID.NETWORK_ID],\r
- "nodeType": l3NetworkObject[FIELD.ID.NETWORK_TYPE],\r
- "nodeStatus": l3NetworkObject[FIELD.ID.ORCHESTRATION_STATUS],\r
- "object": l3NetworkObject,\r
- "nodes": [],\r
- "subnets": []\r
- };\r
- if (subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS] != null) {\r
- //console.log ("subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS]=");\r
- //console.log (JSON.stringify (subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS], null, 4 ));\r
- angular.forEach(subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS][FIELD.ID.INVENTORY_RESPONSE_ITEM], function(subSubInventoryResponseItem, key) {\r
- //console.log (JSON.stringify (subSubInventoryResponseItem, null, 4 ));\r
- var subnet = {};\r
- var subnetObject;\r
- if (subSubInventoryResponseItem[FIELD.ID.SUB_NET] != null) {\r
- subnetObject = subSubInventoryResponseItem[FIELD.ID.SUB_NET];\r
- subnet = {\r
- "subnet-id": subnetObject[FIELD.ID.SUBNET_ID],\r
- "subnet-name": subnetObject[FIELD.ID.SUBNET_NAME],\r
- "gateway-address": subnetObject[FIELD.ID.GATEWAY_ADDRESS],\r
- "network-start-address": subnetObject[FIELD.ID.NETWORK_START_ADDRESS],\r
- "cidr-mask": subnetObject[FIELD.ID.CIDR_MASK]\r
- };\r
- l3Network.subnets.push(subnet);\r
- }\r
- });\r
- }\r
- $scope.service.instance[FIELD.ID.NETWORKS].push(l3Network);\r
- }\r
-\r
- if (subInventoryResponseItem[FIELD.ID.GENERIC_VNF] != null) {\r
- var genericVnfObject = subInventoryResponseItem[FIELD.ID.GENERIC_VNF];\r
-\r
- var genericVnf = {\r
- "name": genericVnfObject[FIELD.ID.VNF_NAME],\r
- "id": $scope.counter++, \r
- "itemType": COMPONENT.VNF, \r
- "nodeType": genericVnfObject[FIELD.ID.VNF_TYPE],\r
- "nodeId": genericVnfObject[FIELD.ID.VNF_ID],\r
- "nodeStatus": genericVnfObject[FIELD.ID.ORCHESTRATION_STATUS],\r
- "object": genericVnfObject,\r
- "vfModules": [],\r
- "volumeGroups": [],\r
- "availableVolumeGroups": []\r
- };\r
- $scope.service.instance[FIELD.ID.VNFS].push(genericVnf);\r
-\r
- // look for volume-groups\r
- if (subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS] != null) {\r
- angular.forEach(subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS][FIELD.ID.INVENTORY_RESPONSE_ITEM], function(vfmodules, key) {\r
-\r
- if (vfmodules[FIELD.ID.VOLUME_GROUP] != null) { \r
- var volumeGroupObject = vfmodules[FIELD.ID.VOLUME_GROUP];\r
- var volumeGroup = { "id": $scope.counter++, \r
- "name": volumeGroupObject[FIELD.ID.VOLUME_GROUP_NAME],\r
- "itemType": FIELD.ID.VOLUME_GROUP,\r
- "nodeId": volumeGroupObject[FIELD.ID.VOLUME_GROUP_ID],\r
- "nodeType": volumeGroupObject[FIELD.ID.VNF_TYPE],\r
- "nodeStatus": volumeGroupObject[FIELD.ID.ORCHESTRATION_STATUS],\r
- "object": volumeGroupObject,\r
- "nodes": []\r
- };\r
- genericVnf[FIELD.ID.VOLUMEGROUPS].push(volumeGroup);\r
- genericVnf[FIELD.ID.AVAILABLEVOLUMEGROUPS].push(volumeGroup);\r
- }\r
- });\r
- }\r
- // now we've loaded up the availableVolumeGroups, we can use it\r
- if (subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS] != null) {\r
- angular.forEach(subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS][FIELD.ID.INVENTORY_RESPONSE_ITEM], function(vfmodules, key) {\r
-\r
- if (vfmodules[FIELD.ID.VF_MODULE] != null) { \r
- var vfModuleObject = vfmodules[FIELD.ID.VF_MODULE];\r
- var vfModule = { "id": $scope.counter++,\r
- "name": vfModuleObject[FIELD.ID.VF_MODULE_NAME],\r
- "itemType": FIELD.ID.VF_MODULE,\r
- "nodeType": FIELD.ID.VF_MODULE, \r
- "nodeStatus": vfModuleObject[FIELD.ID.ORCHESTRATION_STATUS],\r
- "volumeGroups": [],\r
- "object": vfModuleObject,\r
- "networks": []\r
- };\r
- genericVnf[FIELD.ID.VF_MODULES].push(vfModule);\r
- if (vfmodules[FIELD.ID.INVENTORY_RESPONSE_ITEMS] != null) {\r
- angular.forEach(vfmodules[FIELD.ID.INVENTORY_RESPONSE_ITEMS][FIELD.ID.INVENTORY_RESPONSE_ITEM], function(networks, key) {\r
- if (networks[FIELD.ID.L3_NETWORK] != null) { \r
- var l3NetworkObject = networks[FIELD.ID.L3_NETWORK];\r
- var l3Network = { "id": $scope.counter++, \r
- "name": l3NetworkObject[FIELD.ID.NETWORK_NAME],\r
- "itemType": FIELD.ID.L3_NETWORK,\r
- "nodeId": l3NetworkObject[FIELD.ID.NETWORK_ID],\r
- "nodeType": l3NetworkObject[FIELD.ID.NETWORK_TYPE],\r
- "nodeStatus": l3NetworkObject[FIELD.ID.ORCHESTRATION_STATUS],\r
- "object": l3NetworkObject,\r
- "nodes": []\r
- };\r
- vfModule[FIELD.ID.NETWORKS].push(l3Network);\r
- }\r
- if (networks[FIELD.ID.VOLUME_GROUP] != null) { \r
- var volumeGroupObject = networks[FIELD.ID.VOLUME_GROUP];\r
-\r
- var volumeGroup = { "id": $scope.counter++, \r
- "name": volumeGroupObject[FIELD.ID.VOLUME_GROUP_NAME],\r
- "itemType": FIELD.ID.VOLUME_GROUP,\r
- "nodeId": volumeGroupObject[FIELD.ID.VOLUME_GROUP_ID],\r
- "nodeType": volumeGroupObject[FIELD.ID.VNF_TYPE],\r
- "nodeStatus": volumeGroupObject[FIELD.ID.ORCHESTRATION_STATUS],\r
- "object": volumeGroupObject,\r
- "nodes": []\r
- };\r
- var tmpVolGroup = [];\r
-\r
- angular.forEach(genericVnf[FIELD.ID.AVAILABLEVOLUMEGROUPS], function(avgroup, key) {\r
- if (avgroup.name != volumeGroup.name) { \r
- tmpVolGroup.push(avgroup);\r
- }\r
- });\r
-\r
- genericVnf[FIELD.ID.AVAILABLEVOLUMEGROUPS] = tmpVolGroup;\r
-\r
- vfModule[FIELD.ID.VOLUMEGROUPS].push(volumeGroup);\r
- }\r
-\r
- });\r
- }\r
- }\r
- });\r
- }\r
- }\r
- });\r
- }\r
- });\r
- });\r
- }\r
-\r
- $scope.handleInitialResponse = function(response) {\r
- try {\r
- $scope.enableCloseButton(true);\r
- $scope.updateLog(response);\r
- if (response.data.status < 200 || response.data.status > 202) {\r
- $scope.showError(FIELD.ERROR.MSO);\r
- $scope.status = FIELD.ERROR.AAI_FETCHING_CUST_DATA + response.data.status;\r
-\r
- return;\r
- }\r
-\r
- $scope.setProgress(100); // done\r
- $scope.status = FIELD.STATUS.DONE;\r
- $scope.isSpinnerVisible = false;\r
-\r
- $scope.customer = response.data.customer; // get data from json\r
-\r
- $scope.customerList = [];\r
-\r
- angular.forEach($scope.customer, function(subVal, subKey) {\r
- var cust = { "globalCustomerId": subVal[FIELD.ID.GLOBAL_CUSTOMER_ID], "subscriberName": subVal[FIELD.ID.SUBNAME] };\r
- $scope.customerList.push(cust);\r
- }); \r
-\r
- } catch (error) {\r
- $scope.showContentError(error);\r
- }\r
- }\r
-\r
- $scope.autoGetSubs = function() {\r
- /*\r
- * Optionally comment in / out one of these method calls (or add a similar\r
- * entry) to auto-invoke an entry when the test screen is redrawn.\r
- */\r
- $scope.getSubs();\r
-\r
- }\r
-\r
- $scope.updateLog = function(response) {\r
+appDS2.controller("aaiSubscriberController", ["COMPONENT", "FIELD", "PARAMETER", "DataService", "PropertyService", "$scope", "$http", "$timeout", "$location", "$log", "$route", "$uibModal", "VIDCONFIGURATION", "UtilityService", "vidService", "AaiService", "MsoService", "OwningEntityService", "AsdcService","featureFlags", "$q", "_",\r
+ function (COMPONENT, FIELD, PARAMETER, DataService, PropertyService, $scope, $http, $timeout, $location, $log, $route, $uibModal, VIDCONFIGURATION, UtilityService, vidService, AaiService, MsoService, OwningEntityService, AsdcService, featureFlags, $q, _) {\r
+\r
+ $scope.showVnfDetails = function (vnf) {\r
+ console.log("showVnfDetails");\r
+ DataService.setVnfInstanceId(COMPONENT.VNF_INSTANCE_ID);\r
+ DataService\r
+ .setInventoryItem(aaiResult[FIELD.ID.INVENTORY_RESPONSE_ITEMS][FIELD.ID.INVENTORY_RESPONSE_ITEM][0]);\r
+\r
+ $scope.$broadcast(COMPONENT.SHOW_COMPONENT_DETAILS, {\r
+ componentId: COMPONENT.VNF,\r
+ callbackFunction: callbackFunction\r
+ });\r
+ }\r
+ $scope.popup = new Object();\r
+\r
+\r
+ $scope.isPopupVisible = false;\r
+ $scope.defaultBaseUrl = "";\r
+ $scope.responseTimeoutMsec = 60000;\r
+\r
+ $scope.serviceTypes = [FIELD.PROMPT.SELECT_SERVICE, COMPONENT.UCPE_VMS, COMPONENT.SDN_L3_BONDING, COMPONENT.SDN_ETHERNET_INTERNET];\r
+ $scope.defaultSubscriberName = [FIELD.PROMPT.SELECT_SUB];\r
+\r
+ $scope.verifyButtonEnabled = true;\r
+\r
+ var callbackFunction = function (response) {\r
+ alert(response);\r
+ };\r
+\r
+ $scope.getSubs = function () {\r
+ $scope.init();\r
+ $scope.fetchSubs(FIELD.PROMPT.FETCHING_SUBS);\r
+ $scope.fetchServices();\r
+\r
+ };\r
+\r
+ $scope.cancelCreateSI = function () {\r
+\r
+ window.location.href = COMPONENT.WELCOME_PATH;\r
+\r
+ };\r
+\r
+ $scope.getServiceTypes = function (globalCustomerId) {\r
+ DataService.setGlobalCustomerId(globalCustomerId);\r
+ DataService.setServiceIdList($scope.customerList)\r
+\r
+ if (globalCustomerId !== "" && globalCustomerId !== undefined) {\r
+ window.location.href = COMPONENT.SERVICE_TYPE_LIST_PATH + $scope.serviceTypeList;\r
+ }\r
+ }\r
+\r
+ $scope.refreshServiceTypes = function (globalCustomerId) {\r
+ DataService.setGlobalCustomerId(globalCustomerId);\r
+\r
+ $scope.getServiceTypesList();\r
+ }\r
+\r
+ $scope.subId = "";\r
+ $scope.createSubscriberName = "";\r
+ $scope.serviceTypeList = {};\r
+ $scope.custSubList = [];\r
+ $scope.getServiceTypesList = function () {\r
+ var notFound = true;\r
+ var globalCustomerId = DataService.getGlobalCustomerId();\r
+ $scope.custSubList = DataService.getServiceIdList();\r
+ if (globalCustomerId !== "" && globalCustomerId !== undefined) {\r
+ $scope.subId = globalCustomerId;\r
+ $scope.init();\r
+ $scope.status = FIELD.PROMPT.FETCHING_SERVICE_TYPES;\r
+ DataService.setGlobalCustomerId(globalCustomerId);\r
+\r
+ AaiService.getSubscriptionServiceTypeList(DataService\r
+ .getGlobalCustomerId(), function (response) {\r
+ notFound = false;\r
+ $scope.setProgress(100); // done\r
+ $scope.status = FIELD.STATUS.DONE;\r
+ $scope.isSpinnerVisible = false;\r
+ $scope.serviceTypeList = response;\r
+ for (var i = 0; i < $scope.custSubList.length; i++) {\r
+ if (globalCustomerId === $scope.custSubList[i].globalCustomerId) {\r
+ $scope.createSubscriberName = $scope.custSubList[i].subscriberName;\r
+ }\r
+ }\r
+ }, function (response) { // failure\r
+ $scope.showError(FIELD.ERROR.AAI);\r
+ $scope.errorMsg = FIELD.ERROR.FETCHING_SERVICE_TYPES + response.status;\r
+ $scope.errorDetails = response.data;\r
+ });\r
+ } else {\r
+ alert(FIELD.ERROR.SELECT);\r
+ }\r
+\r
+ };\r
+\r
+ $scope.subList = [];\r
+ $scope.getAaiServiceModels = function (selectedServicetype, subName) {\r
+ DataService.setGlobalCustomerId(selectedServicetype);\r
+ DataService.setServiceIdList($scope.serviceTypeList)\r
+ DataService.setSubscriberName(subName);\r
+\r
+ DataService.setSubscribers($scope.custSubList);\r
+\r
+ if (selectedServicetype !== "" && selectedServicetype !== 'undefined'&& selectedServicetype !== undefined) {\r
+ $location.path(COMPONENT.CREATE_INSTANCE_PATH);\r
+ }\r
+ };\r
+\r
+ $scope.serviceTypeName = "";\r
+ $scope.getAaiServiceModelsList = function () {\r
+ var globalCustomerId = "";\r
+ var serviceTypeId = DataService.getGlobalCustomerId();\r
+ $scope.serviceTypeList = DataService.getServiceIdList();\r
+ $scope.createSubscriberName = DataService.getSubscriberName();\r
+ $scope.status = FIELD.STATUS.FETCHING_SERVICE_CATALOG;\r
+ $scope.custSubList = DataService.getSubscribers();\r
+ for (var i = 0; i < $scope.serviceTypeList.length; i++) {\r
+ if (parseInt(serviceTypeId) === i) {\r
+ $scope.serviceTypeName = $scope.serviceTypeList[i].name;\r
+ }\r
+ }\r
+ ;\r
+ for (var i = 0; i < $scope.custSubList.length; i++) {\r
+ if ($scope.createSubscriberName === $scope.custSubList[i].subscriberName) {\r
+ globalCustomerId = $scope.custSubList[i].globalCustomerId;\r
+ globalCustId = globalCustomerId;\r
+ }\r
+ }\r
+ ;\r
+ var pathQuery = "";\r
+\r
+ if (null !== globalCustomerId && "" !== globalCustomerId && undefined !== globalCustomerId\r
+ && null !== serviceTypeId && "" !== serviceTypeId && undefined !== serviceTypeId) {\r
+ pathQuery = COMPONENT.SERVICES_PATH + globalCustomerId + "/" + $scope.serviceTypeName;\r
+ }\r
+\r
+ var namedQueryId = '6e806bc2-8f9b-4534-bb68-be91267ff6c8';\r
+ AaiService.getServiceModelsByServiceType(namedQueryId, globalCustomerId, $scope.serviceTypeName, function (response) { // success\r
+ $scope.services = [];\r
+ if (angular.isArray(response.data['inventory-response-item']) && response.data['inventory-response-item'].length > 0 && response.data['inventory-response-item'][0]['inventory-response-items']) {\r
+ wholeData = response.data['inventory-response-item'][0]['inventory-response-items']['inventory-response-item'];\r
+ $scope.services = $scope.filterDataWithHigerVersion(response.data['inventory-response-item'][0]['inventory-response-items']['inventory-response-item']);\r
+ $scope.serviceType = response.data['inventory-response-item'][0]['service-subscription']['service-type'];\r
+ $scope.viewPerPage = 10;\r
+ $scope.totalPage = $scope.services.length / $scope.viewPerPage;\r
+ $scope.sortBy = "name";\r
+ $scope.scrollViewPerPage = 2;\r
+ $scope.currentPage = 1;\r
+ $scope.searchCategory;\r
+ $scope.searchString = "";\r
+ $scope.currentPageNum = 1;\r
+ $scope.isSpinnerVisible = false;\r
+ $scope.isProgressVisible = false;\r
+ } else {\r
+ $scope.status = "Failed to get service models from SDC.";\r
+ $scope.error = true;\r
+ $scope.isSpinnerVisible = false;\r
+ }\r
+ DataService.setServiceIdList(response);\r
+ }, function (response) { // failure\r
+ $scope.showError(FIELD.ERROR.AAI);\r
+ $scope.errorMsg = FIELD.ERROR.FETCHING_SERVICES + response.status;\r
+ $scope.errorDetails = response.data;\r
+ });\r
+\r
+ };\r
+\r
+ var globalCustId;// This value will be assigned only on create new service instance screen-macro\r
+ $scope.createType = "a la carte";\r
+ $scope.deployService = function (service, hideServiceFields) {\r
+ hideServiceFields = hideServiceFields || false;\r
+ var temp = service;\r
+ service.uuid = service['service-instance']['model-version-id'];\r
+\r
+ console.log("Instantiating ASDC service " + service.uuid);\r
+\r
+ $http.get('rest/models/services/' + service.uuid)\r
+ .then(function successCallback(getServiceResponse) {\r
+ getServiceResponse.data['service'].serviceTypeName = $scope.serviceTypeName;\r
+ getServiceResponse.data['service'].createSubscriberName = $scope.createSubscriberName;\r
+ var serviceModel = getServiceResponse.data;\r
+ DataService.setServiceName(serviceModel.service.name);\r
+\r
+ DataService.setModelInfo(COMPONENT.SERVICE, {\r
+ "modelInvariantId": serviceModel.service.invariantUuid,\r
+ "modelVersion": serviceModel.service.version,\r
+ "modelNameVersionId": serviceModel.service.uuid,\r
+ "modelName": serviceModel.service.name,\r
+ "description": serviceModel.service.description,\r
+ "serviceType": serviceModel.service.serviceType,\r
+ "serviceRole": serviceModel.service.serviceRole,\r
+ "category": serviceModel.service.category,\r
+ "serviceTypeName": serviceModel.service.serviceTypeName,\r
+ "createSubscriberName": serviceModel.service.createSubscriberName\r
+ });\r
+ DataService.setHideServiceFields(hideServiceFields);\r
+ if (hideServiceFields) {\r
+ DataService.setServiceType($scope.serviceTypeName);\r
+ DataService.setGlobalCustomerId(globalCustId);\r
+ }\r
+\r
+ DataService.setALaCarte(true);\r
+ $scope.createType = "a la carte";\r
+ var broadcastType = "createComponent";\r
+\r
+ DataService.setShouldIncludeInAsyncInstantiationFlow(AsdcService.shouldTakeTheAsyncInstantiationFlow(serviceModel));\r
+\r
+ if (AsdcService.isMacro(serviceModel)) {\r
+ DataService.setALaCarte(false);\r
+ $scope.createType = "Macro";\r
+ var convertedAsdcModel = UtilityService.convertModel(serviceModel);\r
+\r
+ //console.log ("display inputs ");\r
+ //console.log (JSON.stringify ( convertedAsdcModel.completeDisplayInputs));\r
+\r
+ DataService.setModelInfo(COMPONENT.SERVICE, {\r
+ "modelInvariantId": serviceModel.service.invariantUuid,\r
+ "modelVersion": serviceModel.service.version,\r
+ "modelNameVersionId": serviceModel.service.uuid,\r
+ "modelName": serviceModel.service.name,\r
+ "description": serviceModel.service.description,\r
+ "category": serviceModel.service.category,\r
+ "serviceEcompNaming": serviceModel.service.serviceEcompNaming,\r
+ "inputs": serviceModel.service.inputs,\r
+ "displayInputs": convertedAsdcModel.completeDisplayInputs,\r
+ "serviceTypeName": serviceModel.service.serviceTypeName,\r
+ "createSubscriberName": serviceModel.service.createSubscriberName,\r
+ "serviceType": serviceModel.service.serviceType,\r
+ "serviceRole": serviceModel.service.serviceRole\r
+ });\r
+ }\r
+\r
+ $scope.$broadcast(broadcastType, {\r
+ componentId: COMPONENT.SERVICE,\r
+ callbackFunction: function (response) {\r
+ if (response.isSuccessful) {\r
+ vidService.setModel(serviceModel);\r
+\r
+ var subscriberId = "Not Found";\r
+ var serviceType = "Not Found";\r
+\r
+ var serviceInstanceId = response.instanceId;\r
+\r
+ for (var i = 0; i < response.control.length; i++) {\r
+ if (response.control[i].id == "subscriberName") {\r
+ subscriberId = response.control[i].value;\r
+ } else if (response.control[i].id == "serviceType") {\r
+ serviceType = response.control[i].value;\r
+ }\r
+ }\r
+\r
+\r
+ $scope.refreshSubs(subscriberId, serviceType, serviceInstanceId);\r
+\r
+ }\r
+ }\r
+ });\r
+\r
+ }, function errorCallback(response) {\r
+ $log.error("Error: ", response);\r
+ });\r
+ };\r
+\r
+ var wholeData=[];\r
+ //extract all models from service instances properties and filter by the higher model version\r
+ $scope.filterDataWithHigerVersion = function(serviceData){\r
+\r
+ //get all service instances & models collected into array. key = model invariant id\r
+ var servicesByModelInvariant = _.reduce(serviceData, function(result, item) {\r
+ if (item['extra-properties']['extra-property']) {\r
+ var invariantId = item['extra-properties']['extra-property'][4];\r
+ if (invariantId) {\r
+ (result[invariantId["property-value"]] || (result[invariantId["property-value"]] = [])).push(item);\r
+ }\r
+ }\r
+ return result;\r
+ }, {});\r
+\r
+ //iterate over the array and get the highest model version for each group of services\r
+ var filterDataServicesByVersion = [];\r
+ _.forEach(servicesByModelInvariant, function(items) {\r
+ var maxVersionItem = _.maxBy(items, function(item) { return parseFloat(item['extra-properties']['extra-property'][6]["property-value"]); });\r
+ filterDataServicesByVersion.push(maxVersionItem);\r
+ });\r
+\r
+ return filterDataServicesByVersion;\r
+ };\r
+\r
+ $scope.tableData = [];\r
+ var oldData = [];\r
+ $scope.loadPreviousVersionData = function (version, invariantUUID) {\r
+ $scope.tableData = [];\r
+ oldData = [];\r
+ for (var i = 0; i < wholeData.length; i++) {\r
+ if (wholeData[i]['extra-properties']['extra-property'] && wholeData[i]['extra-properties']['extra-property'][4]['property-value'] == invariantUUID && version != wholeData[i]['extra-properties']['extra-property'][6]['property-value']) {\r
+ oldData.push(wholeData[i]);\r
+ }\r
+ }\r
+ $scope.tableData = oldData;\r
+ $scope.createType = "Previous Version";\r
+ var broadcastType = "createTableComponent";\r
+ $scope.componentName = invariantUUID;\r
+ $scope.$broadcast(broadcastType, {\r
+ componentId: COMPONENT.OLDVERSION,\r
+ callbackFunction: function (response) {\r
+ }\r
+ });\r
+ }\r
+ $scope.cancelCreateSIType = function () {\r
+\r
+ window.location.href = COMPONENT.SERVICE_MODLES_INSTANCES_SUBSCRIBERS_PATH;\r
+\r
+ }\r
+\r
+ $scope.fetchServices = function () {\r
+ var serviceIdList = [];\r
+\r
+ AaiService.getServices2(function (response) { // success\r
+ DataService.setServiceIdList(response);\r
+ }, function (response) { // failure\r
+ $scope.showError(FIELD.ERROR.AAI);\r
+ $scope.errorMsg = FIELD.ERROR.FETCHING_SERVICES + response.status;\r
+ $scope.errorDetails = response.data;\r
+ });\r
+ };\r
+\r
+ $scope.refreshSubs = function () {\r
+ $scope.init();\r
+ $scope.fetchSubs(FIELD.PROMPT.REFRESH_SUB_LIST);\r
+ $scope.fetchServices();\r
+ };\r
+\r
+ $scope.loadOwningEntity = function () {\r
+ OwningEntityService.getOwningEntityProperties(function (response) {\r
+ $scope.owningEntities = response.owningEntity;\r
+ $scope.projects = response.project;\r
+\r
+ // working project name: owning-entity-id-val-cp8128\r
+ // working owning entity name: owning-entity-id-val-cp8128\r
+ });\r
+ };\r
+\r
+ $scope.fetchSubs = function (status) {\r
+ $scope.status = status;\r
+\r
+ AaiService.getSubList(function (response) {\r
+ $scope.setProgress(100); // done\r
+ $scope.status = FIELD.STATUS.DONE;\r
+ $scope.isSpinnerVisible = false;\r
+ $scope.customerList = response;\r
+ }, function (response) { // failure\r
+ $scope.showError(FIELD.ERROR.AAI);\r
+ $scope.errorMsg = FIELD.ERROR.AAI_FETCHING_CUST_DATA + response.status;\r
+ $scope.errorDetails = response.data;\r
+ });\r
+ }\r
+\r
+ $scope.getPermitted = function (item) {\r
+ return item.isPermitted || item[FIELD.ID.IS_PERMITTED];\r
+\r
+ }\r
+\r
+\r
+ $scope.getSubDetails = function () {\r
+\r
+ $scope.init();\r
+ //$scope.selectedSubscriber = $location.search().selectedSubscriber;\r
+ // $scope.selectedServiceInstance = $location.search().selectedServiceInstance;\r
+ $scope.status = FIELD.STATUS.FETCHING_SUB_DETAILS + $scope.selectedSubscriber;\r
+ var query = $location.url().replace($location.path(),'');\r
+\r
+ $scope.displayData = [];\r
+ AaiService.searchServiceInstances(query).then(function (response) {\r
+ $scope.displayData = response.displayData;\r
+ if (response.displayData.length)\r
+ {\r
+ var first = response.displayData[0];\r
+ $scope.selectedSubscriberId = first.globalCustomerId;\r
+ $scope.selectedSubscriberName = first.subscriberName;\r
+ }\r
+ $scope.viewPerPage = 10;\r
+ $scope.totalPage = $scope.displayData.length / $scope.viewPerPage;\r
+ $scope.scrollViewPerPage = 2;\r
+ $scope.currentPage = 1;\r
+ $scope.searchCategory;\r
+ $scope.searchString = "";\r
+ $scope.currentPageNum = 1;\r
+ $scope.defaultSort = COMPONENT.SUBSCRIBER_NAME;\r
+ $scope.setProgress(100); // done\r
+ $scope.status = FIELD.STATUS.DONE;\r
+ $scope.isSpinnerVisible = false;\r
+\r
+ }).catch(function (response) {\r
+ $scope.showError(FIELD.ERROR.AAI);\r
+ $scope.errorMsg = FIELD.ERROR.AAI_FETCHING_CUST_DATA + response.status;\r
+ $scope.errorDetails = response.data;\r
+ });\r
+ };\r
+\r
+\r
+ $scope.$on(COMPONENT.MSO_DELETE_REQ, function (event, request) {\r
+ // $log.debug("deleteInstance: request:");\r
+ // $log.debug(request);\r
+ $scope.init();\r
+\r
+ $http.post($scope.baseUrl + request.url, {\r
+ requestDetails: request.requestDetails\r
+ }, {\r
+ timeout: $scope.responseTimeoutMsec\r
+ }).then($scope.handleInitialResponse)\r
+ ["catch"]($scope.handleServerError);\r
+ });\r
+\r
+ $scope.init = function () {\r
+ //PropertyService.setAaiBaseUrl("testaai");\r
+ //PropertyService.setAsdcBaseUrl("testasdc");\r
+\r
+ // takes a default value, retrieves the prop value from the file system and sets it\r
+ var msecs = PropertyService.retrieveMsoMaxPollingIntervalMsec();\r
+ PropertyService.setMsoMaxPollingIntervalMsec(msecs);\r
+\r
+ // takes a default value, retrieves the prop value from the file system and sets it\r
+ var polls = PropertyService.retrieveMsoMaxPolls();\r
+ PropertyService.setMsoMaxPolls(polls);\r
+\r
+ /*\r
+ * Common parameters that would typically be set when the page is\r
+ * displayed for a specific service instance id.\r
+ */\r
+\r
+ $scope.baseUrl = $scope.defaultBaseUrl;\r
+\r
+ $scope.isSpinnerVisible = true;\r
+ $scope.isProgressVisible = true;\r
+ $scope.isPopupVisible = true;\r
+ $scope.requestId = "";\r
+ $scope.error = "";\r
+ $scope.pollAttempts = 0;\r
+ $scope.log = "";\r
+ $scope.enableCloseButton(false);\r
+ $scope.resetProgress();\r
+ $scope.setProgress(2); // Show "a little" progress\r
+ }\r
+\r
+ function getRelatedInstanceGroupsByVnfId(genericVnf) {\r
+ var model = vidService.getModel();\r
+ if (model && model.vnfs && !_.isEmpty(model.vnfs)) {\r
+ Object.keys(model.vnfs).forEach(function (key) {\r
+ var vnf = model.vnfs[key];\r
+ if (vnf.vfcInstanceGroups && !_.isEmpty(vnf.vfcInstanceGroups)) {\r
+ if (vnf.uuid === genericVnf.modelVersionId) {\r
+ AaiService.getInstanceGroupsByVNFInstanceId(genericVnf.nodeId,\r
+ function (response) { //success\r
+ handleGetRelatedInstanceGroupsResponseForVnf(response, genericVnf);\r
+ },\r
+ function (response) { //failure\r
+ $scope.showError(FIELD.ERROR.AAI);\r
+ $scope.errorMsg = FIELD.ERROR.FETCHING_SERVICE_INSTANCE_DATA + response.status;\r
+ $scope.errorDetails = response.data;\r
+ }\r
+ )\r
+ }\r
+ }\r
+ })\r
+ }\r
+ }\r
+\r
+ function resolveModelDataIfMissing(modelVersionId) {\r
+ var model = vidService.getModel();\r
+ if (model && model.service && model.service.uuid === modelVersionId) {\r
+ return $q.resolve(); // no need to resolve anything\r
+ } else {\r
+ // resolve model and value of isPermitted\r
+ return resolveIfIsPermitted()\r
+ .then(function() {\r
+ return getAsdcModelByVersionId(modelVersionId);\r
+ })\r
+ }\r
+ }\r
+\r
+ function resolveIfIsPermitted() {\r
+ var deferred = $q.defer();\r
+ AaiService.searchServiceInstances(\r
+ '?subscriberId=' + $location.search().subscriberId +\r
+ '&serviceInstanceIdentifier=' + $location.search().serviceInstanceId)\r
+ .then(function (response) {\r
+ if (response.displayData && response.displayData.length) {\r
+ var first = response.displayData[0];\r
+ $scope.isPermitted = first.isPermitted;\r
+ deferred.resolve(first.isPermitted);\r
+ } else {\r
+ deferred.reject("some error while resolveIfIsPermitted")\r
+ }\r
+ });\r
+\r
+ return deferred.promise;\r
+ }\r
+\r
+ var serviceNetworkVlans = [];\r
+ var vnfNetworksAndVlans = [];\r
+\r
+ $scope.getComponentList = function (event, request) {\r
+\r
+ $scope.isSpinnerVisible = true;\r
+ $scope.isProgressVisible = true;\r
+ $scope.isPopupVisible = true;\r
+ $scope.requestId = "";\r
+ $scope.error = "";\r
+ $scope.pollAttempts = 0;\r
+ $scope.log = "";\r
+\r
+ $scope.resetProgress();\r
+ $scope.setProgress(2); // Show "a little" progress\r
+\r
+ $scope.globalCustomerId = $location.search().subscriberId;\r
+ $scope.serviceType = $location.search().serviceType;\r
+ $scope.serviceInstanceId = $location.search().serviceInstanceId;\r
+ $scope.subscriberName = $location.search().subscriberName;\r
+\r
+ //$scope.getAsdcModel($location.search().modelUuid);\r
+\r
+ //make sure view/edit don't open new deploy service popup\r
+ DataService.setShouldIncludeInAsyncInstantiationFlow(false);\r
+\r
+ return getModelVersionIdForServiceInstance({\r
+ globalCustomerId: $location.search().subscriberId,\r
+ serviceInstanceId: $location.search().serviceInstanceId,\r
+ aaiModelVersionId: $location.search().aaiModelVersionId\r
+ })\r
+ .then(resolveModelDataIfMissing)\r
+ .then($scope.prepareScopeWithModel)\r
+ .then(function () {\r
+ return AaiService.getVlansByNetworksMapping($scope.globalCustomerId, $scope.serviceType, $scope.serviceInstanceId, $scope.service.model.service.uuid);\r
+ })\r
+ .then(function (vlanByNetwork) {\r
+ serviceNetworkVlans = vlanByNetwork.serviceNetworks ? vlanByNetwork.serviceNetworks : [];\r
+ vnfNetworksAndVlans = vlanByNetwork.vnfNetworks ? vlanByNetwork.vnfNetworks : [];\r
+ $log.debug('vlanByNetwork', vlanByNetwork);\r
+ $scope.namedQueryId = VIDCONFIGURATION.COMPONENT_LIST_NAMED_QUERY_ID;\r
+ $scope.status = FIELD.STATUS.FETCHING_SERVICE_INST_DATA + $scope.serviceInstanceId;\r
+\r
+ $scope.hasFabricConfigurations = !UtilityService.isObjectEmpty($scope.service.model.fabricConfigurations);\r
+ return AaiService.runNamedQuery($scope.namedQueryId, $scope.globalCustomerId, $scope.serviceType, $scope.serviceInstanceId,\r
+ function (response) { //success\r
+ $scope.handleInitialResponseInventoryItems(response);\r
+ $scope.setProgress(100); // done\r
+ $scope.status = FIELD.STATUS.DONE;\r
+ $scope.isSpinnerVisible = false;\r
+ //TODO\r
+ },\r
+ function (response) { //failure\r
+ $scope.showError(FIELD.ERROR.AAI);\r
+ $scope.errorMsg = FIELD.ERROR.FETCHING_SERVICE_INSTANCE_DATA + response.status;\r
+ $scope.errorDetails = response.data;\r
+ }\r
+ );\r
+ });\r
+ };\r
+\r
+ $scope.handleServerError = function (response, status) {\r
+ alert(response.statusText);\r
+ };\r
+\r
+ function handleGetRelatedInstanceGroupsResponseForVnf(response, genericVnf) {\r
+ _.forEach(response.data, function (instanceGroup) {\r
+ var newInstanceGroup = {\r
+ name: instanceGroup.name,\r
+ type: instanceGroup.type\r
+ };\r
+ genericVnf.instanceGroups.push(newInstanceGroup);\r
+ });\r
+ }\r
+\r
+\r
+\r
+ function getModelVersionIdForServiceInstance(instance) {\r
+ if (UtilityService.hasContents(instance.aaiModelVersionId)) {\r
+ return $q.resolve(instance.aaiModelVersionId);\r
+ } else if ($scope.modelVersionIdForServiceInstance\r
+ && $scope.modelVersionIdForServiceInstance.globalCustomerId === instance.globalCustomerId\r
+ && $scope.modelVersionIdForServiceInstance.serviceInstanceId === instance.serviceInstanceId\r
+ ) {\r
+ return $q.resolve($scope.modelVersionIdForServiceInstance.aaiModelVersionId);\r
+ } else {\r
+ $scope.status = FIELD.STATUS.FETCHING_SERVICE_INST_DATA + $scope.serviceInstanceId;\r
+ return AaiService.getModelVersionId(instance.globalCustomerId, instance.serviceInstanceId)\r
+ .then(function (aaiModelVersionId) {\r
+ $scope.modelVersionIdForServiceInstance = {\r
+ globalCustomerId: instance.globalCustomerId,\r
+ serviceInstanceId: instance.serviceInstanceId,\r
+ aaiModelVersionId: aaiModelVersionId\r
+ };\r
+ return $q.resolve(aaiModelVersionId);\r
+ });\r
+ }\r
+ }\r
+\r
+ $scope.onViewEditClick = function (disData) {\r
+ $log.debug("disData", disData, null, 4);\r
+\r
+ getModelVersionIdForServiceInstance(disData)\r
+ .then(getAsdcModelByVersionId, handleErrorGettingModelVersion)\r
+ .then(navigateToViewEditPage);\r
+\r
+\r
+ function navigateToViewEditPage() {\r
+ window.location.href = AsdcService.shouldTakeTheDrawingBoardViewEdit(vidService.getModel()) ?\r
+ drawingBoardViewEditUrl() : oldViewEditUrl();\r
+ }\r
+\r
+ function oldViewEditUrl() {\r
+ return COMPONENT.INSTANTIATE_ROOT_PATH + disData.globalCustomerId +\r
+ COMPONENT.SUBSCRIBERNAME_SUB_PATH + disData.subscriberName +\r
+ COMPONENT.SERVICETYPE_SUB_PATH + disData.serviceType +\r
+ COMPONENT.SERVICEINSTANCEID_SUB_PATH + disData.serviceInstanceId +\r
+ COMPONENT.MODELVERSIONID_SUB_PATH + disData.aaiModelVersionId +\r
+ COMPONENT.IS_PERMITTED_SUB_PATH + disData.isPermitted;\r
+ }\r
+\r
+ function drawingBoardViewEditUrl() {\r
+ return 'serviceModels.htm#/servicePlanning/EDIT?' +\r
+ 'serviceModelId=' + disData.aaiModelVersionId +\r
+ '&subscriberId=' + disData.globalCustomerId +\r
+ '&serviceType=' + disData.serviceType +\r
+ '&serviceInstanceId=' + disData.serviceInstanceId;\r
+ }\r
+ };\r
+\r
+ function handleErrorGettingModelVersion(err) {\r
+ $log.error("aaiSubscriber getModelVersionIdForServiceInstance - " + err);\r
+ $scope.errorMsg = err;\r
+ alert($scope.errorMsg);\r
+ return $q.reject();\r
+ }\r
+\r
+ function getAsdcModelByVersionId(aaiModelVersionId) {\r
+ // aaiModelVersionId is the model uuid\r
+ var pathQuery = COMPONENT.SERVICES_PATH + aaiModelVersionId;\r
+ return $http({\r
+ method: 'GET',\r
+ url: pathQuery\r
+ }).then(function successCallback(response) {\r
+ if (response.headers()['content-type'].includes('json')) {\r
+ vidService.setModel(response.data);\r
+ console.log("aaiSubscriber getAsdcModel DONE!!!!");\r
+ } else {\r
+ // the response is erroneous\r
+ console.log("aaiSubscriber getAsdcModel BAD RESPONSE");\r
+ errorCallback(response);\r
+ return $q.reject()\r
+ }\r
+ }, errorCallback);\r
+\r
+ function errorCallback(response) {\r
+ $log.error("aaiSubscriber getAsdcModel - " + FIELD.ERROR.NO_MATCHING_MODEL_AAI + aaiModelVersionId);\r
+ $scope.errorMsg = FIELD.ERROR.NO_MATCHING_MODEL_AAI + aaiModelVersionId;\r
+ alert($scope.errorMsg);\r
+ }\r
+ }\r
+\r
+ function returnMatchingServiceSubscription(serviceSubs, serviceId){\r
+ var orchStatus;\r
+ serviceSubs.forEach(function(item){\r
+ if (item[FIELD.ID.SERVICE_INSTANCES] != null) {\r
+ item[FIELD.ID.SERVICE_INSTANCES][FIELD.ID.SERVICE_INSTANCE].forEach(function (service) {\r
+ if (service[FIELD.ID.SERVICE_INSTANCE_ID] === serviceId) {\r
+ orchStatus = service['orchestration-status']\r
+ }\r
+ })\r
+ }\r
+ });\r
+ return orchStatus;\r
+ }\r
+\r
+ $scope.getTenants = function (globalCustomerId) {\r
+ $http.get(FIELD.ID.AAI_GET_TENTANTS + globalCustomerId)\r
+ .then(function successCallback(response) {\r
+ return response.data;\r
+ //$location.path("/instantiate");\r
+ }, function errorCallback(response) {\r
+ //TODO\r
+ });\r
+ }\r
+\r
+ $scope.isConfigurationDataAvailiable = function (configuration) {\r
+ $log.debug(configuration);\r
+ return configuration.configData && (!configuration.configData.errorDescription);\r
+ }\r
+\r
+ $scope.isActivateDeactivateEnabled = function(btnType) {\r
+ if ($scope.serviceOrchestrationStatus) {\r
+ var status = $scope.serviceOrchestrationStatus.toLowerCase();\r
+ switch (btnType) {\r
+ case "activate":\r
+ return _.includes(COMPONENT.ACTIVATE_SERVICE_STATUSES, status);\r
+ break;\r
+ case "deactivate":\r
+ return status === 'active';\r
+ break;\r
+ }\r
+ }\r
+\r
+ return false;\r
+ };\r
+\r
+ $scope.isShowVerifyService = function () {\r
+ return featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_SHOW_VERIFY_SERVICE);\r
+ }\r
+\r
+ $scope.isEnableVerifyService = function () {\r
+ //Button should only be enabled when the service type is A la carte\r
+ if (DataService.getALaCarte()) {\r
+ return $scope.verifyButtonEnabled;\r
+ }\r
+ return false;\r
+ };\r
+\r
+ $scope.activateVerifyService = function () {\r
+ $scope.verifyButtonEnabled = false;\r
+ let url = COMPONENT.VERIFY_SERVICE_URL;\r
+\r
+ let config = {\r
+ headers: {\r
+ 'Content-Type': 'application/json'\r
+ }\r
+ };\r
+\r
+ let data = {\r
+ "serviceInstanceList": [\r
+ {\r
+ "serviceInstanceId": $scope.serviceInstanceId,\r
+ "modelVersionId": $scope.service.model.service.uuid,\r
+ "modelInvariantId": $scope.service.model.service.invariantUuid,\r
+ "customerId": $scope.globalCustomerId,\r
+ "serviceType": $scope.service.instance.serviceType,\r
+ }\r
+ ]\r
+ };\r
+ AaiService.postPOMBAverificationRequest(url, data, config);\r
+\r
+ };\r
+\r
+ $scope.isShowAssignmentsEnabled = function () {\r
+ if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_SHOW_ASSIGNMENTS)) {\r
+ if ($scope.serviceOrchestrationStatus) {\r
+ return $scope.serviceOrchestrationStatus.toLowerCase() === 'assigned';\r
+ }\r
+ }\r
+ return false;\r
+ };\r
+\r
+ $scope.isActivateFabricConfiguration = function () {\r
+\r
+ if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS) && $scope.hasFabricConfigurations) {\r
+ if ($scope.serviceOrchestrationStatus) {\r
+ return $scope.serviceOrchestrationStatus.toLowerCase() === 'assigned';\r
+ }\r
+ }\r
+ return false;\r
+ };\r
+\r
+ $scope.isResumeShown = function (status) {\r
+ var vfModuleStatus = status.toLowerCase();\r
+ var serviceStatus = $scope.serviceOrchestrationStatus && $scope.serviceOrchestrationStatus.toLowerCase();\r
+ return _.includes(['pendingactivation', 'assigned'], vfModuleStatus) && !$scope.isActivateDeactivateEnabled("activate");\r
+ };\r
+\r
+ $scope.handleInitialResponseInventoryItems = function (response) {\r
+\r
+ $scope.inventoryResponseItemList = response.data[FIELD.ID.INVENTORY_RESPONSE_ITEM]; // get data from json\r
+ $log.debug($scope.inventoryResponseItemList);\r
+\r
+ $scope.displayData = [];\r
+ $scope.vnfs = [];\r
+\r
+ $scope.counter = 100;\r
+\r
+ $scope.subscriberName = "";\r
+\r
+ $scope.allConfigurationsAssigned = true;\r
+ // just look up the subscriber name in A&AI here...\r
+ AaiService.getSubscriberName($scope.globalCustomerId, function (response) {\r
+ $scope.subscriberName = response.subscriberName;\r
+ DataService.setSubscriberName($scope.subscriberName);\r
+ $scope.serviceOrchestrationStatus = returnMatchingServiceSubscription(response.serviceSubscriptions[FIELD.ID.SERVICE_SUBSCRIPTION], $scope.serviceInstanceId);\r
+ if ($scope.serviceOrchestrationStatus.toLowerCase() !== FIELD.STATUS.ASSIGNED.toLowerCase()) {\r
+ $scope.allConfigurationsAssigned = false;\r
+ }\r
+ angular.forEach($scope.inventoryResponseItemList, function (inventoryResponseItem, key) {\r
+\r
+ $scope.inventoryResponseItem = inventoryResponseItem;\r
+\r
+ $scope.service.instance = {\r
+ "name": $scope.inventoryResponseItem[FIELD.ID.SERVICE_INSTANCE][FIELD.ID.SERVICE_INSTANCE_NAME],\r
+ "serviceInstanceId": $scope.serviceInstanceId,\r
+ "serviceType": $scope.serviceType,\r
+ "globalCustomerId": $scope.globalCustomerId,\r
+ "subscriberName": $scope.subscriberName,\r
+ "id": $scope.serviceInstanceId,\r
+ "inputs": {\r
+ "a": {\r
+ "type": PARAMETER.STRING,\r
+ "description": FIELD.PROMPT.VAR_DESCRIPTION_A,\r
+ "default": FIELD.PROMPT.DEFAULT_A\r
+ },\r
+ "b": {\r
+ "type": PARAMETER.STRING,\r
+ "description": FIELD.PROMPT.VAR_DESCRIPTION_B,\r
+ "default": FIELD.PROMPT.DEFAULT_B\r
+ }\r
+ },\r
+ "object": $scope.inventoryResponseItem[FIELD.ID.SERVICE_INSTANCE],\r
+ "vnfs": [],\r
+ "networks": [],\r
+ "configurations": []\r
+ };\r
+\r
+ var portMirroringConfigurationIds = [];\r
+ if (inventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS] != null) {\r
+\r
+ angular.forEach(inventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS][FIELD.ID.INVENTORY_RESPONSE_ITEM], function (subInventoryResponseItem, key) {\r
+ // i expect to find vnfs now\r
+\r
+ if (subInventoryResponseItem[FIELD.ID.L3_NETWORK] != null) {\r
+ var l3NetworkObject = subInventoryResponseItem[FIELD.ID.L3_NETWORK];\r
+ var l3Network = {\r
+ "id": $scope.counter++,\r
+ "name": l3NetworkObject[FIELD.ID.NETWORK_NAME],\r
+ "itemType": FIELD.ID.L3_NETWORK,\r
+ "nodeId": l3NetworkObject[FIELD.ID.NETWORK_ID],\r
+ "nodeType": l3NetworkObject[FIELD.ID.NETWORK_TYPE],\r
+ "nodeStatus": l3NetworkObject[FIELD.ID.ORCHESTRATION_STATUS],\r
+ "object": l3NetworkObject,\r
+ "nodes": [],\r
+ "subnets": [],\r
+ "vlans": []\r
+ };\r
+ if (subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS] != null) {\r
+ //console.log ("subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS]=");\r
+ //console.log (JSON.stringify (subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS], null, 4 ));\r
+ angular.forEach(subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS][FIELD.ID.INVENTORY_RESPONSE_ITEM], function (subSubInventoryResponseItem, key) {\r
+ //console.log (JSON.stringify (subSubInventoryResponseItem, null, 4 ));\r
+ var subnet = {};\r
+ var subnetObject;\r
+ if (subSubInventoryResponseItem[FIELD.ID.SUB_NET] != null) {\r
+ subnetObject = subSubInventoryResponseItem[FIELD.ID.SUB_NET];\r
+ subnet = {\r
+ "subnet-id": subnetObject[FIELD.ID.SUBNET_ID],\r
+ "subnet-name": subnetObject[FIELD.ID.SUBNET_NAME],\r
+ "gateway-address": subnetObject[FIELD.ID.GATEWAY_ADDRESS],\r
+ "network-start-address": subnetObject[FIELD.ID.NETWORK_START_ADDRESS],\r
+ "cidr-mask": subnetObject[FIELD.ID.CIDR_MASK]\r
+ };\r
+ l3Network.subnets.push(subnet);\r
+ }\r
+ });\r
+ }\r
+\r
+ \r
+ var networkObj = _.find(serviceNetworkVlans, { 'networkId': l3Network.nodeId});\r
+ if (networkObj !== undefined && networkObj.vlans !== undefined) {\r
+ l3Network["vlans"] = networkObj.vlans;\r
+ }\r
+ $scope.service.instance[FIELD.ID.NETWORKS].push(l3Network);\r
+ }\r
+\r
+ if (subInventoryResponseItem[FIELD.ID.GENERIC_VNF] != null) {\r
+ var genericVnfObject = subInventoryResponseItem[FIELD.ID.GENERIC_VNF];\r
+\r
+ var genericVnf = {\r
+ "name": genericVnfObject[FIELD.ID.VNF_NAME],\r
+ "id": $scope.counter++,\r
+ "itemType": COMPONENT.VNF,\r
+ "nodeType": genericVnfObject[FIELD.ID.VNF_TYPE],\r
+ "nodeId": genericVnfObject[FIELD.ID.VNF_ID],\r
+ "nodeStatus": genericVnfObject[FIELD.ID.ORCHESTRATION_STATUS],\r
+ "modelVersionId" : genericVnfObject[FIELD.ID.MODEL_VERSION_ID],\r
+ "object": genericVnfObject,\r
+ "vfModules": [],\r
+ "volumeGroups": [],\r
+ "instanceGroups": [],\r
+ "availableVolumeGroups": [],\r
+ "networks": []\r
+ };\r
+\r
+ var vnfNetworkObj = _.find(vnfNetworksAndVlans, { 'vnfId': genericVnf.nodeId});\r
+ if (vnfNetworkObj !== undefined && vnfNetworkObj.networks !== undefined) {\r
+ genericVnf["networks"] = vnfNetworkObj.networks;\r
+ }\r
+\r
+ $scope.service.instance[FIELD.ID.VNFS].push(genericVnf);\r
+ getRelatedInstanceGroupsByVnfId(genericVnf);\r
+\r
+\r
+\r
+ // look for volume-groups\r
+ if (subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS] != null) {\r
+ angular.forEach(subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS][FIELD.ID.INVENTORY_RESPONSE_ITEM], function (vfmodules, key) {\r
+\r
+ if (vfmodules[FIELD.ID.VOLUME_GROUP] != null) {\r
+ var volumeGroupObject = vfmodules[FIELD.ID.VOLUME_GROUP];\r
+ var volumeGroup = {\r
+ "id": $scope.counter++,\r
+ "name": volumeGroupObject[FIELD.ID.VOLUME_GROUP_NAME],\r
+ "itemType": FIELD.ID.VOLUME_GROUP,\r
+ "nodeId": volumeGroupObject[FIELD.ID.VOLUME_GROUP_ID],\r
+ "nodeType": volumeGroupObject[FIELD.ID.VNF_TYPE],\r
+ "nodeStatus": volumeGroupObject[FIELD.ID.ORCHESTRATION_STATUS],\r
+ "object": volumeGroupObject,\r
+ "nodes": []\r
+ };\r
+ genericVnf[FIELD.ID.VOLUMEGROUPS].push(volumeGroup);\r
+ genericVnf[FIELD.ID.AVAILABLEVOLUMEGROUPS].push(volumeGroup);\r
+ }\r
+ });\r
+ }\r
+ // now we've loaded up the availableVolumeGroups, we can use it\r
+ if (subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS] != null) {\r
+ angular.forEach(subInventoryResponseItem[FIELD.ID.INVENTORY_RESPONSE_ITEMS][FIELD.ID.INVENTORY_RESPONSE_ITEM], function (vfmodules, key) {\r
+\r
+ if (vfmodules[FIELD.ID.VF_MODULE] != null) {\r
+ var vfModuleObject = vfmodules[FIELD.ID.VF_MODULE];\r
+ var vfModule = {\r
+ "id": $scope.counter++,\r
+ "name": vfModuleObject[FIELD.ID.VF_MODULE_NAME],\r
+ "itemType": FIELD.ID.VF_MODULE,\r
+ "nodeType": FIELD.ID.VF_MODULE,\r
+ "nodeStatus": vfModuleObject[FIELD.ID.ORCHESTRATION_STATUS],\r
+ "volumeGroups": [],\r
+ "object": vfModuleObject,\r
+ "networks": []\r
+ };\r
+ genericVnf[FIELD.ID.VF_MODULES].push(vfModule);\r
+ if (vfmodules[FIELD.ID.INVENTORY_RESPONSE_ITEMS] != null) {\r
+ angular.forEach(vfmodules[FIELD.ID.INVENTORY_RESPONSE_ITEMS][FIELD.ID.INVENTORY_RESPONSE_ITEM], function (networks, key) {\r
+ if (networks[FIELD.ID.L3_NETWORK] != null) {\r
+ var l3NetworkObject = networks[FIELD.ID.L3_NETWORK];\r
+ var l3Network = {\r
+ "id": $scope.counter++,\r
+ "name": l3NetworkObject[FIELD.ID.NETWORK_NAME],\r
+ "itemType": FIELD.ID.L3_NETWORK,\r
+ "nodeId": l3NetworkObject[FIELD.ID.NETWORK_ID],\r
+ "nodeType": l3NetworkObject[FIELD.ID.NETWORK_TYPE],\r
+ "nodeStatus": l3NetworkObject[FIELD.ID.ORCHESTRATION_STATUS],\r
+ "object": l3NetworkObject,\r
+ "nodes": []\r
+ };\r
+ vfModule[FIELD.ID.NETWORKS].push(l3Network);\r
+ }\r
+ if (networks[FIELD.ID.VOLUME_GROUP] != null) {\r
+ var volumeGroupObject = networks[FIELD.ID.VOLUME_GROUP];\r
+\r
+ var volumeGroup = {\r
+ "id": $scope.counter++,\r
+ "name": volumeGroupObject[FIELD.ID.VOLUME_GROUP_NAME],\r
+ "itemType": FIELD.ID.VOLUME_GROUP,\r
+ "nodeId": volumeGroupObject[FIELD.ID.VOLUME_GROUP_ID],\r
+ "nodeType": volumeGroupObject[FIELD.ID.VNF_TYPE],\r
+ "nodeStatus": volumeGroupObject[FIELD.ID.ORCHESTRATION_STATUS],\r
+ "object": volumeGroupObject,\r
+ "nodes": []\r
+ };\r
+ var tmpVolGroup = [];\r
+\r
+ angular.forEach(genericVnf[FIELD.ID.AVAILABLEVOLUMEGROUPS], function (avgroup, key) {\r
+ if (avgroup.name != volumeGroup.name) {\r
+ tmpVolGroup.push(avgroup);\r
+ }\r
+ });\r
+\r
+ genericVnf[FIELD.ID.AVAILABLEVOLUMEGROUPS] = tmpVolGroup;\r
+\r
+ vfModule[FIELD.ID.VOLUMEGROUPS].push(volumeGroup);\r
+ }\r
+\r
+ });\r
+ }\r
+ }\r
+ });\r
+ }\r
+ }\r
+\r
+\r
+ if (subInventoryResponseItem[FIELD.ID.GENERIC_CONFIGURATION] != null) {\r
+ var configObject = subInventoryResponseItem[FIELD.ID.GENERIC_CONFIGURATION];\r
+ var config = {\r
+ "id": $scope.counter++,\r
+ "name": configObject[FIELD.ID.CONFIGURATION_NAME],\r
+ "itemType": FIELD.ID.CONFIGURATION,\r
+ "nodeId": configObject[FIELD.ID.CONFIGURATION_ID],\r
+ "nodeType": configObject[FIELD.ID.CONFIGURATION_TYPE],\r
+ "nodeStatus": configObject[FIELD.ID.ORCHESTRATION_STATUS],\r
+ "modelInvariantId": configObject[FIELD.ID.MODEL_INVAR_ID],\r
+ "modelVersionId": configObject[FIELD.ID.MODEL_VERSION_ID],\r
+ "modelCustomizationId": configObject[FIELD.ID.MODEL_CUSTOMIZATION_ID],\r
+ "object": configObject,\r
+ "ports": [],\r
+ "configData" : null\r
+ };\r
+ if( !$scope.hasFabricConfigurations ) {\r
+ portMirroringConfigurationIds.push(configObject[FIELD.ID.CONFIGURATION_ID]);\r
+ $scope.service.instance[FIELD.ID.CONFIGURATIONS].push(config);\r
+ $scope.allowConfigurationActions = [FIELD.STATUS.AAI_ACTIVE, FIELD.STATUS.AAI_INACTIVE, FIELD.STATUS.AAI_CREATED].indexOf(config.nodeStatus) != -1;\r
+ } else {\r
+ if (config.nodeStatus.toLowerCase() !== FIELD.STATUS.ASSIGNED.toLowerCase()) {\r
+ $scope.allConfigurationsAssigned = false;\r
+ if ($scope.isActivateFabricConfiguration()) {\r
+ $scope.errorMsg = "Activate fabric configuration button is not available as some of the configuration objects are not in Assigned status. Check MSO logs for the reasons for this abnormal case.";\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ });\r
+\r
+ AaiService.getPortMirroringData(portMirroringConfigurationIds).then(function(result){\r
+ angular.forEach($scope.service.instance[FIELD.ID.CONFIGURATIONS], function(config){\r
+ config['configData'] = result.data[config['nodeId']];\r
+\r
+ if (config.configData && config.configData.errorDescription) {\r
+ $scope.errorMsg = ($scope.errorMsg ? $scope.errorMsg + "\n" : "") +\r
+ "Cannot read cloud-region for configuration \"" + config.name + "\": " +\r
+ config.configData.errorDescription;\r
+ }\r
+ });\r
+ });\r
+\r
+ AaiService.getPortMirroringSourcePorts(portMirroringConfigurationIds).then(function(result){\r
+ angular.forEach($scope.service.instance[FIELD.ID.CONFIGURATIONS], function(config){\r
+ angular.forEach(result.data[config['nodeId']], function(port){\r
+ if (port.errorDescription) {\r
+ $scope.errorMsg = ($scope.errorMsg ? $scope.errorMsg + "\n" : "") +\r
+ "Cannot read a source port for configuration \"" + config.name + "\": " +\r
+ port.errorDescription;\r
+ } else {\r
+ config.ports.push({\r
+ "portId": port[FIELD.ID.PORT_ID],\r
+ "portName": port[FIELD.ID.PORT_NAME],\r
+ "portStatus": port[FIELD.ID.PORT_MIRRORED] === true ? FIELD.STATUS.AAI_ENABLED : FIELD.STATUS.AAI_DISABLED\r
+ });\r
+ }\r
+ });\r
+ });\r
+ });\r
+\r
+ }\r
+ });\r
+\r
+ var aaiNetworkIds = _.map(serviceNetworkVlans, 'networkId');\r
+ var serviceInstanceNetworkIds = _.map($scope.service.instance[FIELD.ID.NETWORKS], 'nodeId');\r
+ var isContains = aaiNetworkIds.every(function(val) { return serviceInstanceNetworkIds.indexOf(val) >= 0; });\r
+ if (aaiNetworkIds.length && !isContains) {\r
+ $log.error("vlansByNetworks contain network that not found in service instance", aaiNetworkIds, serviceInstanceNetworkIds);\r
+ }\r
+\r
+ });\r
+ };\r
+\r
+\r
+\r
+\r
+ $scope.handleInitialResponse = function (response) {\r
+ try {\r
+ $scope.enableCloseButton(true);\r
+ $scope.updateLog(response);\r
+ if (response.data.status < 200 || response.data.status > 202) {\r
+ $scope.showError(FIELD.ERROR.MSO);\r
+ $scope.status = FIELD.ERROR.AAI_FETCHING_CUST_DATA + response.data.status;\r
+\r
+ return;\r
+ }\r
+\r
+ $scope.setProgress(100); // done\r
+ $scope.status = FIELD.STATUS.DONE;\r
+ $scope.isSpinnerVisible = false;\r
+\r
+ $scope.customer = response.data.customer; // get data from json\r
+\r
+ $scope.customerList = [];\r
+\r
+ angular.forEach($scope.customer, function (subVal, subKey) {\r
+ var cust = {\r
+ "globalCustomerId": subVal[FIELD.ID.GLOBAL_CUSTOMER_ID],\r
+ "subscriberName": subVal[FIELD.ID.SUBNAME],\r
+ "isPermitted": subVal[FIELD.ID.IS_PERMITTED]\r
+ };\r
+\r
+ $scope.customerList.push(cust);\r
+ });\r
+\r
+ } catch (error) {\r
+ $scope.showContentError(error);\r
+ }\r
+ }\r
+\r
+ $scope.autoGetSubs = function () {\r
+ /*\r
+ * Optionally comment in / out one of these method calls (or add a similar\r
+ * entry) to auto-invoke an entry when the test screen is redrawn.\r
+ */\r
+ $scope.getSubs();\r
+\r
+ }\r
+\r
+ $scope.updateLog = function (response) {\r
// $scope.log = UtilityService.getCurrentTime() + " HTTP Status: " + \r
// UtilityService.getHttpStatusText(response.data.status) + "\n" +\r
// angular.toJson(response.data.entity, true) + "\n\n" + $scope.log;\r
// UtilityService.checkUndefined("entity", response.data.entity);\r
// UtilityService.checkUndefined("status", response.data.status); \r
- }\r
-\r
- $scope.handleServerError = function(response, status) { \r
- $scope.enableCloseButton(true);\r
- var message = UtilityService.getHttpErrorMessage(response);\r
- if (message != ""){\r
- message = " (" + message + ")";\r
- }\r
- $scope.showError(FIELD.ERROR.SYSTEM_ERROR + message);\r
- }\r
-\r
- $scope.showContentError = function(message) {\r
- // $log.debug(message);\r
- console.log(message);\r
- if (UtilityService.hasContents(message)) {\r
- $scope.showError("System failure (" + message + ")");\r
- } else {\r
- $scope.showError(FIELD.ERROR.SYSTEM_ERROR);\r
- }\r
- }\r
-\r
- $scope.showError = function(message) {\r
- $scope.isSpinnerVisible = false;\r
- $scope.isProgressVisible = false;\r
- $scope.error = message;\r
- $scope.status = FIELD.STATUS.ERROR;\r
- }\r
-\r
- $scope.close = function() {\r
- if ($scope.timer != undefined) {\r
- $timeout.cancel($scope.timer); \r
- }\r
- $scope.isPopupVisible = false;\r
- }\r
-\r
-\r
-\r
- /*\r
- * Consider converting the progress bar mechanism, the disabled button handling\r
- * and the following methods to generic Angular directive(s) and/or approach.\r
- */\r
-\r
- $scope.enableCloseButton = function(isEnabled) {\r
- var selector = FIELD.STYLE.MSO_CTRL_BTN;\r
-\r
- $scope.isCloseEnabled = isEnabled;\r
-\r
- if (isEnabled) {\r
- $(selector).addClass(FIELD.STYLE.BTN_PRIMARY).removeClass(FIELD.STYLE.BTN_INACTIVE).attr(FIELD.STYLE.BTN_TYPE, FIELD.STYLE.PRIMARY);\r
- } else {\r
- $(selector).removeClass(FIELD.STYLE.BTN_PRIMARY).addClass(FIELD.STYLE.BTN_INACTIVE).attr(FIELD.STYLE.BTN_TYPE, FIELD.STYLE.DISABLED); \r
- }\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
-\r
- $scope.reloadRoute = function() {\r
- $route.reload();\r
- }\r
-\r
- $scope.prevPage = function() {\r
- $scope.currentPage--;\r
- }\r
-\r
- $scope.nextPage = function() {\r
- $scope.currentPage++;\r
- }\r
- $scope.serviceInstanceses = [{"sinstance":FIELD.NAME.SERVICE_INSTANCE_Id},{"sinstance":FIELD.NAME.SERVICE_INSTANCE_NAME}]\r
- $scope.getSubscriberDet = function(selectedCustomer,selectedserviceinstancetype,selectedServiceInstance){\r
- \r
- var sintype =selectedserviceinstancetype;\r
- if (selectedServiceInstance != "" && selectedServiceInstance != undefined) {\r
- selectedServiceInstance.trim();\r
-\r
- // check with A&AI\r
- $http.get(COMPONENT.AAI_GET_SERVICE_INSTANCE_PATH + selectedServiceInstance+"/"+sintype + "?r=" + Math.random(), {\r
-\r
- },{\r
- timeout: $scope.responseTimeoutMsec\r
- }).then(function(response) {\r
- var notFound = true;\r
- if (angular.isArray(response.data[FIELD.ID.RESULT_DATA])) {\r
- var item = [];\r
- var urlParts = [];\r
- item = response.data[FIELD.ID.RESULT_DATA][0];\r
- var url = item[FIELD.ID.RESOURCE_LINK];\r
- var globalCustomerId = "";\r
- var serviceSubscription = "";\r
- // split it and find the customer Id and service-subscription\r
- urlParts = url.split("/");\r
- if (urlParts[7] === FIELD.ID.CUSTOMER) { \r
- globalCustomerId = urlParts[8];\r
- }\r
- if (urlParts[10] === FIELD.ID.SERVICE_SUBSCRIPTION) { \r
- serviceSubscription = urlParts[11];\r
- }\r
-\r
- if (globalCustomerId !== "") {\r
- notFound = false;\r
- window.location.href = COMPONENT.SELECTED_SERVICE_SUB_PATH + serviceSubscription + COMPONENT.SELECTEDSUBSCRIBER_SUB_PATH + globalCustomerId + COMPONENT.SELECTEDSERVICEINSTANCE_SUB_PATH + selectedServiceInstance;\r
- }\r
- }\r
- if (notFound) {\r
- alert(FIELD.ERROR.SERVICE_INST_DNE);\r
- }\r
- }); // add a failure callback...\r
- } else if (selectedCustomer != null) { \r
- window.location.href = COMPONENT.SELECTED_SUB_PATH + selectedCustomer;\r
- } else {\r
- alert(FIELD.ERROR.SELECT);\r
- }\r
- };\r
- }]).directive('restrictInput', function(){\r
- \r
- return {\r
- \r
- restrict: 'A',\r
- require: 'ngModel',\r
- link: function($scope, element, attr, ctrl){\r
- ctrl.$parsers.unshift(function(viewValue){\r
- \r
- var types = $scope.$eval(attr.restrictInput);\r
- if(!types.regex && types.type){\r
- \r
- switch(types.type){\r
- case 'Service Instance Name' : types.regex = '^[a-zA-Z0-9-_]*$'; break;\r
- default: types.regex= '';\r
- }\r
- }\r
- var reg = new RegExp(types.regex);\r
- if(reg.test(viewValue)){\r
- return viewValue;\r
- } else {\r
- var overrideValue = (reg.test(viewValue) ? viewValue : '');\r
- element.val(overrideValue);\r
- return overrideValue;\r
- }\r
- });\r
- }\r
- };\r
+ }\r
+\r
+ $scope.handleServerError = function (response, status) {\r
+ $scope.enableCloseButton(true);\r
+ var message = UtilityService.getHttpErrorMessage(response);\r
+ if (message != "") {\r
+ message = " (" + message + ")";\r
+ }\r
+ $scope.showError(FIELD.ERROR.SYSTEM_ERROR + message);\r
+ }\r
+\r
+ $scope.showContentError = function (message) {\r
+ // $log.debug(message);\r
+ console.log(message);\r
+ if (UtilityService.hasContents(message)) {\r
+ $scope.showError("System failure (" + message + ")");\r
+ } else {\r
+ $scope.showError(FIELD.ERROR.SYSTEM_ERROR);\r
+ }\r
+ }\r
+\r
+ $scope.showError = function (message) {\r
+ $scope.isSpinnerVisible = false;\r
+ $scope.isProgressVisible = false;\r
+ $scope.error = message;\r
+ $scope.status = FIELD.STATUS.ERROR;\r
+ }\r
+\r
+ $scope.close = function () {\r
+ if ($scope.timer != undefined) {\r
+ $timeout.cancel($scope.timer);\r
+ }\r
+ $scope.isPopupVisible = false;\r
+ }\r
+\r
+\r
+ /*\r
+ * Consider converting the progress bar mechanism, the disabled button handling\r
+ * and the following methods to generic Angular directive(s) and/or approach.\r
+ */\r
+\r
+ $scope.enableCloseButton = function (isEnabled) {\r
+ var selector = FIELD.STYLE.MSO_CTRL_BTN;\r
+\r
+ $scope.isCloseEnabled = isEnabled;\r
+\r
+ if (isEnabled) {\r
+ $(selector).addClass(FIELD.STYLE.BTN_PRIMARY).removeClass(FIELD.STYLE.BTN_INACTIVE).attr(FIELD.STYLE.BTN_TYPE, FIELD.STYLE.PRIMARY);\r
+ } else {\r
+ $(selector).removeClass(FIELD.STYLE.BTN_PRIMARY).addClass(FIELD.STYLE.BTN_INACTIVE).attr(FIELD.STYLE.BTN_TYPE, FIELD.STYLE.DISABLED);\r
+ }\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
+\r
+ $scope.reloadRoute = function () {\r
+ $route.reload();\r
+ }\r
+\r
+ $scope.prevPage = function () {\r
+ $scope.currentPage--;\r
+ }\r
+\r
+ var getAicZoneAndSendToMso = function (msoType, requestParams) {\r
+ AaiService.getAicZoneForPNF(\r
+ $scope.service.instance.globalCustomerId,\r
+ $scope.service.instance.serviceType,\r
+ $scope.service.instance.serviceInstanceId, function (aicZone) {\r
+\r
+ requestParams.aicZone = aicZone;\r
+\r
+ openMsoModal(msoType, requestParams);\r
+ });\r
+ };\r
+\r
+ var activateDeactivateServiceInstance = function (msoType) {\r
+ var requestParams = {\r
+ model: $scope.service.model,\r
+ instance: $scope.service.instance\r
+ };\r
+\r
+ if (DataService.getLoggedInUserId()) {\r
+ requestParams.userId = DataService.getLoggedInUserId();\r
+ getAicZoneAndSendToMso(msoType, requestParams)\r
+ } else {\r
+ AaiService.getLoggedInUserID(function (response) {\r
+ var userID = response.data;\r
+ DataService.setLoggedInUserId(userID);\r
+ requestParams.userId = userID;\r
+\r
+ getAicZoneAndSendToMso(msoType, requestParams);\r
+ });\r
+ }\r
+ };\r
+\r
+\r
+ var activateFabricConfigurationInstance = function (msoType) {\r
+ var requestParams = {\r
+ model: $scope.service.model,\r
+ service: $scope.service,\r
+ serviceInstanceId: $scope.serviceInstanceId\r
+ };\r
+\r
+ if (DataService.getLoggedInUserId()) {\r
+ requestParams.userId = DataService.getLoggedInUserId();\r
+ openMsoModal(COMPONENT.MSO_ACTIVATE_FABRIC_CONFIGURATION_REQ, requestParams);\r
+ } else {\r
+ AaiService.getLoggedInUserID(function (response) {\r
+ var userID = response.data;\r
+ DataService.setLoggedInUserId(userID);\r
+ requestParams.userId = userID;\r
+ openMsoModal(COMPONENT.MSO_ACTIVATE_FABRIC_CONFIGURATION_REQ, requestParams);\r
+ });\r
+ }\r
+ };\r
+\r
+ $scope.showAssignmentsSDNC = function () {\r
+\r
+ if ($scope.service && $scope.service.instance) {\r
+ return VIDCONFIGURATION.SDNC_SHOW_ASSIGNMENTS_URL.replace("<SERVICE_INSTANCE_ID>" , $scope.service.instance.id);\r
+ }\r
+ return null;\r
+ };\r
+\r
+ $scope.activateFabricConfigurationMSO = function () {\r
+ activateFabricConfigurationInstance(COMPONENT.MSO_ACTIVATE_FABRIC_CONFIGURATION_REQ);\r
+ };\r
+\r
+ $scope.activateMSOInstance = function () {\r
+\r
+ activateDeactivateServiceInstance(COMPONENT.MSO_ACTIVATE_SERVICE_REQ);\r
+ };\r
+\r
+ $scope.deactivateMSOInstance = function () {\r
+\r
+ activateDeactivateServiceInstance(COMPONENT.MSO_DEACTIVATE_SERVICE_REQ);\r
+ };\r
+\r
+\r
+ $scope.deleteConfiguration = function (serviceObject, configuration) {\r
+ AaiService.getLoggedInUserID(function (response) {\r
+ DataService.setLoggedInUserId(response.data);\r
+ var requestParams = {\r
+ serviceModel: {\r
+ "modelType": "configuration",\r
+ "modelInvariantId": serviceObject.model.service.invariantUuid,\r
+ "modelVersionId": serviceObject.model.service.uuid,\r
+ "modelName": serviceObject.model.service.name,\r
+ "modelVersion": serviceObject.model.service.version\r
+ },\r
+ configurationModel: {\r
+ "modelType": "configuration",\r
+ "modelInvariantId": configuration.modelInvariantId,\r
+ "modelVersionId": configuration.modelVersionId,\r
+ "modelCustomizationId": configuration.modelCustomizationId\r
+ },\r
+ serviceInstanceId: serviceObject.instance.serviceInstanceId,\r
+ configurationId: configuration.nodeId,\r
+ configStatus: configuration.DELETE,\r
+ userId: DataService.getLoggedInUserId()\r
+ };\r
+\r
+ openMsoModal(COMPONENT.MSO_DELETE_CONFIGURATION_REQ, requestParams, configuration);\r
+ });\r
+\r
+ };\r
+\r
+ $scope.toggleConfigurationStatus = function (serviceObject, configuration) {\r
+ AaiService.getLoggedInUserID(function (response) {\r
+ DataService.setLoggedInUserId(response.data);\r
+ var requestParams = {\r
+ serviceModel: {\r
+ "modelType": "service",\r
+ "modelInvariantId": serviceObject.model.service.invariantUuid,\r
+ "modelVersionId": serviceObject.model.service.uuid,\r
+ "modelName": serviceObject.model.service.name,\r
+ "modelVersion": serviceObject.model.service.version\r
+ },\r
+ configurationModel: {\r
+ "modelType": "configuration",\r
+ "modelInvariantId": configuration.modelInvariantId,\r
+ "modelVersionId": configuration.modelVersionId,\r
+ "modelCustomizationId": configuration.modelCustomizationId\r
+ },\r
+ serviceInstanceId: serviceObject.instance.serviceInstanceId,\r
+ configurationId: configuration.nodeId,\r
+ configStatus: configuration.nodeStatus,\r
+ userId: DataService.getLoggedInUserId()\r
+ };\r
+\r
+ openMsoModal(COMPONENT.MSO_CHANGE_CONFIG_STATUS_REQ, requestParams, configuration);\r
+ });\r
+\r
+ };\r
+\r
+ $scope.togglePortStatus = function (serviceObject, configuration, port) {\r
+ AaiService.getLoggedInUserID(function (response) {\r
+ DataService.setLoggedInUserId(response.data);\r
+\r
+ var requestParams = {\r
+ serviceInstanceId: serviceObject.instance.serviceInstanceId,\r
+ configurationId: configuration.nodeId,\r
+ portId: port.portId,\r
+ portStatus: port.portStatus,\r
+ serviceModel: {\r
+ "modelType": "service",\r
+ "modelInvariantId": serviceObject.model.service.invariantUuid,\r
+ "modelVersionId": serviceObject.model.service.uuid,\r
+ "modelName": serviceObject.model.service.name,\r
+ "modelVersion": serviceObject.model.service.version\r
+ },\r
+ configurationModel: {\r
+ "modelType": "configuration",\r
+ "modelInvariantId": configuration.modelInvariantId,\r
+ "modelVersionId": configuration.modelVersionId,\r
+ "modelCustomizationId": configuration.modelCustomizationId\r
+ },\r
+ userId: DataService.getLoggedInUserId()\r
+ };\r
+\r
+ openMsoModal(COMPONENT.MSO_CHANGE_PORT_STATUS_REQ, requestParams, configuration);\r
+ });\r
+ };\r
+\r
+ $scope.dissociatePnf = function (pnfName) {\r
+\r
+ var jobInfo = {\r
+ status: "confirm",\r
+ message: "Are you sure you would like to dissociate " + pnfName + " from the service instance?"\r
+ };\r
+\r
+ var modalInstance = $uibModal.open({\r
+ templateUrl: 'app/vid/scripts/modals/alert-modal/alert-modal.html',\r
+ controller: 'alertModalController',\r
+ controllerAs: 'vm',\r
+ appendTo: angular.element("#pnfs-tree"),\r
+ resolve: {\r
+ jobInfo: function () {\r
+ return jobInfo;\r
+ }\r
+ }\r
+ });\r
\r
+ modalInstance.result.then(function (result) {\r
+ console.log("This is the result of the alert modal.", result);\r
+\r
+ if (result) {\r
+ var requestParams = {\r
+ pnf: pnfName,\r
+ serviceModelInfo: {\r
+ invariantUuid: $scope.service.model.service.invariantUuid,\r
+ uuid: $scope.service.model.service.uuid,\r
+ version: $scope.service.model.service.version,\r
+ name: $scope.service.model.service.name\r
+ },\r
+ serviceInstanceId: $scope.service.instance.serviceInstanceId\r
+ };\r
+\r
+ if (DataService.getLoggedInUserId()) {\r
+ requestParams.userId = DataService.getLoggedInUserId();\r
+ requestParams.attuuid = DataService.getLoggedInUserId();\r
+ openMsoModal(COMPONENT.MSO_REMOVE_RELATIONSHIP, requestParams);\r
+ } else {\r
+ AaiService.getLoggedInUserID(function (response) {\r
+ DataService.setLoggedInUserId(response.data);\r
+\r
+ requestParams.userId = response.data;\r
+ requestParams.attuuid = response.data;\r
+ openMsoModal(COMPONENT.MSO_REMOVE_RELATIONSHIP, requestParams);\r
+ });\r
+ }\r
+ }\r
});\r
+\r
+\r
+ };\r
+\r
+ var openMsoModal = function (msoType, requestParams, configuration) {\r
+ var modalInstance = $uibModal.open({\r
+ templateUrl: 'app/vid/scripts/modals/mso-commit/mso-commit.html',\r
+ controller: "msoCommitModalController",\r
+ backdrop: false,\r
+ resolve: {\r
+ msoType: function () {\r
+ return msoType;\r
+ },\r
+ requestParams: function () {\r
+ requestParams.callbackFunction = updateViewCallbackFunction;\r
+ return requestParams;\r
+ },\r
+ configuration: function () {\r
+ return configuration;\r
+ }\r
+ }\r
+ });\r
+ };\r
+\r
+ var updateViewCallbackFunction = 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
+ $scope.nextPage = function () {\r
+ $scope.currentPage++;\r
+ };\r
+\r
+ $scope.serviceInstanceses = [{"sinstance": FIELD.NAME.SERVICE_INSTANCE_Id}, {"sinstance": FIELD.NAME.SERVICE_INSTANCE_NAME}];\r
+\r
+ function navigateToSearchResultsPage(globalCustomerId, selectedServiceInstance, selectedProjects, selectedOwningEntities) {\r
+ var projectQuery = AaiService.getMultipleValueParamQueryString(_.map(selectedProjects, 'id'), COMPONENT.PROJECT_SUB_PATH);\r
+ var owningEntityQuery = AaiService.getMultipleValueParamQueryString(_.map(selectedOwningEntities, 'id'), COMPONENT.OWNING_ENTITY_SUB_PATH);\r
+ var globalCustomerIdQuery = globalCustomerId ? COMPONENT.SELECTED_SUBSCRIBER_SUB_PATH + globalCustomerId : null;\r
+ var serviceInstanceQuery = selectedServiceInstance ? COMPONENT.SELECTED_SERVICE_INSTANCE_SUB_PATH + selectedServiceInstance : null;\r
+ var query = AaiService.getJoinedQueryString([projectQuery, owningEntityQuery, globalCustomerIdQuery, serviceInstanceQuery]);\r
+\r
+ window.location.href = COMPONENT.SELECTED_SERVICE_SUB_PATH + query;\r
+ }\r
+\r
+ $scope.getServiceInstancesSearchResults =\r
+ function (selectedCustomer, selectedInstanceIdentifierType, selectedServiceInstance, selectedProject, selectedOwningEntity) {\r
+ var isSelectionValid = UtilityService.hasContents(selectedCustomer) || UtilityService.hasContents(selectedProject)\r
+ || UtilityService.hasContents(selectedOwningEntity) || UtilityService.hasContents(selectedServiceInstance);\r
+\r
+ if (isSelectionValid) {\r
+ if (UtilityService.hasContents(selectedServiceInstance)) {\r
+ AaiService\r
+ .getGlobalCustomerIdByInstanceIdentifier(selectedServiceInstance, selectedInstanceIdentifierType)\r
+ .then(handleCustomerIdResponse);\r
+ } else {\r
+ navigateToSearchResultsPage(selectedCustomer, null, selectedProject, selectedOwningEntity);\r
+ }\r
+ } else {\r
+ alert(FIELD.ERROR.SELECT);\r
+ }\r
+\r
+ function handleCustomerIdResponse(globalCustomerId) {\r
+ if (UtilityService.hasContents(globalCustomerId)) {\r
+ navigateToSearchResultsPage(globalCustomerId, selectedServiceInstance, selectedProject, selectedOwningEntity);\r
+ } else {\r
+ alert(FIELD.ERROR.SERVICE_INST_DNE);\r
+ }\r
+ }\r
+ };\r
+ }\r
+]).directive('restrictInput', function () {\r
+\r
+ return {\r
+\r
+ restrict: 'A',\r
+ require: 'ngModel',\r
+ link: function ($scope, element, attr, ctrl) {\r
+ ctrl.$parsers.unshift(function (viewValue) {\r
+\r
+ var types = $scope.$eval(attr.restrictInput);\r
+ if (!types.regex && types.type) {\r
+\r
+ switch (types.type) {\r
+ case 'Service Instance Name' :\r
+ types.regex = '^[a-zA-Z0-9-_]*$';\r
+ break;\r
+ default:\r
+ types.regex = '';\r
+ }\r
+ }\r
+ var reg = new RegExp(types.regex);\r
+ if (reg.test(viewValue)) {\r
+ return viewValue;\r
+ } else {\r
+ var overrideValue = (reg.test(viewValue) ? viewValue : '');\r
+ element.val(overrideValue);\r
+ return overrideValue;\r
+ }\r
+ });\r
+ }\r
+ };\r
+\r
+});\r
appDS2.controller('TreeCtrl', ['$scope', function ($scope) {\r
- $scope.remove = function (scope) {\r
- scope.remove();\r
- };\r
-\r
- $scope.toggle = function (scope) {\r
- scope.toggle();\r
- };\r
-\r
- $scope.moveLastToTheBeginning = function () {\r
- var a = $scope.data.pop();\r
- $scope.data.splice(0, 0, a);\r
- };\r
-\r
- $scope.newSubItem = function (scope) {\r
- var nodeData = scope.$modelValue;\r
- nodeData.nodes.push({\r
- id: nodeData.id * 10 + nodeData.nodes.length,\r
- title: nodeData.title + '.' + (nodeData.nodes.length + 1),\r
- nodes: []\r
- });\r
- };\r
-\r
- $scope.collapseAll = function () {\r
- $scope.$broadcast(FIELD.ID.ANGULAR_UI_TREE_COLLAPSEALL);\r
- };\r
-\r
- $scope.expandAll = function () {\r
- $scope.$broadcast(FIELD.ID.ANGULAR_UI_TREE_EXPANDALL);\r
- };\r
+ $scope.remove = function (scope) {\r
+ scope.remove();\r
+ };\r
+\r
+ $scope.toggle = function (scope) {\r
+ scope.toggle();\r
+ };\r
+\r
+ $scope.moveLastToTheBeginning = function () {\r
+ var a = $scope.data.pop();\r
+ $scope.data.splice(0, 0, a);\r
+ };\r
+\r
+ $scope.newSubItem = function (scope) {\r
+ var nodeData = scope.$modelValue;\r
+ nodeData.nodes.push({\r
+ id: nodeData.id * 10 + nodeData.nodes.length,\r
+ title: nodeData.title + '.' + (nodeData.nodes.length + 1),\r
+ nodes: []\r
+ });\r
+ };\r
+\r
+ $scope.collapseAll = function () {\r
+ $scope.$broadcast(FIELD.ID.ANGULAR_UI_TREE_COLLAPSEALL);\r
+ };\r
+\r
+ $scope.expandAll = function () {\r
+ $scope.$broadcast(FIELD.ID.ANGULAR_UI_TREE_EXPANDALL);\r
+ };\r
\r
\r
}]);\r