regression unit test for getServicesByOwningEntityId
[vid.git] / vid-webpack-master / src / app / drawingBoard / service-planning / available-models-tree / available-models-tree.service.spec.ts
1 import {getTestBed, TestBed} from '@angular/core/testing';
2 import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing';
3 import {AvailableModelsTreeService} from './available-models-tree.service';
4 import {ServiceNodeTypes} from "../../../shared/models/ServiceNodeTypes";
5 import {DefaultDataGeneratorService} from "../../../shared/services/defaultDataServiceGenerator/default.data.generator.service";
6 import {MessageBoxService} from "../../../shared/components/messageBox/messageBox.service";
7 import {MessageBoxData} from "../../../shared/components/messageBox/messageBox.data";
8 import {SdcUiCommon} from "onap-ui-angular";
9 import {MockNgRedux, NgReduxTestingModule} from "@angular-redux/store/testing";
10 import {SharedTreeService} from "../objectsToTree/shared.tree.service";
11
12 describe('Available Models Tree Service', () => {
13
14   let injector;
15   let service: AvailableModelsTreeService;
16   let httpMock: HttpTestingController;
17
18   beforeAll(done => (async () => {
19     TestBed.configureTestingModule({
20       imports: [HttpClientTestingModule, NgReduxTestingModule],
21       providers: [AvailableModelsTreeService,
22         DefaultDataGeneratorService,
23         SharedTreeService,
24         MockNgRedux]
25     });
26     await TestBed.compileComponents();
27       injector = getTestBed();
28       service = injector.get(AvailableModelsTreeService);
29       httpMock = injector.get(HttpTestingController);
30   })().then(done).catch(done.fail));
31
32
33   test('addingAlertAddingNewVfModuleModal should open message modal', () => {
34     jest.spyOn(MessageBoxService.openModal, 'next');
35     service.addingAlertAddingNewVfModuleModal();
36
37     expect(MessageBoxService.openModal.next).toHaveBeenCalledWith(new MessageBoxData(
38       "Select a parent",  // modal title
39       "There are multiple instances on the right side that can contain this vf-module Please select the VNF instance, to add this vf-module to, on the right side and then click the + sign",
40       SdcUiCommon.ModalType.warning,
41       SdcUiCommon.ModalSize.medium,
42       [
43         {text: "Close", size: "medium", closeModal: true}
44       ]));
45   });
46
47
48
49   describe('#shouldOpenModalDialogOnAddInstance', () => {
50     let serviceHierarchy = getServiceServiceHierarchy();
51
52     test('should open popup on add instance', () => {
53       // add vnf should return true
54       let result = service.shouldOpenDialog(ServiceNodeTypes.VF, [], true);
55       expect(result).toBeTruthy();
56
57       //  add vfModule with user provided naming should return true
58       result = service.shouldOpenDialog(ServiceNodeTypes.VFmodule, [], false);
59       expect(result).toBeTruthy();
60
61       //  add vfModule with dynamicInputs without defaultValues should return true
62       result = service.shouldOpenDialog(ServiceNodeTypes.VFmodule, [{
63         id: '2017488_pasqualevpe0_vnf_config_template_version',
64         type: 'string',
65         name: '2017488_pasqualevpe0_vnf_config_template_version',
66         isRequired: true,
67         description: 'VPE Software Version'
68       }], true);
69       expect(result).toBeTruthy();
70
71       // add vfModule with dynamicInputs with defaultValues should return false
72       result = service.shouldOpenDialog(ServiceNodeTypes.VFmodule, [{
73         id: '2017488_pasqualevpe0_vnf_config_template_version',
74         type: 'string',
75         name: '2017488_pasqualevpe0_vnf_config_template_version',
76         value: '17.2',
77         isRequired: true,
78         description: 'VPE Software Version'
79       }], true);
80       expect(result).toBeFalsy();
81     });
82   });
83
84
85   test('shouldOpenVRFModal', () => {
86     const nodes = [{
87       "id": "dd024d73-9bd1-425d-9db5-476338d53433",
88       "modelCustomizationId": "dd024d73-9bd1-425d-9db5-476338d53433",
89       "modelVersionId": "9cac02be-2489-4374-888d-2863b4511a59",
90       "modelUniqueId": "dd024d73-9bd1-425d-9db5-476338d53433",
91       "name": "VRF Entry Configuration 0",
92       "tooltip": "VRF",
93       "type": "VRF",
94       "count": 0,
95       "max": 1,
96       "children": [],
97       "disabled": false,
98       "dynamicInputs": [],
99       "isEcompGeneratedNaming": false,
100       "typeName": "VRF",
101       "componentInfoType": "VRF",
102       "getModel" : ()=>{
103         return  {
104           min : 1
105         }
106       }
107     }];
108
109
110     const serviceStore = {
111       "serviceInstance": {
112         "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc": {
113           "action": "Create",
114           "isDirty": false,
115           "vnfs": {},
116           "vrfs": {
117             "VRF Entry Configuration": {
118               "action": "Create",
119               "uuid": "9cac02be-2489-4374-888d-2863b4511a59",
120               "inputs": {},
121               "type": "Configuration",
122               "trackById": "s0z58emiprq",
123               "modelInfo": {
124                 "modelInvariantId": "b67a289b-1688-496d-86e8-1583c828be0a",
125                 "modelVersionId": "69e09f68-8b63-4cc9-b9ff-860960b5db09",
126                 "modelName": "VRF Entry Configuration",
127                 "modelVersion": "5.0",
128                 "modelCustomizationId": "dd024d73-9bd1-425d-9db5-476338d53433",
129                 "modelUniqueId": "dd024d73-9bd1-425d-9db5-476338d53433",
130                 "modelCustomizationName": "VRF Entry Configuration",
131                 "uuid": "9cac02be-2489-4374-888d-2863b4511a59"
132               },
133               "vpns": {
134                 "VRF Entry Configuration vpns 1": {
135                   "action": "Create",
136                   "instanceId": "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7",
137                   "instanceName": "LPPVPN",
138                   "platformName": "AVPN",
139                   "instanceType": "SERVICE-INFRASTRUCTURE",
140                   "region": "USA,EMEA",
141                   "customerId": "VPN1271",
142                   "modelInfo": {
143                     "modelCustomizationId": null,
144                     "modelInvariantId": null,
145                     "modelVersionId": null
146                   },
147                   "routeTargets": null,
148                   "isSelected": true
149                 }
150               },
151               "networks": {
152                 "VRF Entry Configuration networks 1": {
153                   "action ": "Create",
154                   "instanceName": "AUK51a_oam_calea_net_0",
155                   "instanceType": "SR-IOV-PROVIDER2-0",
156                   "role": "role-1",
157                   "orchStatus": "Active",
158                   "physicalName": "sriovnet0",
159                   "instanceId": "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7",
160                   "serviceName": "LPPVPN",
161                   "serv§iceUUID": "VPN1271",
162                   "tenantName": "ecomp_ispt",
163                   "lcpCloudRegionId": "USA,EMEA",
164                   "modelInfo": {
165                     "modelCustomizationId": "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7",
166                     "modelInvariantId": "46fcb25a-e7ba-4d96-99ba-3bb6eae6aba7",
167                     "modelVersionId": "7010093-df36-4dcb-8428-c3d02bf3f88d",
168                     "modelType": "vpn"
169                   }
170                 }
171               }
172             }
173           },
174           "instanceParams": [],
175           "validationCounter": 0,
176           "existingNames": {},
177           "existingVNFCounterMap": {},
178           "existingVRFCounterMap": {},
179           "existingVnfGroupCounterMap": {},
180           "existingNetworksCounterMap": {},
181           "optionalGroupMembersMap": {},
182           "networks": {},
183           "vnfGroups": {},
184           "bulkSize": 1,
185           "service": {
186             "vidNotions": {
187               "instantiationUI": "serviceWithVRF",
188               "modelCategory": "other",
189               "viewEditUI": "serviceWithVRF",
190               "instantiationType": "ALaCarte"
191             },
192             "uuid": "4117a0b6-e234-467d-b5b9-fe2f68c8b0fc",
193             "invariantUuid": "7ee41ce4-4827-44b0-a48e-2707a59905d2",
194             "name": "VRF Service for Test",
195             "version": "1.0",
196             "toscaModelURL": null,
197             "category": "Network L4+",
198             "serviceType": "INFRASTRUCTURE",
199             "serviceRole": "Configuration",
200             "description": "xxx",
201             "serviceEcompNaming": "true",
202             "instantiationType": "A-La-Carte",
203             "inputs": {}
204           },
205           "collectionResources": {},
206           "configurations": {},
207           "fabricConfigurations": {},
208           "serviceProxies": {},
209           "vfModules": {},
210           "volumeGroups": {},
211           "pnfs": {},
212           "isALaCarte": true,
213           "testApi": "VNF_API",
214           "vidNotions": {
215             "instantiationUI": "serviceWithVVRF",
216             "modelCategory": "other",
217             "viewEditUI": "serviceWithVRF",
218             "instantiationType": "ALaCarte"
219           }
220         }
221       }
222     };
223
224     const serviceModelId :string = '4117a0b6-e234-467d-b5b9-fe2f68c8b0fc';
225
226     let result: boolean = service.shouldOpenVRFModal(nodes,  serviceModelId, serviceStore);
227     expect(result).not.toBeNull();
228
229     serviceStore.serviceInstance[serviceModelId].existingVRFCounterMap = {
230       "dd024d73-9bd1-425d-9db5-476338d53433" : 1
231     };
232
233     result = service.shouldOpenVRFModal(nodes,  serviceModelId, serviceStore);
234     expect(result).toBeNull();
235
236   });
237
238   function getServiceServiceHierarchy() {
239     return JSON.parse(JSON.stringify(
240       {
241         '6e59c5de-f052-46fa-aa7e-2fca9d674c44': {
242           'service': {
243             'uuid': '6e59c5de-f052-46fa-aa7e-2fca9d674c44',
244             'invariantUuid': 'e49fbd11-e60c-4a8e-b4bf-30fbe8f4fcc0',
245             'name': 'ComplexService',
246             'version': '1.0',
247             'toscaModelURL': null,
248             'category': 'Emanuel',
249             'serviceType': '',
250             'serviceRole': '',
251             'description': 'ComplexService',
252             'serviceEcompNaming': 'true',
253             'instantiationType': 'Macro',
254             'inputs': {}
255           },
256           'vnfs': {
257             'VF_vGeraldine 0': {
258               'uuid': 'd6557200-ecf2-4641-8094-5393ae3aae60',
259               'invariantUuid': '4160458e-f648-4b30-a176-43881ffffe9e',
260               'description': 'VSP_vGeraldine',
261               'name': 'VF_vGeraldine',
262               'version': '2.0',
263               'customizationUuid': '91415b44-753d-494c-926a-456a9172bbb9',
264               'inputs': {},
265               'commands': {},
266               'properties': {
267                 'max_instances': '3',
268                 'min_instances': '1',
269                 'gpb2_Internal2_mac': '00:11:22:EF:AC:DF',
270                 'sctp-b-ipv6-egress_src_start_port': '0',
271                 'sctp-a-ipv6-egress_rule_application': 'any',
272                 'Internal2_allow_transit': 'true',
273                 'sctp-b-IPv6_ethertype': 'IPv6',
274                 'sctp-a-egress_rule_application': 'any',
275                 'sctp-b-ingress_action': 'pass',
276                 'sctp-b-ingress_rule_protocol': 'icmp',
277                 'ncb2_Internal1_mac': '00:11:22:EF:AC:DF',
278                 'sctp-b-ipv6-ingress-src_start_port': '0.0',
279                 'ncb1_Internal2_mac': '00:11:22:EF:AC:DF',
280                 'fsb_volume_size_0': '320.0',
281                 'sctp-b-egress_src_addresses': 'local',
282                 'sctp-a-ipv6-ingress_ethertype': 'IPv4',
283                 'sctp-a-ipv6-ingress-dst_start_port': '0',
284                 'sctp-b-ipv6-ingress_rule_application': 'any',
285                 'domain_name': 'default-domain',
286                 'sctp-a-ingress_rule_protocol': 'icmp',
287                 'sctp-b-egress-src_start_port': '0.0',
288                 'sctp-a-egress_src_addresses': 'local',
289                 'sctp-b-display_name': 'epc-sctp-b-ipv4v6-sec-group',
290                 'sctp-a-egress-src_start_port': '0.0',
291                 'sctp-a-ingress_ethertype': 'IPv4',
292                 'sctp-b-ipv6-ingress-dst_end_port': '65535',
293                 'sctp-b-dst_subnet_prefix_v6': '::',
294                 'nf_naming': '{ecomp_generated_naming=true}',
295                 'sctp-a-ipv6-ingress_src_subnet_prefix': '0.0.0.0',
296                 'sctp-b-egress-dst_start_port': '0.0',
297                 'ncb_flavor_name': 'nv.c20r64d1',
298                 'gpb1_Internal1_mac': '00:11:22:EF:AC:DF',
299                 'sctp-b-egress_dst_subnet_prefix_len': '0.0',
300                 'Internal2_net_cidr': '10.0.0.10',
301                 'sctp-a-ingress-dst_start_port': '0.0',
302                 'sctp-a-egress-dst_start_port': '0.0',
303                 'fsb1_Internal2_mac': '00:11:22:EF:AC:DF',
304                 'sctp-a-egress_ethertype': 'IPv4',
305                 'vlc_st_service_mode': 'in-network-nat',
306                 'sctp-a-ipv6-egress_ethertype': 'IPv4',
307                 'sctp-a-egress-src_end_port': '65535.0',
308                 'sctp-b-ipv6-egress_rule_application': 'any',
309                 'sctp-b-egress_action': 'pass',
310                 'sctp-a-ingress-src_subnet_prefix_len': '0.0',
311                 'sctp-b-ipv6-ingress-src_end_port': '65535.0',
312                 'sctp-b-name': 'epc-sctp-b-ipv4v6-sec-group',
313                 'fsb2_Internal1_mac': '00:11:22:EF:AC:DF',
314                 'sctp-a-ipv6-ingress-src_start_port': '0.0',
315                 'sctp-b-ipv6-egress_ethertype': 'IPv4',
316                 'Internal1_net_cidr': '10.0.0.10',
317                 'sctp-a-egress_dst_subnet_prefix': '0.0.0.0',
318                 'fsb_flavor_name': 'nv.c20r64d1',
319                 'sctp_rule_protocol': '132',
320                 'sctp-b-ipv6-ingress_src_subnet_prefix_len': '0',
321                 'sctp-a-ipv6-ingress_rule_application': 'any',
322                 'sctp-a-IPv6_ethertype': 'IPv6',
323                 'vlc2_Internal1_mac': '00:11:22:EF:AC:DF',
324                 'vlc_st_virtualization_type': 'virtual-machine',
325                 'sctp-b-ingress-dst_start_port': '0.0',
326                 'sctp-b-ingress-dst_end_port': '65535.0',
327                 'sctp-a-ipv6-ingress-src_end_port': '65535.0',
328                 'sctp-a-display_name': 'epc-sctp-a-ipv4v6-sec-group',
329                 'sctp-b-ingress_rule_application': 'any',
330                 'int2_sec_group_name': 'int2-sec-group',
331                 'vlc_flavor_name': 'nd.c16r64d1',
332                 'sctp-b-ipv6-egress_src_addresses': 'local',
333                 'vlc_st_interface_type_int1': 'other1',
334                 'sctp-b-egress-src_end_port': '65535.0',
335                 'sctp-a-ipv6-egress-dst_start_port': '0',
336                 'vlc_st_interface_type_int2': 'other2',
337                 'sctp-a-ipv6-egress_rule_protocol': 'any',
338                 'Internal2_shared': 'false',
339                 'sctp-a-ipv6-egress_dst_subnet_prefix_len': '0',
340                 'Internal2_rpf': 'disable',
341                 'vlc1_Internal1_mac': '00:11:22:EF:AC:DF',
342                 'sctp-b-ipv6-egress_src_end_port': '65535',
343                 'sctp-a-ipv6-egress_src_addresses': 'local',
344                 'sctp-a-ingress-dst_end_port': '65535.0',
345                 'sctp-a-ipv6-egress_src_end_port': '65535',
346                 'Internal1_forwarding_mode': 'l2',
347                 'Internal2_dhcp': 'false',
348                 'sctp-a-dst_subnet_prefix_v6': '::',
349                 'pxe_image_name': 'MME_PXE-Boot_16ACP04_GA.qcow2',
350                 'vlc_st_interface_type_gtp': 'other0',
351                 'ncb1_Internal1_mac': '00:11:22:EF:AC:DF',
352                 'sctp-b-src_subnet_prefix_v6': '::',
353                 'sctp-a-egress_dst_subnet_prefix_len': '0.0',
354                 'int1_sec_group_name': 'int1-sec-group',
355                 'Internal1_dhcp': 'false',
356                 'sctp-a-ipv6-egress_dst_end_port': '65535',
357                 'Internal2_forwarding_mode': 'l2',
358                 'fsb2_Internal2_mac': '00:11:22:EF:AC:DF',
359                 'sctp-b-egress_dst_subnet_prefix': '0.0.0.0',
360                 'Internal1_net_cidr_len': '17',
361                 'gpb2_Internal1_mac': '00:11:22:EF:AC:DF',
362                 'sctp-b-ingress-src_subnet_prefix_len': '0.0',
363                 'sctp-a-ingress_dst_addresses': 'local',
364                 'sctp-a-egress_action': 'pass',
365                 'fsb_volume_type_0': 'SF-Default-SSD',
366                 'ncb2_Internal2_mac': '00:11:22:EF:AC:DF',
367                 'vlc_st_interface_type_sctp_a': 'left',
368                 'vlc_st_interface_type_sctp_b': 'right',
369                 'sctp-a-src_subnet_prefix_v6': '::',
370                 'vlc_st_version': '2',
371                 'sctp-b-egress_ethertype': 'IPv4',
372                 'sctp-a-ingress_rule_application': 'any',
373                 'gpb1_Internal2_mac': '00:11:22:EF:AC:DF',
374                 'instance_ip_family_v6': 'v6',
375                 'sctp-a-ipv6-egress_src_start_port': '0',
376                 'sctp-b-ingress-src_start_port': '0.0',
377                 'sctp-b-ingress_dst_addresses': 'local',
378                 'fsb1_Internal1_mac': '00:11:22:EF:AC:DF',
379                 'vlc_st_interface_type_oam': 'management',
380                 'multi_stage_design': 'false',
381                 'oam_sec_group_name': 'oam-sec-group',
382                 'Internal2_net_gateway': '10.0.0.10',
383                 'sctp-a-ipv6-ingress-dst_end_port': '65535',
384                 'sctp-b-ipv6-egress-dst_start_port': '0',
385                 'Internal1_net_gateway': '10.0.0.10',
386                 'sctp-b-ipv6-egress_rule_protocol': 'any',
387                 'gtp_sec_group_name': 'gtp-sec-group',
388                 'sctp-a-ipv6-egress_dst_subnet_prefix': '0.0.0.0',
389                 'sctp-b-ipv6-egress_dst_subnet_prefix_len': '0',
390                 'sctp-a-ipv6-ingress_dst_addresses': 'local',
391                 'sctp-a-egress_rule_protocol': 'icmp',
392                 'sctp-b-ipv6-egress_action': 'pass',
393                 'sctp-a-ipv6-egress_action': 'pass',
394                 'Internal1_shared': 'false',
395                 'sctp-b-ipv6-ingress_rule_protocol': 'any',
396                 'Internal2_net_cidr_len': '17',
397                 'sctp-a-name': 'epc-sctp-a-ipv4v6-sec-group',
398                 'sctp-a-ingress-src_end_port': '65535.0',
399                 'sctp-b-ipv6-ingress_src_subnet_prefix': '0.0.0.0',
400                 'sctp-a-egress-dst_end_port': '65535.0',
401                 'sctp-a-ingress_action': 'pass',
402                 'sctp-b-egress_rule_protocol': 'icmp',
403                 'sctp-b-ipv6-ingress_action': 'pass',
404                 'vlc_st_service_type': 'firewall',
405                 'sctp-b-ipv6-egress_dst_end_port': '65535',
406                 'sctp-b-ipv6-ingress-dst_start_port': '0',
407                 'vlc2_Internal2_mac': '00:11:22:EF:AC:DF',
408                 'vlc_st_availability_zone': 'true',
409                 'fsb_volume_image_name_1': 'MME_FSB2_16ACP04_GA.qcow2',
410                 'sctp-b-ingress-src_subnet_prefix': '0.0.0.0',
411                 'sctp-a-ipv6-ingress_src_subnet_prefix_len': '0',
412                 'Internal1_allow_transit': 'true',
413                 'gpb_flavor_name': 'nv.c20r64d1',
414                 'availability_zone_max_count': '1',
415                 'fsb_volume_image_name_0': 'MME_FSB1_16ACP04_GA.qcow2',
416                 'sctp-b-ipv6-ingress_dst_addresses': 'local',
417                 'sctp-b-ipv6-egress_dst_subnet_prefix': '0.0.0.0',
418                 'sctp-b-ipv6-ingress_ethertype': 'IPv4',
419                 'vlc1_Internal2_mac': '00:11:22:EF:AC:DF',
420                 'sctp-a-ingress-src_subnet_prefix': '0.0.0.0',
421                 'sctp-a-ipv6-ingress_action': 'pass',
422                 'Internal1_rpf': 'disable',
423                 'sctp-b-ingress_ethertype': 'IPv4',
424                 'sctp-b-egress_rule_application': 'any',
425                 'sctp-b-ingress-src_end_port': '65535.0',
426                 'sctp-a-ipv6-ingress_rule_protocol': 'any',
427                 'sctp-a-ingress-src_start_port': '0.0',
428                 'sctp-b-egress-dst_end_port': '65535.0'
429               },
430               'type': 'VF',
431               'modelCustomizationName': 'VF_vGeraldine 0',
432               'vfModules': {
433                 'vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1': {
434                   'uuid': '522159d5-d6e0-4c2a-aa44-5a542a12a830',
435                   'invariantUuid': '98a7c88b-b577-476a-90e4-e25a5871e02b',
436                   'customizationUuid': '55b1be94-671a-403e-a26c-667e9c47d091',
437                   'description': null,
438                   'name': 'VfVgeraldine..vflorence_vlc..module-1',
439                   'version': '2',
440                   'modelCustomizationName': 'VfVgeraldine..vflorence_vlc..module-1',
441                   'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0},
442                   'commands': {},
443                   'volumeGroupAllowed': false
444                 },
445                 'vf_vgeraldine0..VfVgeraldine..vflorence_gpb..module-2': {
446                   'uuid': '41708296-e443-4c71-953f-d9a010f059e1',
447                   'invariantUuid': '1cca90b8-3490-495e-87da-3f3e4c57d5b9',
448                   'customizationUuid': '6add59e0-7fe1-4bc4-af48-f8812422ae7c',
449                   'description': null,
450                   'name': 'VfVgeraldine..vflorence_gpb..module-2',
451                   'version': '2',
452                   'modelCustomizationName': 'VfVgeraldine..vflorence_gpb..module-2',
453                   'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0},
454                   'commands': {},
455                   'volumeGroupAllowed': false
456                 },
457                 'vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0': {
458                   'uuid': 'a27f5cfc-7f12-4f99-af08-0af9c3885c87',
459                   'invariantUuid': 'a6f9e51a-2b35-416a-ae15-15e58d61f36d',
460                   'customizationUuid': 'f8c040f1-7e51-4a11-aca8-acf256cfd861',
461                   'description': null,
462                   'name': 'VfVgeraldine..base_vflorence..module-0',
463                   'version': '2',
464                   'modelCustomizationName': 'VfVgeraldine..base_vflorence..module-0',
465                   'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1},
466                   'commands': {},
467                   'volumeGroupAllowed': true
468                 }
469               },
470               'volumeGroups': {
471                 'vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0': {
472                   'uuid': 'a27f5cfc-7f12-4f99-af08-0af9c3885c87',
473                   'invariantUuid': 'a6f9e51a-2b35-416a-ae15-15e58d61f36d',
474                   'customizationUuid': 'f8c040f1-7e51-4a11-aca8-acf256cfd861',
475                   'description': null,
476                   'name': 'VfVgeraldine..base_vflorence..module-0',
477                   'version': '2',
478                   'modelCustomizationName': 'VfVgeraldine..base_vflorence..module-0',
479                   'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1}
480                 }
481               }
482             }
483           },
484           'networks': {
485             'ExtVL 0': {
486               'uuid': 'ddc3f20c-08b5-40fd-af72-c6d14636b986',
487               'invariantUuid': '379f816b-a7aa-422f-be30-17114ff50b7c',
488               'description': 'ECOMP generic virtual link (network) base type for all other service-level and global networks',
489               'name': 'ExtVL',
490               'version': '37.0',
491               'customizationUuid': '94fdd893-4a36-4d70-b16a-ec29c54c184f',
492               'inputs': {},
493               'commands': {},
494               'properties': {
495                 'network_assignments': '{is_external_network=false, ipv4_subnet_default_assignment={min_subnets_count=1}, ecomp_generated_network_assignment=false, ipv6_subnet_default_assignment={min_subnets_count=1}}',
496                 'exVL_naming': '{ecomp_generated_naming=true}',
497                 'network_flows': '{is_network_policy=false, is_bound_to_vpn=false}',
498                 'network_homing': '{ecomp_selected_instance_node_target=false}'
499               },
500               'type': 'VL',
501               'modelCustomizationName': 'ExtVL 0'
502             }
503           },
504           'configurations': {
505             'Port Mirroring Configuration By Policy 0': {
506               'uuid': 'b4398538-e89d-4f13-b33d-ca323434ba50',
507               'invariantUuid': '6ef0ca40-f366-4897-951f-abd65d25f6f7',
508               'description': 'A port mirroring configuration by policy object',
509               'name': 'Port Mirroring Configuration By Policy',
510               'version': '27.0',
511               'customizationUuid': '3c3b7b8d-8669-4b3b-8664-61970041fad2',
512               'inputs': {},
513               'commands': {},
514               'properties': {},
515               'type': 'Configuration',
516               'modelCustomizationName': 'Port Mirroring Configuration By Policy 0',
517               'sourceNodes': [],
518               'collectorNodes': null,
519               'configurationByPolicy': false
520             }
521           },
522           'serviceProxies': {},
523           'vfModules': {
524             'vf_vgeraldine0..VfVgeraldine..vflorence_vlc..module-1': {
525               'uuid': '522159d5-d6e0-4c2a-aa44-5a542a12a830',
526               'invariantUuid': '98a7c88b-b577-476a-90e4-e25a5871e02b',
527               'customizationUuid': '55b1be94-671a-403e-a26c-667e9c47d091',
528               'description': null,
529               'name': 'VfVgeraldine..vflorence_vlc..module-1',
530               'version': '2',
531               'modelCustomizationName': 'VfVgeraldine..vflorence_vlc..module-1',
532               'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0},
533               'commands': {},
534               'volumeGroupAllowed': false
535             },
536             'vf_vgeraldine0..VfVgeraldine..vflorence_gpb..module-2': {
537               'uuid': '41708296-e443-4c71-953f-d9a010f059e1',
538               'invariantUuid': '1cca90b8-3490-495e-87da-3f3e4c57d5b9',
539               'customizationUuid': '6add59e0-7fe1-4bc4-af48-f8812422ae7c',
540               'description': null,
541               'name': 'VfVgeraldine..vflorence_gpb..module-2',
542               'version': '2',
543               'modelCustomizationName': 'VfVgeraldine..vflorence_gpb..module-2',
544               'properties': {'minCountInstances': 0, 'maxCountInstances': null, 'initialCount': 0},
545               'commands': {},
546               'volumeGroupAllowed': false
547             },
548             'vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0': {
549               'uuid': 'a27f5cfc-7f12-4f99-af08-0af9c3885c87',
550               'invariantUuid': 'a6f9e51a-2b35-416a-ae15-15e58d61f36d',
551               'customizationUuid': 'f8c040f1-7e51-4a11-aca8-acf256cfd861',
552               'description': null,
553               'name': 'VfVgeraldine..base_vflorence..module-0',
554               'version': '2',
555               'modelCustomizationName': 'VfVgeraldine..base_vflorence..module-0',
556               'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1},
557               'commands': {},
558               'volumeGroupAllowed': true
559             }
560           },
561           'volumeGroups': {
562             'vf_vgeraldine0..VfVgeraldine..base_vflorence..module-0': {
563               'uuid': 'a27f5cfc-7f12-4f99-af08-0af9c3885c87',
564               'invariantUuid': 'a6f9e51a-2b35-416a-ae15-15e58d61f36d',
565               'customizationUuid': 'f8c040f1-7e51-4a11-aca8-acf256cfd861',
566               'description': null,
567               'name': 'VfVgeraldine..base_vflorence..module-0',
568               'version': '2',
569               'modelCustomizationName': 'VfVgeraldine..base_vflorence..module-0',
570               'properties': {'minCountInstances': 1, 'maxCountInstances': 1, 'initialCount': 1}
571             }
572           },
573           'pnfs': {}
574         }
575       }
576     ));
577   }
578 });