Sending workflow data from UI to SO
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / services / aaiService.js
index 6ede6ef..030faf5 100755 (executable)
-/*-\r
- * ============LICENSE_START=======================================================\r
- * VID\r
- * ================================================================================\r
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ============LICENSE_END=========================================================\r
- */\r
-\r
-"use strict";\r
-\r
-var AaiService = function ($http, $log, PropertyService, UtilityService, COMPONENT, FIELD, $q, featureFlags) {\r
-\r
-    function getServiceInstance(serviceInstanceIdentifier, findBy) {\r
-        serviceInstanceIdentifier.trim();\r
-\r
-        return $http.get(COMPONENT.AAI_GET_SERVICE_INSTANCE_PATH + serviceInstanceIdentifier + "/" + findBy + "?r=" + Math.random(), {}, {\r
-            timeout: PropertyService.getServerResponseTimeoutMsec()\r
-        });\r
-    }\r
-\r
-    function getPnfByName(pnfName) {\r
-        var deferred = $q.defer();\r
-        var url = COMPONENT.AAI_GET_PNF_BY_NAME+ encodeURIComponent(pnfName)  ;\r
-        var config = { timeout: PropertyService.getServerResponseTimeoutMsec() };\r
-\r
-        $http.get(url, config)\r
-            .success(function (response) {\r
-                deferred.resolve({data: response});\r
-            })\r
-            .error(function(data, status, headers, config) {\r
-                deferred.reject({message: data, status: status});\r
-            });\r
-\r
-        return deferred.promise;\r
-    }\r
-    function getGlobalCustomerIdFromServiceInstanceResponse(response) {\r
-        var globalCustomerId = "";\r
-        if (angular.isArray(response.data[FIELD.ID.RESULT_DATA])) {\r
-            var customerIndex = 5;\r
-            var customerIdIndex = 6;\r
-            var itemIndex = 0;\r
-\r
-            var item = response.data[FIELD.ID.RESULT_DATA][itemIndex];\r
-            var url = item[FIELD.ID.RESOURCE_LINK];\r
-            var urlParts = url.split("/");\r
-            if (urlParts[customerIndex] === FIELD.ID.CUSTOMER) {\r
-                globalCustomerId = urlParts[customerIdIndex];\r
-            }\r
-        }\r
-        return globalCustomerId;\r
-    }\r
-\r
-    function searchServiceInstances(query) {\r
-        return $http.get( COMPONENT.SEARCH_SERVICE_INSTANCES  + query, {}, {\r
-            timeout : PropertyService.getServerResponseTimeoutMsec()\r
-        }).then(function (response) {\r
-            var displayData = response.data[FIELD.ID.SERVICE_INSTANCES];\r
-            if (!displayData || !displayData.length) {\r
-                displayData = [{\r
-                    globalCustomerId   : null,\r
-                    subscriberName     : null,\r
-                    serviceType                : FIELD.PROMPT.NO_SERVICE_SUB,\r
-                    serviceInstanceId  : FIELD.PROMPT.NO_SERVICE_INSTANCE\r
-                }];\r
-            }\r
-            return {displayData: displayData};\r
-        });\r
-    };\r
-\r
-    function getJoinedQueryString(queries) {\r
-        return queries.filter(function (val) {return val;}).join("&");\r
-    }\r
-\r
-    return {\r
-        getSubscriberName : function(globalCustomerId,\r
-                                     successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getSubscriberName: globalCustomerId: "\r
-                    + globalCustomerId);\r
-            $http.get(\r
-                COMPONENT.AAI_SUB_DETAILS_PATH\r
-                + globalCustomerId + COMPONENT.ASSIGN + Math.random(),\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                var result = {};\r
-                if (response.data) {\r
-                    result.subscriberName = response.data[FIELD.ID.SUBNAME];\r
-                    result.serviceSubscriptions = response.data[FIELD.ID.SERVICE_SUBSCRIPTIONS];\r
-                }\r
-                successCallbackFunction(result);\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-\r
-        runNamedQuery : function (namedQueryId, globalCustomerId, serviceType, serviceInstanceId, successCallback, errorCallback) {\r
-\r
-            var url = COMPONENT.AAI_SUB_VIEWEDIT_PATH +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(namedQueryId) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(globalCustomerId) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceType) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);\r
-            return $http.get(url, {}, {\r
-\r
-\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                if (response.data != null) {\r
-                    successCallback(response);\r
-                } else {\r
-                    errorCallback(response);\r
-                }\r
-            }, function(response) {\r
-                errorCallback(response);\r
-            });\r
-        },\r
-\r
-\r
-        getVNFInformationByServiceTypeAndId : function (globalCustomerId, serviceType, serviceInstanceId, successCallback, errorCallback) {\r
-\r
-            var url = COMPONENT.AAI_GET_VNF_INFO +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(globalCustomerId) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceType) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);\r
-            $http.get(url, {}, {\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                if (response.data != null) {\r
-                    successCallback(response);\r
-                } else {\r
-                    errorCallback(response);\r
-                }\r
-            }, function(response) {\r
-                errorCallback(response);\r
-            });\r
-        },\r
-\r
-        getPNFInformationByServiceTypeAndId : function (globalCustomerId, serviceType, serviceInstanceId, successCallback, errorCallback) {\r
-\r
-            var url = COMPONENT.AAI_GET_PNF_INSTANCE +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(globalCustomerId) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceType) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);\r
-            $http.get(url, {}, {\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                if (response.data != null) {\r
-                    successCallback(response);\r
-                } else {\r
-                    errorCallback(response);\r
-                }\r
-            }, function(response) {\r
-                errorCallback(response);\r
-            });\r
-        },\r
-\r
-        getCRInformationByInstanceId : function (serviceInstanceId) {\r
-\r
-            var deferred = $q.defer();\r
-\r
-            var url = COMPONENT.AAI_GET_CR_INSTANCE +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);\r
-            $http.get(url, {}, {\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                if (response.data != null) {\r
-                    deferred.resolve(response);\r
-                } else {\r
-                    deferred.resolve(response);\r
-                }\r
-            }, function(response) {\r
-                deferred.resolve(response);\r
-            });\r
-            return deferred.promise;\r
-        },\r
-\r
-        searchServiceInstances: searchServiceInstances,\r
-\r
-        getModelVersionId: function (subscriberId, instanceId) {\r
-            var globalCustomerIdQuery = COMPONENT.SELECTED_SUBSCRIBER_SUB_PATH + subscriberId;\r
-            var serviceInstanceQuery = COMPONENT.SELECTED_SERVICE_INSTANCE_SUB_PATH + instanceId;\r
-\r
-            var query = "?" + getJoinedQueryString([globalCustomerIdQuery, serviceInstanceQuery]);\r
-\r
-            var deferred = $q.defer();\r
-\r
-            searchServiceInstances(query).then(function (response) {\r
-                var displayData = response.displayData;\r
-                if (displayData[0] && displayData[0].aaiModelVersionId) {\r
-                    deferred.resolve(displayData[0].aaiModelVersionId);\r
-                } else {\r
-                    deferred.reject(FIELD.ERROR.MODEL_VERSION_ID_MISSING);\r
-                }\r
-            }).catch(function (err) {\r
-                deferred.reject(err);\r
-            });\r
-\r
-            return deferred.promise;\r
-        },\r
-\r
-        getSubDetails : function(selectedSubscriber, selectedServiceInstance, successCallback, errorCallback) {\r
-            var subscriber;\r
-            var displayData;\r
-            $http.get( COMPONENT.AAI_SUB_DETAILS_PATH  + selectedSubscriber, {}, {\r
-\r
-\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                displayData = [];\r
-                subscriber = response.data;\r
-                var subscriberName = subscriber[FIELD.ID.SUBNAME];\r
-                if (subscriber[FIELD.ID.SERVICE_SUBSCRIPTIONS] != null) {\r
-                    angular.forEach(subscriber[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION], function(serviceSubscription, key) {\r
-                        var serviceInstanceId = [];\r
-                        var serviceType = "";\r
-                        if (serviceSubscription[FIELD.ID.SERVICETYPE] != null) {\r
-                            serviceType = serviceSubscription[FIELD.ID.SERVICETYPE];\r
-                        } else {\r
-                            serviceType = FIELD.PROMPT.NO_SERVICE_SUB;\r
-                        }\r
-                        if (serviceSubscription[FIELD.ID.SERVICE_INSTANCES] != null) {\r
-                            angular.forEach(serviceSubscription[FIELD.ID.SERVICE_INSTANCES][FIELD.ID.SERVICE_INSTANCE], function(instValue, instKey) {\r
-                                // put them together, i guess\r
-                                var inst = { "serviceInstanceId": instValue[FIELD.ID.SERVICE_INSTANCE_ID],\r
-                                    "aaiModelInvariantId": instValue[FIELD.ID.MODEL_INVAR_ID],\r
-                                    "aaiModelVersionId": instValue[FIELD.ID.MODEL_VERSION_ID],\r
-                                    "serviceInstanceName": instValue[FIELD.ID.SERVICE_INSTANCE_NAME]\r
-                                };\r
-                                if (selectedServiceInstance != null) {\r
-                                    if ((instValue[FIELD.ID.SERVICE_INSTANCE_ID] == selectedServiceInstance ) || (instValue[FIELD.ID.SERVICE_INSTANCE_NAME] == selectedServiceInstance)) {\r
-                                        serviceInstanceId.push(inst);\r
-                                    }\r
-                                } else {\r
-                                    serviceInstanceId.push(inst);\r
-                                }\r
-                            });\r
-                        } else {\r
-                            serviceInstanceId = [ FIELD.PROMPT.NO_SERVICE_INSTANCE ];\r
-                        }\r
-                        angular.forEach(serviceInstanceId, function(subVal, subKey) {\r
-                            displayData.push({\r
-                                globalCustomerId       : selectedSubscriber,\r
-                                subscriberName         : subscriberName,\r
-                                serviceType            : serviceType,\r
-                                serviceInstanceId      : subVal.serviceInstanceId,\r
-                                aaiModelInvariantId            : subVal.aaiModelInvariantId,\r
-                                aaiModelVersionId\r
-                                    : subVal.aaiModelVersionId,\r
-                                serviceInstanceName    : subVal.serviceInstanceName,\r
-                                isPermitted: serviceSubscription[FIELD.ID.IS_PERMITTED]\r
-                            });\r
-                        });\r
-                    });\r
-                } else {\r
-                    displayData.push({\r
-                        globalCustomerId       : selectedSubscriber,\r
-                        subscriberName         : subscriberName,\r
-                        serviceType            : FIELD.PROMPT.NO_SERVICE_SUB,\r
-                        serviceInstanceId      : FIELD.PROMPT.NO_SERVICE_INSTANCE\r
-                    });\r
-                }\r
-                successCallback(displayData, subscriberName);\r
-            }, function(response) {\r
-                errorCallback(response);});\r
-        },\r
-\r
-        getSubList : function(successCallback, errorCallback ) {\r
-\r
-            $http.get( FIELD.ID.AAI_GET_FULL_SUBSCRIBERS, {}, {\r
-\r
-\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                var customerList = [];\r
-                if (response.data.customer != null) {\r
-                    angular.forEach(response.data.customer, function(subVal, subKey) {\r
-                        var cust = { "globalCustomerId": subVal[FIELD.ID.GLOBAL_CUSTOMER_ID], "subscriberName": subVal[FIELD.ID.SUBNAME],\r
-                            "isPermitted": subVal[FIELD.ID.IS_PERMITTED], };\r
-                        customerList.push(cust);\r
-                    });\r
-                    successCallback(customerList);\r
-                } else {\r
-                    errorCallback(response);\r
-                }\r
-            },function(response) {\r
-                errorCallback(response);\r
-            });\r
-        },\r
-\r
-        getServiceInstance : getServiceInstance,\r
-        getPnfByName : getPnfByName,\r
-\r
-        getGlobalCustomerIdByInstanceIdentifier : function(serviceInstanceIdentifier, findBy) {\r
-            serviceInstanceIdentifier.trim();\r
-\r
-            return getServiceInstance(serviceInstanceIdentifier, findBy)\r
-                .then(function (response) {\r
-                    return getGlobalCustomerIdFromServiceInstanceResponse(response);\r
-            });\r
-        },\r
-\r
-        getMultipleValueParamQueryString: function(values, paramSubPath) {\r
-            if (values.length) {\r
-                return paramSubPath + values.filter(function (val) {return val;}).join("&" + paramSubPath);\r
-            }\r
-        },\r
-\r
-        getJoinedQueryString: getJoinedQueryString,\r
-\r
-        getServices2 : function(successCallback, errorCallback ) {\r
-\r
-            $http.get( FIELD.ID.AAI_GET_SERVICES, {}, {\r
-\r
-\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                var customerList = [];\r
-                if (response.data != null) {\r
-                    var serviceIdList = [];\r
-                    angular.forEach(response.data, function(value, key) {\r
-                        angular.forEach(value, function(subVal, key) {\r
-                            var newVal = { "id" : subVal[FIELD.ID.SERVICE_ID], "description" : subVal[FIELD.ID.SERVICE_DESCRIPTION] ,\r
-                                "isPermitted" : subVal[FIELD.ID.IS_PERMITTED]\r
-\r
-                            };serviceIdList.push(newVal);\r
-                        });\r
-                    });\r
-                    successCallback(serviceIdList);\r
-                } else {\r
-                    errorCallback(response);\r
-                }\r
-            },function(response) {\r
-                errorCallback(response);\r
-            });\r
-        },\r
-\r
-        getPortMirroringData: function (ids) {\r
-            var defer = $q.defer();\r
-\r
-            var url = COMPONENT.AAI_GET_PORT_MIRRORING_CONFIGS_DATA + '?configurationIds=' + ids.join(',');\r
-            $http.get(url).then(function (res) {\r
-                defer.resolve(res);\r
-            }).catch(function (err) {\r
-                $log.error(err);\r
-                defer.resolve({});\r
-            });\r
-\r
-            return defer.promise;\r
-\r
-        },\r
-\r
-        getPortMirroringSourcePorts : function (ids) {\r
-            var defer = $q.defer();\r
-            var url = COMPONENT.AAI_GET_PORT_MIRRORING_SOURCE_PORTS +'?configurationIds=' +  ids.join(',');\r
-            $http.get(url).then(function(res){\r
-                defer.resolve(res);\r
-            }).catch(function(err) {\r
-                $log.error(err);\r
-                defer.resolve({});\r
-            });\r
-            return defer.promise;\r
-        },\r
-\r
-        getVlansByNetworksMapping : function (globalCustomerId, serviceType, serviceInstanceId, sdcModelUuid) {\r
-            var defer = $q.defer();\r
-            if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_PRESENT_PROVIDER_NETWORKS_ASSOCIATIONS)) {\r
-                var url = COMPONENT.AAI_GET_PROVIDER_NETWORKS_ASSOCIATIONS + '?'\r
-                    + 'globalCustomerId=' + globalCustomerId\r
-                    + '&serviceType=' + serviceType\r
-                    + '&serviceInstanceId=' + serviceInstanceId\r
-                    + '&sdcModelUuid=' + sdcModelUuid\r
-                ;\r
-\r
-                $http.get(url).then(function(res){\r
-                    defer.resolve(res.data);\r
-                }).catch(function(err) {\r
-                    $log.error(err);\r
-                    defer.resolve({});\r
-                });\r
-\r
-            } else {\r
-                defer.resolve({});\r
-            }\r
-            return defer.promise;\r
-        },\r
-\r
-        getSubscriptionServiceTypeList : function(globalCustomerId,\r
-                                                  successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getSubscriptionServiceTypeList: globalCustomerId: "\r
-                    + globalCustomerId);\r
-            if ( UtilityService.hasContents(globalCustomerId) ) {\r
-                $http.get(\r
-                    COMPONENT.AAI_SUB_DETAILS_PATH\r
-                    + globalCustomerId + COMPONENT.ASSIGN + Math.random(),\r
-                    {\r
-                        timeout : PropertyService\r
-                            .getServerResponseTimeoutMsec()\r
-                    }).then(function(response) {\r
-                    if (response.data && response.data[FIELD.ID.SERVICE_SUBSCRIPTIONS]) {\r
-                        var serviceTypes = [];\r
-                        var serviceSubscriptions = response.data[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION];\r
-\r
-                        for (var i = 0; i < serviceSubscriptions.length; i++) {\r
-                            serviceTypes.push({\r
-                                "name":serviceSubscriptions[i][FIELD.ID.SERVICETYPE],\r
-                                "isPermitted": serviceSubscriptions[i][FIELD.ID.IS_PERMITTED],\r
-                                "id": i\r
-                            });}\r
-                        successCallbackFunction(serviceTypes);\r
-                    } else {\r
-                        successCallbackFunction([]);\r
-                    }\r
-                })["catch"]\r
-                (UtilityService.runHttpErrorHandler);\r
-            }\r
-        },\r
-        getLcpCloudRegionTenantList : function(globalCustomerId, serviceType,\r
-                                               successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getLcpCloudRegionTenantList: globalCustomerId: "\r
-                    + globalCustomerId);\r
-            var url =   COMPONENT.AAI_GET_TENANTS\r
-                + globalCustomerId + COMPONENT.FORWARD_SLASH + serviceType + COMPONENT.ASSIGN + Math.random();\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                var lcpCloudRegionTenants = [];\r
-                var aaiLcpCloudRegionTenants = response.data;\r
-\r
-                for (var i = 0; i < aaiLcpCloudRegionTenants.length; i++) {\r
-                    lcpCloudRegionTenants.push({\r
-                        "cloudRegionId": aaiLcpCloudRegionTenants[i][COMPONENT.CLOUD_REGION_ID],\r
-                        "cloudOwner": aaiLcpCloudRegionTenants[i][COMPONENT.CLOUD_OWNER],\r
-                        "tenantName": aaiLcpCloudRegionTenants[i][COMPONENT.TENANT_NAME],\r
-                        "tenantId": aaiLcpCloudRegionTenants[i][COMPONENT.TENANT_ID],\r
-                        "isPermitted": aaiLcpCloudRegionTenants[i][COMPONENT.IS_PERMITTED]});\r
-                }\r
-\r
-                successCallbackFunction(lcpCloudRegionTenants);\r
-            }).catch(function(error) {\r
-                (UtilityService.runHttpErrorHandler(error.data, error.status));\r
-            })\r
-        },\r
-        getSubscribers : function(successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getSubscribers");\r
-            var url =  FIELD.ID.AAI_GET_SUBSCRIBERS + COMPONENT.ASSIGN + Math.random();\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response.data.customer);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-        getProvOptionsFromSystemProp : function(successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getProvOptionsFromSystemProp");\r
-            var url =  COMPONENT.GET_SYSTEM_PROP_VNF_PROV_STATUS_PATH;\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-        getLoggedInUserID : function(successCallbackFunction, catchCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getLoggedInUserID");\r
-            var url = COMPONENT.GET_USER_ID;\r
-\r
-            $http.get(url,\r
-                {\r
-                    transformResponse: [function (data) {\r
-                        return data;\r
-                    }],\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"] (function(response, status) {\r
-                if (catchCallbackFunction) {\r
-                    catchCallbackFunction();\r
-                }\r
-                UtilityService.runHttpErrorHandler(response, status);\r
-            })\r
-        },\r
-        getServices : function(successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getServices");\r
-            var url =  COMPONENT.AAI_GET_SERVICES + COMPONENT.ASSIGN + Math.random();\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout: PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function (response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-\r
-        getAicZones: function (successCallbackFunction) {\r
-            $log\r
-                .debug("getAicZones:getAicZones");\r
-            var url = COMPONENT.AAI_GET_AIC_ZONES +COMPONENT.ASSIGN + Math.random();\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);},\r
-        getAicZoneForPNF: function (globalCustomerId,serviceType,serviceInstanceId,successCallbackFunction) {\r
-            $log\r
-                .debug("getAicZones:getAicZones");\r
-            var url = COMPONENT.AAI_GET_AIC_ZONE_FOR_PNF\r
-                .replace('@serviceInstanceId', serviceInstanceId)\r
-                .replace('@globalCustomerId', globalCustomerId)\r
-                .replace('@serviceType', serviceType);\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                successCallbackFunction(response.data);\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);},\r
-\r
-        getServiceModels : function(globalCustomerId,serviceType,successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getServices");\r
-            var url =   COMPONENT.AAI_GET_SERVICES + COMPONENT.FORWARD_SLASH+globalCustomerId+ COMPONENT.FORWARD_SLASH +serviceType+COMPONENT.ASSIGN + Math.random();\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-        getServiceModelsByServiceType : function(namedQueryId,globalCustomerId,serviceType,successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getServiceModelsByServiceType");\r
-            var url =   COMPONENT.AAI_GET_SERVICES_BY_TYPE+COMPONENT.FORWARD_SLASH+namedQueryId+COMPONENT.FORWARD_SLASH+globalCustomerId+COMPONENT.FORWARD_SLASH +serviceType+COMPONENT.ASSIGN + Math.random();\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-\r
-               getVnfsByCustomerIdAndServiceType: function(globalSubscriberId, serviceType){\r
-            var deferred = $q.defer();\r
-\r
-            if (UtilityService.hasContents(globalSubscriberId) &&\r
-                               UtilityService.hasContents(serviceType) ) {\r
-\r
-                $http.get(COMPONENT.AAI_GET_VNF_BY_CUSTOMERID_AND_SERVICETYPE + globalSubscriberId + COMPONENT.FORWARD_SLASH\r
-                                       + serviceType )\r
-                    .success(function (response) {\r
-                        if(response) {\r
-                            deferred.resolve({data: response});\r
-                        } else {\r
-                            deferred.resolve({data: []});\r
-                        }\r
-                    }).error(function (data, status, headers, config) {\r
-                    deferred.reject({message: data, status: status});\r
-                });\r
-            }\r
-\r
-            return deferred.promise;\r
-        },\r
-\r
-        getVnfVersionsByInvariantId: function(modelInvariantId){\r
-            var deferred = $q.defer();\r
-\r
-            if (UtilityService.hasContents(modelInvariantId)) {\r
-                var body = {"versions": modelInvariantId};\r
-                $http.post(( COMPONENT.AAI_GET_VERSION_BY_INVARIANT_ID),body)\r
-\r
-                    .success(function (response) {\r
-                        if(response) {\r
-                            deferred.resolve({data: response});\r
-                        } else {\r
-                            deferred.resolve({data: []});\r
-                        }\r
-                    }).error(function (data, status, headers, config) {\r
-                    deferred.reject({message: data, status: status});\r
-                });\r
-            }\r
-\r
-            return deferred.promise;\r
-        },\r
-\r
-\r
-\r
-        getSubscriberServiceTypes: function(subscriberUuid) {\r
-            var deferred = $q.defer();\r
-            $log.debug("AaiService:getSubscriberServiceTypes: subscriberUuid: " + subscriberUuid);\r
-\r
-            if (UtilityService.hasContents(subscriberUuid)) {\r
-                $http.get(COMPONENT.AAI_SUB_DETAILS_PATH + subscriberUuid + COMPONENT.ASSIGN + Math.random())\r
-                    .success(function (response) {\r
-                        if(response && [FIELD.ID.SERVICE_SUBSCRIPTIONS]) {\r
-                            deferred.resolve({data: response[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION]});\r
-                        } else {\r
-                            deferred.resolve({data: []});\r
-                        }\r
-                    }).error(function (data, status, headers, config) {\r
-                    deferred.reject({message: data, status: status});\r
-                });\r
-            }\r
-\r
-            return deferred.promise;\r
-        },\r
-        getVnfInstancesList: function(globalSubscriberId, serviceType, modelVersionId ,modelInvariantId, cloudRegionId)  {\r
-            var deferred = $q.defer();\r
-            $http.get([COMPONENT.AAI_GET_VNF_INSTANCES_LIST,\r
-                    globalSubscriberId,\r
-                    serviceType,\r
-                    modelVersionId,\r
-                    modelInvariantId,\r
-                    cloudRegionId]\r
-                .join(COMPONENT.FORWARD_SLASH))\r
-                .success(function (response) {\r
-                    deferred.resolve(response);\r
-                }).error(function (data, status) {\r
-                    deferred.reject({message: data, status: status});\r
-            });\r
-            return deferred.promise;\r
-        },\r
-        getPnfInstancesList: function (globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegionId, equipVendor, equipModel) {\r
-            var deferred = $q.defer();\r
-            $http.get([COMPONENT.AAI_GET_PNF_INSTANCES_LIST,\r
-                    globalCustomerId, serviceType,\r
-                    modelVersionId, modelInvariantId,\r
-                    cloudRegionId,\r
-                    equipVendor, equipModel\r
-                ].join(COMPONENT.FORWARD_SLASH))\r
-                .success(function (response) {\r
-                    deferred.resolve(response);\r
-                }).error(function (data, status) {\r
-                deferred.reject({message: data, status: status});\r
-            });\r
-            return deferred.promise;\r
-        },\r
-        getByUri: function(uri)  {\r
-            var deferred = $q.defer();\r
-\r
-            $http.get(COMPONENT.AAI_GET_BY_URI + uri)\r
-                .success(function (response) {\r
-                    deferred.resolve({data: []});\r
-                }).error(function (data, status, headers, config) {\r
-                    deferred.reject({message: data, status: status});\r
-                });\r
-\r
-            return deferred.promise;\r
-        },\r
-        getConfiguration: function(configurationId)  {\r
-            var deferred = $q.defer();\r
-\r
-            $http.get(COMPONENT.AAI_GET_CONFIGURATION + configurationId)\r
-                .success(function (response) {\r
-                    deferred.resolve({data: []});\r
-                }).error(function (data, status, headers, config) {\r
-                deferred.reject({message: data, status: status});\r
-            });\r
-\r
-            return deferred.promise;\r
-        },\r
-\r
-        getInstanceGroupsByVNFInstanceId: function (vnf_instance_id, successCallback, errorCallback) {\r
-            var url = COMPONENT.AAI_GET_INSTANCE_GROUPS_BY_VNF_INSTANCE_ID_PATH + "/" + vnf_instance_id;\r
-\r
-            $http.get(url, {}, {\r
-                timeout: PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function (response) {\r
-                successCallback(response);\r
-            }, function (response) {\r
-                errorCallback(response);\r
-            });\r
-        },\r
-\r
-        postPOMBAverificationRequest: function (url, data, config) {\r
-            $http.post(url, data, config)\r
-                .success(function (data, status, headers, config) {\r
-                    //If at some point in the future the result should be handled - this should be the entry point.\r
-                    log.debug("POMBA was called successfully with data: " + data);\r
-                })\r
-                .error(function (data, status, header, config) {\r
-                    log.debug("Error: " +\r
-                        "Data: " + data +\r
-                        "status: " + status +\r
-                        "headers: " + header +\r
-                        "config: " + config);\r
-                });\r
-        },\r
-\r
-        getHomingData: function(vnfInstanceId, vfModuleId)  {\r
-            var url = COMPONENT.AAI_GET_HOMING_DATA.replace('@vnfInstanceId', vnfInstanceId)\r
-                .replace('@vfModuleId', vfModuleId);\r
-\r
-            var deferred = $q.defer();\r
-\r
-            $http.get(url)\r
-                .success(function (response) {\r
-                    deferred.resolve({data: response});\r
-                }).error(function (data, status, headers, config) {\r
-                deferred.reject({message: data, status: status});\r
-            });\r
-\r
-            return deferred.promise;\r
-\r
-        }\r
-    };\r
-};\r
-\r
-appDS2.factory("AaiService", ["$http", "$log", "PropertyService",\r
-    "UtilityService", "COMPONENT", "FIELD", "$q", "featureFlags", AaiService]);\r
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+"use strict";
+
+var AaiService = function ($http, $log, PropertyService, UtilityService, COMPONENT, FIELD, $q, featureFlags) {
+
+    function getServiceInstance(serviceInstanceIdentifier, findBy) {
+        serviceInstanceIdentifier.trim();
+
+        return $http.get(COMPONENT.AAI_GET_SERVICE_INSTANCE_PATH + serviceInstanceIdentifier + "/" + findBy + "?r=" + Math.random(), {}, {
+            timeout: PropertyService.getServerResponseTimeoutMsec()
+        });
+    }
+
+    function getPnfByName(pnfName) {
+        var deferred = $q.defer();
+        var url = COMPONENT.AAI_GET_PNF_BY_NAME+ encodeURIComponent(pnfName)  ;
+        var config = { timeout: PropertyService.getServerResponseTimeoutMsec() };
+
+        $http.get(url, config)
+            .success(function (response) {
+                deferred.resolve({data: response});
+            })
+            .error(function(data, status, headers, config) {
+                deferred.reject({message: data, status: status});
+            });
+
+        return deferred.promise;
+    }
+    function getGlobalCustomerIdFromServiceInstanceResponse(response) {
+        var globalCustomerId = "";
+        if (angular.isArray(response.data[FIELD.ID.RESULT_DATA])) {
+            var customerIndex = 5;
+            var customerIdIndex = 6;
+            var itemIndex = 0;
+
+            var item = response.data[FIELD.ID.RESULT_DATA][itemIndex];
+            var url = item[FIELD.ID.RESOURCE_LINK];
+            var urlParts = url.split("/");
+            if (urlParts[customerIndex] === FIELD.ID.CUSTOMER) {
+                globalCustomerId = urlParts[customerIdIndex];
+            }
+        }
+        return globalCustomerId;
+    }
+
+    function searchServiceInstances(query) {
+        return $http.get( COMPONENT.SEARCH_SERVICE_INSTANCES  + query, {}, {
+            timeout : PropertyService.getServerResponseTimeoutMsec()
+        }).then(function (response) {
+            var displayData = response.data[FIELD.ID.SERVICE_INSTANCES];
+            if (!displayData || !displayData.length) {
+                displayData = [{
+                    globalCustomerId   : null,
+                    subscriberName     : null,
+                    serviceType                : FIELD.PROMPT.NO_SERVICE_SUB,
+                    serviceInstanceId  : FIELD.PROMPT.NO_SERVICE_INSTANCE
+                }];
+            }
+            return {displayData: displayData};
+        });
+    };
+
+    function getJoinedQueryString(queries) {
+        return queries.filter(function (val) {return val;}).join("&");
+    }
+
+    return {
+        getSubscriberName : function(globalCustomerId,
+                                     successCallbackFunction) {
+            $log
+                .debug("AaiService:getSubscriberName: globalCustomerId: "
+                    + globalCustomerId);
+            $http.get(
+                COMPONENT.AAI_SUB_DETAILS_PATH
+                + globalCustomerId + COMPONENT.ASSIGN + Math.random(),
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                var result = {};
+                if (response.data) {
+                    result.subscriberName = response.data[FIELD.ID.SUBNAME];
+                    result.serviceSubscriptions = response.data[FIELD.ID.SERVICE_SUBSCRIPTIONS];
+                }
+                successCallbackFunction(result);
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+
+        runNamedQuery : function (namedQueryId, globalCustomerId, serviceType, serviceInstanceId, successCallback, errorCallback) {
+
+            var url = COMPONENT.AAI_SUB_VIEWEDIT_PATH +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(namedQueryId) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(globalCustomerId) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceType) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);
+            return $http.get(url, {}, {
+
+
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                if (response.data != null) {
+                    successCallback(response);
+                } else {
+                    errorCallback(response);
+                }
+            }, function(response) {
+                errorCallback(response);
+            });
+        },
+
+
+        getVNFInformationByServiceTypeAndId : function (globalCustomerId, serviceType, serviceInstanceId, successCallback, errorCallback) {
+
+            var url = COMPONENT.AAI_GET_VNF_INFO +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(globalCustomerId) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceType) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);
+            $http.get(url, {}, {
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                if (response.data != null) {
+                    successCallback(response);
+                } else {
+                    errorCallback(response);
+                }
+            }, function(response) {
+                errorCallback(response);
+            });
+        },
+
+        getPNFInformationByServiceTypeAndId : function (globalCustomerId, serviceType, serviceInstanceId, successCallback, errorCallback) {
+
+            var url = COMPONENT.AAI_GET_PNF_INSTANCE +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(globalCustomerId) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceType) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);
+            $http.get(url, {}, {
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                if (response.data != null) {
+                    successCallback(response);
+                } else {
+                    errorCallback(response);
+                }
+            }, function(response) {
+                errorCallback(response);
+            });
+        },
+
+        getCRInformationByInstanceId : function (serviceInstanceId) {
+
+            var deferred = $q.defer();
+
+            var url = COMPONENT.AAI_GET_CR_INSTANCE +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);
+            $http.get(url, {}, {
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                if (response.data != null) {
+                    deferred.resolve(response);
+                } else {
+                    deferred.resolve(response);
+                }
+            }, function(response) {
+                deferred.resolve(response);
+            });
+            return deferred.promise;
+        },
+
+        searchServiceInstances: searchServiceInstances,
+
+        getModelVersionId: function (subscriberId, instanceId) {
+            var globalCustomerIdQuery = COMPONENT.SELECTED_SUBSCRIBER_SUB_PATH + subscriberId;
+            var serviceInstanceQuery = COMPONENT.SELECTED_SERVICE_INSTANCE_SUB_PATH + instanceId;
+
+            var query = "?" + getJoinedQueryString([globalCustomerIdQuery, serviceInstanceQuery]);
+
+            var deferred = $q.defer();
+
+            searchServiceInstances(query).then(function (response) {
+                var displayData = response.displayData;
+                if (displayData[0] && displayData[0].aaiModelVersionId) {
+                    deferred.resolve(displayData[0].aaiModelVersionId);
+                } else {
+                    deferred.reject(FIELD.ERROR.MODEL_VERSION_ID_MISSING);
+                }
+            }).catch(function (err) {
+                deferred.reject(err);
+            });
+
+            return deferred.promise;
+        },
+
+        getSubDetails : function(selectedSubscriber, selectedServiceInstance, successCallback, errorCallback) {
+            var subscriber;
+            var displayData;
+            $http.get( COMPONENT.AAI_SUB_DETAILS_PATH  + selectedSubscriber, {}, {
+
+
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                displayData = [];
+                subscriber = response.data;
+                var subscriberName = subscriber[FIELD.ID.SUBNAME];
+                if (subscriber[FIELD.ID.SERVICE_SUBSCRIPTIONS] != null) {
+                    angular.forEach(subscriber[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION], function(serviceSubscription, key) {
+                        var serviceInstanceId = [];
+                        var serviceType = "";
+                        if (serviceSubscription[FIELD.ID.SERVICETYPE] != null) {
+                            serviceType = serviceSubscription[FIELD.ID.SERVICETYPE];
+                        } else {
+                            serviceType = FIELD.PROMPT.NO_SERVICE_SUB;
+                        }
+                        if (serviceSubscription[FIELD.ID.SERVICE_INSTANCES] != null) {
+                            angular.forEach(serviceSubscription[FIELD.ID.SERVICE_INSTANCES][FIELD.ID.SERVICE_INSTANCE], function(instValue, instKey) {
+                                // put them together, i guess
+                                var inst = { "serviceInstanceId": instValue[FIELD.ID.SERVICE_INSTANCE_ID],
+                                    "aaiModelInvariantId": instValue[FIELD.ID.MODEL_INVAR_ID],
+                                    "aaiModelVersionId": instValue[FIELD.ID.MODEL_VERSION_ID],
+                                    "serviceInstanceName": instValue[FIELD.ID.SERVICE_INSTANCE_NAME]
+                                };
+                                if (selectedServiceInstance != null) {
+                                    if ((instValue[FIELD.ID.SERVICE_INSTANCE_ID] == selectedServiceInstance ) || (instValue[FIELD.ID.SERVICE_INSTANCE_NAME] == selectedServiceInstance)) {
+                                        serviceInstanceId.push(inst);
+                                    }
+                                } else {
+                                    serviceInstanceId.push(inst);
+                                }
+                            });
+                        } else {
+                            serviceInstanceId = [ FIELD.PROMPT.NO_SERVICE_INSTANCE ];
+                        }
+                        angular.forEach(serviceInstanceId, function(subVal, subKey) {
+                            displayData.push({
+                                globalCustomerId       : selectedSubscriber,
+                                subscriberName         : subscriberName,
+                                serviceType            : serviceType,
+                                serviceInstanceId      : subVal.serviceInstanceId,
+                                aaiModelInvariantId            : subVal.aaiModelInvariantId,
+                                aaiModelVersionId
+                                    : subVal.aaiModelVersionId,
+                                serviceInstanceName    : subVal.serviceInstanceName,
+                                isPermitted: serviceSubscription[FIELD.ID.IS_PERMITTED]
+                            });
+                        });
+                    });
+                } else {
+                    displayData.push({
+                        globalCustomerId       : selectedSubscriber,
+                        subscriberName         : subscriberName,
+                        serviceType            : FIELD.PROMPT.NO_SERVICE_SUB,
+                        serviceInstanceId      : FIELD.PROMPT.NO_SERVICE_INSTANCE
+                    });
+                }
+                successCallback(displayData, subscriberName);
+            }, function(response) {
+                errorCallback(response);});
+        },
+
+        getSubList : function(successCallback, errorCallback ) {
+
+            $http.get( FIELD.ID.AAI_GET_FULL_SUBSCRIBERS, {}, {
+
+
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                var customerList = [];
+                if (response.data.customer != null) {
+                    angular.forEach(response.data.customer, function(subVal, subKey) {
+                        var cust = { "globalCustomerId": subVal[FIELD.ID.GLOBAL_CUSTOMER_ID], "subscriberName": subVal[FIELD.ID.SUBNAME],
+                            "isPermitted": subVal[FIELD.ID.IS_PERMITTED], };
+                        customerList.push(cust);
+                    });
+                    successCallback(customerList);
+                } else {
+                    errorCallback(response);
+                }
+            },function(response) {
+                errorCallback(response);
+            });
+        },
+
+        getServiceInstance : getServiceInstance,
+        getPnfByName : getPnfByName,
+
+        getGlobalCustomerIdByInstanceIdentifier : function(serviceInstanceIdentifier, findBy) {
+            serviceInstanceIdentifier.trim();
+
+            return getServiceInstance(serviceInstanceIdentifier, findBy)
+                .then(function (response) {
+                    return getGlobalCustomerIdFromServiceInstanceResponse(response);
+            });
+        },
+
+        getMultipleValueParamQueryString: function(values, paramSubPath) {
+            if (values.length) {
+                return paramSubPath + values.filter(function (val) {return val;}).join("&" + paramSubPath);
+            }
+        },
+
+        getJoinedQueryString: getJoinedQueryString,
+
+        getServices2 : function(successCallback, errorCallback ) {
+
+            $http.get( FIELD.ID.AAI_GET_SERVICES, {}, {
+
+
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                var customerList = [];
+                if (response.data != null) {
+                    var serviceIdList = [];
+                    angular.forEach(response.data, function(value, key) {
+                        angular.forEach(value, function(subVal, key) {
+                            var newVal = { "id" : subVal[FIELD.ID.SERVICE_ID], "description" : subVal[FIELD.ID.SERVICE_DESCRIPTION] ,
+                                "isPermitted" : subVal[FIELD.ID.IS_PERMITTED]
+
+                            };serviceIdList.push(newVal);
+                        });
+                    });
+                    successCallback(serviceIdList);
+                } else {
+                    errorCallback(response);
+                }
+            },function(response) {
+                errorCallback(response);
+            });
+        },
+
+        getPortMirroringData: function (ids) {
+            var defer = $q.defer();
+
+            var url = COMPONENT.AAI_GET_PORT_MIRRORING_CONFIGS_DATA + '?configurationIds=' + ids.join(',');
+            $http.get(url).then(function (res) {
+                defer.resolve(res);
+            }).catch(function (err) {
+                $log.error(err);
+                defer.resolve({});
+            });
+
+            return defer.promise;
+
+        },
+
+        getPortMirroringSourcePorts : function (ids) {
+            var defer = $q.defer();
+            var url = COMPONENT.AAI_GET_PORT_MIRRORING_SOURCE_PORTS +'?configurationIds=' +  ids.join(',');
+            $http.get(url).then(function(res){
+                defer.resolve(res);
+            }).catch(function(err) {
+                $log.error(err);
+                defer.resolve({});
+            });
+            return defer.promise;
+        },
+
+        getVlansByNetworksMapping : function (globalCustomerId, serviceType, serviceInstanceId, sdcModelUuid) {
+            var defer = $q.defer();
+            if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_PRESENT_PROVIDER_NETWORKS_ASSOCIATIONS)) {
+                var url = COMPONENT.AAI_GET_PROVIDER_NETWORKS_ASSOCIATIONS + '?'
+                    + 'globalCustomerId=' + globalCustomerId
+                    + '&serviceType=' + serviceType
+                    + '&serviceInstanceId=' + serviceInstanceId
+                    + '&sdcModelUuid=' + sdcModelUuid
+                ;
+
+                $http.get(url).then(function(res){
+                    defer.resolve(res.data);
+                }).catch(function(err) {
+                    $log.error(err);
+                    defer.resolve({});
+                });
+
+            } else {
+                defer.resolve({});
+            }
+            return defer.promise;
+        },
+
+        getSubscriptionServiceTypeList : function(globalCustomerId,
+                                                  successCallbackFunction) {
+            $log
+                .debug("AaiService:getSubscriptionServiceTypeList: globalCustomerId: "
+                    + globalCustomerId);
+            if ( UtilityService.hasContents(globalCustomerId) ) {
+                $http.get(
+                    COMPONENT.AAI_SUB_DETAILS_PATH
+                    + globalCustomerId + COMPONENT.ASSIGN + Math.random(),
+                    {
+                        timeout : PropertyService
+                            .getServerResponseTimeoutMsec()
+                    }).then(function(response) {
+                    if (response.data && response.data[FIELD.ID.SERVICE_SUBSCRIPTIONS]) {
+                        var serviceTypes = [];
+                        var serviceSubscriptions = response.data[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION];
+
+                        for (var i = 0; i < serviceSubscriptions.length; i++) {
+                            serviceTypes.push({
+                                "name":serviceSubscriptions[i][FIELD.ID.SERVICETYPE],
+                                "isPermitted": serviceSubscriptions[i][FIELD.ID.IS_PERMITTED],
+                                "id": i
+                            });}
+                        successCallbackFunction(serviceTypes);
+                    } else {
+                        successCallbackFunction([]);
+                    }
+                })["catch"]
+                (UtilityService.runHttpErrorHandler);
+            }
+        },
+        getLcpCloudRegionTenantList : function(globalCustomerId, serviceType,
+                                               successCallbackFunction) {
+            $log
+                .debug("AaiService:getLcpCloudRegionTenantList: globalCustomerId: "
+                    + globalCustomerId);
+            var url =   COMPONENT.AAI_GET_TENANTS
+                + globalCustomerId + COMPONENT.FORWARD_SLASH + serviceType + COMPONENT.ASSIGN + Math.random();
+
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                var lcpCloudRegionTenants = [];
+                var aaiLcpCloudRegionTenants = response.data;
+
+                for (var i = 0; i < aaiLcpCloudRegionTenants.length; i++) {
+                    lcpCloudRegionTenants.push({
+                        "cloudRegionId": aaiLcpCloudRegionTenants[i][COMPONENT.CLOUD_REGION_ID],
+                        "cloudOwner": aaiLcpCloudRegionTenants[i][COMPONENT.CLOUD_OWNER],
+                        "tenantName": aaiLcpCloudRegionTenants[i][COMPONENT.TENANT_NAME],
+                        "tenantId": aaiLcpCloudRegionTenants[i][COMPONENT.TENANT_ID],
+                        "isPermitted": aaiLcpCloudRegionTenants[i][COMPONENT.IS_PERMITTED]});
+                }
+
+                successCallbackFunction(lcpCloudRegionTenants);
+            }).catch(function(error) {
+                (UtilityService.runHttpErrorHandler(error.data, error.status));
+            })
+        },
+        getSubscribers : function(successCallbackFunction) {
+            $log
+                .debug("AaiService:getSubscribers");
+            var url =  FIELD.ID.AAI_GET_SUBSCRIBERS + COMPONENT.ASSIGN + Math.random();
+
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                if (response.data) {
+                    successCallbackFunction(response.data.customer);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+        getProvOptionsFromSystemProp : function(successCallbackFunction) {
+            $log
+                .debug("AaiService:getProvOptionsFromSystemProp");
+            var url =  COMPONENT.GET_SYSTEM_PROP_VNF_PROV_STATUS_PATH;
+
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                if (response.data) {
+                    successCallbackFunction(response);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+        getLoggedInUserID : function(successCallbackFunction, catchCallbackFunction) {
+            $log
+                .debug("AaiService:getLoggedInUserID");
+            var url = COMPONENT.GET_USER_ID;
+
+            $http.get(url,
+                {
+                    transformResponse: [function (data) {
+                        return data;
+                    }],
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                if (response.data) {
+                    successCallbackFunction(response);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"] (function(response, status) {
+                if (catchCallbackFunction) {
+                    catchCallbackFunction();
+                }
+                UtilityService.runHttpErrorHandler(response, status);
+            })
+        },
+        getServices : function(successCallbackFunction) {
+            $log
+                .debug("AaiService:getServices");
+            var url =  COMPONENT.AAI_GET_SERVICES + COMPONENT.ASSIGN + Math.random();
+
+            $http.get(url,
+                {
+                    timeout: PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function (response) {
+                if (response.data) {
+                    successCallbackFunction(response);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+
+        getAicZones: function (successCallbackFunction) {
+            $log
+                .debug("getAicZones:getAicZones");
+            var url = COMPONENT.AAI_GET_AIC_ZONES +COMPONENT.ASSIGN + Math.random();
+
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                if (response.data) {
+                    successCallbackFunction(response);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);},
+        getAicZoneForPNF: function (globalCustomerId,serviceType,serviceInstanceId,successCallbackFunction) {
+            $log
+                .debug("getAicZones:getAicZones");
+            var url = COMPONENT.AAI_GET_AIC_ZONE_FOR_PNF
+                .replace('@serviceInstanceId', serviceInstanceId)
+                .replace('@globalCustomerId', globalCustomerId)
+                .replace('@serviceType', serviceType);
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                successCallbackFunction(response.data);
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);},
+
+        getServiceModels : function(globalCustomerId,serviceType,successCallbackFunction) {
+            $log
+                .debug("AaiService:getServices");
+            var url =   COMPONENT.AAI_GET_SERVICES + COMPONENT.FORWARD_SLASH+globalCustomerId+ COMPONENT.FORWARD_SLASH +serviceType+COMPONENT.ASSIGN + Math.random();
+
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                if (response.data) {
+                    successCallbackFunction(response);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+        getServiceModelsByServiceType : function(namedQueryId,globalCustomerId,serviceType,successCallbackFunction) {
+            $log
+                .debug("AaiService:getServiceModelsByServiceType");
+            var url =   COMPONENT.AAI_GET_SERVICES_BY_TYPE+COMPONENT.FORWARD_SLASH+namedQueryId+COMPONENT.FORWARD_SLASH+globalCustomerId+COMPONENT.FORWARD_SLASH +serviceType+COMPONENT.ASSIGN + Math.random();
+
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                if (response.data) {
+                    successCallbackFunction(response);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+
+               getVnfsByCustomerIdAndServiceType: function(globalSubscriberId, serviceType){
+            var deferred = $q.defer();
+
+            if (UtilityService.hasContents(globalSubscriberId) &&
+                               UtilityService.hasContents(serviceType) ) {
+
+                $http.get(COMPONENT.AAI_GET_VNF_BY_CUSTOMERID_AND_SERVICETYPE + globalSubscriberId + COMPONENT.FORWARD_SLASH
+                                       + serviceType )
+                    .success(function (response) {
+                        if(response) {
+                            deferred.resolve({data: response});
+                        } else {
+                            deferred.resolve({data: []});
+                        }
+                    }).error(function (data, status, headers, config) {
+                    deferred.reject({message: data, status: status});
+                });
+            }
+
+            return deferred.promise;
+        },
+
+        getVnfVersionsByInvariantId: function(modelInvariantId){
+            var deferred = $q.defer();
+
+            if (UtilityService.hasContents(modelInvariantId)) {
+                var body = {"versions": modelInvariantId};
+                $http.post(( COMPONENT.AAI_GET_VERSION_BY_INVARIANT_ID),body)
+
+                    .success(function (response) {
+                        if(response) {
+                            deferred.resolve({data: response});
+                        } else {
+                            deferred.resolve({data: []});
+                        }
+                    }).error(function (data, status, headers, config) {
+                    deferred.reject({message: data, status: status});
+                });
+            }
+
+            return deferred.promise;
+        },
+
+
+
+        getSubscriberServiceTypes: function(subscriberUuid) {
+            var deferred = $q.defer();
+            $log.debug("AaiService:getSubscriberServiceTypes: subscriberUuid: " + subscriberUuid);
+
+            if (UtilityService.hasContents(subscriberUuid)) {
+                $http.get(COMPONENT.AAI_SUB_DETAILS_PATH + subscriberUuid + COMPONENT.ASSIGN + Math.random())
+                    .success(function (response) {
+                        if(response && [FIELD.ID.SERVICE_SUBSCRIPTIONS]) {
+                            deferred.resolve({data: response[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION]});
+                        } else {
+                            deferred.resolve({data: []});
+                        }
+                    }).error(function (data, status, headers, config) {
+                    deferred.reject({message: data, status: status});
+                });
+            }
+
+            return deferred.promise;
+        },
+        getVnfInstancesList: function(globalSubscriberId, serviceType, modelVersionId ,modelInvariantId, cloudRegionId)  {
+            var deferred = $q.defer();
+            $http.get([COMPONENT.AAI_GET_VNF_INSTANCES_LIST,
+                    globalSubscriberId,
+                    serviceType,
+                    modelVersionId,
+                    modelInvariantId,
+                    cloudRegionId]
+                .join(COMPONENT.FORWARD_SLASH))
+                .success(function (response) {
+                    deferred.resolve(response);
+                }).error(function (data, status) {
+                    deferred.reject({message: data, status: status});
+            });
+            return deferred.promise;
+        },
+        getPnfInstancesList: function (globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegionId, equipVendor, equipModel) {
+            var deferred = $q.defer();
+            $http.get([COMPONENT.AAI_GET_PNF_INSTANCES_LIST,
+                    globalCustomerId, serviceType,
+                    modelVersionId, modelInvariantId,
+                    cloudRegionId,
+                    equipVendor, equipModel
+                ].join(COMPONENT.FORWARD_SLASH))
+                .success(function (response) {
+                    deferred.resolve(response);
+                }).error(function (data, status) {
+                deferred.reject({message: data, status: status});
+            });
+            return deferred.promise;
+        },
+        getByUri: function(uri)  {
+            var deferred = $q.defer();
+
+            $http.get(COMPONENT.AAI_GET_BY_URI + uri)
+                .success(function (response) {
+                    deferred.resolve({data: []});
+                }).error(function (data, status, headers, config) {
+                    deferred.reject({message: data, status: status});
+                });
+
+            return deferred.promise;
+        },
+        getConfiguration: function(configurationId)  {
+            var deferred = $q.defer();
+
+            $http.get(COMPONENT.AAI_GET_CONFIGURATION + configurationId)
+                .success(function (response) {
+                    deferred.resolve({data: []});
+                }).error(function (data, status, headers, config) {
+                deferred.reject({message: data, status: status});
+            });
+
+            return deferred.promise;
+        },
+
+        getInstanceGroupsByVNFInstanceId: function (vnf_instance_id, successCallback, errorCallback) {
+            var url = COMPONENT.AAI_GET_INSTANCE_GROUPS_BY_VNF_INSTANCE_ID_PATH + "/" + vnf_instance_id;
+
+            $http.get(url, {}, {
+                timeout: PropertyService.getServerResponseTimeoutMsec()
+            }).then(function (response) {
+                successCallback(response);
+            }, function (response) {
+                errorCallback(response);
+            });
+        },
+
+        postPOMBAverificationRequest: function (url, data, config) {
+            $http.post(url, data, config)
+                .success(function (data, status, headers, config) {
+                    //If at some point in the future the result should be handled - this should be the entry point.
+                    log.debug("POMBA was called successfully with data: " + data);
+                })
+                .error(function (data, status, header, config) {
+                    log.debug("Error: " +
+                        "Data: " + data +
+                        "status: " + status +
+                        "headers: " + header +
+                        "config: " + config);
+                });
+        },
+
+        getHomingData: function(vnfInstanceId, vfModuleId)  {
+            var url = COMPONENT.AAI_GET_HOMING_DATA.replace('@vnfInstanceId', vnfInstanceId)
+                .replace('@vfModuleId', vfModuleId);
+
+            var deferred = $q.defer();
+
+            $http.get(url)
+                .success(function (response) {
+                    deferred.resolve({data: response});
+                }).error(function (data, status, headers, config) {
+                deferred.reject({message: data, status: status});
+            });
+
+            return deferred.promise;
+
+        },
+
+        removeVendorFromCloudOwner: function(cloudOwner) {
+            // Handle the case where cloud owner is formatted
+            // like "{vendor}-{cloud-name}"
+            return cloudOwner.trim().replace(/^[^-]*-/, '');
+        }
+    };
+};
+
+appDS2.factory("AaiService", ["$http", "$log", "PropertyService",
+    "UtilityService", "COMPONENT", "FIELD", "$q", "featureFlags", AaiService]);