fcef504fd420ecba2a279bb2c1b49bf97effedd5
[vid.git] / vid-webpack-master / src / app / drawingBoard / service-planning / objectsToTree / shared.tree.service.spec.ts
1 import {HttpClientTestingModule} from "@angular/common/http/testing";
2 import {getTestBed, TestBed} from "@angular/core/testing";
3 import {NgReduxTestingModule} from "@angular-redux/store/testing";
4 import {SharedTreeService} from "./shared.tree.service";
5 import {ObjectToInstanceTreeService} from "./objectToInstanceTree/objectToInstanceTree.service";
6 import {ObjectToTreeService} from "./objectToTree.service";
7 import {DefaultDataGeneratorService} from "../../../shared/services/defaultDataServiceGenerator/default.data.generator.service";
8 import {DynamicInputsService} from "./dynamicInputs.service";
9 import {DialogService} from "ng2-bootstrap-modal";
10 import {VnfPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vnf/vnf.popup.service";
11 import {ControlGeneratorUtil} from "../../../shared/components/genericForm/formControlsServices/control.generator.util.service";
12 import {AaiService} from "../../../shared/services/aaiService/aai.service";
13 import {NetworkPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/network/network.popup.service";
14 import {NetworkControlGenerator} from "../../../shared/components/genericForm/formControlsServices/networkGenerator/network.control.generator";
15 import {VfModulePopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
16 import {VfModuleControlGenerator} from "../../../shared/components/genericForm/formControlsServices/vfModuleGenerator/vfModule.control.generator";
17 import {VnfGroupControlGenerator} from "../../../shared/components/genericForm/formControlsServices/vnfGroupGenerator/vnfGroup.control.generator";
18 import {FeatureFlagsService} from "../../../shared/services/featureFlag/feature-flags.service";
19 import {VnfControlGenerator} from "../../../shared/components/genericForm/formControlsServices/vnfGenerator/vnf.control.generator";
20 import {NgRedux} from "@angular-redux/store";
21 import {GenericFormService} from "../../../shared/components/genericForm/generic-form.service";
22 import {FormBuilder} from "@angular/forms";
23 import {SdcUiComponentsModule} from "onap-ui-angular";
24 import {LogService} from "../../../shared/utils/log/log.service";
25 import {IframeService} from "../../../shared/utils/iframe.service";
26 import {BasicPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/basic.popup.service";
27 import {VnfGroupPopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vnfGroup/vnfGroup.popup.service";
28 import {DuplicateService} from "../duplicate/duplicate.service";
29 import {AppState} from "../../../shared/store/reducers";
30 import {MessageBoxService} from "../../../shared/components/messageBox/messageBox.service";
31 import {ErrorMsgService} from "../../../shared/components/error-msg/error-msg.service";
32 import {AuditInfoModalComponent} from "../../../shared/components/auditInfoModal/auditInfoModal.component";
33 import {ILevelNodeInfo} from "./models/basic.model.info";
34 import {VnfModelInfo} from "./models/vnf/vnf.model.info";
35 import {ServiceInstanceActions} from "../../../shared/models/serviceInstanceActions";
36 import each from "jest-each";
37 import {DrawingBoardModes} from "../drawing-board.modes";
38 import {ComponentInfoService} from "../component-info/component-info.service";
39 import {ComponentInfoModel, ComponentInfoType} from "../component-info/component-info-model";
40 import {ModelInformationItem} from "../../../shared/components/model-information/model-information.component";
41 import {VpnStepService} from "./models/vrf/vrfModal/vpnStep/vpn.step.service";
42 import {NetworkStepService} from "./models/vrf/vrfModal/networkStep/network.step.service";
43 import {VfModuleUpgradePopupService} from "../../../shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popuop.service";
44 import {SharedControllersService} from "../../../shared/components/genericForm/formControlsServices/sharedControlles/shared.controllers.service";
45 import {ModalService} from "../../../shared/components/customModal/services/modal.service";
46 import {CreateDynamicComponentService} from "../../../shared/components/customModal/services/create-dynamic-component.service";
47
48 class MockAppStore<T> {
49   getState() {
50     return getStore()
51   }
52
53   dispatch() {
54   }
55 }
56
57
58
59
60 function getNodeWithData(menuAction:string){
61   const nodeData = {
62     menuActions: {}
63   };
64   nodeData['menuActions'][menuAction] =  {
65     method: (node, serviceModelId) => {}
66   };
67   const node = {
68     parent: {
69       data: nodeData,
70       parent: {
71         data: nodeData
72       }
73     }
74   };
75   return node
76 }
77
78 describe('Shared Tree Service', () => {
79   let injector;
80   let service: SharedTreeService;
81   let _objectToInstanceTreeService: ObjectToInstanceTreeService;
82   let store: NgRedux<AppState>;
83
84   beforeAll(done => (async () => {
85     TestBed.configureTestingModule({
86       imports: [HttpClientTestingModule, NgReduxTestingModule, SdcUiComponentsModule],
87       providers: [
88         SharedTreeService,
89         SharedControllersService,
90         ObjectToTreeService,
91         DefaultDataGeneratorService,
92         DialogService,
93         VnfPopupService,
94         ControlGeneratorUtil,
95         AaiService,
96         LogService,
97         BasicPopupService,
98         VnfGroupPopupService,
99         DuplicateService,
100         IframeService,
101         DynamicInputsService,
102         NetworkPopupService,
103         NetworkControlGenerator,
104         VfModulePopupService,
105         VfModuleUpgradePopupService,
106         VfModuleControlGenerator,
107         VnfGroupControlGenerator,
108         DialogService,
109         FeatureFlagsService,
110         VnfControlGenerator,
111         AaiService,
112         DialogService,
113         GenericFormService,
114         FormBuilder,
115         ErrorMsgService,
116         ObjectToInstanceTreeService,
117         ComponentInfoService,
118         NetworkStepService,
119         VpnStepService,
120         ModalService,
121         CreateDynamicComponentService,
122         {provide: NgRedux, useClass: MockAppStore}
123       ]
124     });
125     await TestBed.compileComponents();
126     injector = getTestBed();
127     service = injector.get(SharedTreeService);
128     _objectToInstanceTreeService = injector.get(ObjectToInstanceTreeService);
129     store = injector.get(NgRedux);
130   })().then(done).catch(done.fail));
131
132   test('SharedTreeService should be defined', () => {
133     expect(service).toBeDefined();
134   });
135
136   test('SharedTreeService upgradeBottomUp should call redux actions', () => {
137     const serviceModelId = "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd";
138     const node = getNodeWithData("upgrade");
139     spyOn(node.parent.data.menuActions['upgrade'], 'method');
140     service.upgradeBottomUp(node, serviceModelId);
141     expect(node.parent.data.menuActions['upgrade'].method).toBeCalledWith(node.parent, serviceModelId);
142     expect(node.parent.data.menuActions['upgrade'].method).toBeCalledTimes(2);
143
144   });
145
146   test('SharedTreeService undoUpgradeBottomUp should call redux actions', () => {
147     const serviceModelId = "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd";
148     const node = getNodeWithData("undoUpgrade");
149     spyOn(node.parent.data.menuActions['undoUpgrade'], 'method');
150     service.undoUpgradeBottomUp(node, serviceModelId);
151     expect(node.parent.data.menuActions['undoUpgrade'].method).toBeCalledWith(node.parent, serviceModelId);
152     expect(node.parent.data.menuActions['undoUpgrade'].method).toBeCalledTimes(2);
153   });
154
155   test('shouldShowDeleteInstanceWithChildrenModal should open modal if child exist with action create', () => {
156     jest.spyOn(MessageBoxService.openModal, 'next');
157     let foo = () => {
158
159     };
160     let node = <any>{
161       children: [{action: "Create"}, {action: "None"}],
162       data: {
163         typeName: 'VNF'
164       }
165     };
166     service.shouldShowDeleteInstanceWithChildrenModal(node, "serviceModelId", foo);
167     expect(MessageBoxService.openModal.next).toHaveBeenCalled();
168   });
169
170   each([
171     ['volumeGroups by entry name', "volumeGroups",
172       "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1", "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1"],
173     ['vfmodule by customizationUuid', "vfModules",
174       "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401", "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1"],
175     ['vnf by customizationUuid', "vnfs",
176       "1da7b585-5e61-4993-b95e-8e6606c81e45", "2017-488_PASQUALE-vPE 0"],
177     ['vnfGroups by invariantUuid because no customizationUuid', "vnfGroups",
178       "4bb2e27e-ddab-4790-9c6d-1f731bc14a45", "groupingservicefortest..ResourceInstanceGroup..0"],
179   ]).test('modelByIdentifier should success: %s', (description, modelTypeName, modelUniqueIdOrName, expectedModelCustomizationName) => {
180     let serviceModelFromHierarchy =
181       getStore().service.serviceHierarchy["1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd"];
182
183     expect(service.modelByIdentifiers(serviceModelFromHierarchy, modelTypeName, modelUniqueIdOrName))
184       .toHaveProperty("modelCustomizationName", expectedModelCustomizationName);
185   });
186
187   each([
188     ['vfmodule by invariantUuid when there is customizationUuid', "vfModules", "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1"],
189     ['network by non-existing modelUniqueIdOrName', "networks", "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1"],
190     ['collectionResource has no resource', "collectionResources", "whatever"],
191     ['non-existing model-type', "fooBar", "whatever"],
192   ]).test('modelByIdentifier should fail: %s', (description, modelTypeName, modelUniqueIdOrName) => {
193     let serviceModelFromHierarchy =
194       getStore().service.serviceHierarchy["1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd"];
195
196     expect(service.modelByIdentifiers(serviceModelFromHierarchy, modelTypeName, modelUniqueIdOrName))
197       .toBeUndefined();
198   });
199
200   test('openAuditInfoModalInsideIframe should open modal for failed instance', () => {
201     jest.spyOn(AuditInfoModalComponent.openInstanceAuditInfoModal, 'next');
202
203     let modelInfoServiceMock: ILevelNodeInfo = new VnfModelInfo(null, null,
204       null, null, null, null, null,
205       null, null, null, null,null, null);
206     const modelMock = {"a": "a"};
207     const instanceMock = {"instance": "instance", "trackById": "123456789"};
208     const instanceTypeMock = "instanceTypeMock";
209     jest.spyOn(modelInfoServiceMock, 'getModel').mockReturnValue(modelMock);
210     let node = <any>{
211       data: {
212         modelId: '6b528779-44a3-4472-bdff-9cd15ec93450',
213         trackById: '1245df21',
214         isFailed: true
215       }
216     };
217     service.openAuditInfoModal(node, "serviceModelId", instanceMock, instanceTypeMock, <any>modelInfoServiceMock);
218     expect(AuditInfoModalComponent.openInstanceAuditInfoModal.next).toHaveBeenCalledWith(
219       {
220         "instance": instanceMock,
221         "instanceId": "serviceModelId",
222         "model": modelMock,
223         "type": instanceTypeMock
224       });
225   });
226   each([
227     ['undefined', 'Unlimited (default)', {}],
228     ['null', 'Unlimited (default)', {max:null}],
229     ['3', '3', {max:3}],
230     ]).
231   test("when there is %s max instances in model , shell return %s text", (desc, expected, model) =>{
232     expect(service.createMaximumToInstantiateModelInformationItem(model).values[0]).toBe(expected);
233   });
234
235   test('shouldShowDeleteInstanceWithChildrfenModal should not open modal if all childs with action None', () => {
236     let foo = () => {
237     };
238     spyOn(MessageBoxService.openModal, 'next');
239
240     let node = <any>{
241       children: [{action: "None"}, {action: "None"}],
242       data: {
243         typeName: 'VNF'
244       }
245     };
246     service.shouldShowDeleteInstanceWithChildrenModal(node, "serviceModelId", foo);
247     expect(MessageBoxService.openModal.next).not.toHaveBeenCalled();
248   });
249
250   test ('addGeneralInfoItems should return correct info - ordered',()=>{
251     let specificNetworkInfo = [
252       ModelInformationItem.createInstance('Network role', "network role 1, network role 2")
253     ];
254     const actualInfoModel: ComponentInfoModel = service.addGeneralInfoItems(specificNetworkInfo,ComponentInfoType.NETWORK, getNetworkModelInfoFromHierarchy(),getNetworkInstance());
255
256     let expectedGeneralInfo = [
257       ModelInformationItem.createInstance('Model version', '2.0'),
258       ModelInformationItem.createInstance('Model customization ID', 'customization-id-from-hierarchy'),
259       ModelInformationItem.createInstance('Instance ID', 'NETWORK4_INSTANCE_ID'),
260       ModelInformationItem.createInstance('Instance type', 'CONTRAIL30_HIMELGUARD'),
261       ModelInformationItem.createInstance('In maintenance', false),
262       ModelInformationItem.createInstance('Network role', 'network role 1, network role 2')
263     ];
264     expect(actualInfoModel.modelInfoItems).toEqual(expectedGeneralInfo);
265   });
266
267   each([
268     ['model version from hierarchy', null, getNetworkModelInfoFromHierarchy(), '2.0'],
269     ['undefined model', null, null, undefined],
270     ['model version from instance', getSelectedModelInfo(), null, '5.0'],
271     ['model version from instance', getSelectedModelInfo(), getNetworkModelInfoFromHierarchy(), '5.0'],
272   ]).
273   test ('getModelVersionEitherFromInstanceOrFromHierarchy should return %s ' ,
274     (description, instance, model, expectedResult) =>{
275     let actualResult = service.getModelVersionEitherFromInstanceOrFromHierarchy(instance, model);
276     expect(actualResult).toEqual(expectedResult);
277   });
278
279   each([
280     ['model CustomizationId from hierarchy', null, getNetworkModelInfoFromHierarchy(), 'customization-id-from-hierarchy'],
281     ['undefined model', null, null, undefined],
282     ['model CustomizationId from instance', getSelectedModelInfo(), null, 'model-customization-id-from-instance'],
283     ['model CustomizationId from instance', getSelectedModelInfo(), getNetworkModelInfoFromHierarchy(), 'model-customization-id-from-instance'],
284   ]).
285   test ('getCustomizationIdEitherFromInstanceOrFromHierarchy should return %s ' ,
286     (description, instance, model, expectedResult) =>{
287       let actualResult = service.getModelCustomizationIdEitherFromInstanceOrFromHierarchy(instance, model);
288       expect(actualResult).toEqual(expectedResult);
289     });
290
291   each([
292     ['UUID from instance', getSelectedModelInfo(), getNetworkModelInfoFromHierarchy(),"UUID-from-instance" ],
293     ['UUID from instance', getSelectedModelInfo(), null,"UUID-from-instance" ],
294     ['UUID from hierarchy', null, getNetworkModelInfoFromHierarchy(),"UUID-from-hierarchy" ],
295     ['UUID undefined', null, null, undefined],
296
297   ]).
298   test('getModelVersionIdEitherFromInstanceOrFromHierarchy should %s', (description, instance, model, expectedResult) => {
299     let actualUuid = service.getModelVersionIdEitherFromInstanceOrFromHierarchy(instance, model);
300     expect(actualUuid).toEqual(expectedResult);
301   });
302
303   each([
304     ['from instance', getSelectedModelInfo(), getNetworkModelInfoFromHierarchy(), 'invariantId-from-instance'],
305     ['from instance', getSelectedModelInfo(), null, 'invariantId-from-instance'],
306     ['from hierarchy', null, getNetworkModelInfoFromHierarchy(), 'invariantId-from-hierarchy'],
307     ['undefined', null, null, undefined],
308   ]).
309   test('getModelInvariantIdEitherFromInstanceOrFromHierarchy should return invariantId %s', (description, instance, model, expectedInvariantId) =>{
310     let actualInvariantId = service.getModelInvariantIdEitherFromInstanceOrFromHierarchy(instance, model);
311     expect(actualInvariantId).toEqual(expectedInvariantId);
312   });
313
314   test('statusProperties should be prop on node according to node properties', () => {
315     let node = service.addingStatusProperty({orchStatus: 'completed', provStatus: 'inProgress', inMaint: false});
316     expect(node.statusProperties).toBeDefined();
317     expect(node.statusProperties).toEqual([Object({
318       key: 'Prov Status:',
319       value: 'inProgress',
320       testId: 'provStatus'
321     }), Object({key: 'Orch Status:', value: 'completed', testId: 'orchStatus'})]);
322     node = service.addingStatusProperty({orchStatus: 'completed', provStatus: 'inProgress', inMaint: true});
323     expect(node.statusProperties).toEqual([Object({
324       key: 'Prov Status:',
325       value: 'inProgress',
326       testId: 'provStatus'
327     }), Object({key: 'Orch Status:', value: 'completed', testId: 'orchStatus'}), Object({
328       key: 'In-maintenance',
329       value: '',
330       testId: 'inMaint'
331     })]);
332   });
333
334   each([
335     [false, 'method is not in menu actions', ServiceInstanceActions.None, DrawingBoardModes.EDIT, {}, true],
336     [false, 'there is no action in node', null, DrawingBoardModes.EDIT, {someMethod: "someValue"}, true],
337     [true, 'edit mode, action is none, method in menu action', ServiceInstanceActions.None, DrawingBoardModes.EDIT, {someMethod: "someValue"}, true],
338     [false, 'edit mode, action is none, method in menu action, macro service', ServiceInstanceActions.None, DrawingBoardModes.EDIT, {someMethod: "someValue"}, false],
339     [false, 'edit mode, action is not none, method in menu action', ServiceInstanceActions.Resume, DrawingBoardModes.EDIT, {someMethod: "someValue"}, true],
340     [false, 'edit mode, action is CREATE, method in menu action', ServiceInstanceActions.Resume, DrawingBoardModes.EDIT, {someMethod: "someValue"}, true]
341   ]).test('shouldShowButtonGeneric return %s if %s ', (expected, description, action, mode, menuActions, isALaCarte) => {
342     jest.spyOn(store, 'getState').mockReturnValue(<any>{
343       global: {
344         drawingBoardStatus: mode
345       },
346       service : {
347         serviceInstance: {
348           someModelId : {
349             isALaCarte
350           }
351         }
352
353       }
354     });
355     let node = <any>{
356       data:{
357         action: action,
358         menuActions: menuActions
359       },
360     };
361
362     let res = service.shouldShowButtonGeneric(node, "someMethod", "someModelId");
363     expect(res).toBe(expected);
364   });
365
366   const enableRemoveAndEditItemsDataProvider = [
367     ['Create action CREATE mode', DrawingBoardModes.CREATE ,ServiceInstanceActions.Create, true],
368     ['Create action VIEW mode',DrawingBoardModes.VIEW , ServiceInstanceActions.Create,false],
369     ['Create action RETRY_EDIT mode',DrawingBoardModes.RETRY_EDIT,  ServiceInstanceActions.Create,  true],
370     ['Create action EDIT mode',DrawingBoardModes.EDIT, ServiceInstanceActions.Create,  true],
371     ['Create action RETRY mode',DrawingBoardModes.RETRY, ServiceInstanceActions.Create,  false],
372     ['None action EDIT mode',DrawingBoardModes.EDIT,  ServiceInstanceActions.None, false],
373     ['None action RETRY_EDIT mode', DrawingBoardModes.RETRY_EDIT, ServiceInstanceActions.None, false]];
374   each(enableRemoveAndEditItemsDataProvider).test('shouldShowEditAndDelete if child exist with %s', (description, mode, action, enabled) => {
375     jest.spyOn(store, 'getState').mockReturnValue(<any>{
376         global: {
377           drawingBoardStatus: mode
378         }
379       });
380       let node = <any>{
381         data:{
382           action: action
383         },
384       };
385       let res = service.shouldShowRemoveAndEdit(node);
386       expect(res).toBe(enabled);
387     });
388
389
390   const isVfmoduleAlmostPartOfModelOnlyCustomizationUuidDifferProvider = [
391     ['node is part of model, but vfmodule diff by customization',
392       true, 'mDNS 01222020 0', '9fdc68e9-9f53-431c-b8a2-7e337b9a0d0a', '82160e6e-d9c4-45ef-bd19-01573ab11b61'],
393
394     ['vnf model-name not found',
395       false, 'mDNS 01222020 1', '9fdc68e9-9f53-431c-b8a2-7e337b9a0d0a', '82160e6e-d9c4-45ef-bd19-01573ab11b61'],
396
397     ['vfmodule invariant-id not found',
398       false, 'mDNS 01222020 0', 'wrong invariant-id', '82160e6e-d9c4-45ef-bd19-01573ab11b61'],
399
400     ['vfmodule customization-id match',
401       false, 'mDNS 01222020 0', '9fdc68e9-9f53-431c-b8a2-7e337b9a0d0a', 'c9b32003-febc-44e0-a97f-7630fa7fa4a0'],
402   ];
403
404   each(isVfmoduleAlmostPartOfModelOnlyCustomizationUuidDifferProvider).test('isVfmoduleAlmostPartOfModelOnlyCustomizationUuidDiffer: when  %s should return %s', (description, expected, vnfModelName, invariantUuid, customizationUuid) => {
405     const serviceModelId : string = 'a243da28-c11e-45a8-9f26-0284a9a789bc';
406     spyOn(store, 'getState').and.returnValue({
407       service : {
408         serviceHierarchy : {
409           [serviceModelId] : {
410             vnfs : {
411               [vnfModelName] : {
412                 vfModules : {
413                   vfModuleModelName : {
414                     invariantUuid : invariantUuid,
415                     customizationUuid : customizationUuid
416                   }
417                 }
418               }
419             }
420           }
421         }
422       }
423     });
424
425     const node = <any>{
426       data:{
427         modelInvariantId : '9fdc68e9-9f53-431c-b8a2-7e337b9a0d0a',
428         modelCustomizationId : 'c9b32003-febc-44e0-a97f-7630fa7fa4a0',
429         modelName : 'vfModuleModelName'
430       },
431       parent : {
432         data : {
433           modelName : "mDNS 01222020 0"
434         }
435       }
436     };
437
438     const isDiffCustomizationUuidResponse : boolean = service.isVfmoduleAlmostPartOfModelOnlyCustomizationUuidDiffer(node, serviceModelId);
439     expect(isDiffCustomizationUuidResponse).toEqual(expected);
440   });
441
442   each([
443     [false, true, true, false],
444     [true, true, true, true],
445     [true, true, false, true],
446     [true, false, true, true],
447     [true, false, false, false],
448   ]).
449   test('when flag is %s the UpdatedLatestVersion is %s and Vfmodule not exists on hierarchy is %s isShouldShowButtonGenericMustToBeCalled should return %s', (
450      flag: boolean,
451      isThereAnUpdatedLatestVersion: boolean,
452      isVfModuleCustomizationIdNotExistsOnModel: boolean,
453      isShouldShowButtonGenericMustToBeCalled: boolean
454      ) => {
455       let node = <any>  {};
456       let serviceModelId : string = '08c5fa17-769a-4231-bd92-aed4b0ed086d';
457       jest.spyOn(store, 'getState').mockReturnValue(<any>{
458         global: {
459           "flags": {
460             "FLAG_FLASH_REPLACE_VF_MODULE": flag,
461           },
462         }
463       });
464       spyOn(service, 'isThereAnUpdatedLatestVersion').and.returnValue(isThereAnUpdatedLatestVersion);
465       spyOn(service, 'isVfModuleCustomizationIdNotExistsOnModel').and.returnValue(isVfModuleCustomizationIdNotExistsOnModel);
466
467       expect(service.isVfMoudleCouldBeUpgraded(node, serviceModelId)).toEqual(isShouldShowButtonGenericMustToBeCalled);
468     });
469
470   each([
471     ['Vfm customization uuid not exists in model', 'not-existing-customization-uuid', 'service-model-id', true],
472     ['Vfm customization uuid exists in model', 'existing-customization-uuid', 'service-model-id', false]
473   ]).
474   test('%s when vfModuleNode is  %s and serviceModelId is %s ', (
475     description,
476     modelCustomizationId,
477     serviceModelId: string,
478     isExistsOnHierarchy: boolean,
479     ) => {
480
481     const vfModuleNode = { data: {
482         modelCustomizationId : modelCustomizationId
483       }};
484
485     jest.spyOn(store, 'getState').mockReturnValue(<any>{
486       service : {
487         "serviceHierarchy": {
488           [serviceModelId]: {
489             "vfModules": {
490               "module-1": {
491                 "customizationUuid": "3d7f41c8-333b-4fee-b50d-5687e9c2170f",
492               },
493               "module-2": {
494                 "customizationUuid": "existing-customization-uuid",
495               }
496             }
497           }
498         }
499       }
500     });
501     expect(service.isVfModuleCustomizationIdNotExistsOnModel(vfModuleNode, serviceModelId)).toEqual(isExistsOnHierarchy);
502
503
504   });
505
506 });
507
508 function getStore() {
509   return {
510     "global": {
511       "name": null,
512       "flags": {
513         "EMPTY_DRAWING_BOARD_TEST": false,
514         "FLAG_NETWORK_TO_ASYNC_INSTANTIATION": false,
515         "FLAG_ADD_MSO_TESTAPI_FIELD": true,
516         "FLAG_SERVICE_MODEL_CACHE": true,
517         "FLAG_SHOW_ASSIGNMENTS": true,
518         "FLAG_FABRIC_CONFIGURATION_ASSIGNMENTS": true,
519         "FLAG_A_LA_CARTE_AUDIT_INFO": true,
520         "FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST": true,
521         "FLAG_PRESENT_PROVIDER_NETWORKS_ASSOCIATIONS": true,
522         "FLAG_1902_NEW_VIEW_EDIT": true,
523         "FLAG_1810_IDENTIFY_SERVICE_FOR_NEW_UI": false,
524         "FLAG_1902_VNF_GROUPING": true,
525         "FLAG_SHOW_VERIFY_SERVICE": true,
526         "FLAG_ASYNC_ALACARTE_VFMODULE": true,
527         "FLAG_ASYNC_ALACARTE_VNF": true,
528         "FLAG_1810_AAI_LOCAL_CACHE": true,
529         "FLAG_EXP_USE_DEFAULT_HOST_NAME_VERIFIER": false,
530         "FLAG_EXP_ANY_ALACARTE_NEW_INSTANTIATION_UI": false,
531         "FLAG_SUPPLEMENTARY_FILE": true,
532         "FLAG_5G_IN_NEW_INSTANTIATION_UI": true,
533         "FLAG_RESTRICTED_SELECT": false,
534         "FLAG_1810_CR_LET_SELECTING_COLLECTOR_TYPE_UNCONDITIONALLY": true
535       },
536       "drawingBoardStatus": "VIEW",
537       "type": "UPDATE_DRAWING_BOARD_STATUS"
538     },
539     "service": {
540       "serviceHierarchy": {
541         "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd": {
542           "service": {
543             "uuid": "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd",
544             "invariantUuid": "cdb90b57-ed78-4d44-a5b4-7f43a02ec632",
545             "name": "action-data",
546             "version": "1.0",
547             "toscaModelURL": null,
548             "category": "Network L1-3",
549             "serviceType": "pnf",
550             "serviceRole": "Testing",
551             "description": "PASQUALE vMX vPE based on Juniper 17.2 release. Updated with updated VF for v8.0 of VLM",
552             "serviceEcompNaming": "false",
553             "instantiationType": "Macro",
554             "inputs": {},
555             "vidNotions": {"instantiationUI": "legacy", "modelCategory": "other", "viewEditUI": "legacy"}
556           },
557           "vnfs": {
558             "2017-388_PASQUALE-vPE 1": {
559               "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413",
560               "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d",
561               "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM",
562               "name": "2017-388_PASQUALE-vPE",
563               "version": "1.0",
564               "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a",
565               "inputs": {},
566               "commands": {},
567               "properties": {
568                 "vmxvre_retype": "RE-VMX",
569                 "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version",
570                 "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d",
571                 "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9",
572                 "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF",
573                 "int_ctl_net_name": "VMX-INTXI",
574                 "vmx_int_ctl_prefix": "10.0.0.10",
575                 "sriov43_net_id": "da349ca1-6de9-4548-be88-2d88e99bfef5",
576                 "sriov42_net_id": "760669ba-013d-4d9b-b0e7-4151fe2e6279",
577                 "sriov41_net_id": "25ad52d5-c165-40f8-b3b0-ddfc2373280a",
578                 "nf_type": "vPE",
579                 "vmxvpfe_int_ctl_ip_1": "10.0.0.10",
580                 "is_AVPN_service": "false",
581                 "vmx_RSG_name": "vREXI-affinity",
582                 "vmx_int_ctl_forwarding": "l2",
583                 "vmxvre_oam_ip_0": "10.0.0.10",
584                 "vmxvpfe_sriov44_0_port_mac": "00:11:22:EF:AC:DF",
585                 "vmxvpfe_sriov41_0_port_vlanstrip": "false",
586                 "vmxvpfe_sriov42_0_port_vlanfilter": "4001",
587                 "vmxvpfe_sriov44_0_port_unknownunicastallow": "true",
588                 "vmxvre_image_name_0": "VRE-ENGINE_17.2-S2.1.qcow2",
589                 "vmxvre_instance": "0",
590                 "vmxvpfe_sriov43_0_port_mac": "00:11:22:EF:AC:DF",
591                 "vmxvre_flavor_name": "ns.c1r16d32.v5",
592                 "vmxvpfe_volume_size_0": "40.0",
593                 "vmxvpfe_sriov43_0_port_vlanfilter": "4001",
594                 "nf_naming": "{ecomp_generated_naming=true}",
595                 "multi_stage_design": "true",
596                 "nf_naming_code": "Navneet",
597                 "vmxvre_name_0": "vREXI",
598                 "vmxvpfe_sriov42_0_port_vlanstrip": "false",
599                 "vmxvpfe_volume_name_0": "vPFEXI_FBVolume",
600                 "vmx_RSG_id": "bd89a33c-13c3-4a04-8fde-1a57eb123141",
601                 "vmxvpfe_image_name_0": "VPE_ROUTING-ENGINE_17.2R1-S2.1.qcow2",
602                 "vmxvpfe_sriov43_0_port_unknownunicastallow": "true",
603                 "vmxvpfe_sriov44_0_port_unknownmulticastallow": "true",
604                 "vmxvre_console": "vidconsole",
605                 "vmxvpfe_sriov44_0_port_vlanfilter": "4001",
606                 "vmxvpfe_sriov42_0_port_mac": "00:11:22:EF:AC:DF",
607                 "vmxvpfe_volume_id_0": "47cede15-da2f-4397-a101-aa683220aff3",
608                 "vmxvpfe_sriov42_0_port_unknownmulticastallow": "true",
609                 "vmxvpfe_sriov44_0_port_vlanstrip": "false",
610                 "vf_module_id": "123",
611                 "nf_function": "JAI",
612                 "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true",
613                 "vmxvre_int_ctl_ip_0": "10.0.0.10",
614                 "ecomp_generated_naming": "true",
615                 "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI",
616                 "vnf_name": "mtnj309me6vre",
617                 "vmxvpfe_sriov41_0_port_unknownunicastallow": "true",
618                 "vmxvre_volume_type_1": "HITACHI",
619                 "vmxvpfe_sriov44_0_port_broadcastallow": "true",
620                 "vmxvre_volume_type_0": "HITACHI",
621                 "vmxvpfe_volume_type_0": "HITACHI",
622                 "vmxvpfe_sriov43_0_port_broadcastallow": "true",
623                 "bandwidth_units": "get_input:2017488_pasqualevpe0_bandwidth_units",
624                 "vnf_id": "123",
625                 "vmxvre_oam_prefix": "24",
626                 "availability_zone_0": "mtpocfo-kvm-az01",
627                 "ASN": "get_input:2017488_pasqualevpe0_ASN",
628                 "vmxvre_chassis_i2cid": "161",
629                 "vmxvpfe_name_0": "vPFEXI",
630                 "bandwidth": "get_input:2017488_pasqualevpe0_bandwidth",
631                 "availability_zone_max_count": "1",
632                 "vmxvre_volume_size_0": "45.0",
633                 "vmxvre_volume_size_1": "50.0",
634                 "vmxvpfe_sriov42_0_port_broadcastallow": "true",
635                 "vmxvre_oam_gateway": "10.0.0.10",
636                 "vmxvre_volume_name_1": "vREXI_FAVolume",
637                 "vmxvre_ore_present": "0",
638                 "vmxvre_volume_name_0": "vREXI_FBVolume",
639                 "vmxvre_type": "0",
640                 "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name",
641                 "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true",
642                 "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429",
643                 "vmx_int_ctl_len": "24",
644                 "vmxvpfe_sriov43_0_port_vlanstrip": "false",
645                 "vmxvpfe_sriov41_0_port_broadcastallow": "true",
646                 "vmxvre_volume_id_1": "6e86797e-03cd-4fdc-ba72-2957119c746d",
647                 "vmxvpfe_sriov41_0_port_vlanfilter": "4001",
648                 "nf_role": "Testing",
649                 "vmxvre_volume_id_0": "f4eacb79-f687-4e9d-b760-21847c8bb15a",
650                 "vmxvpfe_sriov42_0_port_unknownunicastallow": "true",
651                 "vmxvpfe_flavor_name": "ns.c20r16d25.v5"
652               },
653               "type": "VF",
654               "modelCustomizationName": "2017-388_PASQUALE-vPE 1",
655               "vfModules": {},
656               "volumeGroups": {},
657               "vfcInstanceGroups": {}
658             },
659             "2017-388_PASQUALE-vPE 0": {
660               "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168",
661               "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8",
662               "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM",
663               "name": "2017-388_PASQUALE-vPE",
664               "version": "4.0",
665               "customizationUuid": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c",
666               "inputs": {},
667               "commands": {},
668               "properties": {
669                 "vmxvre_retype": "RE-VMX",
670                 "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version",
671                 "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d",
672                 "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9",
673                 "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF",
674                 "int_ctl_net_name": "VMX-INTXI",
675                 "vmx_int_ctl_prefix": "10.0.0.10",
676                 "sriov43_net_id": "da349ca1-6de9-4548-be88-2d88e99bfef5",
677                 "sriov42_net_id": "760669ba-013d-4d9b-b0e7-4151fe2e6279",
678                 "sriov41_net_id": "25ad52d5-c165-40f8-b3b0-ddfc2373280a",
679                 "nf_type": "vPE",
680                 "vmxvpfe_int_ctl_ip_1": "10.0.0.10",
681                 "is_AVPN_service": "false",
682                 "vmx_RSG_name": "vREXI-affinity",
683                 "vmx_int_ctl_forwarding": "l2",
684                 "vmxvre_oam_ip_0": "10.0.0.10",
685                 "vmxvpfe_sriov44_0_port_mac": "00:11:22:EF:AC:DF",
686                 "vmxvpfe_sriov41_0_port_vlanstrip": "false",
687                 "vmxvpfe_sriov42_0_port_vlanfilter": "4001",
688                 "vmxvpfe_sriov44_0_port_unknownunicastallow": "true",
689                 "vmxvre_image_name_0": "VRE-ENGINE_17.2-S2.1.qcow2",
690                 "vmxvre_instance": "0",
691                 "vmxvpfe_sriov43_0_port_mac": "00:11:22:EF:AC:DF",
692                 "vmxvre_flavor_name": "ns.c1r16d32.v5",
693                 "vmxvpfe_volume_size_0": "40.0",
694                 "vmxvpfe_sriov43_0_port_vlanfilter": "4001",
695                 "nf_naming": "{ecomp_generated_naming=true}",
696                 "multi_stage_design": "true",
697                 "nf_naming_code": "Navneet",
698                 "vmxvre_name_0": "vREXI",
699                 "vmxvpfe_sriov42_0_port_vlanstrip": "false",
700                 "vmxvpfe_volume_name_0": "vPFEXI_FBVolume",
701                 "vmx_RSG_id": "bd89a33c-13c3-4a04-8fde-1a57eb123141",
702                 "vmxvpfe_image_name_0": "VPE_ROUTING-ENGINE_17.2R1-S2.1.qcow2",
703                 "vmxvpfe_sriov43_0_port_unknownunicastallow": "true",
704                 "vmxvpfe_sriov44_0_port_unknownmulticastallow": "true",
705                 "vmxvre_console": "vidconsole",
706                 "vmxvpfe_sriov44_0_port_vlanfilter": "4001",
707                 "vmxvpfe_sriov42_0_port_mac": "00:11:22:EF:AC:DF",
708                 "vmxvpfe_volume_id_0": "47cede15-da2f-4397-a101-aa683220aff3",
709                 "vmxvpfe_sriov42_0_port_unknownmulticastallow": "true",
710                 "vmxvpfe_sriov44_0_port_vlanstrip": "false",
711                 "vf_module_id": "123",
712                 "nf_function": "JAI",
713                 "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true",
714                 "vmxvre_int_ctl_ip_0": "10.0.0.10",
715                 "ecomp_generated_naming": "true",
716                 "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI",
717                 "vnf_name": "mtnj309me6vre",
718                 "vmxvpfe_sriov41_0_port_unknownunicastallow": "true",
719                 "vmxvre_volume_type_1": "HITACHI",
720                 "vmxvpfe_sriov44_0_port_broadcastallow": "true",
721                 "vmxvre_volume_type_0": "HITACHI",
722                 "vmxvpfe_volume_type_0": "HITACHI",
723                 "vmxvpfe_sriov43_0_port_broadcastallow": "true",
724                 "bandwidth_units": "get_input:2017488_pasqualevpe0_bandwidth_units",
725                 "vnf_id": "123",
726                 "vmxvre_oam_prefix": "24",
727                 "availability_zone_0": "mtpocfo-kvm-az01",
728                 "ASN": "get_input:2017488_pasqualevpe0_ASN",
729                 "vmxvre_chassis_i2cid": "161",
730                 "vmxvpfe_name_0": "vPFEXI",
731                 "bandwidth": "get_input:2017488_pasqualevpe0_bandwidth",
732                 "availability_zone_max_count": "1",
733                 "vmxvre_volume_size_0": "45.0",
734                 "vmxvre_volume_size_1": "50.0",
735                 "vmxvpfe_sriov42_0_port_broadcastallow": "true",
736                 "vmxvre_oam_gateway": "10.0.0.10",
737                 "vmxvre_volume_name_1": "vREXI_FAVolume",
738                 "vmxvre_ore_present": "0",
739                 "vmxvre_volume_name_0": "vREXI_FBVolume",
740                 "vmxvre_type": "0",
741                 "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name",
742                 "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true",
743                 "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429",
744                 "vmx_int_ctl_len": "24",
745                 "vmxvpfe_sriov43_0_port_vlanstrip": "false",
746                 "vmxvpfe_sriov41_0_port_broadcastallow": "true",
747                 "vmxvre_volume_id_1": "6e86797e-03cd-4fdc-ba72-2957119c746d",
748                 "vmxvpfe_sriov41_0_port_vlanfilter": "4001",
749                 "nf_role": "Testing",
750                 "vmxvre_volume_id_0": "f4eacb79-f687-4e9d-b760-21847c8bb15a",
751                 "vmxvpfe_sriov42_0_port_unknownunicastallow": "true",
752                 "vmxvpfe_flavor_name": "ns.c20r16d25.v5"
753               },
754               "type": "VF",
755               "modelCustomizationName": "2017-388_PASQUALE-vPE 0",
756               "vfModules": {},
757               "volumeGroups": {},
758               "vfcInstanceGroups": {}
759             },
760             "2017-488_PASQUALE-vPE 0": {
761               "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09",
762               "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8",
763               "description": "Name PASQUALE vPE Description The provider edge function for the PASQUALE service supported by the Junipers VMX product Category Router Vendor Juniper Vendor Release Code 17.2 Owners Mary Fragale. Updated 9-25 to use v8.0 of the Juniper Valid 2 VLM",
764               "name": "2017-488_PASQUALE-vPE",
765               "version": "5.0",
766               "customizationUuid": "1da7b585-5e61-4993-b95e-8e6606c81e45",
767               "inputs": {},
768               "commands": {},
769               "properties": {
770                 "max_instances": 1,
771                 "vmxvre_retype": "RE-VMX",
772                 "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version",
773                 "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d",
774                 "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9",
775                 "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF",
776                 "int_ctl_net_name": "VMX-INTXI",
777                 "vmx_int_ctl_prefix": "10.0.0.10",
778                 "sriov43_net_id": "da349ca1-6de9-4548-be88-2d88e99bfef5",
779                 "sriov42_net_id": "760669ba-013d-4d9b-b0e7-4151fe2e6279",
780                 "sriov41_net_id": "25ad52d5-c165-40f8-b3b0-ddfc2373280a",
781                 "nf_type": "vPE",
782                 "vmxvpfe_int_ctl_ip_1": "10.0.0.10",
783                 "is_AVPN_service": "false",
784                 "vmx_RSG_name": "vREXI-affinity",
785                 "vmx_int_ctl_forwarding": "l2",
786                 "vmxvre_oam_ip_0": "10.0.0.10",
787                 "vmxvpfe_sriov44_0_port_mac": "00:11:22:EF:AC:DF",
788                 "vmxvpfe_sriov41_0_port_vlanstrip": "false",
789                 "vmxvpfe_sriov42_0_port_vlanfilter": "4001",
790                 "vmxvpfe_sriov44_0_port_unknownunicastallow": "true",
791                 "vmxvre_image_name_0": "VRE-ENGINE_17.2-S2.1.qcow2",
792                 "vmxvre_instance": "0",
793                 "vmxvpfe_sriov43_0_port_mac": "00:11:22:EF:AC:DF",
794                 "vmxvre_flavor_name": "ns.c1r16d32.v5",
795                 "vmxvpfe_volume_size_0": "40.0",
796                 "vmxvpfe_sriov43_0_port_vlanfilter": "4001",
797                 "nf_naming": "{ecomp_generated_naming=true}",
798                 "multi_stage_design": "true",
799                 "nf_naming_code": "Navneet",
800                 "vmxvre_name_0": "vREXI",
801                 "vmxvpfe_sriov42_0_port_vlanstrip": "false",
802                 "vmxvpfe_volume_name_0": "vPFEXI_FBVolume",
803                 "vmx_RSG_id": "bd89a33c-13c3-4a04-8fde-1a57eb123141",
804                 "vmxvpfe_image_name_0": "VPE_ROUTING-ENGINE_17.2R1-S2.1.qcow2",
805                 "vmxvpfe_sriov43_0_port_unknownunicastallow": "true",
806                 "vmxvpfe_sriov44_0_port_unknownmulticastallow": "true",
807                 "vmxvre_console": "vidconsole",
808                 "vmxvpfe_sriov44_0_port_vlanfilter": "4001",
809                 "vmxvpfe_sriov42_0_port_mac": "00:11:22:EF:AC:DF",
810                 "vmxvpfe_volume_id_0": "47cede15-da2f-4397-a101-aa683220aff3",
811                 "vmxvpfe_sriov42_0_port_unknownmulticastallow": "true",
812                 "vmxvpfe_sriov44_0_port_vlanstrip": "false",
813                 "vf_module_id": "123",
814                 "nf_function": "JAI",
815                 "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true",
816                 "vmxvre_int_ctl_ip_0": "10.0.0.10",
817                 "ecomp_generated_naming": "true",
818                 "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI",
819                 "vnf_name": "mtnj309me6vre",
820                 "vmxvpfe_sriov41_0_port_unknownunicastallow": "true",
821                 "vmxvre_volume_type_1": "HITACHI",
822                 "vmxvpfe_sriov44_0_port_broadcastallow": "true",
823                 "vmxvre_volume_type_0": "HITACHI",
824                 "vmxvpfe_volume_type_0": "HITACHI",
825                 "vmxvpfe_sriov43_0_port_broadcastallow": "true",
826                 "bandwidth_units": "get_input:2017488_pasqualevpe0_bandwidth_units",
827                 "vnf_id": "123",
828                 "vmxvre_oam_prefix": "24",
829                 "availability_zone_0": "mtpocfo-kvm-az01",
830                 "ASN": "get_input:2017488_pasqualevpe0_ASN",
831                 "vmxvre_chassis_i2cid": "161",
832                 "vmxvpfe_name_0": "vPFEXI",
833                 "bandwidth": "get_input:2017488_pasqualevpe0_bandwidth",
834                 "availability_zone_max_count": "1",
835                 "vmxvre_volume_size_0": "45.0",
836                 "vmxvre_volume_size_1": "50.0",
837                 "vmxvpfe_sriov42_0_port_broadcastallow": "true",
838                 "vmxvre_oam_gateway": "10.0.0.10",
839                 "vmxvre_volume_name_1": "vREXI_FAVolume",
840                 "vmxvre_ore_present": "0",
841                 "vmxvre_volume_name_0": "vREXI_FBVolume",
842                 "vmxvre_type": "0",
843                 "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name",
844                 "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true",
845                 "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429",
846                 "vmx_int_ctl_len": "24",
847                 "vmxvpfe_sriov43_0_port_vlanstrip": "false",
848                 "vmxvpfe_sriov41_0_port_broadcastallow": "true",
849                 "vmxvre_volume_id_1": "6e86797e-03cd-4fdc-ba72-2957119c746d",
850                 "vmxvpfe_sriov41_0_port_vlanfilter": "4001",
851                 "nf_role": "Testing",
852                 "vmxvre_volume_id_0": "f4eacb79-f687-4e9d-b760-21847c8bb15a",
853                 "vmxvpfe_sriov42_0_port_unknownunicastallow": "true",
854                 "vmxvpfe_flavor_name": "ns.c20r16d25.v5"
855               },
856               "type": "VF",
857               "modelCustomizationName": "2017-488_PASQUALE-vPE 0",
858               "vfModules": {
859                 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1": {
860                   "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
861                   "invariantUuid": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
862                   "customizationUuid": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
863                   "description": null,
864                   "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
865                   "version": "6",
866                   "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
867                   "properties": {
868                     "minCountInstances": 0,
869                     "maxCountInstances": null,
870                     "initialCount": 0,
871                     "vfModuleLabel": "PASQUALE_vRE_BV",
872                     "baseModule": false
873                   },
874                   "inputs": {},
875                   "volumeGroupAllowed": true
876                 },
877                 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": {
878                   "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db",
879                   "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091",
880                   "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3",
881                   "description": null,
882                   "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0",
883                   "version": "5",
884                   "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0",
885                   "properties": {
886                     "minCountInstances": 1,
887                     "maxCountInstances": 1,
888                     "initialCount": 1,
889                     "vfModuleLabel": "PASQUALE_base_vPE_BV",
890                     "baseModule": true
891                   },
892                   "inputs": {},
893                   "volumeGroupAllowed": false
894                 },
895                 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": {
896                   "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a",
897                   "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339",
898                   "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557",
899                   "description": null,
900                   "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
901                   "version": "6",
902                   "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
903                   "properties": {
904                     "minCountInstances": 0,
905                     "maxCountInstances": null,
906                     "initialCount": 0,
907                     "vfModuleLabel": "PASQUALE_vPFE_BV",
908                     "baseModule": false
909                   },
910                   "inputs": {},
911                   "volumeGroupAllowed": true
912                 }
913               },
914               "volumeGroups": {
915                 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1": {
916                   "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
917                   "invariantUuid": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
918                   "customizationUuid": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
919                   "description": null,
920                   "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
921                   "version": "6",
922                   "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
923                   "properties": {
924                     "minCountInstances": 0,
925                     "maxCountInstances": null,
926                     "initialCount": 0,
927                     "vfModuleLabel": "PASQUALE_vRE_BV",
928                     "baseModule": false
929                   },
930                   "inputs": {}
931                 },
932                 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": {
933                   "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a",
934                   "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339",
935                   "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557",
936                   "description": null,
937                   "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
938                   "version": "6",
939                   "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
940                   "properties": {
941                     "minCountInstances": 0,
942                     "maxCountInstances": null,
943                     "initialCount": 0,
944                     "vfModuleLabel": "PASQUALE_vPFE_BV",
945                     "baseModule": false
946                   },
947                   "inputs": {}
948                 }
949               },
950               "vfcInstanceGroups": {}
951             }
952           },
953           "networks": {
954             "ExtVL 0": {
955               "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
956               "invariantUuid": "379f816b-a7aa-422f-be30-17114ff50b7c",
957               "description": "ECOMP generic virtual link (network) base type for all other service-level and global networks",
958               "name": "ExtVL",
959               "version": "37.0",
960               "customizationUuid": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
961               "inputs": {},
962               "commands": {},
963               "properties": {
964                 "network_assignments": "{is_external_network=false, ipv4_subnet_default_assignment={min_subnets_count=1}, ecomp_generated_network_assignment=false, ipv6_subnet_default_assignment={min_subnets_count=1}}",
965                 "exVL_naming": "{ecomp_generated_naming=true}",
966                 "network_flows": "{is_network_policy=false, is_bound_to_vpn=false}",
967                 "network_homing": "{ecomp_selected_instance_node_target=false}"
968               },
969               "type": "VL",
970               "modelCustomizationName": "ExtVL 0"
971             }
972           },
973           "collectionResources": {},
974           "configurations": {},
975           "fabricConfigurations": {},
976           "serviceProxies": {},
977           "vfModules": {
978             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1": {
979               "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
980               "invariantUuid": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
981               "customizationUuid": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
982               "description": null,
983               "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
984               "version": "6",
985               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
986               "properties": {
987                 "minCountInstances": 0,
988                 "maxCountInstances": null,
989                 "initialCount": 0,
990                 "vfModuleLabel": "PASQUALE_vRE_BV",
991                 "baseModule": false
992               },
993               "inputs": {},
994               "volumeGroupAllowed": true
995             },
996             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": {
997               "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db",
998               "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091",
999               "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3",
1000               "description": null,
1001               "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0",
1002               "version": "5",
1003               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0",
1004               "properties": {
1005                 "minCountInstances": 1,
1006                 "maxCountInstances": 1,
1007                 "initialCount": 1,
1008                 "vfModuleLabel": "PASQUALE_base_vPE_BV",
1009                 "baseModule": true
1010               },
1011               "inputs": {},
1012               "volumeGroupAllowed": false
1013             },
1014             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": {
1015               "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a",
1016               "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339",
1017               "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557",
1018               "description": null,
1019               "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1020               "version": "6",
1021               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1022               "properties": {
1023                 "minCountInstances": 0,
1024                 "maxCountInstances": null,
1025                 "initialCount": 0,
1026                 "vfModuleLabel": "PASQUALE_vPFE_BV",
1027                 "baseModule": false
1028               },
1029               "inputs": {},
1030               "volumeGroupAllowed": true
1031             }
1032           },
1033           "volumeGroups": {
1034             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1": {
1035               "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
1036               "invariantUuid": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
1037               "customizationUuid": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
1038               "description": null,
1039               "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1040               "version": "6",
1041               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1042               "properties": {
1043                 "minCountInstances": 0,
1044                 "maxCountInstances": null,
1045                 "initialCount": 0,
1046                 "vfModuleLabel": "PASQUALE_vRE_BV",
1047                 "baseModule": false
1048               },
1049               "inputs": {}
1050             },
1051             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": {
1052               "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a",
1053               "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339",
1054               "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557",
1055               "description": null,
1056               "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1057               "version": "6",
1058               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1059               "properties": {
1060                 "minCountInstances": 0,
1061                 "maxCountInstances": null,
1062                 "initialCount": 0,
1063                 "vfModuleLabel": "PASQUALE_vPFE_BV",
1064                 "baseModule": false
1065               },
1066               "inputs": {}
1067             }
1068           },
1069           "pnfs": {},
1070           "vnfGroups": {
1071             "groupingservicefortest..ResourceInstanceGroup..0": {
1072               "type": "VnfGroup",
1073               "invariantUuid": "4bb2e27e-ddab-4790-9c6d-1f731bc14a45",
1074               "uuid": "daeb6568-cef8-417f-9075-ed259ce59f48",
1075               "version": "1",
1076               "name": "groupingservicefortest..ResourceInstanceGroup..0",
1077               "modelCustomizationName": "groupingservicefortest..ResourceInstanceGroup..0",
1078               "properties": {
1079                 "contained_resource_type": "VF",
1080                 "role": "SERVICE-ACCESS",
1081                 "function": "DATA",
1082                 "description": "DDD0",
1083                 "type": "LOAD-GROUP",
1084                 "ecomp_generated_naming": "true"
1085               },
1086               "members": {
1087                 "vdorothea_svc_vprs_proxy 0": {
1088                   "uuid": "65fadfa8-a0d9-443f-95ad-836cd044e26c",
1089                   "invariantUuid": "f4baae0c-b3a5-4ca1-a777-afbffe7010bc",
1090                   "description": "A Proxy for Service vDOROTHEA_Svc_vPRS",
1091                   "name": "vDOROTHEA_Svc_vPRS Service Proxy",
1092                   "version": "1.0",
1093                   "customizationUuid": "bdb63d23-e132-4ce7-af2c-a493b4cafac9",
1094                   "inputs": {},
1095                   "commands": {},
1096                   "properties": {},
1097                   "type": "Service Proxy",
1098                   "sourceModelUuid": "da7827a2-366d-4be6-8c68-a69153c61274",
1099                   "sourceModelInvariant": "24632e6b-584b-4f45-80d4-fefd75fd9f14",
1100                   "sourceModelName": "vDOROTHEA_Svc_vPRS"
1101                 }
1102               }
1103             },
1104             "groupingservicefortest..ResourceInstanceGroup..1": {
1105               "type": "VnfGroup",
1106               "invariantUuid": "a704112d-dbc6-4e56-8d4e-aec57e95ef9a",
1107               "uuid": "c2b300e6-45de-4e5e-abda-3032bee2de56",
1108               "version": "1",
1109               "name": "groupingservicefortest..ResourceInstanceGroup..1",
1110               "modelCustomizationName": "groupingservicefortest..ResourceInstanceGroup..1",
1111               "properties": {
1112                 "contained_resource_type": "VF",
1113                 "role": "SERVICE-ACCESS",
1114                 "function": "SIGNALING",
1115                 "description": "DDD1",
1116                 "type": "LOAD-GROUP",
1117                 "ecomp_generated_naming": "true"
1118               },
1119               "members": {
1120                 "tsbc0001vm001_svc_proxy 0": {
1121                   "uuid": "65fadfa8-a0d9-443f-95ad-836cd044e26c",
1122                   "invariantUuid": "f4baae0c-b3a5-4ca1-a777-afbffe7010bc",
1123                   "description": "A Proxy for Service tsbc0001vm001_Svc",
1124                   "name": "tsbc0001vm001_Svc Service Proxy",
1125                   "version": "1.0",
1126                   "customizationUuid": "3d814462-30fb-4c62-b997-9aa360d27ead",
1127                   "inputs": {},
1128                   "commands": {},
1129                   "properties": {},
1130                   "type": "Service Proxy",
1131                   "sourceModelUuid": "28aeb8f6-5620-4148-8bfb-a5fb406f0309",
1132                   "sourceModelInvariant": "c989ab9a-33c7-46ec-b521-1b2daef5f047",
1133                   "sourceModelName": "tsbc0001vm001_Svc"
1134                 }
1135               }
1136             }
1137           }
1138         },
1139         "b75e0d22-05ff-4448-9266-5f0d4e1dbbd6": {
1140           "service": {
1141             "uuid": "b75e0d22-05ff-4448-9266-5f0d4e1dbbd6",
1142             "invariantUuid": "5b9c0f33-eec1-484a-bf77-736a6644d7a8",
1143             "name": "Using VID for VoIP Network Instantiations Shani",
1144             "version": "1.0",
1145             "toscaModelURL": null,
1146             "category": "VoIP Call Control",
1147             "serviceType": "",
1148             "serviceRole": "",
1149             "description": "Using VID for VoIP Network Instantiations Shani",
1150             "serviceEcompNaming": "true",
1151             "instantiationType": "ClientConfig",
1152             "inputs": {},
1153             "vidNotions": {"instantiationUI": "legacy", "modelCategory": "other", "viewEditUI": "legacy"}
1154           },
1155           "vnfs": {},
1156           "networks": {
1157             "AIC30_CONTRAIL_BASIC 0": {
1158               "uuid": "ac815c68-35b7-4ea4-9d04-92d2f844b27c",
1159               "invariantUuid": "de01afb5-532b-451d-aac4-ff9ff0644060",
1160               "description": "Basic contrail 3.0.x L3 network for AIC 3.x sites. ",
1161               "name": "AIC30_CONTRAIL_BASIC",
1162               "version": "3.0",
1163               "customizationUuid": "e94d61f7-b4b2-489a-a4a7-30b1a1a80daf",
1164               "inputs": {},
1165               "commands": {},
1166               "properties": {
1167                 "network_assignments": "{is_external_network=false, ipv4_subnet_default_assignment={min_subnets_count=1}, ecomp_generated_network_assignment=false, ipv6_subnet_default_assignment={min_subnets_count=1}}",
1168                 "exVL_naming": "{ecomp_generated_naming=true}",
1169                 "network_flows": "{is_network_policy=false, is_bound_to_vpn=false}",
1170                 "network_scope": "Service",
1171                 "network_type": "AIC30_CONTRAIL_BASIC",
1172                 "network_technology": "Contrail",
1173                 "network_homing": "{ecomp_selected_instance_node_target=false}"
1174               },
1175               "type": "VL",
1176               "modelCustomizationName": "AIC30_CONTRAIL_BASIC 0"
1177             }
1178           },
1179           "collectionResources": {},
1180           "configurations": {},
1181           "fabricConfigurations": {},
1182           "serviceProxies": {},
1183           "vfModules": {},
1184           "volumeGroups": {},
1185           "pnfs": {},
1186           "vnfGroups": {}
1187         }
1188       },
1189       "serviceInstance": {
1190         "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd": {
1191           "vnfs": {
1192             "2017-488_PASQUALE-vPE 0": {
1193               "action": "None",
1194               "inMaint": false,
1195               "rollbackOnFailure": "true",
1196               "originalName": "2017-488_PASQUALE-vPE 0",
1197               "isMissingData": false,
1198               "trackById": "stigekyxrqi",
1199               "vfModules": {
1200                 "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": {
1201                   "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0gytfi": {
1202                     "isMissingData": false,
1203                     "sdncPreReload": null,
1204                     "modelInfo": {
1205                       "modelType": "VFmodule",
1206                       "modelInvariantId": "b34833bb-6aa9-4ad6-a831-70b06367a091",
1207                       "modelVersionId": "f8360508-3f17-4414-a2ed-6bc71161e8db",
1208                       "modelName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0",
1209                       "modelVersion": "5",
1210                       "modelCustomizationId": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3",
1211                       "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0"
1212                     },
1213                     "instanceParams": [{}],
1214                     "trackById": "3oj23o7nupo"
1215                   }
1216                 }
1217               },
1218               "vnfStoreKey": "2017-488_PASQUALE-vPE 0",
1219               "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09",
1220               "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
1221               "lcpCloudRegionId": "AAIAIC25",
1222               "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
1223               "lineOfBusiness": "ONAP",
1224               "platformName": "xxx1",
1225               "modelInfo": {
1226                 "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8",
1227                 "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09",
1228                 "modelName": "2017-488_PASQUALE-vPE",
1229                 "modelVersion": "5.0",
1230                 "modelCustomizationName": "2017-488_PASQUALE-vPE 0",
1231                 "modelCustomizationId": "1da7b585-5e61-4993-b95e-8e6606c81e45",
1232                 "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09"
1233               },
1234               "legacyRegion": "11111111",
1235               "instanceParams": [{}]
1236             },
1237             "2017-388_PASQUALE-vPE 0": {
1238               "action": "Create",
1239               "inMaint": false,
1240               "rollbackOnFailure": "true",
1241               "originalName": "2017-388_PASQUALE-vPE 0",
1242               "isMissingData": false,
1243               "trackById": "nib719t5vca",
1244               "vfModules": {},
1245               "vnfStoreKey": "2017-388_PASQUALE-vPE 0",
1246               "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
1247               "lcpCloudRegionId": "AAIAIC25",
1248               "legacyRegion": "11111",
1249               "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
1250               "platformName": "platform",
1251               "lineOfBusiness": "zzz1",
1252               "instanceParams": [{}],
1253               "modelInfo": {
1254                 "modelInvariantId": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8",
1255                 "modelVersionId": "afacccf6-397d-45d6-b5ae-94c39734b168",
1256                 "modelName": "2017-388_PASQUALE-vPE",
1257                 "modelVersion": "4.0",
1258                 "modelCustomizationId": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c",
1259                 "modelCustomizationName": "2017-388_PASQUALE-vPE 0",
1260                 "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168"
1261               },
1262               "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168"
1263             },
1264             "2017-388_PASQUALE-vPE 1": {
1265               "action": "None",
1266               "inMaint": false,
1267               "rollbackOnFailure": "true",
1268               "originalName": "2017-388_PASQUALE-vPE 1",
1269               "isMissingData": false,
1270               "trackById": "cv7l1ak8vpe",
1271               "vfModules": {},
1272               "vnfStoreKey": "2017-388_PASQUALE-vPE 1",
1273               "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
1274               "lcpCloudRegionId": "AAIAIC25",
1275               "legacyRegion": "123",
1276               "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
1277               "platformName": "platform",
1278               "lineOfBusiness": "ONAP",
1279               "instanceParams": [{}],
1280               "modelInfo": {
1281                 "modelInvariantId": "00beb8f9-6d39-452f-816d-c709b9cbb87d",
1282                 "modelVersionId": "0903e1c0-8e03-4936-b5c2-260653b96413",
1283                 "modelName": "2017-388_PASQUALE-vPE",
1284                 "modelVersion": "1.0",
1285                 "modelCustomizationId": "280dec31-f16d-488b-9668-4aae55d6648a",
1286                 "modelCustomizationName": "2017-388_PASQUALE-vPE 1",
1287                 "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413"
1288               },
1289               "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413"
1290             }
1291           },
1292           "instanceParams": [{}],
1293           "validationCounter": 0,
1294           "existingNames": {"yoav": ""},
1295           "existingVNFCounterMap": {
1296             "69e09f68-8b63-4cc9-b9ff-860960b5db09": 1,
1297             "afacccf6-397d-45d6-b5ae-94c39734b168": 1,
1298             "0903e1c0-8e03-4936-b5c2-260653b96413": 1
1299           },
1300           "existingVnfGroupCounterMap": {
1301             "daeb6568-cef8-417f-9075-ed259ce59f48": 0,
1302             "c2b300e6-45de-4e5e-abda-3032bee2de56": -1
1303           },
1304           "existingNetworksCounterMap": {"ddc3f20c-08b5-40fd-af72-c6d14636b986": 1},
1305           "networks": {
1306             "ExtVL 0": {
1307               "inMaint": false,
1308               "rollbackOnFailure": "true",
1309               "originalName": "ExtVL 0",
1310               "isMissingData": false,
1311               "trackById": "s6okajvv2n8",
1312               "networkStoreKey": "ExtVL 0",
1313               "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
1314               "lcpCloudRegionId": "AAIAIC25",
1315               "legacyRegion": "12355555",
1316               "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
1317               "platformName": "platform",
1318               "lineOfBusiness": null,
1319               "instanceParams": [{}],
1320               "modelInfo": {
1321                 "modelInvariantId": "379f816b-a7aa-422f-be30-17114ff50b7c",
1322                 "modelVersionId": "ddc3f20c-08b5-40fd-af72-c6d14636b986",
1323                 "modelName": "ExtVL",
1324                 "modelVersion": "37.0",
1325                 "modelCustomizationId": "94fdd893-4a36-4d70-b16a-ec29c54c184f",
1326                 "modelCustomizationName": "ExtVL 0",
1327                 "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
1328               },
1329               "uuid": "ddc3f20c-08b5-40fd-af72-c6d14636b986"
1330             }
1331           },
1332           "vnfGroups": {
1333             "groupingservicefortest..ResourceInstanceGroup..0": {
1334               "inMaint": false,
1335               "rollbackOnFailure": "true",
1336               "originalName": "groupingservicefortest..ResourceInstanceGroup..0",
1337               "isMissingData": false,
1338               "trackById": "se0obn93qq",
1339               "vnfGroupStoreKey": "groupingservicefortest..ResourceInstanceGroup..0",
1340               "instanceName": "groupingservicefortestResourceInstanceGroup0",
1341               "instanceParams": [{}],
1342               "modelInfo": {
1343                 "modelInvariantId": "4bb2e27e-ddab-4790-9c6d-1f731bc14a45",
1344                 "modelVersionId": "daeb6568-cef8-417f-9075-ed259ce59f48",
1345                 "modelName": "groupingservicefortest..ResourceInstanceGroup..0",
1346                 "modelVersion": "1",
1347                 "modelCustomizationName": "groupingservicefortest..ResourceInstanceGroup..0",
1348                 "uuid": "daeb6568-cef8-417f-9075-ed259ce59f48"
1349               },
1350               "uuid": "daeb6568-cef8-417f-9075-ed259ce59f48"
1351             }
1352           },
1353           "instanceName": "yoav",
1354           "globalSubscriberId": "e433710f-9217-458d-a79d-1c7aff376d89",
1355           "subscriptionServiceType": "TYLER SILVIA",
1356           "owningEntityId": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc",
1357           "productFamilyId": "d8a6ed93-251c-47ca-adc9-86671fd19f4c",
1358           "lcpCloudRegionId": "AAIAIC25",
1359           "tenantId": "092eb9e8e4b7412e8787dd091bc58e86",
1360           "aicZoneId": "ATL53",
1361           "pause": null,
1362           "projectName": "WATKINS",
1363           "rollbackOnFailure": "true",
1364           "bulkSize": 1,
1365           "aicZoneName": "AAIATLTE-ATL53",
1366           "owningEntityName": "WayneHolland",
1367           "testApi": "VNF_API",
1368           "isEcompGeneratedNaming": false,
1369           "tenantName": "USP-SIP-IC-24335-T-01",
1370           "modelInfo": {
1371             "modelInvariantId": "cdb90b57-ed78-4d44-a5b4-7f43a02ec632",
1372             "modelVersionId": "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd",
1373             "modelName": "action-data",
1374             "modelVersion": "1.0",
1375             "uuid": "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd"
1376           },
1377           "isALaCarte": false,
1378           "name": "action-data",
1379           "version": "1.0",
1380           "description": "PASQUALE vMX vPE based on Juniper 17.2 release. Updated with updated VF for v8.0 of VLM",
1381           "category": "Network L1-3",
1382           "uuid": "1a80c596-27e5-4ca9-b5bb-e03a7fd4c0fd",
1383           "invariantUuid": "cdb90b57-ed78-4d44-a5b4-7f43a02ec632",
1384           "serviceType": "pnf",
1385           "serviceRole": "Testing",
1386           "vidNotions": {"instantiationUI": "legacy", "modelCategory": "other", "viewEditUI": "legacy"},
1387           "isMultiStepDesign": true
1388         }
1389       },
1390       "lcpRegionsAndTenants": {
1391         "lcpRegionList": [{
1392           "id": "AAIAIC25",
1393           "name": "AAIAIC25 (AIC)",
1394           "isPermitted": true,
1395           "cloudOwner": "irma-aic"
1396         }, {"id": "hvf6", "name": "hvf6 (AIC)", "isPermitted": true, "cloudOwner": "irma-aic"}],
1397         "lcpRegionsTenantsMap": {
1398           "AAIAIC25": [{
1399             "id": "092eb9e8e4b7412e8787dd091bc58e86",
1400             "name": "USP-SIP-IC-24335-T-01",
1401             "isPermitted": true,
1402             "cloudOwner": "irma-aic"
1403           }],
1404           "hvf6": [{
1405             "id": "bae71557c5bb4d5aac6743a4e5f1d054",
1406             "name": "AIN Web Tool-15-D-testalexandria",
1407             "isPermitted": true,
1408             "cloudOwner": "irma-aic"
1409           }, {
1410             "id": "d0a3e3f2964542259d155a81c41aadc3",
1411             "name": "test-hvf6-09",
1412             "isPermitted": true,
1413             "cloudOwner": "irma-aic"
1414           }, {
1415             "id": "fa45ca53c80b492fa8be5477cd84fc2b",
1416             "name": "ro-T112",
1417             "isPermitted": true,
1418             "cloudOwner": "irma-aic"
1419           }, {
1420             "id": "cbb99fe4ada84631b7baf046b6fd2044",
1421             "name": "DN5242-Nov16-T3",
1422             "isPermitted": true,
1423             "cloudOwner": "irma-aic"
1424           }]
1425         }
1426       },
1427       "subscribers": [{
1428         "id": "ERICA5779-Subscriber-2",
1429         "name": "ERICA5779-Subscriber-2",
1430         "isPermitted": false
1431       }, {
1432         "id": "ERICA5779-Subscriber-3",
1433         "name": "ERICA5779-Subscriber-3",
1434         "isPermitted": false
1435       }, {
1436         "id": "ERICA5779-Subscriber-4",
1437         "name": "ERICA5779-Subscriber-5",
1438         "isPermitted": false
1439       }, {
1440         "id": "ERICA5779-TestSub-PWT-101",
1441         "name": "ERICA5779-TestSub-PWT-101",
1442         "isPermitted": false
1443       }, {
1444         "id": "ERICA5779-TestSub-PWT-102",
1445         "name": "ERICA5779-TestSub-PWT-102",
1446         "isPermitted": false
1447       }, {
1448         "id": "ERICA5779-TestSub-PWT-103",
1449         "name": "ERICA5779-TestSub-PWT-103",
1450         "isPermitted": false
1451       }, {
1452         "id": "31739f3e-526b-11e6-beb8-9e71128cae77",
1453         "name": "CRAIG/ROBERTS",
1454         "isPermitted": false
1455       }, {"id": "DHV1707-TestSubscriber-2", "name": "DALE BRIDGES", "isPermitted": false}, {
1456         "id": "jimmy-example",
1457         "name": "JimmyExampleCust-20161102",
1458         "isPermitted": false
1459       }, {"id": "jimmy-example2", "name": "JimmyExampleCust-20161103", "isPermitted": false}, {
1460         "id": "CAR_2020_ER",
1461         "name": "CAR_2020_ER",
1462         "isPermitted": true
1463       }, {
1464         "id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
1465         "name": "Emanuel",
1466         "isPermitted": false
1467       }, {
1468         "id": "21014aa2-526b-11e6-beb8-9e71128cae77",
1469         "name": "JULIO ERICKSON",
1470         "isPermitted": false
1471       }, {
1472         "id": "DHV1707-TestSubscriber-1",
1473         "name": "LLOYD BRIDGES",
1474         "isPermitted": false
1475       }, {"id": "e433710f-9217-458d-a79d-1c7aff376d89", "name": "SILVIA ROBBINS", "isPermitted": true}],
1476       "productFamilies": null,
1477       "serviceTypes": {
1478         "e433710f-9217-458d-a79d-1c7aff376d89": [{
1479           "id": "17",
1480           "name": "JOHANNA_SANTOS",
1481           "isPermitted": false
1482         }, {"id": "16", "name": "LINDSEY", "isPermitted": false}, {
1483           "id": "2",
1484           "name": "Emanuel",
1485           "isPermitted": false
1486         }, {"id": "5", "name": "Kennedy", "isPermitted": false}, {
1487           "id": "14",
1488           "name": "SSD",
1489           "isPermitted": false
1490         }, {"id": "1", "name": "TYLER SILVIA", "isPermitted": true}, {
1491           "id": "12",
1492           "name": "VPMS",
1493           "isPermitted": false
1494         }, {"id": "3", "name": "vJamie", "isPermitted": false}, {
1495           "id": "0",
1496           "name": "vRichardson",
1497           "isPermitted": false
1498         }, {"id": "18", "name": "vCarroll", "isPermitted": false}, {
1499           "id": "9",
1500           "name": "vFLORENCE",
1501           "isPermitted": false
1502         }, {"id": "13", "name": "vWINIFRED", "isPermitted": false}, {
1503           "id": "10",
1504           "name": "vMNS",
1505           "isPermitted": false
1506         }, {"id": "15", "name": "vMOG", "isPermitted": false}, {
1507           "id": "8",
1508           "name": "vOTA",
1509           "isPermitted": false
1510         }, {"id": "11", "name": "vEsmeralda", "isPermitted": false}, {
1511           "id": "6",
1512           "name": "vPorfirio",
1513           "isPermitted": false
1514         }, {"id": "7", "name": "vVM", "isPermitted": false}, {"id": "4", "name": "vVoiceMail", "isPermitted": false}]
1515       },
1516       "aicZones": [
1517         {
1518           "id": "NFT1",
1519           "name": "NFTJSSSS-NFT1"
1520         },
1521         {
1522           "id": "JAG1",
1523           "name": "YUDFJULP-JAG1"
1524         },
1525         {
1526           "id": "YYY1",
1527           "name": "UUUAIAAI-YYY1"
1528         },
1529         {
1530           "id": "AVT1",
1531           "name": "AVTRFLHD-AVT1"
1532         },
1533         {
1534           "id": "ATL34",
1535           "name": "ATLSANAI-ATL34"
1536         }
1537       ],
1538       "categoryParameters": {
1539         "owningEntityList": [{
1540           "id": "aaa1",
1541           "name": "aaa1"
1542         }, {"id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "name": "WayneHolland"}, {
1543           "id": "Melissa",
1544           "name": "Melissa"
1545         }],
1546         "projectList": [{"id": "WATKINS", "name": "WATKINS"}, {"id": "x1", "name": "x1"}, {"id": "yyy1", "name": "yyy1"}],
1547         "lineOfBusinessList": [{"id": "ONAP", "name": "ONAP"}, {"id": "zzz1", "name": "zzz1"}],
1548         "platformList": [{"id": "platform", "name": "platform"}, {"id": "xxx1", "name": "xxx1"}]
1549       },
1550       "type": "UPDATE_LCP_REGIONS_AND_TENANTS"
1551     }
1552   }
1553 }
1554
1555
1556 function getNetworkModelInfoFromHierarchy(){
1557   return {
1558     "version": "2.0",
1559     "customizationUuid":"customization-id-from-hierarchy",
1560     "uuid": "UUID-from-hierarchy",
1561     "invariantUuid": "invariantId-from-hierarchy"
1562   }
1563 }
1564
1565 function getSelectedModelInfo() {
1566   return {
1567     "instanceModelInfo": {
1568       "modelVersion": "5.0",
1569       "modelCustomizationId": "model-customization-id-from-instance",
1570       "modelVersionId": "UUID-from-instance",
1571       "modelInvariantId": "invariantId-from-instance"
1572     }
1573   }
1574 }
1575 function getNetworkInstance() {
1576   return {
1577     "inMaint": false,
1578     "instanceId": "NETWORK4_INSTANCE_ID",
1579     "instanceType": "CONTRAIL30_HIMELGUARD",
1580   };
1581 }