Change management and PNF support
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / services / msoService.js
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * VID\r
4  * ================================================================================\r
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
6  * ================================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ============LICENSE_END=========================================================\r
19  */\r
20 \r
21 "use strict";\r
22 \r
23 var MsoService = function($http, $log, PropertyService, AaiService, UtilityService, COMPONENT, FIELD, $q) {\r
24 \r
25     var _this = this;\r
26 \r
27         /*\r
28          * Common function to handle both create and delete instance requests\r
29          */\r
30     var requestInstanceUpdate = function(request, successCallbackFunction) {\r
31         $log.debug("MsoService:requestInstanceUpdate: request:");\r
32         $log.debug(request);\r
33         $http.post( "mso/" + request.url, {\r
34             requestDetails : request.requestDetails\r
35         }, {\r
36             timeout : PropertyService.getServerResponseTimeoutMsec()\r
37         }).then(successCallbackFunction)["catch"]\r
38         (UtilityService.runHttpErrorHandler);\r
39     }\r
40 \r
41     var checkValidStatus = function(response) {\r
42         if (response.data.status < 200 || response.data.status > 202) {\r
43             throw {\r
44                 type : FIELD.ID.MSO_FAILURE\r
45             }\r
46         }\r
47     };\r
48 \r
49     var addListEntry = function(name, value) {\r
50         var entry = '"' + name + '": ';\r
51         if (value === undefined) {\r
52             return entry + "undefined";\r
53         } else {\r
54             return entry + '"' + value + '"';\r
55         }\r
56     };\r
57 \r
58     var activateInstance = function(instance, model) {\r
59         var deferred = $q.defer();\r
60 \r
61         AaiService.getLoggedInUserID(function (response) {\r
62             var userID = response.data;\r
63 \r
64             AaiService.getAicZoneForPNF(instance.globalCustomerId, model.service.serviceType, instance.serviceInstanceId, function (aicZone) {\r
65 \r
66                 var requestDetails = {\r
67                     "modelInstanceId": serviceInstanceId,\r
68                     "requestDetails": {\r
69                         "modelInfo": {\r
70                             "modelType": "service",\r
71                             "modelInvariantId": model.service.invariantUuid,\r
72                             "modelVersionId": model.service.uuid,\r
73                             "modelName": model.service.name,\r
74                             "modelVersion": model.service.version\r
75                         },\r
76                         "requestInfo": {\r
77                             "source": "VID",\r
78                             "requestorId": userID\r
79                         },\r
80                         "requestParameters": {\r
81                             "userParams": {\r
82                                 "name": "aic_zone",\r
83                                 "value": aicZone\r
84                             }\r
85                         }\r
86                     }\r
87                 };\r
88 \r
89                 console.log("requestDetails", requestDetails);\r
90 \r
91                 $http.post(COMPONENT.MSO_ACTIVATE_INSTANCE.replace('@serviceInstanceId', requestDetails.modelInstanceId),\r
92                     requestDetails.requestDetails)\r
93                     .success(function (response) {\r
94                         deferred.resolve({data: response});\r
95                     })\r
96                     .error(function(data, status, headers, config) {\r
97                         deferred.reject({message: data, status: status});\r
98                     });\r
99             });\r
100         });\r
101 \r
102         return deferred.promise;\r
103     };\r
104 \r
105     return {\r
106         createInstance : requestInstanceUpdate,\r
107         deleteInstance : requestInstanceUpdate,\r
108         getOrchestrationRequest : function(requestId, successCallbackFunction) {\r
109             $log.debug("MsoService:getOrchestrationRequest: requestId: "\r
110                 + requestId);\r
111             $http.get(\r
112                 "mso/mso_get_orch_req/"\r
113                 + requestId + "?r=" + Math.random(),\r
114                 {\r
115                     timeout : PropertyService\r
116                         .getServerResponseTimeoutMsec()\r
117                 }).then(successCallbackFunction)["catch"]\r
118             (UtilityService.runHttpErrorHandler);\r
119         },\r
120         getOrchestrationRequests : function(filterString,\r
121                                             successCallbackFunction) {\r
122             $log.debug("MsoService:getOrchestrationRequests: filterString: "\r
123                 + filterString);\r
124             $http.get(\r
125                 "mso/mso_get_orch_reqs/"\r
126                 + encodeURIComponent(filterString) + "?r="\r
127                 + Math.random(),\r
128                 {\r
129                     timeout : PropertyService\r
130                         .getServerResponseTimeoutMsec()\r
131                 }).then(successCallbackFunction)["catch"]\r
132             (UtilityService.runHttpErrorHandler);\r
133         },\r
134         getFormattedCommonResponse : function(response) {\r
135             return UtilityService.getCurrentTime() + " HTTP Status: "\r
136                 + UtilityService.getHttpStatusText(response.data.status)\r
137                 + "\n" + angular.toJson(response.data.entity, true)\r
138 \r
139         },\r
140         checkValidStatus : checkValidStatus,\r
141         getFormattedGetOrchestrationRequestsResponse : function(response) {\r
142             UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity);\r
143             UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status);\r
144             checkValidStatus(response);\r
145 \r
146             var list = response.data.entity.requestList\r
147             UtilityService.checkUndefined(FIELD.ID.REQUEST_LIST, list);\r
148 \r
149             var message = "";\r
150 \r
151             for (var i = 0; i < list.length; i++) {\r
152                 var request = list[i].request;\r
153                 message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n";\r
154                 message += addListEntry(FIELD.ID.REQUEST_TYPE, request.requestType)\r
155                     + ",\n";\r
156                 var status = request.requestStatus;\r
157                 if (status === undefined) {\r
158                     message += addListEntry(FIELD.ID.REQUEST_STATUS, undefined) + "\n";\r
159                 } else {\r
160                     message += addListEntry(FIELD.ID.TIMESTAMP, status.timestamp)\r
161                         + ",\n";\r
162                     message += addListEntry(FIELD.ID.REQUEST_STATE, status.requestState)\r
163                         + ",\n";\r
164                     message += addListEntry(FIELD.ID.REQUEST_STATUS,\r
165                             status.statusMessage)\r
166                         + ",\n";\r
167                     message += addListEntry(FIELD.ID.PERCENT_PROGRESS,\r
168                             status.percentProgress)\r
169                         + "\n";\r
170                 }\r
171                 if (i < (list.length - 1)) {\r
172                     message += "\n";\r
173                 }\r
174             }\r
175             return message;\r
176         },\r
177         getFormattedSingleGetOrchestrationRequestResponse : function (response) {\r
178             UtilityService.checkUndefined(COMPONENT.ENTITY, response.data.entity);\r
179             UtilityService.checkUndefined(COMPONENT.STATUS, response.data.status);\r
180             checkValidStatus(response);\r
181 \r
182             var message = "";\r
183             if ( UtilityService.hasContents (response.data.entity.request) ) {\r
184                 var request = response.data.entity.request;\r
185                 message += addListEntry(FIELD.ID.REQUEST_ID, request.requestId) + ",\n";\r
186                 message += addListEntry(FIELD.ID.REQUEST_TYPE, request.requestType)\r
187                     + ",\n";\r
188                 var status = request.requestStatus;\r
189                 if (status === undefined) {\r
190                     message += addListEntry(FIELD.ID.REQUEST_STATUS, undefined) + "\n";\r
191                 } else {\r
192                     message += addListEntry(FIELD.ID.TIMESTAMP, status.timestamp)\r
193                         + ",\n";\r
194                     message += addListEntry(FIELD.ID.REQUEST_STATE, status.requestState)\r
195                         + ",\n";\r
196                     message += addListEntry(FIELD.ID.REQUEST_STATUS,\r
197                             status.statusMessage)\r
198                         + ",\n";\r
199                     message += addListEntry(FIELD.ID.PERCENT_PROGRESS,\r
200                             status.percentProgress)\r
201                         + "\n\n";\r
202                 }\r
203             }\r
204             return message;\r
205         },\r
206         getManualTasks : function(requestId) {\r
207             $log.debug("MsoService:getManualTasks: requestId: "\r
208                 + requestId);\r
209             return $http.get(\r
210                 "mso/mso_get_man_task/" + requestId,\r
211                 {\r
212                     timeout: PropertyService\r
213                         .getServerResponseTimeoutMsec()\r
214                 })\r
215                 .catch(UtilityService.runHttpErrorHandler);\r
216         },\r
217         completeTask: function(taskId, taskToComplete) {\r
218             $log.debug("MsoService:completeTask: taskId: "\r
219                 + taskId);\r
220             AaiService.getLoggedInUserID(function (response) {\r
221                 var attuid = response.data;\r
222                 var source = "VID";\r
223                 var data = {\r
224                     requestDetails: {\r
225                         requestInfo: {\r
226                             source: source,\r
227                             responseValue: taskToComplete,\r
228                             requestorId: attuid\r
229                         }\r
230                     }\r
231                 };\r
232 \r
233                 return $http.post(\r
234                     "mso/mso_post_man_task/" + taskId, data,\r
235                     {\r
236                         timeout: PropertyService\r
237                             .getServerResponseTimeoutMsec()\r
238                     })\r
239                     .catch(UtilityService.runHttpErrorHandler);\r
240             });\r
241         },\r
242         showResponseContentError : function(error, showFunction) {\r
243             switch (error.type) {\r
244                 case "undefinedObject":\r
245                     showFunction(FIELD.ERROR.SYSTEM_FAILURE, error.message);\r
246                     break;\r
247                 case "msoFailure":\r
248                     showFunction(FIELD.ERROR.MSO, "")\r
249                     break;\r
250                 default:\r
251                     showFunction(FIELD.ERROR.SYSTEM_FAILURE);\r
252             }\r
253         },\r
254         activateInstance: activateInstance\r
255     }\r
256 };\r
257 \r
258 appDS2.factory("MsoService", [ "$http", "$log", "PropertyService",\r
259     "AaiService", "UtilityService", "COMPONENT", "FIELD", "$q", MsoService ]);\r