Fixing node count icon VfModule + unit tests.
[vid.git] / vid-webpack-master / src / app / drawingBoard / service-planning / objectsToTree / models / vfModule / vfModule.model.info.spec.ts
1 import {HttpClientTestingModule} from "@angular/common/http/testing";
2 import {getTestBed, TestBed} from "@angular/core/testing";
3 import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing";
4 import {VFModuleModelInfo} from "./vfModule.model.info";
5 import {DynamicInputsService} from "../../dynamicInputs.service";
6 import {SharedTreeService} from "../../shared.tree.service";
7 import {VfModulePopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModule/vfModule.popup.service";
8 import {DialogService} from "ng2-bootstrap-modal";
9 import {NgRedux} from "@angular-redux/store";
10 import {AvailableNodeIcons} from "../../../available-models-tree/available-models-tree.service";
11 import {MessageBoxService} from "../../../../../shared/components/messageBox/messageBox.service";
12 import {DrawingBoardModes} from "../../../drawing-board.modes";
13 import {IframeService} from "../../../../../shared/utils/iframe.service";
14 import {ComponentInfoService} from "../../../component-info/component-info.service";
15 import {ModelInformationItem} from "../../../../../shared/components/model-information/model-information.component";
16 import {AaiService} from "../../../../../shared/services/aaiService/aai.service";
17 import {HttpClient, HttpHandler} from "@angular/common/http";
18 import {FeatureFlagsService} from "../../../../../shared/services/featureFlag/feature-flags.service";
19 import {VfModuleUpgradePopupService} from "../../../../../shared/components/genericFormPopup/genericFormServices/vfModuleUpgrade/vfModule.upgrade.popuop.service";
20 import {instance, mock, when} from "ts-mockito";
21 import each from "jest-each";
22
23 class MockAppStore<T> {
24   getState() {
25     return {
26       global: {
27         'drawingBoardStatus': DrawingBoardModes.CREATE
28       }
29     }
30   }
31 }
32
33 class MockFeatureFlagsService extends  FeatureFlagsService{
34   getAllFlags(): { [p: string]: boolean } {
35     return {};
36   }
37 }
38
39 describe('VFModule Model Info', () => {
40   let injector;
41   let  _dynamicInputsService : DynamicInputsService;
42   let  _sharedTreeService : SharedTreeService;
43   let  vfModuleModel: VFModuleModelInfo;
44   let _dialogService : DialogService;
45   let _vfModulePopupService : VfModulePopupService;
46   let _vfModuleUpgradePopupService : VfModuleUpgradePopupService;
47   let _iframeService : IframeService;
48   let _componentInfoService : ComponentInfoService;
49   let mockFeatureFlagsService: FeatureFlagsService = mock(FeatureFlagsService);
50   let mockFeatureFlagsServiceInstance: FeatureFlagsService = instance(mockFeatureFlagsService);
51
52
53   beforeAll(done => (async () => {
54     TestBed.configureTestingModule({
55       imports: [HttpClientTestingModule, NgReduxTestingModule],
56       providers: [
57         DynamicInputsService,
58         DialogService,
59         VfModulePopupService,
60         VfModuleUpgradePopupService,
61         SharedTreeService,
62         IframeService,
63         {provide: NgRedux, useClass: MockAppStore},
64         MockNgRedux,
65         AaiService,
66         HttpClient,
67         HttpHandler,
68         {provide: FeatureFlagsService, useValue: mockFeatureFlagsServiceInstance},
69         ComponentInfoService
70       ]
71     });
72     await TestBed.compileComponents();
73
74     injector = getTestBed();
75     _sharedTreeService = injector.get(SharedTreeService);
76     _componentInfoService = injector.get(ComponentInfoService);
77     vfModuleModel = new VFModuleModelInfo(_dynamicInputsService, _sharedTreeService, _dialogService, _vfModulePopupService, _vfModuleUpgradePopupService,
78       _iframeService, mockFeatureFlagsServiceInstance,  MockNgRedux.getInstance(),_componentInfoService);
79
80   })().then(done).catch(done.fail));
81
82
83
84   test('VFModuleModelInfo should be defined', () => {
85     expect(VFModuleModelInfo).toBeDefined();
86   });
87
88   test('VnfModelInfo should defined extra details', () => {
89     expect(vfModuleModel.name).toEqual('vfModules');
90     expect(vfModuleModel.type).toEqual('Module');
91   });
92
93   test('isEcompGeneratedNaming should return true if vnf has isEcompGeneratedNaming is "true" ', () => {
94     let isEcompGeneratedNaming : boolean = vfModuleModel.isEcompGeneratedNaming({}, {
95       properties: {
96         ecomp_generated_naming: 'true'
97       }
98     });
99     expect(isEcompGeneratedNaming).toBeTruthy();
100   });
101
102   test('isEcompGeneratedNaming should return false if isEcompGeneratedNaming is "false"', () => {
103     let isEcompGeneratedNaming : boolean = vfModuleModel.isEcompGeneratedNaming({}, {
104       properties: {
105         ecomp_generated_naming: 'false'
106       }
107     });
108     expect(isEcompGeneratedNaming).toBeFalsy();
109   });
110
111   test('isEcompGeneratedNaming should return false if isEcompGeneratedNaming is not defined', () => {
112     let isEcompGeneratedNaming : boolean = vfModuleModel.isEcompGeneratedNaming({}, {
113       properties: {
114       }
115     });
116     expect(isEcompGeneratedNaming).toBeFalsy();
117   });
118
119
120   test('getTooltip should return "VFModule"', () => {
121     let tooltip: string = vfModuleModel.getTooltip();
122     expect(tooltip).toEqual('VFmodule');
123   });
124
125   test('getType should return "VFModule"', () => {
126     let tooltip: string = vfModuleModel.getType();
127     expect(tooltip).toEqual('VFmodule');
128   });
129
130   test('getNextLevelObject should return null', () => {
131     let nextLevel = vfModuleModel.getNextLevelObject();
132     expect(nextLevel).toBeNull();
133   });
134
135   test('getModel should return Module model', () => {
136     let model = vfModuleModel.getModel('2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1',{}, getServiceHierarchy());
137     expect(model.uuid).toEqual('25284168-24bb-4698-8cb4-3f509146eca5');
138   });
139
140   test('showNodeIcons should return false false if reachLimit of max', ()=>{
141     let serviceId : string = 'servicedId';
142     let node = {
143       parent : {
144         data : {
145           id : 'vnfId',
146           name : 'vnfName'
147         }
148       },
149       data : {
150         id : 'vnfId',
151         name : 'vnfName'
152       }
153     };
154     _sharedTreeService.setSelectedVNF({
155       data : {
156         id : 'vfModuleId',
157         name : 'VfModuleName'
158       }
159     });
160     jest.spyOn(vfModuleModel, 'getOptionalVNFs').mockReturnValue([]);
161     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
162       global : {},
163       service : {
164         serviceHierarchy : {
165           'servicedId' : {
166             'vnfs' : {
167               'vnfName' : {
168                 'properties' : {
169                   'max_instances' : 1
170                 }
171               }
172             }
173           }
174         },
175         serviceInstance : {
176           'servicedId' : {
177             'existingVNFCounterMap' : {
178               'vnfId' : 1
179             },
180             'vnfs' : {
181               'vnfName' :{
182
183               }
184             }
185           }
186         }
187       }
188     });
189
190     let result = vfModuleModel.showNodeIcons(<any>node, serviceId);
191     expect(result).toEqual(new AvailableNodeIcons(false , false));
192   });
193
194   test('showNodeIcons should return true, false if reachLimit of max', ()=>{
195     let serviceId : string = 'servicedId';
196     let node = {
197       data : {
198         id : 'vfModuleId',
199         name : 'vfModuleName'
200       },
201       parent : {
202         data : {
203           id : 'vnfId',
204           name : 'vnfName'
205         }
206       }
207     };
208     jest.spyOn(_sharedTreeService, 'getSelectedVNF').mockReturnValue('vnfName');
209     jest.spyOn(vfModuleModel, 'getOptionalVNFs').mockReturnValue(['vnfName']);
210     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
211       global : {},
212       service : {
213         serviceHierarchy : {
214           'servicedId' : {
215             'vnfs' : {
216               'vnfName' : {
217                 'properties' : {
218                   'max_instances' : 1
219                 }
220               }
221             },
222             'vfModules' : {
223               'vfModuleName' : {
224                 'properties' : {
225                   maxCountInstances : 1
226                 }
227               }
228             }
229           }
230         },
231         serviceInstance : {
232           'servicedId' : {
233             'existingVNFCounterMap' : {
234               'vnfId' : 1
235             },
236             'vnfs' : {
237               'vnfName' :{
238                   'originalName' : 'vnfName',
239                   'vfModules' : {
240                     'vfModuleName' : {
241
242                     }
243                   }
244               }
245             }
246           }
247         }
248       }
249     });
250
251     let result = vfModuleModel.showNodeIcons(<any>node, 'servicedId');
252     expect(result).toEqual(new AvailableNodeIcons(true , false));
253   });
254
255
256   test('showNodeIcons should return false, true if reachLimit of max', ()=>{
257     let serviceId : string = 'servicedId';
258     let node = {
259       data : {
260         id : 'vfModuleId',
261         name : 'vfModuleName'
262       },
263       parent : {
264         data : {
265           id : 'vnfId',
266           name : 'vnfName'
267         }
268       }
269     };
270     jest.spyOn(_sharedTreeService, 'getSelectedVNF').mockReturnValue('vnfName');
271     jest.spyOn(vfModuleModel, 'getOptionalVNFs').mockReturnValue(['vnfName']);
272     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
273       global : {},
274       service : {
275         serviceHierarchy : {
276           'servicedId' : {
277             'vnfs' : {
278               'vnfName' : {
279                 'properties' : {
280                   'max_instances' : 1
281                 }
282               }
283             },
284             'vfModules' : {
285               'vfModuleName' : {
286                 'properties' : {
287                   maxCountInstances : 2
288                 }
289               }
290             }
291           }
292         },
293         serviceInstance : {
294           'servicedId' : {
295             'existingVNFCounterMap' : {
296               'vnfId' : 1
297             },
298             'vnfs' : {
299               'vnfName' :{
300                 'originalName' : 'vnfName',
301                 'vfModules' : {
302                   'vfModuleName' : {
303
304                   }
305                 }
306               }
307             }
308           }
309         }
310       }
311     });
312
313     let result = vfModuleModel.showNodeIcons(<any>node, 'servicedId');
314     expect(result).toEqual(new AvailableNodeIcons(true , false));
315   });
316
317
318   test('getOptionalVNFs should instance if exist', ()=>{
319     let serviceId : string = 'servicedId';
320     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
321       global : {},
322       service : {
323         serviceHierarchy : {
324           'servicedId' : {
325             'vnfs' : {
326               'vnfName' : {
327                 'properties' : {
328                   'max_instances' : 1
329                 }
330               }
331             },
332             'vfModules' : {
333               'vfModuleName' : {
334                 'properties' : {
335                   maxCountInstances : 2
336                 }
337               }
338             }
339           }
340         },
341         serviceInstance : {
342           'servicedId' : {
343             'existingVNFCounterMap' : {
344               'vnfId' : 1
345             },
346             'vnfs' : {
347               'vnfName' :{
348                 'originalName' : 'vnfName',
349                 'vfModules' : {
350                   'vfModuleName' : {
351
352                   }
353                 }
354               }
355             }
356           }
357         }
358       }
359     });
360
361     let node = {
362       data : {
363         id : 'vfModuleId',
364         name : 'vfModuleName'
365       },
366       parent : {
367         data : {
368           id : 'vnfId',
369           name : 'vnfName'
370         }
371       }
372     };
373     let result = vfModuleModel.getOptionalVNFs(serviceId , 'vnfName');
374     expect(result.length).toEqual(1);
375   });
376
377   test('getNodeCount should return number of nodes', ()=>{
378     let serviceId : string = 'servicedId';
379     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
380       global : {},
381       service : {
382         serviceHierarchy : {
383           'servicedId' : {
384             'vnfs' : {
385               'vnfName' : {
386                 'properties' : {
387                   'max_instances' : 1
388                 }
389               }
390             },
391             'vfModules' : {
392               'vfModuleName' : {
393                 'properties' : {
394                   maxCountInstances : 2
395                 }
396               }
397             }
398           }
399         },
400         serviceInstance : {
401           'servicedId' : {
402             'existingVNFCounterMap' : {
403               'vnfId' : 1
404             },
405             'vnfs' : {
406               'vnfName' :{
407                 'action': 'Create',
408                 'originalName' : 'vnfName',
409                 'vfModules' : {
410                   'vfModuleName' : {
411                       'vnfModuleName_111': {
412                         'action': 'Create',
413                         'modelInfo' : {
414                           modelVersionId : 'vfModuleId'
415                         }
416                       },
417                       'vnfModuleName_111_1': {
418                         'action': 'Create',
419                         'modelInfo' : {
420                           modelVersionId : 'vfModuleId'
421                         }
422                       }
423                   }
424                 }
425               },
426               'vnfName_1' :{
427                 'action': 'Create',
428                 'originalName' : 'vnfName',
429                 'vfModules' : {
430                   'vfModuleName' : {
431                     'vnfModuleName_111': {
432                       'action': 'Create',
433                       'modelInfo' : {
434                         modelVersionId : 'vfModuleId'
435                       }
436                     },
437                     'vnfModuleName_111_1': {
438                       'action': 'Create',
439                       'modelInfo' : {
440                         modelVersionId : 'vfModuleId'
441                       }
442                     }
443                   }
444                 }
445               }
446             }
447           }
448         }
449       }
450     });
451
452     let node = {
453       data : {
454         id : 'vfModuleId',
455         name : 'vfModuleName',
456         'action': 'Create',
457       },
458       parent : {
459         data : {
460           id : 'vnfId',
461           name : 'vnfName',
462           'action': 'Create',
463         }
464       }
465     };
466     let result = vfModuleModel.getNodeCount(<any>node , serviceId);
467     expect(result).toEqual(2);
468   });
469
470
471   test('getNodeCount should return number of nodes : there is selectedVNF', ()=>{
472     let serviceId : string = 'servicedId';
473     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
474       global : {},
475       service : {
476         serviceHierarchy : {
477           'servicedId' : {
478             'vnfs' : {
479               'vnfName' : {
480                 'properties' : {
481                   'max_instances' : 1
482                 }
483               }
484             },
485             'vfModules' : {
486               'vfModuleName' : {
487                 'properties' : {
488                   maxCountInstances : 2
489                 }
490               }
491             }
492           }
493         },
494         serviceInstance : {
495           'servicedId' : {
496             'existingVNFCounterMap' : {
497               'vnfId' : 1
498             },
499             'vnfs' : {
500               'vnfName' :{
501                 'action': 'Create',
502                 'originalName' : 'vnfName',
503                 'vfModules' : {
504                   'vfModuleName' : {
505                     'vnfModuleName_111': {
506                       'action': 'Create',
507                       'modelInfo' : {
508                         modelVersionId : 'vfModuleId'
509                       }
510                     },
511                     'vnfModuleName_111_1': {
512                       'action': 'Create',
513                       'modelInfo' : {
514                         modelVersionId : 'vfModuleId'
515                       }
516                     }
517                   }
518                 }
519               },
520               'vnfName_1' :{
521                 'action': 'Create',
522                 'originalName' : 'vnfName',
523                 'vfModules' : {
524                   'vfModuleName' : {
525                     'vnfModuleName_111': {
526                       'action': 'Create',
527                       'modelInfo' : {
528                         modelVersionId : 'vfModuleId'
529                       }
530                     }
531                   }
532                 }
533               }
534             }
535           }
536         }
537       }
538     });
539     jest.spyOn(_sharedTreeService, 'getSelectedVNF').mockReturnValue('vnfName_1');
540
541     let node = {
542       data : {
543         id : 'vfModuleId',
544         name : 'vfModuleName',
545         'action': 'Create',
546       },
547       parent : {
548         data : {
549           id : 'vnfId',
550           name : 'vnfName_1',
551           'action': 'Create',
552         }
553       }
554     };
555     let result = vfModuleModel.getNodeCount(<any>node , serviceId);
556     expect(result).toEqual(1);
557   });
558
559
560   test('onClickAdd should open message box if no vnfStoreKey', ()=>{
561     jest.spyOn(_sharedTreeService, 'getSelectedVNF').mockReturnValue(null);
562     jest.spyOn(vfModuleModel, 'getDefaultVNF').mockReturnValue(null);
563     jest.spyOn(MessageBoxService.openModal, 'next');
564     vfModuleModel.onClickAdd(<any>{}, 'serviceId');
565     expect(MessageBoxService.openModal.next).toHaveBeenCalled();
566   });
567
568   test('getMenuAction: showAuditInfoVfModule', ()=>{
569     jest.spyOn(_sharedTreeService, 'isRetryMode').mockReturnValue(true);
570
571     let node = {
572       data : {
573         "modelId": "6b528779-44a3-4472-bdff-9cd15ec93450",
574         "action": "Create",
575         "isFailed": true,
576       }
577     };
578     let serviceModelId = "6b528779-44a3-4472-bdff-9cd15ec93450";
579     let result = vfModuleModel.getMenuAction(<any>node, serviceModelId);
580     spyOn(result['showAuditInfo'], 'method');
581     expect(result['showAuditInfo']).toBeDefined();
582     expect(result['showAuditInfo'].visible(node)).toBeTruthy();
583     expect(result['showAuditInfo'].enable(node)).toBeTruthy();
584     result['showAuditInfo']['method'](node, serviceModelId);
585     expect(result['showAuditInfo']['method']).toHaveBeenCalledWith(node, serviceModelId);
586   });
587
588   test('Info for vfModule should be correct', () => {
589     const model = getVFModule();
590     const instance = getVFModuleInstance();
591     let actualVNFInfo = vfModuleModel.getInfo(model,instance);
592     let expectedVNFInfo = [
593       ModelInformationItem.createInstance('Base module', false),
594       ModelInformationItem.createInstance('Min instances', "0"),
595       ModelInformationItem.createInstance("Max instances", 'Unlimited (default)'),
596       ModelInformationItem.createInstance('Initial instances count',"0")
597     ];
598     expect(actualVNFInfo).toEqual(expectedVNFInfo);
599   });
600
601   each([
602     ["maxCountInstances 3, currentNodeCount 1, flag on",{maxCountInstances:3}, 1, {FLAG_2002_UNLIMITED_MAX: true}, false],
603     ["maxCountInstances 3, currentNodeCount 3, flag on",{maxCountInstances:3}, 3, {FLAG_2002_UNLIMITED_MAX: true}, true],
604     ["no maxCountInstances, currentNodeCount 0, flag off",{}, 0, {FLAG_2002_UNLIMITED_MAX: false}, false],
605     ["no maxCountInstances, currentNodeCount 1, flag off",{}, 1, {FLAG_2002_UNLIMITED_MAX: false}, true],
606     ["no maxCountInstances, currentNodeCount 1, no flags",{}, 1, null, true],
607     ["no maxCountInstances, currentNodeCount 0, flag on",{}, 0, {FLAG_2002_UNLIMITED_MAX: true}, false],
608     ["no maxCountInstances, currentNodeCount 1, flag on",{}, 1, {FLAG_2002_UNLIMITED_MAX: true}, false],
609     ["no maxCountInstances, currentNodeCount 1000, flag on",{}, 1000, {FLAG_2002_UNLIMITED_MAX: true}, false],
610   ]).test('isVFModuleReachedLimit: %s', (desc, properties, currentNodeCount, flags, expected) => {
611
612     const node = { data: {
613         name : 'vfModuleName'
614     }};
615
616     const serviceHierarchy = {
617       servicedId :{
618         vfModules : {
619           vfModuleName : {
620             properties
621      }}}};
622
623     when(mockFeatureFlagsService.getAllFlags()).thenReturn(flags);
624
625     expect(vfModuleModel.isVFModuleReachedLimit(node, serviceHierarchy, 'servicedId', currentNodeCount)).toEqual(expected);
626   });
627
628   function getVFModule(){
629     return {
630       "uuid":"522159d5-d6e0-4c2a-aa44-5a542a12a830",
631       "invariantUuid":"98a7c88b-b577-476a-90e4-e25a5871e02b",
632       "customizationUuid":"55b1be94-671a-403e-a26c-667e9c47d091",
633       "description":null,
634       "name":"VfVgeraldine..vflorence_vlc..module-1",
635       "version":"2",
636       "modelCustomizationName":"VfVgeraldine..vflorence_vlc..module-1",
637       "properties":{
638         "minCountInstances":0,
639         "maxCountInstances":null,
640         "initialCount":0,
641         "vfModuleLabel":"vflorence_vlc",
642         "baseModule":false
643       },
644       "inputs":{},
645       "volumeGroupAllowed":false
646     };
647   }
648
649   function getVFModuleInstance() {
650     return {
651       "action":"None",
652       "instanceName":"ss820f_0918_db",
653       "instanceId":"2c1ca484-cbc2-408b-ab86-25a2c15ce280",
654       "orchStatus":"deleted",
655       "productFamilyId":null,
656       "lcpCloudRegionId":null,
657       "tenantId":null,
658       "modelInfo":{
659         "modelCustomizationName":"VfVgeraldine..vflorence_vlc..module-1",
660         "modelCustomizationId":"b200727a-1bf9-4e7c-bd06-b5f4c9d920b9",
661         "modelInvariantId":"09edc9ef-85d0-4b26-80de-1f569d49e750",
662         "modelVersionId":"522159d5-d6e0-4c2a-aa44-5a542a12a830",
663         "modelType":"vfModule"
664       },
665       "instanceType":null,
666       "provStatus":null,
667       "inMaint":true,
668       "uuid":"522159d5-d6e0-4c2a-aa44-5a542a12a830",
669       "originalName":"VfVgeraldine..vflorence_vlc..module-1",
670       "legacyRegion":null,
671       "lineOfBusiness":null,
672       "platformName":null,
673       "trackById":"vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1:008",
674       "isBase":false,
675       "volumeGroupName":null
676     };
677   }
678
679
680   function getServiceHierarchy(){
681     return {
682       "service": {
683         "uuid": "6b528779-44a3-4472-bdff-9cd15ec93450",
684         "invariantUuid": "e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0",
685         "name": "action-data",
686         "version": "1.0",
687         "toscaModelURL": null,
688         "category": "",
689         "serviceType": "",
690         "serviceRole": "",
691         "description": "",
692         "serviceEcompNaming": "false",
693         "instantiationType": "Macro",
694         "inputs": {
695           "2017488_pasqualevpe0_ASN": {
696             "type": "string",
697             "description": "AV/PE",
698             "entry_schema": null,
699             "inputProperties": null,
700             "constraints": [],
701             "required": true,
702             "default": "AV_vPE"
703           }
704         },
705         "vidNotions": {
706           "instantiationUI": "legacy",
707           "modelCategory": "other"
708         }
709       },
710       "vnfs": {
711         "2017-388_PASQUALE-vPE 1": {
712           "uuid": "0903e1c0-8e03-4936-b5c2-260653b96413",
713           "invariantUuid": "00beb8f9-6d39-452f-816d-c709b9cbb87d",
714           "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",
715           "name": "2017-388_PASQUALE-vPE",
716           "version": "1.0",
717           "customizationUuid": "280dec31-f16d-488b-9668-4aae55d6648a",
718           "inputs": {
719             "vnf_config_template_version": {
720               "type": "string",
721               "description": "VPE Software Version",
722               "entry_schema": null,
723               "inputProperties": null,
724               "constraints": [],
725               "required": true,
726               "default": "17.2"
727             },
728             "bandwidth_units": {
729               "type": "string",
730               "description": "Units of bandwidth",
731               "entry_schema": null,
732               "inputProperties": null,
733               "constraints": [],
734               "required": true,
735               "default": "Gbps"
736             },
737             "bandwidth": {
738               "type": "string",
739               "description": "Requested VPE bandwidth",
740               "entry_schema": null,
741               "inputProperties": null,
742               "constraints": [],
743               "required": true,
744               "default": "10"
745             },
746             "AIC_CLLI": {
747               "type": "string",
748               "description": "AIC Site CLLI",
749               "entry_schema": null,
750               "inputProperties": null,
751               "constraints": [],
752               "required": true,
753               "default": "ATLMY8GA"
754             },
755             "ASN": {
756               "type": "string",
757               "description": "AV/PE",
758               "entry_schema": null,
759               "inputProperties": null,
760               "constraints": [],
761               "required": true,
762               "default": "AV_vPE"
763             },
764             "vnf_instance_name": {
765               "type": "string",
766               "description": "The hostname assigned to the vpe.",
767               "entry_schema": null,
768               "inputProperties": null,
769               "constraints": [],
770               "required": true,
771               "default": "mtnj309me6"
772             }
773           },
774           "commands": {
775             "vnf_config_template_version": {
776               "displayName": "vnf_config_template_version",
777               "command": "get_input",
778               "inputName": "2017488_pasqualevpe0_vnf_config_template_version"
779             },
780             "bandwidth_units": {
781               "displayName": "bandwidth_units",
782               "command": "get_input",
783               "inputName": "pasqualevpe0_bandwidth_units"
784             },
785             "bandwidth": {
786               "displayName": "bandwidth",
787               "command": "get_input",
788               "inputName": "pasqualevpe0_bandwidth"
789             },
790             "AIC_CLLI": {
791               "displayName": "AIC_CLLI",
792               "command": "get_input",
793               "inputName": "2017488_pasqualevpe0_AIC_CLLI"
794             },
795             "ASN": {
796               "displayName": "ASN",
797               "command": "get_input",
798               "inputName": "2017488_pasqualevpe0_ASN"
799             },
800             "vnf_instance_name": {
801               "displayName": "vnf_instance_name",
802               "command": "get_input",
803               "inputName": "2017488_pasqualevpe0_vnf_instance_name"
804             }
805           },
806           "properties": {
807             "vmxvre_retype": "RE-VMX",
808             "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version",
809             "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d",
810             "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9",
811             "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF",
812             "int_ctl_net_name": "VMX-INTXI",
813             "vmx_int_ctl_prefix": "10.0.0.10",
814             "sriov43_net_id": "da349ca1-6de9-4548-be88-2d88e99bfef5",
815             "sriov42_net_id": "760669ba-013d-4d9b-b0e7-4151fe2e6279",
816             "sriov41_net_id": "25ad52d5-c165-40f8-b3b0-ddfc2373280a",
817             "nf_type": "vPE",
818             "vmxvpfe_int_ctl_ip_1": "10.0.0.10",
819             "is_AVPN_service": "false",
820             "vmx_RSG_name": "vREXI-affinity",
821             "vmx_int_ctl_forwarding": "l2",
822             "vmxvre_oam_ip_0": "10.0.0.10",
823             "vmxvpfe_sriov44_0_port_mac": "00:11:22:EF:AC:DF",
824             "vmxvpfe_sriov41_0_port_vlanstrip": "false",
825             "vmxvpfe_sriov42_0_port_vlanfilter": "4001",
826             "vmxvpfe_sriov44_0_port_unknownunicastallow": "true",
827             "vmxvre_image_name_0": "VRE-ENGINE_17.2-S2.1.qcow2",
828             "vmxvre_instance": "0",
829             "vmxvpfe_sriov43_0_port_mac": "00:11:22:EF:AC:DF",
830             "vmxvre_flavor_name": "ns.c1r16d32.v5",
831             "vmxvpfe_volume_size_0": "40.0",
832             "vmxvpfe_sriov43_0_port_vlanfilter": "4001",
833             "nf_naming": "{ecomp_generated_naming=false}",
834             "nf_naming_code": "Navneet",
835             "vmxvre_name_0": "vREXI",
836             "vmxvpfe_sriov42_0_port_vlanstrip": "false",
837             "vmxvpfe_volume_name_0": "vPFEXI_FBVolume",
838             "vmx_RSG_id": "bd89a33c-13c3-4a04-8fde-1a57eb123141",
839             "vmxvpfe_image_name_0": "VPE_ROUTING-ENGINE_17.2R1-S2.1.qcow2",
840             "vmxvpfe_sriov43_0_port_unknownunicastallow": "true",
841             "vmxvpfe_sriov44_0_port_unknownmulticastallow": "true",
842             "vmxvre_console": "vidconsole",
843             "vmxvpfe_sriov44_0_port_vlanfilter": "4001",
844             "vmxvpfe_sriov42_0_port_mac": "00:11:22:EF:AC:DF",
845             "vmxvpfe_volume_id_0": "47cede15-da2f-4397-a101-aa683220aff3",
846             "vmxvpfe_sriov42_0_port_unknownmulticastallow": "true",
847             "vmxvpfe_sriov44_0_port_vlanstrip": "false",
848             "vf_module_id": "123",
849             "nf_function": "JAI",
850             "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true",
851             "vmxvre_int_ctl_ip_0": "10.0.0.10",
852             "ecomp_generated_naming": "false",
853             "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI",
854             "vnf_name": "mtnj309me6vre",
855             "vmxvpfe_sriov41_0_port_unknownunicastallow": "true",
856             "vmxvre_volume_type_1": "HITACHI",
857             "vmxvpfe_sriov44_0_port_broadcastallow": "true",
858             "vmxvre_volume_type_0": "HITACHI",
859             "vmxvpfe_volume_type_0": "HITACHI",
860             "vmxvpfe_sriov43_0_port_broadcastallow": "true",
861             "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units",
862             "vnf_id": "123",
863             "vmxvre_oam_prefix": "24",
864             "availability_zone_0": "mtpocfo-kvm-az01",
865             "ASN": "get_input:2017488_pasqualevpe0_ASN",
866             "vmxvre_chassis_i2cid": "161",
867             "vmxvpfe_name_0": "vPFEXI",
868             "bandwidth": "get_input:pasqualevpe0_bandwidth",
869             "availability_zone_max_count": "1",
870             "vmxvre_volume_size_0": "45.0",
871             "vmxvre_volume_size_1": "50.0",
872             "vmxvpfe_sriov42_0_port_broadcastallow": "true",
873             "vmxvre_oam_gateway": "10.0.0.10",
874             "vmxvre_volume_name_1": "vREXI_FAVolume",
875             "vmxvre_ore_present": "0",
876             "vmxvre_volume_name_0": "vREXI_FBVolume",
877             "vmxvre_type": "0",
878             "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name",
879             "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true",
880             "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429",
881             "vmx_int_ctl_len": "24",
882             "vmxvpfe_sriov43_0_port_vlanstrip": "false",
883             "vmxvpfe_sriov41_0_port_broadcastallow": "true",
884             "vmxvre_volume_id_1": "6e86797e-03cd-4fdc-ba72-2957119c746d",
885             "vmxvpfe_sriov41_0_port_vlanfilter": "4001",
886             "nf_role": "Testing",
887             "vmxvre_volume_id_0": "f4eacb79-f687-4e9d-b760-21847c8bb15a",
888             "vmxvpfe_sriov42_0_port_unknownunicastallow": "true",
889             "vmxvpfe_flavor_name": "ns.c20r16d25.v5"
890           },
891           "type": "VF",
892           "modelCustomizationName": "2017-388_PASQUALE-vPE 1",
893           "vfModules": {},
894           "volumeGroups": {},
895           "vfcInstanceGroups": {}
896         },
897         "2017-388_PASQUALE-vPE 0": {
898           "uuid": "afacccf6-397d-45d6-b5ae-94c39734b168",
899           "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8",
900           "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",
901           "name": "2017-388_PASQUALE-vPE",
902           "version": "4.0",
903           "customizationUuid": "b3c76f73-eeb5-4fb6-9d31-72a889f1811c",
904           "inputs": {
905             "vnf_config_template_version": {
906               "type": "string",
907               "description": "VPE Software Version",
908               "entry_schema": null,
909               "inputProperties": null,
910               "constraints": [],
911               "required": true,
912               "default": "17.2"
913             },
914             "bandwidth_units": {
915               "type": "string",
916               "description": "Units of bandwidth",
917               "entry_schema": null,
918               "inputProperties": null,
919               "constraints": [],
920               "required": true,
921               "default": "Gbps"
922             },
923             "bandwidth": {
924               "type": "string",
925               "description": "Requested VPE bandwidth",
926               "entry_schema": null,
927               "inputProperties": null,
928               "constraints": [],
929               "required": true,
930               "default": "10"
931             },
932             "AIC_CLLI": {
933               "type": "string",
934               "description": "AIC Site CLLI",
935               "entry_schema": null,
936               "inputProperties": null,
937               "constraints": [],
938               "required": true,
939               "default": "ATLMY8GA"
940             },
941             "ASN": {
942               "type": "string",
943               "description": "AV/PE",
944               "entry_schema": null,
945               "inputProperties": null,
946               "constraints": [],
947               "required": true,
948               "default": "AV_vPE"
949             },
950             "vnf_instance_name": {
951               "type": "string",
952               "description": "The hostname assigned to the vpe.",
953               "entry_schema": null,
954               "inputProperties": null,
955               "constraints": [],
956               "required": true,
957               "default": "mtnj309me6"
958             }
959           },
960           "commands": {
961             "vnf_config_template_version": {
962               "displayName": "vnf_config_template_version",
963               "command": "get_input",
964               "inputName": "2017488_pasqualevpe0_vnf_config_template_version"
965             },
966             "bandwidth_units": {
967               "displayName": "bandwidth_units",
968               "command": "get_input",
969               "inputName": "pasqualevpe0_bandwidth_units"
970             },
971             "bandwidth": {
972               "displayName": "bandwidth",
973               "command": "get_input",
974               "inputName": "pasqualevpe0_bandwidth"
975             },
976             "AIC_CLLI": {
977               "displayName": "AIC_CLLI",
978               "command": "get_input",
979               "inputName": "2017488_pasqualevpe0_AIC_CLLI"
980             },
981             "ASN": {
982               "displayName": "ASN",
983               "command": "get_input",
984               "inputName": "2017488_pasqualevpe0_ASN"
985             },
986             "vnf_instance_name": {
987               "displayName": "vnf_instance_name",
988               "command": "get_input",
989               "inputName": "2017488_pasqualevpe0_vnf_instance_name"
990             }
991           },
992           "properties": {
993             "vmxvre_retype": "RE-VMX",
994             "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version",
995             "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d",
996             "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9",
997             "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF",
998             "int_ctl_net_name": "VMX-INTXI",
999             "vmx_int_ctl_prefix": "10.0.0.10",
1000             "sriov43_net_id": "da349ca1-6de9-4548-be88-2d88e99bfef5",
1001             "sriov42_net_id": "760669ba-013d-4d9b-b0e7-4151fe2e6279",
1002             "sriov41_net_id": "25ad52d5-c165-40f8-b3b0-ddfc2373280a",
1003             "nf_type": "vPE",
1004             "vmxvpfe_int_ctl_ip_1": "10.0.0.10",
1005             "is_AVPN_service": "false",
1006             "vmx_RSG_name": "vREXI-affinity",
1007             "vmx_int_ctl_forwarding": "l2",
1008             "vmxvre_oam_ip_0": "10.0.0.10",
1009             "vmxvpfe_sriov44_0_port_mac": "00:11:22:EF:AC:DF",
1010             "vmxvpfe_sriov41_0_port_vlanstrip": "false",
1011             "vmxvpfe_sriov42_0_port_vlanfilter": "4001",
1012             "vmxvpfe_sriov44_0_port_unknownunicastallow": "true",
1013             "vmxvre_image_name_0": "VRE-ENGINE_17.2-S2.1.qcow2",
1014             "vmxvre_instance": "0",
1015             "vmxvpfe_sriov43_0_port_mac": "00:11:22:EF:AC:DF",
1016             "vmxvre_flavor_name": "ns.c1r16d32.v5",
1017             "vmxvpfe_volume_size_0": "40.0",
1018             "vmxvpfe_sriov43_0_port_vlanfilter": "4001",
1019             "nf_naming": "{ecomp_generated_naming=false}",
1020             "nf_naming_code": "Navneet",
1021             "vmxvre_name_0": "vREXI",
1022             "vmxvpfe_sriov42_0_port_vlanstrip": "false",
1023             "vmxvpfe_volume_name_0": "vPFEXI_FBVolume",
1024             "vmx_RSG_id": "bd89a33c-13c3-4a04-8fde-1a57eb123141",
1025             "vmxvpfe_image_name_0": "VPE_ROUTING-ENGINE_17.2R1-S2.1.qcow2",
1026             "vmxvpfe_sriov43_0_port_unknownunicastallow": "true",
1027             "vmxvpfe_sriov44_0_port_unknownmulticastallow": "true",
1028             "vmxvre_console": "vidconsole",
1029             "vmxvpfe_sriov44_0_port_vlanfilter": "4001",
1030             "vmxvpfe_sriov42_0_port_mac": "00:11:22:EF:AC:DF",
1031             "vmxvpfe_volume_id_0": "47cede15-da2f-4397-a101-aa683220aff3",
1032             "vmxvpfe_sriov42_0_port_unknownmulticastallow": "true",
1033             "min_instances": "1",
1034             "vmxvpfe_sriov44_0_port_vlanstrip": "false",
1035             "vf_module_id": "123",
1036             "nf_function": "JAI",
1037             "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true",
1038             "vmxvre_int_ctl_ip_0": "10.0.0.10",
1039             "ecomp_generated_naming": "false",
1040             "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI",
1041             "vnf_name": "mtnj309me6vre",
1042             "vmxvpfe_sriov41_0_port_unknownunicastallow": "true",
1043             "vmxvre_volume_type_1": "HITACHI",
1044             "vmxvpfe_sriov44_0_port_broadcastallow": "true",
1045             "vmxvre_volume_type_0": "HITACHI",
1046             "vmxvpfe_volume_type_0": "HITACHI",
1047             "vmxvpfe_sriov43_0_port_broadcastallow": "true",
1048             "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units",
1049             "vnf_id": "123",
1050             "vmxvre_oam_prefix": "24",
1051             "availability_zone_0": "mtpocfo-kvm-az01",
1052             "ASN": "get_input:2017488_pasqualevpe0_ASN",
1053             "vmxvre_chassis_i2cid": "161",
1054             "vmxvpfe_name_0": "vPFEXI",
1055             "bandwidth": "get_input:pasqualevpe0_bandwidth",
1056             "availability_zone_max_count": "1",
1057             "vmxvre_volume_size_0": "45.0",
1058             "vmxvre_volume_size_1": "50.0",
1059             "vmxvpfe_sriov42_0_port_broadcastallow": "true",
1060             "vmxvre_oam_gateway": "10.0.0.10",
1061             "vmxvre_volume_name_1": "vREXI_FAVolume",
1062             "vmxvre_ore_present": "0",
1063             "vmxvre_volume_name_0": "vREXI_FBVolume",
1064             "vmxvre_type": "0",
1065             "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name",
1066             "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true",
1067             "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429",
1068             "vmx_int_ctl_len": "24",
1069             "vmxvpfe_sriov43_0_port_vlanstrip": "false",
1070             "vmxvpfe_sriov41_0_port_broadcastallow": "true",
1071             "vmxvre_volume_id_1": "6e86797e-03cd-4fdc-ba72-2957119c746d",
1072             "vmxvpfe_sriov41_0_port_vlanfilter": "4001",
1073             "nf_role": "Testing",
1074             "vmxvre_volume_id_0": "f4eacb79-f687-4e9d-b760-21847c8bb15a",
1075             "vmxvpfe_sriov42_0_port_unknownunicastallow": "true",
1076             "vmxvpfe_flavor_name": "ns.c20r16d25.v5"
1077           },
1078           "type": "VF",
1079           "modelCustomizationName": "2017-388_PASQUALE-vPE 0",
1080           "vfModules": {},
1081           "volumeGroups": {},
1082           "vfcInstanceGroups": {}
1083         },
1084         "2017-488_PASQUALE-vPE 0": {
1085           "uuid": "69e09f68-8b63-4cc9-b9ff-860960b5db09",
1086           "invariantUuid": "72e465fe-71b1-4e7b-b5ed-9496118ff7a8",
1087           "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",
1088           "name": "2017-488_PASQUALE-vPE",
1089           "version": "5.0",
1090           "customizationUuid": "1da7b585-5e61-4993-b95e-8e6606c81e45",
1091           "inputs": {
1092             "vnf_config_template_version": {
1093               "type": "string",
1094               "description": "VPE Software Version",
1095               "entry_schema": null,
1096               "inputProperties": null,
1097               "constraints": [],
1098               "required": true,
1099               "default": "17.2"
1100             },
1101             "bandwidth_units": {
1102               "type": "string",
1103               "description": "Units of bandwidth",
1104               "entry_schema": null,
1105               "inputProperties": null,
1106               "constraints": [],
1107               "required": true,
1108               "default": "Gbps"
1109             },
1110             "bandwidth": {
1111               "type": "string",
1112               "description": "Requested VPE bandwidth",
1113               "entry_schema": null,
1114               "inputProperties": null,
1115               "constraints": [],
1116               "required": true,
1117               "default": "10"
1118             },
1119             "AIC_CLLI": {
1120               "type": "string",
1121               "description": "AIC Site CLLI",
1122               "entry_schema": null,
1123               "inputProperties": null,
1124               "constraints": [],
1125               "required": true,
1126               "default": "ATLMY8GA"
1127             },
1128             "ASN": {
1129               "type": "string",
1130               "description": "AV/PE",
1131               "entry_schema": null,
1132               "inputProperties": null,
1133               "constraints": [],
1134               "required": true,
1135               "default": "AV_vPE"
1136             },
1137             "vnf_instance_name": {
1138               "type": "string",
1139               "description": "The hostname assigned to the vpe.",
1140               "entry_schema": null,
1141               "inputProperties": null,
1142               "constraints": [],
1143               "required": true,
1144               "default": "mtnj309me6"
1145             }
1146           },
1147           "commands": {
1148             "vnf_config_template_version": {
1149               "displayName": "vnf_config_template_version",
1150               "command": "get_input",
1151               "inputName": "2017488_pasqualevpe0_vnf_config_template_version"
1152             },
1153             "bandwidth_units": {
1154               "displayName": "bandwidth_units",
1155               "command": "get_input",
1156               "inputName": "pasqualevpe0_bandwidth_units"
1157             },
1158             "bandwidth": {
1159               "displayName": "bandwidth",
1160               "command": "get_input",
1161               "inputName": "pasqualevpe0_bandwidth"
1162             },
1163             "AIC_CLLI": {
1164               "displayName": "AIC_CLLI",
1165               "command": "get_input",
1166               "inputName": "2017488_pasqualevpe0_AIC_CLLI"
1167             },
1168             "ASN": {
1169               "displayName": "ASN",
1170               "command": "get_input",
1171               "inputName": "2017488_pasqualevpe0_ASN"
1172             },
1173             "vnf_instance_name": {
1174               "displayName": "vnf_instance_name",
1175               "command": "get_input",
1176               "inputName": "2017488_pasqualevpe0_vnf_instance_name"
1177             }
1178           },
1179           "properties": {
1180             "vmxvre_retype": "RE-VMX",
1181             "vnf_config_template_version": "get_input:2017488_pasqualevpe0_vnf_config_template_version",
1182             "sriov44_net_id": "48d399b3-11ee-48a8-94d2-f0ea94d6be8d",
1183             "int_ctl_net_id": "2f323477-6936-4d01-ac53-d849430281d9",
1184             "vmxvpfe_sriov41_0_port_mac": "00:11:22:EF:AC:DF",
1185             "int_ctl_net_name": "VMX-INTXI",
1186             "vmx_int_ctl_prefix": "10.0.0.10",
1187             "sriov43_net_id": "da349ca1-6de9-4548-be88-2d88e99bfef5",
1188             "sriov42_net_id": "760669ba-013d-4d9b-b0e7-4151fe2e6279",
1189             "sriov41_net_id": "25ad52d5-c165-40f8-b3b0-ddfc2373280a",
1190             "nf_type": "vPE",
1191             "vmxvpfe_int_ctl_ip_1": "10.0.0.10",
1192             "is_AVPN_service": "false",
1193             "vmx_RSG_name": "vREXI-affinity",
1194             "vmx_int_ctl_forwarding": "l2",
1195             "vmxvre_oam_ip_0": "10.0.0.10",
1196             "vmxvpfe_sriov44_0_port_mac": "00:11:22:EF:AC:DF",
1197             "vmxvpfe_sriov41_0_port_vlanstrip": "false",
1198             "vmxvpfe_sriov42_0_port_vlanfilter": "4001",
1199             "vmxvpfe_sriov44_0_port_unknownunicastallow": "true",
1200             "vmxvre_image_name_0": "VRE-ENGINE_17.2-S2.1.qcow2",
1201             "vmxvre_instance": "0",
1202             "vmxvpfe_sriov43_0_port_mac": "00:11:22:EF:AC:DF",
1203             "vmxvre_flavor_name": "ns.c1r16d32.v5",
1204             "vmxvpfe_volume_size_0": "40.0",
1205             "vmxvpfe_sriov43_0_port_vlanfilter": "4001",
1206             "nf_naming": "{ecomp_generated_naming=false}",
1207             "nf_naming_code": "Navneet",
1208             "vmxvre_name_0": "vREXI",
1209             "vmxvpfe_sriov42_0_port_vlanstrip": "false",
1210             "vmxvpfe_volume_name_0": "vPFEXI_FBVolume",
1211             "max_instances": "3",
1212             "vmx_RSG_id": "bd89a33c-13c3-4a04-8fde-1a57eb123141",
1213             "vmxvpfe_image_name_0": "VPE_ROUTING-ENGINE_17.2R1-S2.1.qcow2",
1214             "vmxvpfe_sriov43_0_port_unknownunicastallow": "true",
1215             "vmxvpfe_sriov44_0_port_unknownmulticastallow": "true",
1216             "vmxvre_console": "vidconsole",
1217             "vmxvpfe_sriov44_0_port_vlanfilter": "4001",
1218             "vmxvpfe_sriov42_0_port_mac": "00:11:22:EF:AC:DF",
1219             "vmxvpfe_volume_id_0": "47cede15-da2f-4397-a101-aa683220aff3",
1220             "vmxvpfe_sriov42_0_port_unknownmulticastallow": "true",
1221             "min_instances": "1",
1222             "vmxvpfe_sriov44_0_port_vlanstrip": "false",
1223             "vf_module_id": "123",
1224             "nf_function": "JAI",
1225             "vmxvpfe_sriov43_0_port_unknownmulticastallow": "true",
1226             "vmxvre_int_ctl_ip_0": "10.0.0.10",
1227             "ecomp_generated_naming": "false",
1228             "AIC_CLLI": "get_input:2017488_pasqualevpe0_AIC_CLLI",
1229             "vnf_name": "mtnj309me6vre",
1230             "vmxvpfe_sriov41_0_port_unknownunicastallow": "true",
1231             "vmxvre_volume_type_1": "HITACHI",
1232             "vmxvpfe_sriov44_0_port_broadcastallow": "true",
1233             "vmxvre_volume_type_0": "HITACHI",
1234             "vmxvpfe_volume_type_0": "HITACHI",
1235             "vmxvpfe_sriov43_0_port_broadcastallow": "true",
1236             "bandwidth_units": "get_input:pasqualevpe0_bandwidth_units",
1237             "vnf_id": "123",
1238             "vmxvre_oam_prefix": "24",
1239             "availability_zone_0": "mtpocfo-kvm-az01",
1240             "ASN": "get_input:2017488_pasqualevpe0_ASN",
1241             "vmxvre_chassis_i2cid": "161",
1242             "vmxvpfe_name_0": "vPFEXI",
1243             "bandwidth": "get_input:pasqualevpe0_bandwidth",
1244             "availability_zone_max_count": "1",
1245             "vmxvre_volume_size_0": "45.0",
1246             "vmxvre_volume_size_1": "50.0",
1247             "vmxvpfe_sriov42_0_port_broadcastallow": "true",
1248             "vmxvre_oam_gateway": "10.0.0.10",
1249             "vmxvre_volume_name_1": "vREXI_FAVolume",
1250             "vmxvre_ore_present": "0",
1251             "vmxvre_volume_name_0": "vREXI_FBVolume",
1252             "vmxvre_type": "0",
1253             "vnf_instance_name": "get_input:2017488_pasqualevpe0_vnf_instance_name",
1254             "vmxvpfe_sriov41_0_port_unknownmulticastallow": "true",
1255             "oam_net_id": "b95eeb1d-d55d-4827-abb4-8ebb94941429",
1256             "vmx_int_ctl_len": "24",
1257             "vmxvpfe_sriov43_0_port_vlanstrip": "false",
1258             "vmxvpfe_sriov41_0_port_broadcastallow": "true",
1259             "vmxvre_volume_id_1": "6e86797e-03cd-4fdc-ba72-2957119c746d",
1260             "vmxvpfe_sriov41_0_port_vlanfilter": "4001",
1261             "nf_role": "Testing",
1262             "vmxvre_volume_id_0": "f4eacb79-f687-4e9d-b760-21847c8bb15a",
1263             "vmxvpfe_sriov42_0_port_unknownunicastallow": "true",
1264             "vmxvpfe_flavor_name": "ns.c20r16d25.v5"
1265           },
1266           "type": "VF",
1267           "modelCustomizationName": "2017-488_PASQUALE-vPE 0",
1268           "vfModules": {
1269             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1": {
1270               "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
1271               "invariantUuid": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
1272               "customizationUuid": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
1273               "description": null,
1274               "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1275               "version": "6",
1276               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1277               "properties": {
1278                 "minCountInstances": 0,
1279                 "maxCountInstances": null,
1280                 "initialCount": 0,
1281                 "vfModuleLabel": "PASQUALE_vRE_BV",
1282                 "baseModule": false
1283               },
1284               "inputs": {
1285                 "vnf_config_template_version": {
1286                   "type": "string",
1287                   "description": "VPE Software Version",
1288                   "entry_schema": null,
1289                   "inputProperties": {
1290                     "sourceType": "HEAT",
1291                     "vfModuleLabel": "PASQUALE_vRE_BV",
1292                     "paramName": "vnf_config_template_version"
1293                   },
1294                   "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version",
1295                   "constraints": null,
1296                   "required": true,
1297                   "default": "17.2"
1298                 },
1299                 "bandwidth_units": {
1300                   "type": "string",
1301                   "description": "Units of bandwidth",
1302                   "entry_schema": null,
1303                   "inputProperties": {
1304                     "sourceType": "HEAT",
1305                     "vfModuleLabel": "PASQUALE_vRE_BV",
1306                     "paramName": "bandwidth_units"
1307                   },
1308                   "fromInputName": "pasqualevpe0_bandwidth_units",
1309                   "constraints": null,
1310                   "required": true,
1311                   "default": "Gbps"
1312                 },
1313                 "bandwidth": {
1314                   "type": "string",
1315                   "description": "Requested VPE bandwidth",
1316                   "entry_schema": null,
1317                   "inputProperties": {
1318                     "sourceType": "HEAT",
1319                     "vfModuleLabel": "PASQUALE_vRE_BV",
1320                     "paramName": "bandwidth"
1321                   },
1322                   "fromInputName": "pasqualevpe0_bandwidth",
1323                   "constraints": null,
1324                   "required": true,
1325                   "default": "10"
1326                 },
1327                 "AIC_CLLI": {
1328                   "type": "string",
1329                   "description": "AIC Site CLLI",
1330                   "entry_schema": null,
1331                   "inputProperties": {
1332                     "sourceType": "HEAT",
1333                     "vfModuleLabel": "PASQUALE_vRE_BV",
1334                     "paramName": "AIC_CLLI"
1335                   },
1336                   "fromInputName": "2017488_pasqualevpe0_AIC_CLLI",
1337                   "constraints": null,
1338                   "required": true,
1339                   "default": "ATLMY8GA"
1340                 },
1341                 "vnf_instance_name": {
1342                   "type": "string",
1343                   "description": "The hostname assigned to the vpe.",
1344                   "entry_schema": null,
1345                   "inputProperties": {
1346                     "sourceType": "HEAT",
1347                     "vfModuleLabel": "PASQUALE_vRE_BV",
1348                     "paramName": "vnf_instance_name"
1349                   },
1350                   "fromInputName": "2017488_pasqualevpe0_vnf_instance_name",
1351                   "constraints": null,
1352                   "required": true,
1353                   "default": "mtnj309me6"
1354                 }
1355               },
1356               "volumeGroupAllowed": true
1357             },
1358             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": {
1359               "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db",
1360               "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091",
1361               "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3",
1362               "description": null,
1363               "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0",
1364               "version": "5",
1365               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0",
1366               "properties": {
1367                 "minCountInstances": 1,
1368                 "maxCountInstances": 1,
1369                 "initialCount": 1,
1370                 "vfModuleLabel": "PASQUALE_base_vPE_BV",
1371                 "baseModule": true
1372               },
1373               "inputs": {},
1374               "volumeGroupAllowed": false
1375             },
1376             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": {
1377               "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a",
1378               "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339",
1379               "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557",
1380               "description": null,
1381               "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1382               "version": "6",
1383               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1384               "properties": {
1385                 "minCountInstances": 0,
1386                 "maxCountInstances": null,
1387                 "initialCount": 0,
1388                 "vfModuleLabel": "PASQUALE_vPFE_BV",
1389                 "baseModule": false
1390               },
1391               "inputs": {},
1392               "volumeGroupAllowed": true
1393             }
1394           },
1395           "volumeGroups": {
1396             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1": {
1397               "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
1398               "invariantUuid": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
1399               "customizationUuid": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
1400               "description": null,
1401               "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1402               "version": "6",
1403               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1404               "properties": {
1405                 "minCountInstances": 0,
1406                 "maxCountInstances": null,
1407                 "initialCount": 0,
1408                 "vfModuleLabel": "PASQUALE_vRE_BV",
1409                 "baseModule": false
1410               },
1411               "inputs": {
1412                 "vnf_config_template_version": {
1413                   "type": "string",
1414                   "description": "VPE Software Version",
1415                   "entry_schema": null,
1416                   "inputProperties": {
1417                     "sourceType": "HEAT",
1418                     "vfModuleLabel": "PASQUALE_vRE_BV",
1419                     "paramName": "vnf_config_template_version"
1420                   },
1421                   "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version",
1422                   "constraints": null,
1423                   "required": true,
1424                   "default": "17.2"
1425                 },
1426                 "bandwidth_units": {
1427                   "type": "string",
1428                   "description": "Units of bandwidth",
1429                   "entry_schema": null,
1430                   "inputProperties": {
1431                     "sourceType": "HEAT",
1432                     "vfModuleLabel": "PASQUALE_vRE_BV",
1433                     "paramName": "bandwidth_units"
1434                   },
1435                   "fromInputName": "pasqualevpe0_bandwidth_units",
1436                   "constraints": null,
1437                   "required": true,
1438                   "default": "Gbps"
1439                 },
1440                 "bandwidth": {
1441                   "type": "string",
1442                   "description": "Requested VPE bandwidth",
1443                   "entry_schema": null,
1444                   "inputProperties": {
1445                     "sourceType": "HEAT",
1446                     "vfModuleLabel": "PASQUALE_vRE_BV",
1447                     "paramName": "bandwidth"
1448                   },
1449                   "fromInputName": "pasqualevpe0_bandwidth",
1450                   "constraints": null,
1451                   "required": true,
1452                   "default": "10"
1453                 },
1454                 "AIC_CLLI": {
1455                   "type": "string",
1456                   "description": "AIC Site CLLI",
1457                   "entry_schema": null,
1458                   "inputProperties": {
1459                     "sourceType": "HEAT",
1460                     "vfModuleLabel": "PASQUALE_vRE_BV",
1461                     "paramName": "AIC_CLLI"
1462                   },
1463                   "fromInputName": "2017488_pasqualevpe0_AIC_CLLI",
1464                   "constraints": null,
1465                   "required": true,
1466                   "default": "ATLMY8GA"
1467                 },
1468                 "vnf_instance_name": {
1469                   "type": "string",
1470                   "description": "The hostname assigned to the vpe.",
1471                   "entry_schema": null,
1472                   "inputProperties": {
1473                     "sourceType": "HEAT",
1474                     "vfModuleLabel": "PASQUALE_vRE_BV",
1475                     "paramName": "vnf_instance_name"
1476                   },
1477                   "fromInputName": "2017488_pasqualevpe0_vnf_instance_name",
1478                   "constraints": null,
1479                   "required": true,
1480                   "default": "mtnj309me6"
1481                 }
1482               }
1483             },
1484             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": {
1485               "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a",
1486               "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339",
1487               "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557",
1488               "description": null,
1489               "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1490               "version": "6",
1491               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1492               "properties": {
1493                 "minCountInstances": 0,
1494                 "maxCountInstances": null,
1495                 "initialCount": 0,
1496                 "vfModuleLabel": "PASQUALE_vPFE_BV",
1497                 "baseModule": false
1498               },
1499               "inputs": {}
1500             }
1501           },
1502           "vfcInstanceGroups": {}
1503         }
1504       },
1505       "networks": {},
1506       "collectionResources": {},
1507       "configurations": {},
1508       "fabricConfigurations": {},
1509       "serviceProxies": {},
1510       "vfModules": {
1511         "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1": {
1512           "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
1513           "invariantUuid": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
1514           "customizationUuid": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
1515           "description": null,
1516           "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1517           "version": "6",
1518           "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1519           "properties": {
1520             "minCountInstances": 0,
1521             "maxCountInstances": null,
1522             "initialCount": 0,
1523             "vfModuleLabel": "PASQUALE_vRE_BV",
1524             "baseModule": false
1525           },
1526           "inputs": {
1527             "vnf_config_template_version": {
1528               "type": "string",
1529               "description": "VPE Software Version",
1530               "entry_schema": null,
1531               "inputProperties": {
1532                 "sourceType": "HEAT",
1533                 "vfModuleLabel": "PASQUALE_vRE_BV",
1534                 "paramName": "vnf_config_template_version"
1535               },
1536               "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version",
1537               "constraints": null,
1538               "required": true,
1539               "default": "17.2"
1540             },
1541             "bandwidth_units": {
1542               "type": "string",
1543               "description": "Units of bandwidth",
1544               "entry_schema": null,
1545               "inputProperties": {
1546                 "sourceType": "HEAT",
1547                 "vfModuleLabel": "PASQUALE_vRE_BV",
1548                 "paramName": "bandwidth_units"
1549               },
1550               "fromInputName": "pasqualevpe0_bandwidth_units",
1551               "constraints": null,
1552               "required": true,
1553               "default": "Gbps"
1554             },
1555             "bandwidth": {
1556               "type": "string",
1557               "description": "Requested VPE bandwidth",
1558               "entry_schema": null,
1559               "inputProperties": {
1560                 "sourceType": "HEAT",
1561                 "vfModuleLabel": "PASQUALE_vRE_BV",
1562                 "paramName": "bandwidth"
1563               },
1564               "fromInputName": "pasqualevpe0_bandwidth",
1565               "constraints": null,
1566               "required": true,
1567               "default": "10"
1568             },
1569             "AIC_CLLI": {
1570               "type": "string",
1571               "description": "AIC Site CLLI",
1572               "entry_schema": null,
1573               "inputProperties": {
1574                 "sourceType": "HEAT",
1575                 "vfModuleLabel": "PASQUALE_vRE_BV",
1576                 "paramName": "AIC_CLLI"
1577               },
1578               "fromInputName": "2017488_pasqualevpe0_AIC_CLLI",
1579               "constraints": null,
1580               "required": true,
1581               "default": "ATLMY8GA"
1582             },
1583             "vnf_instance_name": {
1584               "type": "string",
1585               "description": "The hostname assigned to the vpe.",
1586               "entry_schema": null,
1587               "inputProperties": {
1588                 "sourceType": "HEAT",
1589                 "vfModuleLabel": "PASQUALE_vRE_BV",
1590                 "paramName": "vnf_instance_name"
1591               },
1592               "fromInputName": "2017488_pasqualevpe0_vnf_instance_name",
1593               "constraints": null,
1594               "required": true,
1595               "default": "mtnj309me6"
1596             }
1597           },
1598           "volumeGroupAllowed": true
1599         },
1600         "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": {
1601           "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db",
1602           "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091",
1603           "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3",
1604           "description": null,
1605           "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0",
1606           "version": "5",
1607           "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0",
1608           "properties": {
1609             "minCountInstances": 1,
1610             "maxCountInstances": 1,
1611             "initialCount": 1,
1612             "vfModuleLabel": "PASQUALE_base_vPE_BV",
1613             "baseModule": true
1614           },
1615           "inputs": {},
1616           "volumeGroupAllowed": false
1617         },
1618         "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": {
1619           "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a",
1620           "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339",
1621           "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557",
1622           "description": null,
1623           "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1624           "version": "6",
1625           "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1626           "properties": {
1627             "minCountInstances": 0,
1628             "maxCountInstances": null,
1629             "initialCount": 0,
1630             "vfModuleLabel": "PASQUALE_vPFE_BV",
1631             "baseModule": false
1632           },
1633           "inputs": {},
1634           "volumeGroupAllowed": true
1635         }
1636       },
1637       "volumeGroups": {
1638         "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1": {
1639           "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
1640           "invariantUuid": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
1641           "customizationUuid": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
1642           "description": null,
1643           "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1644           "version": "6",
1645           "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1646           "properties": {
1647             "minCountInstances": 0,
1648             "maxCountInstances": null,
1649             "initialCount": 0,
1650             "vfModuleLabel": "PASQUALE_vRE_BV",
1651             "baseModule": false
1652           },
1653           "inputs": {
1654             "vnf_config_template_version": {
1655               "type": "string",
1656               "description": "VPE Software Version",
1657               "entry_schema": null,
1658               "inputProperties": {
1659                 "sourceType": "HEAT",
1660                 "vfModuleLabel": "PASQUALE_vRE_BV",
1661                 "paramName": "vnf_config_template_version"
1662               },
1663               "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version",
1664               "constraints": null,
1665               "required": true,
1666               "default": "17.2"
1667             },
1668             "bandwidth_units": {
1669               "type": "string",
1670               "description": "Units of bandwidth",
1671               "entry_schema": null,
1672               "inputProperties": {
1673                 "sourceType": "HEAT",
1674                 "vfModuleLabel": "PASQUALE_vRE_BV",
1675                 "paramName": "bandwidth_units"
1676               },
1677               "fromInputName": "pasqualevpe0_bandwidth_units",
1678               "constraints": null,
1679               "required": true,
1680               "default": "Gbps"
1681             },
1682             "bandwidth": {
1683               "type": "string",
1684               "description": "Requested VPE bandwidth",
1685               "entry_schema": null,
1686               "inputProperties": {
1687                 "sourceType": "HEAT",
1688                 "vfModuleLabel": "PASQUALE_vRE_BV",
1689                 "paramName": "bandwidth"
1690               },
1691               "fromInputName": "pasqualevpe0_bandwidth",
1692               "constraints": null,
1693               "required": true,
1694               "default": "10"
1695             },
1696             "AIC_CLLI": {
1697               "type": "string",
1698               "description": "AIC Site CLLI",
1699               "entry_schema": null,
1700               "inputProperties": {
1701                 "sourceType": "HEAT",
1702                 "vfModuleLabel": "PASQUALE_vRE_BV",
1703                 "paramName": "AIC_CLLI"
1704               },
1705               "fromInputName": "2017488_pasqualevpe0_AIC_CLLI",
1706               "constraints": null,
1707               "required": true,
1708               "default": "ATLMY8GA"
1709             },
1710             "vnf_instance_name": {
1711               "type": "string",
1712               "description": "The hostname assigned to the vpe.",
1713               "entry_schema": null,
1714               "inputProperties": {
1715                 "sourceType": "HEAT",
1716                 "vfModuleLabel": "PASQUALE_vRE_BV",
1717                 "paramName": "vnf_instance_name"
1718               },
1719               "fromInputName": "2017488_pasqualevpe0_vnf_instance_name",
1720               "constraints": null,
1721               "required": true,
1722               "default": "mtnj309me6"
1723             }
1724           }
1725         },
1726         "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": {
1727           "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a",
1728           "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339",
1729           "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557",
1730           "description": null,
1731           "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1732           "version": "6",
1733           "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1734           "properties": {
1735             "minCountInstances": 0,
1736             "maxCountInstances": null,
1737             "initialCount": 0,
1738             "vfModuleLabel": "PASQUALE_vPFE_BV",
1739             "baseModule": false
1740           },
1741           "inputs": {}
1742         }
1743       },
1744       "pnfs": {}
1745     }
1746   }
1747 });