handling cloud owner and lcp region in create port mirroring configuration
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / services / deleteResumeService.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
4  * ================================================================================
5  * Copyright (C) 2017 - 2019 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 DeleteResumeService = function($log, AaiService, AsdcService, DataService,
24         ComponentService, COMPONENT, FIELD, UtilityService,featureFlags) {
25
26     var _this = this;
27
28     var getAsyncOperationList = function() {
29         if (DataService.getLoggedInUserId() == null)
30                         getLoggedInUserID();
31                 switch (_this.componentId) {
32                 case COMPONENT.SERVICE:
33                         return [ getSubscribers, getLcpCloudRegionTenantList ];
34                 case COMPONENT.NETWORK:
35                         return [ getLcpCloudRegionTenantList ];
36                 case COMPONENT.VNF:
37                         return [ getLcpCloudRegionTenantList ];
38                 case COMPONENT.VF_MODULE:
39                         return [ getLcpCloudRegionTenantList ];
40                 case COMPONENT.VOLUME_GROUP:
41                         return [ getLcpCloudRegionTenantList ];
42                 case COMPONENT.CONFIGURATION:
43                         return [ getLcpCloudRegionTenantList ];
44                 }
45         };
46         
47         var getLcpCloudRegionTenantList = function() {
48                 AaiService.getLcpCloudRegionTenantList(DataService
49                                 .getGlobalCustomerId(), DataService.getServiceType(), function(
50                                 response) {
51                         DataService.setCloudRegionTenantList(response);
52                         UtilityService.startNextAsyncOperation();
53                 });
54         };
55         
56         var getLoggedInUserID = function() {
57                 AaiService.getLoggedInUserID(function(response) {
58                         DataService.setLoggedInUserId(response.data);
59                         UtilityService.startNextAsyncOperation();
60                 });
61         };
62         
63         var getSubscribers = function() {
64                 AaiService.getSubscribers(function(response) {
65                         DataService.setSubscribers(response);
66                         UtilityService.startNextAsyncOperation();
67                 });
68         };
69         
70         var internalGetParametersHandler = function() {
71                 if (angular.isFunction(_this.getParametersHandler)) {
72                                 if (_this.componentId == COMPONENT.SERVICE) {
73                                         if ( DataService.getALaCarte() ) {
74                                                 _this.getParametersHandler({
75                                                         summaryList : getSummaryList(),
76                                                         userProvidedList : getUserProvidedList()
77                                                 }, true);
78                                         }
79                                         else {
80                                                 _this.getParametersHandler({
81                                                         summaryList : getSummaryList(),
82                                                         userProvidedList : getUserProvidedList()
83                                                 }, false);
84                                         }
85                         }
86                         else {
87                                 _this.getParametersHandler({
88                                         summaryList : getSummaryList(),
89                                         userProvidedList : getUserProvidedList()
90                                 }, false);
91                         }
92                 }
93         };
94         
95         var getSubscribersParameter = function() {
96                 var subscribers = DataService.getSubscribers();
97                 var parameter = FIELD.PARAMETER.SUBSCRIBER_NAME;
98                 parameter.optionList = [];
99
100                 for (var i = 0; i < subscribers.length; i++) {
101                         parameter.optionList.push({
102                                 id : subscribers[i][FIELD.ID.GLOBAL_CUSTOMER_ID],
103                                 name : subscribers[i][FIELD.ID.SUBNAME]
104                         })
105                 }
106                 return parameter;
107         };
108         
109         var getServiceId = function() {
110                 var serviceIdList = DataService.getServiceIdList();
111                 var parameter = FIELD.PARAMETER.PRODUCT_FAMILY;
112                 parameter.optionList = new Array();
113                 for (var i = 0; i < serviceIdList.length; i++) {
114                         parameter.optionList.push({
115                                 id : serviceIdList[i].id,
116                                 name : serviceIdList[i].description
117                         });
118                 }
119                 return parameter;
120         };
121         
122         var getUserProvidedList = function() {
123
124                 //var parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];
125
126                 var parameterList = [];
127                 
128                 switch (_this.componentId) {
129                 case COMPONENT.SERVICE:
130                         if ( DataService.getALaCarte() ) {
131                                 parameterList = [];
132                         }
133                         else {
134                                 parameterList = parameterList.concat ([getLcpRegion(),
135                                     FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
136                                     FIELD.PARAMETER.TENANT_DISABLED ]);
137                         }
138                         break;
139                 case COMPONENT.NETWORK:
140                 case COMPONENT.CONFIGURATION:
141                 case COMPONENT.VNF:
142                         parameterList = parameterList.concat([ //getServiceId(),
143                                         getLcpRegion(), FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
144                                         FIELD.PARAMETER.TENANT_DISABLED ]);
145                         break;
146                 case COMPONENT.VF_MODULE:
147                         parameterList = parameterList.concat([
148                                 getLcpRegion(),
149                                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
150                                         FIELD.PARAMETER.TENANT_DISABLED
151                         ]);
152                         
153                         break;
154                 case COMPONENT.VOLUME_GROUP:
155                         parameterList = parameterList.concat([ getLcpRegion(),
156                                         FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
157                                         FIELD.PARAMETER.TENANT_DISABLED ]);
158                 }
159
160                 //parameterList.push(FIELD.PARAMETER.SUPPRESS_ROLLBACK);
161
162                 //addArbitraryParameters(parameterList);
163
164                 return parameterList;
165         };
166     var getSummaryList = function() {
167         switch (_this.componentId) {
168         case COMPONENT.CONFIGURATION:
169         case COMPONENT.NETWORK:
170         case COMPONENT.SERVICE:
171         case COMPONENT.VNF:
172         case COMPONENT.VF_MODULE:
173         case COMPONENT.VOLUME_GROUP:
174             var summaryList = [ {
175                 name : FIELD.NAME.SUBSCRIBER_NAME,
176                 value : DataService.getSubscriberName()
177             }, {
178                 name : FIELD.NAME.CUSTOMER_ID,
179                 value : DataService.getGlobalCustomerId()
180             }, {
181                 name : FIELD.NAME.SERVICE_UUID,
182                 value : DataService.getServiceUuid()
183             }, {
184                 name : FIELD.NAME.SERVICE_NAME,
185                 value : DataService.getServiceName()
186            /* }, {
187                 name : FIELD.NAME.USER_SERVICE_INSTANCE_NAME,
188                 value : DataService.getUserServiceInstanceName()*/
189             } ];
190
191                 _this.parameterList = new Array();
192                 
193                 addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());
194
195                 switch (_this.componentId) {
196                 case COMPONENT.SERVICE:
197                         addToList(FIELD.NAME.SERVICE_INVARIANT_UUID, DataService
198                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);
199                         addToList(FIELD.NAME.SERVICE_VERSION, DataService
200                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);
201                         addToList(FIELD.NAME.SERVICE_UUID, DataService
202                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);
203                         addToList(FIELD.NAME.SERVICE_DESCRIPTION, DataService
204                                         .getModelInfo(_this.componentId)[FIELD.ID.DESCRIPTION]);
205                         addToList(FIELD.NAME.SERVICE_CATEGORY, DataService
206                                         .getModelInfo(_this.componentId)[FIELD.ID.CATEGORY]);
207                         break;
208                 case COMPONENT.VF_MODULE:
209                         addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService
210                                         .getSubscriberName());
211                         addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService
212                                         .getServiceInstanceName());
213                         addToList(FIELD.NAME.MODEL_NAME, DataService
214                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);
215                         addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService
216                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);
217                         addToList(FIELD.NAME.MODEL_VERSION, DataService
218                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);
219                         addToList(FIELD.NAME.MODEL_UUID, DataService
220                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);
221                         break;
222                 case COMPONENT.CONFIGURATION:
223                 case COMPONENT.NETWORK:
224                 case COMPONENT.VNF:
225                 case COMPONENT.VOLUME_GROUP:
226                         addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService
227                                         .getSubscriberName());
228                         addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService
229                                         .getServiceInstanceName());
230                         addToList(FIELD.NAME.MODEL_NAME, DataService
231                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);
232                         addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService
233                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);
234                         addToList(FIELD.NAME.MODEL_VERSION, DataService
235                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);
236                         addToList(FIELD.NAME.MODEL_UUID, DataService
237                                         .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);
238                         break;
239                 }
240                 
241             /*var additionalList = ComponentService.getInventoryParameterList(
242                     _this.componentId, DataService.getInventoryItem());*/
243                 var additionalList = ComponentService.getDisplayNames(ComponentService
244                             .getInventoryParameterList(_this.componentId, DataService
245                                     .getInventoryItem(), true ));
246
247             return summaryList.concat(ComponentService
248                     .getDisplayNames(additionalList));
249         }
250     };
251
252     var getMsoUrl = function(serviceStatus) {
253                 switch (_this.componentId) {
254                         case COMPONENT.CONFIGURATION:
255                                 return "mso_delete_configuration/"
256                                         + DataService.getServiceInstanceId() + "/configurations/"
257                                         + DataService.getConfigurationInstanceId();
258                         case COMPONENT.NETWORK:
259                                 return "mso_delete_nw_instance/"
260                                         + DataService.getServiceInstanceId() + "/networks/"
261                                         + DataService.getNetworkInstanceId();
262                         case COMPONENT.SERVICE:
263                                 if(DataService.getE2EService() === true)
264                                         return "mso_delete_e2e_svc_instance/"+ DataService.getServiceInstanceId();
265                                 else
266                                         return "mso_delete_svc_instance" + "/" + DataService.getServiceInstanceId() + "?serviceStatus="  + serviceStatus;
267                         case COMPONENT.VNF:
268                                 return "mso_delete_vnf_instance/"
269                                         + DataService.getServiceInstanceId() + "/vnfs/"
270                                         + DataService.getVnfInstanceId();
271                         case COMPONENT.VF_MODULE:
272                                 return "mso_delete_vfmodule_instance/"
273                                         + DataService.getServiceInstanceId() + "/vnfs/"
274                                         + DataService.getVnfInstanceId() + "/vfModules/"
275                                         + DataService.getVfModuleInstanceId();
276                         case COMPONENT.VOLUME_GROUP:
277                                 return "mso_delete_volumegroup_instance/"
278                                         + DataService.getServiceInstanceId() + "/vnfs/"
279                                         + DataService.getVnfInstanceId() + "/volumeGroups/"
280                                         + DataService.getVolumeGroupInstanceId();
281                 }
282     };
283
284         var addToList = function(name, value) {
285                 _this.parameterList.push({
286                         name : name,
287                         value : value
288                 });
289         };
290
291         var buildCloudConfiguration = function(parameterList) {
292                 var lcpRegion;
293                 var cloudOwner;
294
295                 var lcpRegionOptionId = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
296                 var cloudOwnerAndLcpCloudRegion = DataService.getCloudOwnerAndLcpCloudRegionFromOptionId(lcpRegionOptionId);
297                 if (cloudOwnerAndLcpCloudRegion.cloudRegionId === FIELD.KEY.LCP_REGION_TEXT) {
298                         lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
299                                 parameterList);
300                         cloudOwner = undefined;
301                 } else {
302                         lcpRegion = cloudOwnerAndLcpCloudRegion.cloudRegionId;
303                         cloudOwner = cloudOwnerAndLcpCloudRegion.cloudOwner;
304                 }
305
306                 return {
307                         lcpCloudRegionId: lcpRegion,
308                         cloudOwner: featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST) ? cloudOwner : undefined,
309                         tenantId: getValueFromList(FIELD.ID.TENANT, parameterList)
310                 };
311         };
312
313         var getMsoE2ERequest = function(parameterList) {
314                 return {
315                         "globalSubscriberId": DataService.getSubscriberName(),
316                         "serviceType": DataService.getServiceType()
317                 };
318         };
319
320     var getMsoRequestDetails = function(parameterList) {
321         console.log("getMsoRequestDetails invoked");
322
323                 //VoLTE logic goes here
324                 if(DataService.getE2EService() === true) {
325                         return getMsoE2ERequest(parameterList);
326                 }
327
328                 var inventoryInfo = ComponentService.getInventoryInfo(
329                         _this.componentId, DataService.getInventoryItem());
330                 var modelInfo = DataService.getModelInfo(_this.componentId);
331                 var requestorloggedInId = DataService.getLoggedInUserId();
332                 if (requestorloggedInId ==  null)
333                         requestorloggedInId = "";
334                 var requestDetails = {
335                                 modelInfo : {
336                                         modelType : _this.componentId,
337                                         modelInvariantId : modelInfo.modelInvariantId,
338                                         modelVersionId : modelInfo.modelNameVersionId,
339                                         modelName : modelInfo.modelName,
340                                         modelCustomizationName : modelInfo.modelCustomizationName,
341                                         modelCustomizationId : modelInfo.customizationUuid,
342                                         modelVersion : modelInfo.modelVersion
343                                 },
344                                 requestInfo : {
345                                         source : FIELD.ID.VID,
346                                         requestorId: requestorloggedInId
347                                 }
348                 };
349         if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_ADD_MSO_TESTAPI_FIELD)) {
350             if ((_this.componentId != COMPONENT.SERVICE) || ( DataService.getALaCarte() )) {
351                 // a-la-carte services AND *any* non-service
352                 requestDetails.requestParameters = {
353                     testApi : DataService.getMsoRequestParametersTestApi()
354                 };
355             }
356         }
357
358                 console.log("getMsoRequestDetails COMPONENT." + _this.componentId);
359                 switch (_this.componentId) {
360                         case COMPONENT.SERVICE:
361                                 if (!requestDetails.requestParameters) {
362                     requestDetails.requestParameters = {};
363                 }
364                                 requestDetails.requestParameters.aLaCarte = DataService.getALaCarte();
365                                 if ( !(DataService.getALaCarte()) ) {
366                                         // for macro delete include cloud config.
367                                         requestDetails.cloudConfiguration = buildCloudConfiguration(parameterList);
368                                 }
369                             break;
370                         case COMPONENT.VNF:
371             case COMPONENT.CONFIGURATION:
372                         case COMPONENT.VF_MODULE:
373                         case COMPONENT.NETWORK:
374                         case COMPONENT.VOLUME_GROUP:
375                                 requestDetails.cloudConfiguration = buildCloudConfiguration(parameterList);
376                                 break;
377
378                         default:
379                                 requestDetails.cloudConfiguration = {
380                                         lcpCloudRegionId : DataService.getLcpRegion(),
381                                         tenantId : DataService.getTenant()
382                                 };
383                 }
384                 return requestDetails;
385     }
386
387     var getLcpRegion = function() {
388                 var cloudRegionTenantList = DataService.getCloudRegionTenantList();
389                 var parameter = "";
390                 if ( UtilityService.hasContents (cloudRegionTenantList) ) {
391                         parameter = FIELD.PARAMETER.LCP_REGION;
392                         parameter.optionList = new Array();
393                         for (var i = 0; i < cloudRegionTenantList.length; i++) {
394                                 for (var j = 0; j < parameter.optionList.length; j++) {
395                                         if (parameter.optionList[j].id === cloudRegionTenantList[i].cloudRegionOptionId) {
396                         parameter.optionList[j].isPermitted =
397                             parameter.optionList[j].isPermitted || cloudRegionTenantList[i].isPermitted;
398                         break;
399                                         }
400                                 }
401                                 if (j < parameter.optionList.length) {
402                                         continue;
403                                 }
404
405                 var optionName = featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST) && cloudRegionTenantList[i].cloudOwner ?
406                     cloudRegionTenantList[i].cloudRegionId + " (" + AaiService.removeVendorFromCloudOwner(cloudRegionTenantList[i].cloudOwner).toUpperCase() + ")" :
407                     cloudRegionTenantList[i].cloudRegionId;
408
409                                 parameter.optionList.push({
410                                         id : cloudRegionTenantList[i].cloudRegionOptionId,
411                                         name: optionName,
412                         isPermitted : cloudRegionTenantList[i].isPermitted
413                         });
414                         }
415                 }
416                 return parameter;
417         };
418
419         var getTenantList = function(cloudRegionOptionId) {
420                 var parameter = "";
421                 var cloudRegionTenantList = DataService.getCloudRegionTenantList();
422                 if ( UtilityService.hasContents (cloudRegionTenantList) ) {
423                         parameter = FIELD.PARAMETER.TENANT_ENABLED;
424                         parameter.optionList = new Array();
425                         for (var i = 0; i < cloudRegionTenantList.length; i++) {
426                                 if (cloudRegionTenantList[i].cloudRegionOptionId === cloudRegionOptionId) {
427                                         parameter.optionList.push({
428                                                 id : cloudRegionTenantList[i].tenantId,
429                                                 name : cloudRegionTenantList[i].tenantName,
430                         isPermitted : cloudRegionTenantList[i].isPermitted
431                     });
432                                 }
433                         }
434                 }
435                 return parameter;
436
437         };
438
439         var addOptionList = function(parameter, optionSimpleArray) {
440                 var optionList = new Array();
441                 if (!angular.isArray(optionSimpleArray)) {
442                         return optionList;
443                 }
444                 for (var i = 0; i < optionSimpleArray.length; i++) {
445                         optionList.push({
446                                 name : optionSimpleArray[i]
447                         });
448                 }
449                 parameter.optionList = optionList;
450                 return parameter;
451         };
452
453     var getValueFromList = function(id, parameterList) {
454                 for (var i = 0; i < parameterList.length; i++) {
455                         if (parameterList[i].id === id) {
456                                 return parameterList[i].value;
457                         }
458                 }
459         };
460
461         var updateUserParameterList = function(updatedId, parameterListControl) {
462                 if (updatedId === FIELD.ID.LCP_REGION) {
463                         var list = parameterListControl.getList(updatedId);
464                         if (list[0].selectedIndex >= 0) {
465                                 parameterListControl
466                                                 .updateList([ getTenantList(list[0].value) ]);
467                         } else {
468                                 parameterListControl
469                                                 .updateList([ FIELD.PARAMETER.TENANT_DISABLED ]);
470                         }
471
472                         var cloudOwnerAndLcpCloudRegion = DataService.getCloudOwnerAndLcpCloudRegionFromOptionId(list[0].value);
473                         if (cloudOwnerAndLcpCloudRegion.cloudRegionId === FIELD.KEY.LCP_REGION_TEXT) {
474                                 parameterListControl
475                                                 .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_VISIBLE ]);
476                         } else {
477                                 parameterListControl
478                                                 .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN ]);
479                         }
480                 } else if (updatedId === FIELD.ID.SUBSCRIBER_NAME) {
481                         var list = parameterListControl.getList(updatedId);
482                         if (list[0].selectedIndex >= 0) {
483                                 DataService.setGlobalCustomerId(list[0].value);
484
485                                 AaiService.getSubscriptionServiceTypeList(DataService
486                                                 .getGlobalCustomerId(), function(response) {
487                                         DataService.setSubscriptionServiceTypeList(response);
488                                         var serviceTypeParameters = FIELD.PARAMETER.SERVICE_TYPE;
489                                         serviceTypeParameters.optionList = [];
490
491                                         for (var i = 0; i < response.length; i++) {
492                                                 serviceTypeParameters.optionList.push({
493                                                         "id" : response[i].name,
494                                                         "name" : response[i].name
495                                                 });
496                                         }
497                                         parameterListControl.updateList([ serviceTypeParameters ]);
498                                 });
499
500                         } else {
501                                 parameterListControl
502                                                 .updateList([ FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);
503                         }
504                 }
505         };
506
507     return {
508                 initializeComponent : function(componentId) {
509                         _this.componentId = ComponentService.initialize(componentId);
510                 },
511                 getComponentDisplayName : ComponentService.getComponentDisplayName,
512                 getSummaryList : getSummaryList,
513                 getParameters : function(getParametersHandler) {
514                         _this.getParametersHandler = getParametersHandler;
515                         UtilityService.setHttpErrorHandler(_this.httpErrorHandler);
516                         UtilityService.startAsyncOperations(getAsyncOperationList(),
517                                         internalGetParametersHandler);
518                 },
519                 updateUserParameterList : updateUserParameterList,
520                 getMsoRequestDetails : getMsoRequestDetails,
521                 getMsoUrl : getMsoUrl,
522                 isMacro : DataService.getMacro()
523     }
524 }
525
526 appDS2.factory("DeleteResumeService", [ "$log", "AaiService", "AsdcService",
527         "DataService", "ComponentService", "COMPONENT", "FIELD",
528         "UtilityService","featureFlags", DeleteResumeService ]);