org.onap migration
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / services / msoService.js
index 68c8503..67211d4 100755 (executable)
@@ -20,7 +20,7 @@
 \r
 "use strict";\r
 \r
-var MsoService = function($http, $log, PropertyService, AaiService, UtilityService, COMPONENT, FIELD, $q) {\r
+var MsoService = function($http, $log, $q, PropertyService, AaiService, UtilityService, COMPONENT, FIELD) {\r
 \r
     var _this = this;\r
 \r
@@ -55,49 +55,60 @@ var MsoService = function($http, $log, PropertyService, AaiService, UtilityServi
         }\r
     };\r
 \r
-    var activateInstance = function(instance, model) {\r
-        var deferred = $q.defer();\r
+    var buildPayloadForServiceActivateDeactivate = function (model, userId, aicZone) {\r
+        var requestDetails = {\r
+                "modelInfo": {\r
+                    "modelType": "service",\r
+                    "modelInvariantId": model.service.invariantUuid,\r
+                    "modelVersionId": model.service.uuid,\r
+                    "modelName": model.service.name,\r
+                    "modelVersion": model.service.version\r
+                },\r
+                "requestInfo": {\r
+                    "source": "VID",\r
+                    "requestorId": userId\r
+                },\r
+                "requestParameters": {\r
+                    "userParams": [{\r
+                        "name": "aic_zone",\r
+                        "value": aicZone\r
+                    }]\r
+                }\r
+        };\r
 \r
-        AaiService.getLoggedInUserID(function (response) {\r
-            var userID = response.data;\r
+        $log.debug("Service Activate/Deactivate payload", requestDetails);\r
 \r
-            AaiService.getAicZoneForPNF(instance.globalCustomerId, model.service.serviceType, instance.serviceInstanceId, function (aicZone) {\r
+        return requestDetails;\r
 \r
-                var requestDetails = {\r
-                    "modelInstanceId": serviceInstanceId,\r
-                    "requestDetails": {\r
-                        "modelInfo": {\r
-                            "modelType": "service",\r
-                            "modelInvariantId": model.service.invariantUuid,\r
-                            "modelVersionId": model.service.uuid,\r
-                            "modelName": model.service.name,\r
-                            "modelVersion": model.service.version\r
-                        },\r
-                        "requestInfo": {\r
-                            "source": "VID",\r
-                            "requestorId": userID\r
-                        },\r
-                        "requestParameters": {\r
-                            "userParams": {\r
-                                "name": "aic_zone",\r
-                                "value": aicZone\r
-                            }\r
-                        }\r
-                    }\r
-                };\r
+    };\r
 \r
-                console.log("requestDetails", requestDetails);\r
+    var activateInstance = function(requestParams) {\r
+        var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId, requestParams.aicZone);\r
 \r
-                $http.post(COMPONENT.MSO_ACTIVATE_INSTANCE.replace('@serviceInstanceId', requestDetails.modelInstanceId),\r
-                    requestDetails.requestDetails)\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
+        return sendPostRequest(COMPONENT.MSO_ACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId),\r
+            requestDetails);\r
+    };\r
+\r
+    var deactivateInstance = function(requestParams) {\r
+        var requestDetails = buildPayloadForServiceActivateDeactivate(requestParams.model, requestParams.userId, requestParams.aicZone);\r
+\r
+        return sendPostRequest(COMPONENT.MSO_DEACTIVATE_INSTANCE.replace('@serviceInstanceId', requestParams.instance.serviceInstanceId),\r
+            requestDetails);\r
+    };\r
+\r
+    var sendPostRequest = function(url, requestDetails) {\r
+        var deferred = $q.defer();\r
+        if (url) {\r
+            $http.post(url, {\r
+                requestDetails: requestDetails\r
+            }, {\r
+                timeout: PropertyService.getServerResponseTimeoutMsec()\r
+            }).success(function (response) {\r
+                deferred.resolve({data: response});\r
+            }).error(function (data, status) {\r
+                deferred.reject({message: data, status: status});\r
             });\r
-        });\r
+        }\r
 \r
         return deferred.promise;\r
     };\r
@@ -177,9 +188,12 @@ var MsoService = function($http, $log, PropertyService, AaiService, UtilityServi
         getFormattedSingleGetOrchestrationRequestResponse : function (response) {\r
             UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity);\r
             UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status);\r
-            checkValidStatus(response);\r
+            //checkValidStatus(response);\r
 \r
             var message = "";\r
+            if (! (response && response.data && response.data.entity)) {\r
+                return message;\r
+            }\r
             if ( UtilityService.hasContents (response.data.entity.request) ) {\r
                 var request = response.data.entity.request;\r
                 message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n";\r
@@ -201,6 +215,11 @@ var MsoService = function($http, $log, PropertyService, AaiService, UtilityServi
                         + "\n\n";\r
                 }\r
             }\r
+            else {\r
+                if (UtilityService.hasContents(response.data.status) && UtilityService.hasContents(response.data.entity)) {\r
+                    message = this.getFormattedCommonResponse(response) + "\n";\r
+                }\r
+            }\r
             return message;\r
         },\r
         getManualTasks : function(requestId) {\r
@@ -215,29 +234,37 @@ var MsoService = function($http, $log, PropertyService, AaiService, UtilityServi
                 .catch(UtilityService.runHttpErrorHandler);\r
         },\r
         completeTask: function(taskId, taskToComplete) {\r
-            $log.debug("MsoService:completeTask: taskId: "\r
-                + taskId);\r
-            AaiService.getLoggedInUserID(function (response) {\r
-                var attuid = response.data;\r
-                var source = "VID";\r
-                var data = {\r
-                    requestDetails: {\r
-                        requestInfo: {\r
-                            source: source,\r
-                            responseValue: taskToComplete,\r
-                            requestorId: attuid\r
+            var promise = new Promise(function (resolve, reject) {\r
+                $log.debug("MsoService:completeTask: taskId: "\r
+                    + taskId);\r
+                AaiService.getLoggedInUserID(function (response) {\r
+                    var attuid = response.data;\r
+                    var source = "VID";\r
+                    var data = {\r
+                        requestDetails: {\r
+                            requestInfo: {\r
+                                source: source,\r
+                                responseValue: taskToComplete,\r
+                                requestorId: attuid\r
+                            }\r
                         }\r
-                    }\r
-                };\r
+                    };\r
 \r
-                return $http.post(\r
-                    "mso/mso_post_man_task/" + taskId, data,\r
-                    {\r
-                        timeout: PropertyService\r
-                            .getServerResponseTimeoutMsec()\r
+                    return $http.post(\r
+                        "mso/mso_post_man_task/" + taskId, data,\r
+                        {\r
+                            timeout: PropertyService\r
+                                .getServerResponseTimeoutMsec()\r
+                        }).then(function (response) {\r
+                            resolve(response);\r
                     })\r
-                    .catch(UtilityService.runHttpErrorHandler);\r
+                        .catch(UtilityService.runHttpErrorHandler);\r
+                }, function () {\r
+                    reject();\r
+                });\r
             });\r
+\r
+            return promise;\r
         },\r
         showResponseContentError : function(error, showFunction) {\r
             switch (error.type) {\r
@@ -251,9 +278,233 @@ var MsoService = function($http, $log, PropertyService, AaiService, UtilityServi
                     showFunction(FIELD.ERROR.SYSTEM_FAILURE);\r
             }\r
         },\r
-        activateInstance: activateInstance\r
+        activateInstance: activateInstance,\r
+        deactivateInstance: deactivateInstance,\r
+\r
+\r
+        createConfigurationInstance: function(requestParams) {\r
+\r
+            const modelInfoOf = function (instance) {\r
+                const modelInfo = {\r
+                    "modelType": "vnf",\r
+                    "modelInvariantId": instance.properties['model-invariant-id'],\r
+                    "modelVersionId": instance.properties['model-version-id'],\r
+                    "modelName": instance.properties['model-name'],\r
+                    "modelVersion": instance.properties['model-version'],\r
+                    "modelCustomizationId": instance.properties['model-customization-id']\r
+                };\r
+\r
+                $log.debug("model info from instance", instance);\r
+                $log.debug("model info to model", modelInfo);\r
+\r
+                return modelInfo\r
+            };\r
+\r
+            var payload = {\r
+                "requestDetails": {\r
+                    "modelInfo": {\r
+                        "modelType": "configuration",\r
+                        "modelInvariantId": requestParams.configurationModelInfo.modelInvariantId,\r
+                        "modelVersionId": requestParams.configurationModelInfo.modelNameVersionId,\r
+                        "modelName": requestParams.configurationModelInfo.modelName, // "Port Mirroring Configuration"\r
+                        "modelVersion": requestParams.configurationModelInfo.modelVersion,\r
+                        "modelCustomizationId": requestParams.configurationModelInfo.customizationUuid,\r
+                        "modelCustomizationName": requestParams.configurationModelInfo.modelCustomizationName\r
+                    },\r
+                    "cloudConfiguration": {\r
+                        // "tenantId": ????\r
+                        "lcpCloudRegionId": requestParams.portMirroringConfigFields.lcpRegion.value\r
+                    },\r
+                    "requestInfo": {\r
+                        "instanceName": requestParams.portMirroringConfigFields.instanceName.value,\r
+                        "source": "VID",\r
+                        "requestorId": requestParams.attuuid\r
+                    },\r
+                    "relatedInstanceList": [\r
+                        {\r
+                            "relatedInstance": {\r
+                                "instanceId": requestParams.topServiceInstanceId,\r
+                                "modelInfo": {\r
+                                    "modelType": "service", // relatedTopModelsInfo.modelType\r
+                                    "modelInvariantId": requestParams.relatedTopModelsInfo.modelInvariantId,\r
+                                    "modelVersionId": requestParams.relatedTopModelsInfo.modelNameVersionId,\r
+                                    "modelName": requestParams.relatedTopModelsInfo.modelName,\r
+                                    "modelVersion": requestParams.relatedTopModelsInfo.modelVersion\r
+                                }\r
+                            }\r
+                        },\r
+                        {\r
+                            "relatedInstance": {\r
+                                "instanceId": requestParams.portMirroringConfigFields.sourceInstance.properties['vnf-id'],\r
+                                "instanceDirection": "source",\r
+                                "modelInfo": modelInfoOf(requestParams.portMirroringConfigFields.sourceInstance)\r
+                            }\r
+                        },\r
+                        {\r
+                            "relatedInstance": {\r
+                                "instanceId": requestParams.configurationByPolicy ?\r
+                                    requestParams.portMirroringConfigFields.destinationInstance.properties['pnfName']:\r
+                                    requestParams.portMirroringConfigFields.destinationInstance.properties['vnf-id'],\r
+                                "instanceDirection": "destination",\r
+                                "modelInfo":\r
+                                    requestParams.configurationByPolicy ?\r
+                                        {"modelType": "pnf"} :\r
+                                        modelInfoOf(requestParams.portMirroringConfigFields.destinationInstance)\r
+                            }\r
+                        }\r
+                    ],\r
+                    "requestParameters": {\r
+                        "userParams": []\r
+                    }\r
+                }\r
+            };\r
+\r
+            $log.debug("payload", payload);\r
+\r
+            var deferred = $q.defer();\r
+            $http.post([\r
+                'mso','mso_create_configuration_instance',\r
+                requestParams.topServiceInstanceId,\r
+                'configurations',''\r
+            ].join(COMPONENT.FORWARD_SLASH),\r
+                payload)\r
+                .success(function (response) {\r
+                    deferred.resolve({data : response});\r
+                }).error(function (data, status) {\r
+                deferred.reject({message: data, status: status});\r
+            });\r
+            return deferred.promise;\r
+        },\r
+\r
+        toggleConfigurationStatus: function(requestParams) {\r
+\r
+            var requestDetails = {\r
+                "modelInfo": requestParams.configurationModel,\r
+                "cloudConfiguration": {\r
+                    "lcpCloudRegionId": "mdt1"\r
+                },\r
+                "requestInfo": {\r
+                    "source": "VID",\r
+                    "requestorId": requestParams.userId\r
+                },\r
+                "relatedInstanceList": [{\r
+                    "relatedInstance": {\r
+                        "instanceId": requestParams.serviceInstanceId,\r
+                        "modelInfo": requestParams.serviceModel\r
+                    }\r
+                }],\r
+                "requestParameters": {\r
+                    "userParams": []\r
+                }\r
+            };\r
+\r
+            var url;\r
+            switch (requestParams.configStatus) {\r
+                case FIELD.STATUS.AAI_CREATED:\r
+                case FIELD.STATUS.AAI_INACTIVE:\r
+                    url = "mso/mso_activate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;\r
+                    break;\r
+                case FIELD.STATUS.AAI_ACTIVE:\r
+                    url = "mso/mso_deactivate_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;\r
+                    break;\r
+            }\r
+\r
+            return sendPostRequest(url, requestDetails);\r
+        },\r
+\r
+        togglePortStatus: function(requestParams) {\r
+            var requestDetails = {\r
+                "modelInfo": requestParams.configurationModel,\r
+                "cloudConfiguration": {\r
+                    "lcpCloudRegionId": "mdt1"\r
+                },\r
+                "requestInfo": {\r
+                    "source": "VID",\r
+                    "requestorId": requestParams.userId\r
+                },\r
+                "relatedInstanceList": [\r
+                    {\r
+                        "relatedInstance": {\r
+                            "instanceId": requestParams.serviceInstanceId,\r
+                            "modelInfo": requestParams.serviceModel\r
+                        }\r
+                    },\r
+                    {\r
+                        "relatedInstance": {\r
+                            "instanceId": requestParams.portId,\r
+                            "instanceDirection": "source",\r
+                            "modelInfo": {\r
+                                "modelType": "connectionPoint"\r
+                            }\r
+                        }\r
+                    }\r
+                ]\r
+            };\r
+\r
+            var url;\r
+            switch (requestParams.portStatus) {\r
+                case FIELD.STATUS.AAI_ENABLED:\r
+                    url = "mso/mso_disable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;\r
+                    break;\r
+                case FIELD.STATUS.AAI_DISABLED:\r
+                    url = "mso/mso_enable_port_configuration/"+requestParams.serviceInstanceId+"/configurations/"+requestParams.configurationId;\r
+                    break;\r
+            }\r
+\r
+            return sendPostRequest(url, requestDetails);\r
+        },\r
+\r
+        buildPayloadForAssociateDissociate: function(serviceModelInfo, attuuid, instanceId, pnf) {\r
+            var payload = {\r
+                    "modelInfo": {\r
+                        "modelType": "service",\r
+                        "modelInvariantId": serviceModelInfo.invariantUuid,\r
+                        "modelVersionId": serviceModelInfo.uuid,\r
+                        "modelName": serviceModelInfo.name,\r
+                        "modelVersion": serviceModelInfo.version\r
+                    },\r
+                    "requestInfo": {\r
+                        "source": "VID",\r
+                        "requestorId": attuuid\r
+                    },\r
+                    "relatedInstanceList": [\r
+                        {\r
+                            "relatedInstance": {\r
+                                "instanceName": pnf,\r
+                                "modelInfo": {\r
+                                    "modelType": "pnf"\r
+                                }\r
+                            }\r
+                        }],\r
+                    "requestParameters": {\r
+                        "aLaCarte": true\r
+                    }\r
+            };\r
+\r
+            $log.debug("payload", payload);\r
+\r
+            return payload;\r
+        },\r
+        associatePnf: function(requestParams) {\r
+\r
+            var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.instanceId, requestParams.pnf);\r
+            return sendPostRequest([\r
+                    COMPONENT.MSO, COMPONENT.MSO_CREATE_REALATIONSHIP,\r
+                    requestParams.instanceId,\r
+                    ''\r
+                ].join(COMPONENT.FORWARD_SLASH), payload);\r
+        },\r
+        dissociatePnf: function(requestParams) {\r
+\r
+            var payload = this.buildPayloadForAssociateDissociate(requestParams.serviceModelInfo, requestParams.attuuid, requestParams.serviceInstanceId, requestParams.pnf);\r
+\r
+            return sendPostRequest([\r
+                COMPONENT.MSO, COMPONENT.MSO_REMOVE_RELATIONSHIP,\r
+                requestParams.serviceInstanceId,\r
+                ''\r
+            ].join(COMPONENT.FORWARD_SLASH), payload);\r
+        }\r
     }\r
 };\r
 \r
-appDS2.factory("MsoService", [ "$http", "$log", "PropertyService",\r
-    "AaiService", "UtilityService", "COMPONENT", "FIELD", "$q", MsoService ]);\r
+appDS2.factory("MsoService", MsoService );\r