8bdab11e32c156689590ba713f4b93ee1d14986b
[vid.git] /
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 import {VfModule} from "../../../../../shared/models/vfModule";
23
24 class MockAppStore<T> {
25   getState() {
26     return {
27       global: {
28         'drawingBoardStatus': DrawingBoardModes.CREATE
29       }
30     }
31   }
32 }
33
34 describe('VFModule Model Info', () => {
35   let injector;
36   let  _dynamicInputsService : DynamicInputsService;
37   let  _sharedTreeService : SharedTreeService;
38   let  vfModuleModel: VFModuleModelInfo;
39   let _dialogService : DialogService;
40   let _vfModulePopupService : VfModulePopupService;
41   let _vfModuleUpgradePopupService : VfModuleUpgradePopupService;
42   let _iframeService : IframeService;
43   let _componentInfoService : ComponentInfoService;
44   let mockFeatureFlagsService: FeatureFlagsService = mock(FeatureFlagsService);
45   let mockFeatureFlagsServiceInstance: FeatureFlagsService = instance(mockFeatureFlagsService);
46
47
48   beforeAll(done => (async () => {
49     TestBed.configureTestingModule({
50       imports: [HttpClientTestingModule, NgReduxTestingModule],
51       providers: [
52         DynamicInputsService,
53         DialogService,
54         VfModulePopupService,
55         VfModuleUpgradePopupService,
56         SharedTreeService,
57         IframeService,
58         {provide: NgRedux, useClass: MockAppStore},
59         MockNgRedux,
60         AaiService,
61         HttpClient,
62         HttpHandler,
63         {provide: FeatureFlagsService, useValue: mockFeatureFlagsServiceInstance},
64         ComponentInfoService
65       ]
66     });
67     await TestBed.compileComponents();
68
69     injector = getTestBed();
70     _sharedTreeService = injector.get(SharedTreeService);
71     _componentInfoService = injector.get(ComponentInfoService);
72     vfModuleModel = new VFModuleModelInfo(_dynamicInputsService, _sharedTreeService, _dialogService, _vfModulePopupService, _vfModuleUpgradePopupService,
73       _iframeService, mockFeatureFlagsServiceInstance,  MockNgRedux.getInstance(),_componentInfoService);
74
75   })().then(done).catch(done.fail));
76
77
78
79   test('VFModuleModelInfo should be defined', () => {
80     expect(VFModuleModelInfo).toBeDefined();
81   });
82
83   test('VnfModelInfo should defined extra details', () => {
84     expect(vfModuleModel.name).toEqual('vfModules');
85     expect(vfModuleModel.type).toEqual('Module');
86   });
87
88   test('isEcompGeneratedNaming should return true if vnf has isEcompGeneratedNaming is "true" ', () => {
89     let isEcompGeneratedNaming : boolean = vfModuleModel.isEcompGeneratedNaming({}, {
90       properties: {
91         ecomp_generated_naming: 'true'
92       }
93     });
94     expect(isEcompGeneratedNaming).toBeTruthy();
95   });
96
97   test('isEcompGeneratedNaming should return false if isEcompGeneratedNaming is "false"', () => {
98     let isEcompGeneratedNaming : boolean = vfModuleModel.isEcompGeneratedNaming({}, {
99       properties: {
100         ecomp_generated_naming: 'false'
101       }
102     });
103     expect(isEcompGeneratedNaming).toBeFalsy();
104   });
105
106   test('isEcompGeneratedNaming should return false if isEcompGeneratedNaming is not defined', () => {
107     let isEcompGeneratedNaming : boolean = vfModuleModel.isEcompGeneratedNaming({}, {
108       properties: {
109       }
110     });
111     expect(isEcompGeneratedNaming).toBeFalsy();
112   });
113
114
115   test('getTooltip should return "VFModule"', () => {
116     let tooltip: string = vfModuleModel.getTooltip();
117     expect(tooltip).toEqual('VFmodule');
118   });
119
120   test('getType should return "VFModule"', () => {
121     let tooltip: string = vfModuleModel.getType();
122     expect(tooltip).toEqual('VFmodule');
123   });
124
125   test('getNextLevelObject should return null', () => {
126     let nextLevel = vfModuleModel.getNextLevelObject();
127     expect(nextLevel).toBeNull();
128   });
129
130   test('getModel should return Module model', () => {
131     let model = vfModuleModel.getModel('2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1',null, getServiceHierarchy());
132     expect(model.uuid).toEqual('25284168-24bb-4698-8cb4-3f509146eca5');
133     expect(model.min).toBe(2);
134     expect(model.max).toBe(3);
135     expect(model.baseModule).toBeFalsy();
136     expect(model.inputs).toEqual(
137       {"vnf_config_template_version": {
138         "type": "string"
139       }});
140     expect(model.volumeGroupAllowed).toBeTruthy();
141   });
142
143   test('showNodeIcons should return false false if reachLimit of max', ()=>{
144     let serviceId : string = 'servicedId';
145     let node = {
146       parent : {
147         data : {
148           id : 'vnfId',
149           name : 'vnfName'
150         }
151       },
152       data : {
153         id : 'vnfId',
154         name : 'vnfName'
155       }
156     };
157     _sharedTreeService.setSelectedVNF({
158       data : {
159         id : 'vfModuleId',
160         name : 'VfModuleName'
161       }
162     });
163     jest.spyOn(vfModuleModel, 'getOptionalVNFs').mockReturnValue([]);
164     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
165       global : {},
166       service : {
167         serviceHierarchy : {
168           'servicedId' : {
169             'vnfs' : {
170               'vnfName' : {
171                 'properties' : {
172                   'max_instances' : 1
173                 }
174               }
175             }
176           }
177         },
178         serviceInstance : {
179           'servicedId' : {
180             'existingVNFCounterMap' : {
181               'vnfId' : 1
182             },
183             'vnfs' : {
184               'vnfName' :{
185
186               }
187             }
188           }
189         }
190       }
191     });
192
193     let result = vfModuleModel.showNodeIcons(<any>node, serviceId);
194     expect(result).toEqual(new AvailableNodeIcons(false , false));
195   });
196
197   test('showNodeIcons should return true, false if reachLimit of max', ()=>{
198     let serviceId : string = 'servicedId';
199     let node = {
200       data : {
201         id : 'vfModuleId',
202         name : 'vfModuleName'
203       },
204       parent : {
205         data : {
206           id : 'vnfId',
207           name : 'vnfName'
208         }
209       }
210     };
211     jest.spyOn(_sharedTreeService, 'getSelectedVNF').mockReturnValue('vnfName');
212     jest.spyOn(vfModuleModel, 'getOptionalVNFs').mockReturnValue(['vnfName']);
213     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
214       global : {},
215       service : {
216         serviceHierarchy : {
217           'servicedId' : {
218             'vnfs' : {
219               'vnfName' : {
220                 'properties' : {
221                   'max_instances' : 1
222                 }
223               }
224             },
225             'vfModules' : {
226               'vfModuleName' : {
227                 'properties' : {
228                   maxCountInstances : 1
229                 }
230               }
231             }
232           }
233         },
234         serviceInstance : {
235           'servicedId' : {
236             'existingVNFCounterMap' : {
237               'vnfId' : 1
238             },
239             'vnfs' : {
240               'vnfName' :{
241                   'originalName' : 'vnfName',
242                   'vfModules' : {
243                     'vfModuleName' : {
244
245                     }
246                   }
247               }
248             }
249           }
250         }
251       }
252     });
253
254     let result = vfModuleModel.showNodeIcons(<any>node, 'servicedId');
255     expect(result).toEqual(new AvailableNodeIcons(true , false));
256   });
257
258
259   test('showNodeIcons should return false, true if reachLimit of max', ()=>{
260     let serviceId : string = 'servicedId';
261     let node = {
262       data : {
263         id : 'vfModuleId',
264         name : 'vfModuleName'
265       },
266       parent : {
267         data : {
268           id : 'vnfId',
269           name : 'vnfName'
270         }
271       }
272     };
273     jest.spyOn(_sharedTreeService, 'getSelectedVNF').mockReturnValue('vnfName');
274     jest.spyOn(vfModuleModel, 'getOptionalVNFs').mockReturnValue(['vnfName']);
275     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
276       global : {},
277       service : {
278         serviceHierarchy : {
279           'servicedId' : {
280             'vnfs' : {
281               'vnfName' : {
282                 'properties' : {
283                   'max_instances' : 1
284                 }
285               }
286             },
287             'vfModules' : {
288               'vfModuleName' : {
289                 'properties' : {
290                   maxCountInstances : 2
291                 }
292               }
293             }
294           }
295         },
296         serviceInstance : {
297           'servicedId' : {
298             'existingVNFCounterMap' : {
299               'vnfId' : 1
300             },
301             'vnfs' : {
302               'vnfName' :{
303                 'originalName' : 'vnfName',
304                 'vfModules' : {
305                   'vfModuleName' : {
306
307                   }
308                 }
309               }
310             }
311           }
312         }
313       }
314     });
315
316     let result = vfModuleModel.showNodeIcons(<any>node, 'servicedId');
317     expect(result).toEqual(new AvailableNodeIcons(true , false));
318   });
319
320
321   test('getOptionalVNFs should instance if exist', ()=>{
322     let serviceId : string = 'servicedId';
323     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
324       global : {},
325       service : {
326         serviceHierarchy : {
327           'servicedId' : {
328             'vnfs' : {
329               'vnfName' : {
330                 'properties' : {
331                   'max_instances' : 1
332                 }
333               }
334             },
335             'vfModules' : {
336               'vfModuleName' : {
337                 'properties' : {
338                   maxCountInstances : 2
339                 }
340               }
341             }
342           }
343         },
344         serviceInstance : {
345           'servicedId' : {
346             'existingVNFCounterMap' : {
347               'vnfId' : 1
348             },
349             'vnfs' : {
350               'vnfName' :{
351                 'originalName' : 'vnfName',
352                 'vfModules' : {
353                   'vfModuleName' : {
354
355                   }
356                 }
357               }
358             }
359           }
360         }
361       }
362     });
363
364     let node = {
365       data : {
366         id : 'vfModuleId',
367         name : 'vfModuleName'
368       },
369       parent : {
370         data : {
371           id : 'vnfId',
372           name : 'vnfName'
373         }
374       }
375     };
376     let result = vfModuleModel.getOptionalVNFs(serviceId , 'vnfName');
377     expect(result.length).toEqual(1);
378   });
379
380   test('getNodeCount should return number of nodes', ()=>{
381     let serviceId : string = 'servicedId';
382     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
383       global : {},
384       service : {
385         serviceHierarchy : {
386           'servicedId' : {
387             'vnfs' : {
388               'vnfName' : {
389                 'properties' : {
390                   'max_instances' : 1
391                 }
392               }
393             },
394             'vfModules' : {
395               'vfModuleName' : {
396                 'properties' : {
397                   maxCountInstances : 2
398                 }
399               }
400             }
401           }
402         },
403         serviceInstance : {
404           'servicedId' : {
405             'existingVNFCounterMap' : {
406               'vnfId' : 1
407             },
408             'vnfs' : {
409               'vnfName' :{
410                 'action': 'Create',
411                 'originalName' : 'vnfName',
412                 'vfModules' : {
413                   'vfModuleName' : {
414                       'vnfModuleName_111': {
415                         'action': 'Create',
416                         'modelInfo' : {
417                           modelVersionId : 'vfModuleId'
418                         }
419                       },
420                       'vnfModuleName_111_1': {
421                         'action': 'Create',
422                         'modelInfo' : {
423                           modelVersionId : 'vfModuleId'
424                         }
425                       }
426                   }
427                 }
428               },
429               'vnfName_1' :{
430                 'action': 'Create',
431                 'originalName' : 'vnfName',
432                 'vfModules' : {
433                   'vfModuleName' : {
434                     'vnfModuleName_111': {
435                       'action': 'Create',
436                       'modelInfo' : {
437                         modelVersionId : 'vfModuleId'
438                       }
439                     },
440                     'vnfModuleName_111_1': {
441                       'action': 'Create',
442                       'modelInfo' : {
443                         modelVersionId : 'vfModuleId'
444                       }
445                     }
446                   }
447                 }
448               }
449             }
450           }
451         }
452       }
453     });
454
455     let node = {
456       data : {
457         id : 'vfModuleId',
458         name : 'vfModuleName',
459         'action': 'Create',
460       },
461       parent : {
462         data : {
463           id : 'vnfId',
464           name : 'vnfName',
465           'action': 'Create',
466         }
467       }
468     };
469     let result = vfModuleModel.getNodeCount(<any>node , serviceId);
470     expect(result).toEqual(2);
471   });
472
473
474   test('getNodeCount should return number of nodes : there is selectedVNF', ()=>{
475     let serviceId : string = 'servicedId';
476     jest.spyOn(MockNgRedux.getInstance(), 'getState').mockReturnValue({
477       global : {},
478       service : {
479         serviceHierarchy : {
480           'servicedId' : {
481             'vnfs' : {
482               'vnfName' : {
483                 'properties' : {
484                   'max_instances' : 1
485                 }
486               }
487             },
488             'vfModules' : {
489               'vfModuleName' : {
490                 'properties' : {
491                   maxCountInstances : 2
492                 }
493               }
494             }
495           }
496         },
497         serviceInstance : {
498           'servicedId' : {
499             'existingVNFCounterMap' : {
500               'vnfId' : 1
501             },
502             'vnfs' : {
503               'vnfName' :{
504                 'action': 'Create',
505                 'originalName' : 'vnfName',
506                 'vfModules' : {
507                   'vfModuleName' : {
508                     'vnfModuleName_111': {
509                       'action': 'Create',
510                       'modelInfo' : {
511                         modelVersionId : 'vfModuleId'
512                       }
513                     },
514                     'vnfModuleName_111_1': {
515                       'action': 'Create',
516                       'modelInfo' : {
517                         modelVersionId : 'vfModuleId'
518                       }
519                     }
520                   }
521                 }
522               },
523               'vnfName_1' :{
524                 'action': 'Create',
525                 'originalName' : 'vnfName',
526                 'vfModules' : {
527                   'vfModuleName' : {
528                     'vnfModuleName_111': {
529                       'action': 'Create',
530                       'modelInfo' : {
531                         modelVersionId : 'vfModuleId'
532                       }
533                     }
534                   }
535                 }
536               }
537             }
538           }
539         }
540       }
541     });
542     jest.spyOn(_sharedTreeService, 'getSelectedVNF').mockReturnValue('vnfName_1');
543
544     let node = {
545       data : {
546         id : 'vfModuleId',
547         name : 'vfModuleName',
548         'action': 'Create',
549       },
550       parent : {
551         data : {
552           id : 'vnfId',
553           name : 'vnfName_1',
554           'action': 'Create',
555         }
556       }
557     };
558     let result = vfModuleModel.getNodeCount(<any>node , serviceId);
559     expect(result).toEqual(1);
560   });
561
562
563   test('onClickAdd should open message box if no vnfStoreKey', ()=>{
564     jest.spyOn(_sharedTreeService, 'getSelectedVNF').mockReturnValue(null);
565     jest.spyOn(vfModuleModel, 'getDefaultVNF').mockReturnValue(null);
566     jest.spyOn(MessageBoxService.openModal, 'next');
567     vfModuleModel.onClickAdd(<any>{}, 'serviceId');
568     expect(MessageBoxService.openModal.next).toHaveBeenCalled();
569   });
570
571   test('getMenuAction: showAuditInfoVfModule', ()=>{
572     jest.spyOn(_sharedTreeService, 'isRetryMode').mockReturnValue(true);
573
574     let node = {
575       data : {
576         "modelId": "6b528779-44a3-4472-bdff-9cd15ec93450",
577         "action": "Create",
578         "isFailed": true,
579       }
580     };
581     let serviceModelId = "6b528779-44a3-4472-bdff-9cd15ec93450";
582     let result = vfModuleModel.getMenuAction(<any>node, serviceModelId);
583     spyOn(result['showAuditInfo'], 'method');
584     expect(result['showAuditInfo']).toBeDefined();
585     expect(result['showAuditInfo'].visible(node)).toBeTruthy();
586     expect(result['showAuditInfo'].enable(node)).toBeTruthy();
587     result['showAuditInfo']['method'](node, serviceModelId);
588     expect(result['showAuditInfo']['method']).toHaveBeenCalledWith(node, serviceModelId);
589   });
590
591   test('Info for vfModule should be correct', () => {
592     const model = getVFModule();
593     const instance = getVFModuleInstance();
594     let actualVNFInfo = vfModuleModel.getInfo(model,instance);
595     let expectedVNFInfo = [
596       ModelInformationItem.createInstance('Base module', false),
597       ModelInformationItem.createInstance('Min instances', "0"),
598       ModelInformationItem.createInstance("Max instances", 'Unlimited (default)'),
599       ModelInformationItem.createInstance('Initial instances count',"0")
600     ];
601     expect(actualVNFInfo).toEqual(expectedVNFInfo);
602   });
603
604   each([
605     ["maxCountInstances 3, currentNodeCount 1, flag on",{maxCountInstances:3}, 1, {FLAG_2002_UNLIMITED_MAX: true}, false],
606     ["maxCountInstances 3, currentNodeCount 3, flag on",{maxCountInstances:3}, 3, {FLAG_2002_UNLIMITED_MAX: true}, true],
607     ["no maxCountInstances, currentNodeCount 0, flag off",{}, 0, {FLAG_2002_UNLIMITED_MAX: false}, false],
608     ["no maxCountInstances, currentNodeCount 1, flag off",{}, 1, {FLAG_2002_UNLIMITED_MAX: false}, true],
609     ["no maxCountInstances, currentNodeCount 1, no flags",{}, 1, null, true],
610     ["no maxCountInstances, currentNodeCount 0, flag on",{}, 0, {FLAG_2002_UNLIMITED_MAX: true}, false],
611     ["no maxCountInstances, currentNodeCount 1, flag on",{}, 1, {FLAG_2002_UNLIMITED_MAX: true}, false],
612     ["no maxCountInstances, currentNodeCount 1000, flag on",{}, 1000, {FLAG_2002_UNLIMITED_MAX: true}, false],
613   ]).test('isVFModuleReachedLimit: %s', (desc, properties, currentNodeCount, flags, expected) => {
614
615     const node = { data: {
616         name : 'vfModuleName'
617     }};
618
619     const serviceHierarchy = {
620       servicedId :{
621         vfModules : {
622           vfModuleName : {
623             properties
624      }}}};
625
626     when(mockFeatureFlagsService.getAllFlags()).thenReturn(flags);
627
628     expect(vfModuleModel.isVFModuleReachedLimit(node, serviceHierarchy, 'servicedId', currentNodeCount)).toEqual(expected);
629   });
630
631   function getVFModule(): Partial<VfModule>{
632     return {
633       "uuid":"522159d5-d6e0-4c2a-aa44-5a542a12a830",
634       "invariantUuid":"98a7c88b-b577-476a-90e4-e25a5871e02b",
635       "customizationUuid":"55b1be94-671a-403e-a26c-667e9c47d091",
636       "description":null,
637       "name":"VfVgeraldine..vflorence_vlc..module-1",
638       "version":"2",
639       "modelCustomizationName":"VfVgeraldine..vflorence_vlc..module-1",
640       "min":0,
641       "max":null,
642       "initial":0,
643       "baseModule":false,
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": 2,
1279                 "maxCountInstances": 3,
1280                 "initialCount": 0,
1281                 "vfModuleLabel": "PASQUALE_vRE_BV",
1282                 "baseModule": false
1283               },
1284               "inputs": {
1285                 "vnf_config_template_version": {
1286                   "type": "string"
1287                 }
1288               },
1289               "volumeGroupAllowed": true
1290             },
1291             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": {
1292               "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db",
1293               "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091",
1294               "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3",
1295               "description": null,
1296               "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0",
1297               "version": "5",
1298               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0",
1299               "properties": {
1300                 "minCountInstances": 1,
1301                 "maxCountInstances": 1,
1302                 "initialCount": 1,
1303                 "vfModuleLabel": "PASQUALE_base_vPE_BV",
1304                 "baseModule": true
1305               },
1306               "inputs": {},
1307               "volumeGroupAllowed": false
1308             },
1309             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": {
1310               "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a",
1311               "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339",
1312               "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557",
1313               "description": null,
1314               "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1315               "version": "6",
1316               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1317               "properties": {
1318                 "minCountInstances": 0,
1319                 "maxCountInstances": null,
1320                 "initialCount": 0,
1321                 "vfModuleLabel": "PASQUALE_vPFE_BV",
1322                 "baseModule": false
1323               },
1324               "inputs": {},
1325               "volumeGroupAllowed": true
1326             }
1327           },
1328           "volumeGroups": {
1329             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1": {
1330               "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
1331               "invariantUuid": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
1332               "customizationUuid": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
1333               "description": null,
1334               "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1335               "version": "6",
1336               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1337               "properties": {
1338                 "minCountInstances": 0,
1339                 "maxCountInstances": null,
1340                 "initialCount": 0,
1341                 "vfModuleLabel": "PASQUALE_vRE_BV",
1342                 "baseModule": false
1343               },
1344               "inputs": {
1345                 "vnf_config_template_version": {
1346                   "type": "string",
1347                   "description": "VPE Software Version",
1348                   "entry_schema": null,
1349                   "inputProperties": {
1350                     "sourceType": "HEAT",
1351                     "vfModuleLabel": "PASQUALE_vRE_BV",
1352                     "paramName": "vnf_config_template_version"
1353                   },
1354                   "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version",
1355                   "constraints": null,
1356                   "required": true,
1357                   "default": "17.2"
1358                 },
1359                 "bandwidth_units": {
1360                   "type": "string",
1361                   "description": "Units of bandwidth",
1362                   "entry_schema": null,
1363                   "inputProperties": {
1364                     "sourceType": "HEAT",
1365                     "vfModuleLabel": "PASQUALE_vRE_BV",
1366                     "paramName": "bandwidth_units"
1367                   },
1368                   "fromInputName": "pasqualevpe0_bandwidth_units",
1369                   "constraints": null,
1370                   "required": true,
1371                   "default": "Gbps"
1372                 },
1373                 "bandwidth": {
1374                   "type": "string",
1375                   "description": "Requested VPE bandwidth",
1376                   "entry_schema": null,
1377                   "inputProperties": {
1378                     "sourceType": "HEAT",
1379                     "vfModuleLabel": "PASQUALE_vRE_BV",
1380                     "paramName": "bandwidth"
1381                   },
1382                   "fromInputName": "pasqualevpe0_bandwidth",
1383                   "constraints": null,
1384                   "required": true,
1385                   "default": "10"
1386                 },
1387                 "AIC_CLLI": {
1388                   "type": "string",
1389                   "description": "AIC Site CLLI",
1390                   "entry_schema": null,
1391                   "inputProperties": {
1392                     "sourceType": "HEAT",
1393                     "vfModuleLabel": "PASQUALE_vRE_BV",
1394                     "paramName": "AIC_CLLI"
1395                   },
1396                   "fromInputName": "2017488_pasqualevpe0_AIC_CLLI",
1397                   "constraints": null,
1398                   "required": true,
1399                   "default": "ATLMY8GA"
1400                 },
1401                 "vnf_instance_name": {
1402                   "type": "string",
1403                   "description": "The hostname assigned to the vpe.",
1404                   "entry_schema": null,
1405                   "inputProperties": {
1406                     "sourceType": "HEAT",
1407                     "vfModuleLabel": "PASQUALE_vRE_BV",
1408                     "paramName": "vnf_instance_name"
1409                   },
1410                   "fromInputName": "2017488_pasqualevpe0_vnf_instance_name",
1411                   "constraints": null,
1412                   "required": true,
1413                   "default": "mtnj309me6"
1414                 }
1415               }
1416             },
1417             "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": {
1418               "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a",
1419               "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339",
1420               "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557",
1421               "description": null,
1422               "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1423               "version": "6",
1424               "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1425               "properties": {
1426                 "minCountInstances": 0,
1427                 "maxCountInstances": null,
1428                 "initialCount": 0,
1429                 "vfModuleLabel": "PASQUALE_vPFE_BV",
1430                 "baseModule": false
1431               },
1432               "inputs": {}
1433             }
1434           },
1435           "vfcInstanceGroups": {}
1436         }
1437       },
1438       "networks": {},
1439       "collectionResources": {},
1440       "configurations": {},
1441       "fabricConfigurations": {},
1442       "serviceProxies": {},
1443       "vfModules": {
1444         "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1": {
1445           "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
1446           "invariantUuid": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
1447           "customizationUuid": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
1448           "description": null,
1449           "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1450           "version": "6",
1451           "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1452           "properties": {
1453             "minCountInstances": 2,
1454             "maxCountInstances": 3,
1455             "initialCount": 0,
1456             "vfModuleLabel": "PASQUALE_vRE_BV",
1457             "baseModule": false
1458           },
1459           "inputs": {
1460             "vnf_config_template_version": {
1461               "type": "string"
1462             }
1463           },
1464           "volumeGroupAllowed": true
1465         },
1466         "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0": {
1467           "uuid": "f8360508-3f17-4414-a2ed-6bc71161e8db",
1468           "invariantUuid": "b34833bb-6aa9-4ad6-a831-70b06367a091",
1469           "customizationUuid": "a55961b2-2065-4ab0-a5b7-2fcee1c227e3",
1470           "description": null,
1471           "name": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0",
1472           "version": "5",
1473           "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_base_vPE_BV..module-0",
1474           "properties": {
1475             "minCountInstances": 1,
1476             "maxCountInstances": 1,
1477             "initialCount": 1,
1478             "vfModuleLabel": "PASQUALE_base_vPE_BV",
1479             "baseModule": true
1480           },
1481           "inputs": {},
1482           "volumeGroupAllowed": false
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           "volumeGroupAllowed": true
1501         }
1502       },
1503       "volumeGroups": {
1504         "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vRE_BV..module-1": {
1505           "uuid": "25284168-24bb-4698-8cb4-3f509146eca5",
1506           "invariantUuid": "7253ff5c-97f0-4b8b-937c-77aeb4d79aa1",
1507           "customizationUuid": "f7e7c365-60cf-49a9-9ebf-a1aa11b9d401",
1508           "description": null,
1509           "name": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1510           "version": "6",
1511           "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vRE_BV..module-1",
1512           "properties": {
1513             "minCountInstances": 0,
1514             "maxCountInstances": null,
1515             "initialCount": 0,
1516             "vfModuleLabel": "PASQUALE_vRE_BV",
1517             "baseModule": false
1518           },
1519           "inputs": {
1520             "vnf_config_template_version": {
1521               "type": "string",
1522               "description": "VPE Software Version",
1523               "entry_schema": null,
1524               "inputProperties": {
1525                 "sourceType": "HEAT",
1526                 "vfModuleLabel": "PASQUALE_vRE_BV",
1527                 "paramName": "vnf_config_template_version"
1528               },
1529               "fromInputName": "2017488_pasqualevpe0_vnf_config_template_version",
1530               "constraints": null,
1531               "required": true,
1532               "default": "17.2"
1533             },
1534             "bandwidth_units": {
1535               "type": "string",
1536               "description": "Units of bandwidth",
1537               "entry_schema": null,
1538               "inputProperties": {
1539                 "sourceType": "HEAT",
1540                 "vfModuleLabel": "PASQUALE_vRE_BV",
1541                 "paramName": "bandwidth_units"
1542               },
1543               "fromInputName": "pasqualevpe0_bandwidth_units",
1544               "constraints": null,
1545               "required": true,
1546               "default": "Gbps"
1547             },
1548             "bandwidth": {
1549               "type": "string",
1550               "description": "Requested VPE bandwidth",
1551               "entry_schema": null,
1552               "inputProperties": {
1553                 "sourceType": "HEAT",
1554                 "vfModuleLabel": "PASQUALE_vRE_BV",
1555                 "paramName": "bandwidth"
1556               },
1557               "fromInputName": "pasqualevpe0_bandwidth",
1558               "constraints": null,
1559               "required": true,
1560               "default": "10"
1561             },
1562             "AIC_CLLI": {
1563               "type": "string",
1564               "description": "AIC Site CLLI",
1565               "entry_schema": null,
1566               "inputProperties": {
1567                 "sourceType": "HEAT",
1568                 "vfModuleLabel": "PASQUALE_vRE_BV",
1569                 "paramName": "AIC_CLLI"
1570               },
1571               "fromInputName": "2017488_pasqualevpe0_AIC_CLLI",
1572               "constraints": null,
1573               "required": true,
1574               "default": "ATLMY8GA"
1575             },
1576             "vnf_instance_name": {
1577               "type": "string",
1578               "description": "The hostname assigned to the vpe.",
1579               "entry_schema": null,
1580               "inputProperties": {
1581                 "sourceType": "HEAT",
1582                 "vfModuleLabel": "PASQUALE_vRE_BV",
1583                 "paramName": "vnf_instance_name"
1584               },
1585               "fromInputName": "2017488_pasqualevpe0_vnf_instance_name",
1586               "constraints": null,
1587               "required": true,
1588               "default": "mtnj309me6"
1589             }
1590           }
1591         },
1592         "2017488_pasqualevpe0..2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2": {
1593           "uuid": "0a0dd9d4-31d3-4c3a-ae89-a02f383e6a9a",
1594           "invariantUuid": "eff8cc59-53a1-4101-aed7-8cf24ecf8339",
1595           "customizationUuid": "3cd946bb-50e0-40d8-96d3-c9023520b557",
1596           "description": null,
1597           "name": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1598           "version": "6",
1599           "modelCustomizationName": "2017488PasqualeVpe..PASQUALE_vPFE_BV..module-2",
1600           "properties": {
1601             "minCountInstances": 0,
1602             "maxCountInstances": null,
1603             "initialCount": 0,
1604             "vfModuleLabel": "PASQUALE_vPFE_BV",
1605             "baseModule": false
1606           },
1607           "inputs": {}
1608         }
1609       },
1610       "pnfs": {}
1611     }
1612   }
1613 });