[VID-3] Setting docker image tag
[vid.git] / vid / src / main / webapp / app / vid / scripts / services / deletionService.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 "use strict";
22
23 var DeletionService = function($log, AaiService, AsdcService, DataService,
24         ComponentService, COMPONENT, FIELD, UtilityService) {
25
26     var _this = this;
27
28     var getAsyncOperationList = function() {
29                 switch (_this.componentId) {
30                 case COMPONENT.SERVICE:
31                         return [ getSubscribers ];
32                 case COMPONENT.NETWORK:
33                         return [];
34                 case COMPONENT.VNF:
35                         return [ getLcpCloudRegionTenantList ];
36                 case COMPONENT.VF_MODULE:
37                         return [ getLcpCloudRegionTenantList ];
38                 case COMPONENT.VOLUME_GROUP:
39                         return [ getLcpCloudRegionTenantList ];
40                 }
41         };
42         
43         var getLcpCloudRegionTenantList = function() {
44                 AaiService.getLcpCloudRegionTenantList(DataService
45                                 .getGlobalCustomerId(), DataService.getServiceType(), function(
46                                 response) {
47                         DataService.setCloudRegionTenantList(response);
48                         UtilityService.startNextAsyncOperation();
49                 });
50         };
51         
52         var getSubscribers = function() {
53                 AaiService.getSubscribers(function(response) {
54                         DataService.setSubscribers(response);
55                         UtilityService.startNextAsyncOperation();
56                 });
57         };
58         
59         var internalGetParametersHandler = function() {
60                 if (angular.isFunction(_this.getParametersHandler)) {
61                         if (_this.componentId == COMPONENT.SERVICE)
62                         _this.getParametersHandler({
63                                 summaryList : getSummaryList(),
64                                 userProvidedList : getUserProvidedList()
65                         }, true);
66                         else
67                                 _this.getParametersHandler({
68                                         summaryList : getSummaryList(),
69                                         userProvidedList : getUserProvidedList()
70                                 }, false);
71                 }
72         };
73         
74         var getSubscribersParameter = function() {
75                 var subscribers = DataService.getSubscribers();
76                 var parameter = FIELD.PARAMETER.SUBSCRIBER_NAME;
77                 parameter.optionList = [];
78
79                 for (var i = 0; i < subscribers.length; i++) {
80                         parameter.optionList.push({
81                                 id : subscribers[i]["global-customer-id"],
82                                 name : subscribers[i]["subscriber-name"]
83                         })
84                 }
85                 return parameter;
86         };
87         
88         var getServiceId = function() {
89                 var serviceIdList = DataService.getServiceIdList();
90                 var parameter = FIELD.PARAMETER.PRODUCT_FAMILY;
91                 parameter.optionList = new Array();
92                 for (var i = 0; i < serviceIdList.length; i++) {
93                         parameter.optionList.push({
94                                 id : serviceIdList[i].id,
95                                 name : serviceIdList[i].description
96                         });
97                 }
98                 return parameter;
99         };
100         
101         var getUserProvidedList = function() {
102
103                 //var parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];
104
105                 var parameterList = [];
106                 
107                 switch (_this.componentId) {
108                 case COMPONENT.SERVICE:
109 //                      parameterList = parameterList.concat([ getSubscribersParameter(),
110 //                                      FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);
111                         parameterList = [];
112                         break;
113                 case COMPONENT.NETWORK:
114                 case COMPONENT.VNF:
115                         parameterList = parameterList.concat([ //getServiceId(),
116                                         getLcpRegion(), FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
117                                         FIELD.PARAMETER.TENANT_DISABLED ]);
118                         break;
119                 case COMPONENT.VF_MODULE:
120                         parameterList = parameterList.concat([
121                                 getLcpRegion(),
122                                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
123                                         FIELD.PARAMETER.TENANT_DISABLED
124                         ]);
125                         
126                         break;
127                 case COMPONENT.VOLUME_GROUP:
128                         parameterList = parameterList.concat([ getLcpRegion(),
129                                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
130                                         FIELD.PARAMETER.TENANT_DISABLED ]);
131                 }
132
133                 parameterList.push(FIELD.PARAMETER.SUPPRESS_ROLLBACK);
134
135                 //addArbitraryParameters(parameterList);
136
137                 return parameterList;
138         };
139     var getSummaryList = function() {
140         switch (_this.componentId) {
141         case COMPONENT.NETWORK:
142         case COMPONENT.SERVICE:
143         case COMPONENT.VNF:
144         case COMPONENT.VF_MODULE:
145         case COMPONENT.VOLUME_GROUP:
146             var summaryList = [ {
147                 name : FIELD.NAME.SUBSCRIBER_NAME,
148                 value : DataService.getSubscriberName()
149             }, {
150                 name : FIELD.NAME.CUSTOMER_ID,
151                 value : DataService.getGlobalCustomerId()
152             }, {
153                 name : FIELD.NAME.SERVICE_UUID,
154                 value : DataService.getServiceUuid()
155             }, {
156                 name : FIELD.NAME.SERVICE_NAME,
157                 value : DataService.getServiceName()
158            /* }, {
159                 name : FIELD.NAME.USER_SERVICE_INSTANCE_NAME,
160                 value : DataService.getUserServiceInstanceName()*/
161             } ];
162
163                 _this.parameterList = new Array();
164                 
165                 addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());
166
167                 switch (_this.componentId) {
168                 case COMPONENT.SERVICE:
169                         addToList(FIELD.NAME.SERVICE_INVARIANT_UUID, DataService
170                                         .getModelInfo(_this.componentId)["modelInvariantId"]);
171                         addToList(FIELD.NAME.SERVICE_VERSION, DataService
172                                         .getModelInfo(_this.componentId)["modelVersion"]);
173                         addToList(FIELD.NAME.SERVICE_UUID, DataService
174                                         .getModelInfo(_this.componentId)["modelNameVersionId"]);
175                         addToList(FIELD.NAME.SERVICE_DESCRIPTION, DataService
176                                         .getModelInfo(_this.componentId)["description"]);
177                         addToList(FIELD.NAME.SERVICE_CATEGORY, DataService
178                                         .getModelInfo(_this.componentId)["category"]);
179                         break;
180                 case COMPONENT.VF_MODULE:
181                         addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService
182                                         .getSubscriberName());
183                         addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService
184                                         .getServiceInstanceName());
185                         addToList(FIELD.NAME.MODEL_NAME, DataService
186                                         .getModelInfo(_this.componentId)["modelName"]);
187                         addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService
188                                         .getModelInfo(_this.componentId)["modelInvariantId"]);
189                         addToList(FIELD.NAME.MODEL_VERSION, DataService
190                                         .getModelInfo(_this.componentId)["modelVersion"]);
191                         addToList(FIELD.NAME.MODEL_UUID, DataService
192                                         .getModelInfo(_this.componentId)["modelNameVersionId"]);
193                         break;
194                 case COMPONENT.NETWORK:
195                 case COMPONENT.VNF:
196                 case COMPONENT.VOLUME_GROUP:
197                         addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService
198                                         .getSubscriberName());
199                         addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService
200                                         .getServiceInstanceName());
201                         addToList(FIELD.NAME.MODEL_NAME, DataService
202                                         .getModelInfo(_this.componentId)["modelName"]);
203                         addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService
204                                         .getModelInfo(_this.componentId)["modelInvariantId"]);
205                         addToList(FIELD.NAME.MODEL_VERSION, DataService
206                                         .getModelInfo(_this.componentId)["modelVersion"]);
207                         addToList(FIELD.NAME.MODEL_UUID, DataService
208                                         .getModelInfo(_this.componentId)["modelNameVersionId"]);
209                         break;
210                 }
211                 
212             var additionalList = ComponentService.getInventoryParameterList(
213                     _this.componentId, DataService.getInventoryItem());
214
215             return summaryList.concat(ComponentService
216                     .getDisplayNames(additionalList));
217         }
218     };
219
220     var getMsoUrl = function() {
221         switch (_this.componentId) {
222         case COMPONENT.NETWORK:
223             return "mso_delete_nw_instance/"
224                     + DataService.getServiceInstanceId() + "/networks/"
225                     + DataService.getNetworkInstanceId();
226         case COMPONENT.SERVICE:
227             return "mso_delete_svc_instance/"
228                     + DataService.getServiceInstanceId();
229         case COMPONENT.VNF:
230             return "mso_delete_vnf_instance/"
231                     + DataService.getServiceInstanceId() + "/vnfs/"
232                     + DataService.getVnfInstanceId();
233         case COMPONENT.VF_MODULE:
234             return "mso_delete_vfmodule_instance/"
235                     + DataService.getServiceInstanceId() + "/vnfs/"
236                     + DataService.getVnfInstanceId() + "/vfModules/"
237                     + DataService.getVfModuleInstanceId();
238         case COMPONENT.VOLUME_GROUP:
239             return "mso_delete_volumegroup_instance/"
240                     + DataService.getServiceInstanceId() + "/vnfs/"
241                     + DataService.getVnfInstanceId() + "/volumeGroups/"
242                     + DataService.getVolumeGroupInstanceId();
243         }
244     }
245
246         var addToList = function(name, value) {
247                 _this.parameterList.push({
248                         name : name,
249                         value : value
250                 });
251         };
252         
253     var getMsoRequestDetails = function(parameterList) {
254         console.log("getMsoRequestDetails invoked");
255                 var inventoryInfo = ComponentService.getInventoryInfo(
256                         _this.componentId, DataService.getInventoryItem());
257                 var modelInfo = DataService.getModelInfo(_this.componentId);
258                 var requestDetails = {
259                                 modelInfo : {
260                                         modelType : _this.componentId,
261                                         modelInvariantId : modelInfo.modelInvariantId,
262                                         modelNameVersionId : modelInfo.modelNameVersionId,
263                                         modelName : modelInfo.modelName,
264                                         modelCustomizationName : modelInfo.modelCustomizationName,
265                                         modelVersion : modelInfo.modelVersion
266                                 },
267                                 requestInfo : {
268                                         source : "VID"
269                                 }
270                 };
271                 
272                 switch (_this.componentId) {
273                         case COMPONENT.SERVICE:
274                             break;
275                         case COMPONENT.VNF:
276                             console.log("getMsoRequestDetails COMPONENT.VNF");
277                                 var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
278                                 if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {
279                                         lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
280                                                         parameterList);
281                                 }
282                                 requestDetails.cloudConfiguration = {
283                                         lcpCloudRegionId : lcpRegion,
284                                         tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)
285                                 };
286         
287                                 break;
288                         case COMPONENT.VF_MODULE:
289                                         var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
290                                         if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {
291                                                 lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
292                                                                 parameterList);
293                                         }
294                                         requestDetails.cloudConfiguration = {
295                                                         lcpCloudRegionId : lcpRegion,
296                                                         tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)
297                                         };      
298                                         break;
299                         case COMPONENT.VOLUME_GROUP:
300                                 var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
301                                 if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {
302                                         lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
303                                                         parameterList);
304                                 }
305                                 requestDetails.cloudConfiguration = {
306                                                 lcpCloudRegionId : lcpRegion,
307                                                 tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)
308                                 };      
309                                 
310                                 break;
311                         default:
312                                 requestDetails.cloudConfiguration = {
313                                         lcpCloudRegionId : DataService.getLcpRegion(),
314                                         tenantId : DataService.getTenant()
315                                 };
316                 }
317                 return requestDetails;
318     }
319     
320     var getLcpRegion = function() {
321                 var cloudRegionTenantList = DataService.getCloudRegionTenantList();
322                 var parameter = FIELD.PARAMETER.LCP_REGION;
323                 parameter.optionList = new Array();
324                 for (var i = 0; i < cloudRegionTenantList.length; i++) {
325                         for (var j = 0; j < parameter.optionList.length; j++) {
326                                 if (parameter.optionList[j].id === cloudRegionTenantList[i].cloudRegionId) {
327                                         break;
328                                 }
329                         }
330                         if (j < parameter.optionList.length) {
331                                 continue;
332                         }
333                         parameter.optionList.push({
334                                 id : cloudRegionTenantList[i].cloudRegionId
335                         });
336                 }
337                 return parameter;
338         };
339         
340         var getTenantList = function(cloudRegionId) {
341                 var cloudRegionTenantList = DataService.getCloudRegionTenantList();
342                 var parameter = FIELD.PARAMETER.TENANT_ENABLED;
343                 parameter.optionList = new Array();
344                 for (var i = 0; i < cloudRegionTenantList.length; i++) {
345                         if (cloudRegionTenantList[i].cloudRegionId === cloudRegionId) {
346                                 parameter.optionList.push({
347                                         id : cloudRegionTenantList[i].tenantId,
348                                         name : cloudRegionTenantList[i].tenantName
349                                 });
350                         }
351                 }
352                 return parameter;
353
354         };
355
356         var addOptionList = function(parameter, optionSimpleArray) {
357                 var optionList = new Array();
358                 if (!angular.isArray(optionSimpleArray)) {
359                         return optionList;
360                 }
361                 for (var i = 0; i < optionSimpleArray.length; i++) {
362                         optionList.push({
363                                 name : optionSimpleArray[i]
364                         });
365                 }
366                 parameter.optionList = optionList;
367                 return parameter;
368         };
369
370     var getValueFromList = function(id, parameterList) {
371                 for (var i = 0; i < parameterList.length; i++) {
372                         if (parameterList[i].id === id) {
373                                 return parameterList[i].value;
374                         }
375                 }
376         };
377
378         var updateUserParameterList = function(updatedId, parameterListControl) {
379                 if (updatedId === FIELD.ID.LCP_REGION) {
380                         var list = parameterListControl.getList(updatedId);
381                         if (list[0].selectedIndex >= 0) {
382                                 parameterListControl
383                                                 .updateList([ getTenantList(list[0].value) ]);
384                         } else {
385                                 parameterListControl
386                                                 .updateList([ FIELD.PARAMETER.TENANT_DISABLED ]);
387                         }
388                         if (list[0].value === FIELD.KEY.LCP_REGION_TEXT) {
389                                 parameterListControl
390                                                 .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_VISIBLE ]);
391                         } else {
392                                 parameterListControl
393                                                 .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN ]);
394                         }
395                 } else if (updatedId === FIELD.ID.SUBSCRIBER_NAME) {
396                         var list = parameterListControl.getList(updatedId);
397                         if (list[0].selectedIndex >= 0) {
398                                 DataService.setGlobalCustomerId(list[0].value);
399
400                                 AaiService.getSubscriptionServiceTypeList(DataService
401                                                 .getGlobalCustomerId(), function(response) {
402                                         DataService.setSubscriptionServiceTypeList(response);
403                                         var serviceTypeParameters = FIELD.PARAMETER.SERVICE_TYPE;
404                                         serviceTypeParameters.optionList = [];
405
406                                         for (var i = 0; i < response.length; i++) {
407                                                 serviceTypeParameters.optionList.push({
408                                                         "id" : response[i],
409                                                         "name" : response[i]
410                                                 });
411                                         }
412                                         parameterListControl.updateList([ serviceTypeParameters ]);
413                                 });
414
415                         } else {
416                                 parameterListControl
417                                                 .updateList([ FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);
418                         }
419                 }
420         };
421
422     return {
423         initializeComponent : function(componentId) {
424             _this.componentId = ComponentService.initialize(componentId);
425         },
426         getComponentDisplayName : ComponentService.getComponentDisplayName,
427         getSummaryList : getSummaryList,
428         getParameters : function(getParametersHandler) {
429                 _this.getParametersHandler = getParametersHandler;
430                 UtilityService.setHttpErrorHandler(_this.httpErrorHandler);
431                 UtilityService.startAsyncOperations(getAsyncOperationList(),
432                                 internalGetParametersHandler);
433         },
434         updateUserParameterList : updateUserParameterList,
435         getMsoRequestDetails : getMsoRequestDetails,
436         getMsoUrl : getMsoUrl
437     }
438 }
439
440 app.factory("DeletionService", [ "$log", "AaiService", "AsdcService",
441         "DataService", "ComponentService", "COMPONENT", "FIELD",
442         "UtilityService", DeletionService ]);