[SDC-29] Amdocs OnBoard 1707 initial commit.
[sdc.git] / openecomp-be / lib / openecomp-sdc-translator-lib / openecomp-sdc-translator-core / src / test / resources / mock / services / heattotosca / getAttrDynamicParamEmptyMap / inputs / LCP-PairGroup.template.yaml
1 heat_template_version: 2015-04-30
2
3 description: |
4   Template for a member of an elastic collection of VMgroups.
5   That is, this template creates the resources needed for one
6   VMgroup...one unit of elasticity of the specified type.
7
8 parameters:
9
10   backup_file:
11     type: string
12     description: |
13       <cURL path>/<backup file>
14       This is only used for restore (aka "disaster recovery") and
15       only referenced on OAM-A.
16     default: ""
17
18   default_action:
19     type: string
20     description: |
21       Default action for all VMs. This can be overridden on a
22       per-VM group, pair or VM basis via the ENV file.
23     constraints:
24       - allowed_values:
25         - "install"
26         - "recreate"
27         - "scale-in"
28         - "scale-out"
29         - "scale-up"
30         - "scale-down"
31         - "heal"
32         - "update"
33     default: "install"
34
35   # This parameter should always be defaulted.
36   chk4override:
37     type: json
38     description: |
39       Used to set a string value to either a default from a json
40       map (keyed by "default") or to a VM member_index keyed override
41       value in the same map.
42     default: {"": "defaults"}
43
44   config_info:
45     type: json
46     description: Service configuration and network layout.
47     default: {}
48
49   # This parameter should always be defaulted.
50   default_names:
51     type: json
52     description: |
53       Default names for resources. The first key is the override
54       value from the ENV file. If it is empty the result will be
55       the default value map. Otherwise the result will be empty.
56     default: {
57       "": {
58         "storage": {
59           "0": "STORAGE_VOL0",
60           "1": "STORAGE_VOL1"
61         },
62         "drdb": {
63           "0": "DRBD_VOL0",
64           "1": "DRBD_VOL1",
65         },
66         "vmname": {
67           "0": "VM0",
68           "1": "VM1"
69         }
70       }
71     }
72
73   default_name_base:
74     type: json
75     description: |
76       Default name base for resources. The first key is the override
77       value from the ENV file. If it is empty the result will be
78       the default value. Otherwise the result will be empty.
79
80   ext_net_info:
81     type: json
82     description: External network info. Keyed by subnet tag.
83
84   group_id:
85     type: string
86     description: ID number of the elastic group this pair is a member of.
87
88   group_index:
89     type: string
90     description: Index of the VM pair within the elastic group.
91
92   group_tag:
93     type: string
94     description: Key into "usage_info" for members of this elastic group.
95
96   install_config:
97     type: string
98     description: JSON formatted string of install config values.
99
100   int_net_count:
101     type: string
102     description: Number of internal networks.
103
104   # This parameter should always be defaulted.
105   int_net_map:
106     type: json
107     description: |
108       Maps the number of internal networks to the resource string
109       used to get the first external vnic IP addresses.
110     default: {
111       "1": "resource.1",
112       "2": "resource.2"
113     }
114
115   int_net_info:
116     type: json
117     description: Internal network info. Keyed by INTERNALnet[0|1].
118
119   lcm_keypair:
120     type: string
121     description: Lifecycle management access key pair.
122     constraints:
123       - custom_constraint: nova.keypair
124     default: ""
125
126   current_group_count:
127     type: string
128     description: |
129       Current VM pair count within the elastic group.
130
131   certificate:
132     type: string
133     description: |
134       Certificate to use when accessing data from from secure URLs.
135     default: ""
136
137   name_delimiter:
138     type: string
139     description: Flexname name prefix/suffix delimiter.
140     default: "-"
141
142   net_info_str:
143     type: string
144     description: |
145       JSON formatted string with all network info.
146       This is redundant with int_net_info and ext_net_info except
147       in Kilo there is no way to convert json to string for
148       output as a personality file.
149
150   role:
151     type: string
152     description: VM role during LCM activities.
153     constraints:
154       - allowed_values: ["oam", "other"]
155     default: "other"
156
157   sec_group:
158     type: string
159     description: All-open security group UUID.
160
161   ssh_public_key:
162     type: string
163     description: Public SSH key for VM to VM communication in this system.
164
165   ssh_private_key:
166     type: string
167     description: Private SSH key for VM to VM communication in this system.
168     hidden: True
169
170   ssh_access_key:
171     type: string
172     description: Public SSH key for external access.
173     default: ""
174
175   stack:
176     type: string
177     description: Stack name.
178     constraints:
179       - allowed_pattern: "^[a-zA-Z0-9][a-zA-Z0-9_-]*$"
180
181   storage_size:
182     type: number
183     description: Size of /storage in GB.
184     default: 4
185
186   total_pair_count:
187     type: string
188     description: |
189       This string will evaluate to the number of PairGroups in the VNF.
190
191   usage_info:
192     type: json
193     description: |
194       Per-VM/vNIC data for members of this elastic group.
195
196   # This parameter should always be defaulted.
197   validation_info:
198     type: json
199     description: |
200       Dummy data to work around Oopenstack template validation issue
201       https://bugs.launchpad.net/heat/+bug/1559807
202       The two layers of "defaults" keys supports use of
203       chk4override at two levels.
204     default: {
205       "defaults": {
206         "defaults": {
207           "image": "dummyImage",
208         }
209       }
210     }
211
212 resources:
213
214   NOKIA-LCP-RandomA:
215     type: OS::Heat::RandomString
216     properties:
217       length: 512
218
219   NOKIA-LCP-Block-StorageA:
220     type: OS::Cinder::Volume
221     properties:
222       description: Used for VM /storage partition.
223       name:
224         str_replace:
225           template: $stk$delim$base$override$default
226           params:
227             $base: {get_param: [default_name_base, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "storage_name"]}]}
228             $default: {get_param: [default_names, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "storage_name"]}, "storage", "0"]}
229             $override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "storage_name"]}
230             $delim: {get_param: name_delimiter}
231             $stk: {get_param: stack}
232       size: {get_param: storage_size}
233       availability_zone:
234         str_replace:
235           template: $override$default
236           params:
237             $default: {get_param: [usage_info, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "storage_zone"]}]}, "storage_zone", "0"]}
238             $override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "storage_zone"]}
239
240   NOKIA-LCP-BlockAttachA:
241     type: OS::Cinder::VolumeAttachment
242     depends_on:
243       - NOKIA-LCP-VMA
244       - NOKIA-LCP-Block-StorageA
245     properties:
246       instance_uuid: {get_resource: NOKIA-LCP-VMA}
247       volume_id: {get_resource: NOKIA-LCP-Block-StorageA}
248
249   NOKIA-LCP-VMportGroupA:
250     type: OS::Heat::ResourceGroup
251     properties:
252       count: {get_param: [config_info, vnic_count]}
253       resource_def:
254         type: LCP-Port.template.yaml
255         properties:
256           default_name_base:
257             str_replace:
258               template: |
259                 {"": "$base$vm"}
260               params:
261                 $base: {get_param: [default_name_base, ""]}
262                 $vm: {get_param: [default_names, "", "vmname", "0"]}
263           group_index: {get_param: group_index}
264           vm_index: "0"
265           vnic_index: '%index%' 
266           config_info: {get_param: config_info}
267           ext_net_info: {get_param: ext_net_info}
268           int_net_info: {get_param: int_net_info}
269           group_tag: {get_param: group_tag}
270           group_id: {get_param: group_id}
271           name_delimiter: {get_param: name_delimiter}
272           open_sec_group: {get_param: sec_group}
273           stack: {get_param: stack}
274           usage_info: {get_param: usage_info}
275
276   NOKIA-LCP-VMA:
277     type: OS::Nova::Server
278     depends_on:
279       - NOKIA-LCP-Block-StorageA
280       - NOKIA-LCP-RandomA
281       - NOKIA-LCP-VMportGroupA
282     properties:
283       name:
284         str_replace:
285           template: $stk$delim$base$override$default
286           params:
287             $base: {get_param: [default_name_base, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "name"]}]}
288             $default: {get_param: [default_names, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "name"]}, "vmname", "0"]}
289             $override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "name"]}
290             $delim: {get_param: name_delimiter}
291             $stk: {get_param: stack}
292       availability_zone:
293         str_replace:
294           template: $override$default
295           params:
296             $default: {get_param: [usage_info, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "availability_zone"]}]}, "availability_zone", "0"]}
297             $override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "availability_zone"]}
298       image:
299         str_replace:
300           template: $override$default$validate
301           params:
302             $default: {get_param: [usage_info, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, "overrides", "image", "0"]}]}, "image", "0"]}
303             $override: {get_param: [usage_info, "group_info", {get_param: group_id}, "overrides", "image", "0"]}
304             $validate: {get_param: [validation_info, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, "overrides", "image", "0"]}]}, {get_param: [chk4override, {get_param: [usage_info, "defaults", "image", "0"]}]}, "image"]}
305       image_update_policy: REBUILD
306       flavor:
307         str_replace:
308           template: $override$default
309           params:
310             $default: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "flavor"]}]}, "flavor", "0"]}
311             $override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "flavor"]}
312       networks: [{get_attr: [NOKIA-LCP-VMportGroupA, PortEntry]}]
313       key_name: {get_param: lcm_keypair}
314       # Note that the flavor default and override values are included
315       # in CLDsetup.json to force a VM rebuild (instead of replace or resize)
316       # if the VM flavor is changed.
317       personality: {
318         /storage/cloud/.ssh/SSHpubkey: {get_param: ssh_public_key},
319         /storage/cloud/.ssh/SSHprivkey: {get_param: ssh_private_key},
320         /storage/cloud/CLDsetup_data.json: {
321           str_replace: {
322             template: "{\n
323             \t\"drbd_uuid\": \"\",\n
324             \t\"flavor_default\": \"$flavor_default\",\n
325             \t\"flavor_override\": \"$flavor_override\",\n
326             \t\"int_vlan_id\": \"$int_vlan_id\",\n
327             \t\"random\": \"$random\",\n
328             \t\"SSHpubkeyFile\": \"/storage/cloud/.ssh/SSHpubkey\",\n
329             \t\"SSHprivkeyFile\": \"/storage/cloud/.ssh/SSHprivkey\",\n
330             \t\"SSHaccessKey\": \"$acckey\",\n
331             \t\"stk\": \"$stk\",\n
332             \t\"uuid_storage\": \"$uuid_storage\"\n
333             }",
334             params: {
335               $acckey: {get_param: ssh_access_key},
336               $flavor_default: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "flavor"]}]}, "flavor", "0"]},
337               $flavor_override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "flavor"]},
338               $int_vlan_id: {get_param: [usage_info, int_vlan_id]},
339               $random: {get_resource: NOKIA-LCP-RandomA},
340               $stk: {get_param: stack},
341               $uuid_storage: {get_resource: NOKIA-LCP-Block-StorageA}
342             }
343           }
344         },
345         /storage/cloud/discover/GlobalConfig.json: {
346           str_replace: {
347             template: "
348               {
349                 \"v4_dns_server\": \"$v4dns\",
350                 \"v6_dns_server\": \"$v6dns\",
351                 \"v4_enum_server\": \"$v4enum\",
352                 \"v6_enum_server\": \"$v6enum\",
353                 \"v4_ntp_server\": \"$v4ntp\",
354                 \"v6_ntp_server\": \"$v6ntp\",
355                 $cfg
356               }
357             ",
358             params: {
359               $v4dns: {get_param: [usage_info, v4_dns_server]},
360               $v6dns: {get_param: [usage_info, v6_dns_server]},
361               $v4enum: {get_param: [usage_info, v4_enum_server]},
362               $v6enum: {get_param: [usage_info, v6_enum_serve]},
363               $v4ntp: {get_param: [usage_info, v4_ntp_server]},
364               $v6ntp: {get_param: [usage_info, v6_ntp_server]},
365               $cfg: {get_param: install_config}
366             }
367           }
368         },
369         /storage/cloud/discover/VMinfo.json: {
370           str_replace: {
371             template: "
372               {\n
373                 \"vm_suffix\": \"$base$override$default\",\n
374                 \"service_config\": $servcfg,\n
375                 \"v4_default_gateway\": \"$v4gateway\",\n
376                 \"v6_default_gateway\": \"$v6gateway\",\n
377                 \"v4_static_routes\": $v4static_routes,\n
378                 \"v6_static_routes\": $v6static_routes,\n
379                 \"IPinfo\": [\n$ipinfo\n],\n
380                 \"Netinfo\": $netinfo\n
381               }\n
382             ",
383             params: {
384               $base: {get_param: [default_name_base, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", name]}]},
385               $default: {get_param: [default_names, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", name]}, "vmname", "0"]},
386               $override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", name]},
387               $servcfg: {get_param: [config_info, poolinfo]},
388               $v4gateway: {get_param: [config_info, v4_default_gateway]},
389               $v6gateway: {get_param: [config_info, v6_default_gateway]},
390               $v4static_routes: {get_param: [config_info, v4_static_routes]},
391               $v6static_routes: {get_param: [config_info, v6_static_routes]},
392               $ipinfo: {list_join: [',', {get_attr: [NOKIA-LCP-VMportGroupA, PortIpInfo]}]},
393               $netinfo: {get_param: net_info_str}
394             }
395           }
396         },
397       }
398       config_drive: "true"
399       metadata: {
400         action: {
401           str_replace: {
402             template: "$pairside$vm",
403             params: {
404               $pairside: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", "action"]}]}, "action", "0"]},
405               $vm: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "0", action]}
406             }
407           }
408         },
409         backup_file: {get_param: backup_file},
410         default_action: {get_param: default_action},
411         group_type: "pair",
412         group_index: {get_param: group_index},
413         current_group_count: {get_param: current_group_count},
414         certificate: {get_param: certificate},
415         member_index: "0",
416         side_action: {get_param: [usage_info, defaults, action, "0"]},
417         total_pair_count: {get_param: total_pair_count},
418         vnf_id: {get_param: [usage_info, vnf_id]},
419         vnf_name: {get_param: [usage_info, vnf_name]},
420         vnf_module_id: {get_param: [usage_info, vnf_module_id]},
421         vnf_module_name: {get_param: [usage_info, vnf_module_name]},
422         vnf_role: {get_param: group_tag}
423       }
424       user_data:
425         str_replace:
426           template: |
427             #!/bin/bash
428
429             tmp=$(/opt/LSS/sbin/CLDbase "pair" "$tag" "$grp_id" "$grp_index" "0" "$role")
430             ret=$?
431
432             if (( ret != 0 )); then
433               echo "CLDbase failed, ret=${ret}: ${tmp}"
434               exit 1
435             fi
436             exit 0
437           params:
438             $grp_id: {get_param: group_id}
439             $grp_index: {get_param: group_index}
440             $role: {get_param: role}
441             $tag: {get_param: group_tag}
442
443   NOKIA-LCP-RandomB:
444     type: OS::Heat::RandomString
445     properties:
446       length: 512
447
448   NOKIA-LCP-Block-StorageB:
449     type: OS::Cinder::Volume
450     properties:
451       description: Used for VM /storage partition.
452       name:
453         str_replace:
454           template: $stk$delim$base$override$default
455           params:
456             $base: {get_param: [default_name_base, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "storage_name"]}]}
457             $default: {get_param: [default_names, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "storage_name"]}, "storage", "1"]}
458             $override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "storage_name"]}
459             $delim: {get_param: name_delimiter}
460             $stk: {get_param: stack}
461       size: {get_param: storage_size}
462       availability_zone:
463         str_replace:
464           template: $override$default
465           params:
466             $default: {get_param: [usage_info, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "storage_zone"]}]}, "storage_zone", "1"]}
467             $override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "storage_zone"]}
468
469   NOKIA-LCP-BlockAttachB:
470     type: OS::Cinder::VolumeAttachment
471     depends_on:
472       - NOKIA-LCP-VMB
473       - NOKIA-LCP-Block-StorageB
474     properties:
475       instance_uuid: {get_resource: NOKIA-LCP-VMB}
476       volume_id: {get_resource: NOKIA-LCP-Block-StorageB}
477
478   NOKIA-LCP-VMportGroupB:
479     type: OS::Heat::ResourceGroup
480     properties:
481       count: {get_param: [config_info, vnic_count]}
482       resource_def:
483         type: LCP-Port.template.yaml
484         properties:
485           default_name_base:
486             str_replace:
487               template: |
488                 {"": "$base$vm"}
489               params:
490                 $base: {get_param: [default_name_base, ""]}
491                 $vm: {get_param: [default_names, "", "vmname", "1"]}
492           group_index: {get_param: group_index}
493           vm_index: "1"
494           vnic_index: '%index%' 
495           config_info: {get_param: config_info}
496           ext_net_info: {get_param: ext_net_info}
497           int_net_info: {get_param: int_net_info}
498           group_tag: {get_param: group_tag}
499           group_id: {get_param: group_id}
500           name_delimiter: {get_param: name_delimiter}
501           open_sec_group: {get_param: sec_group}
502           stack: {get_param: stack}
503           usage_info: {get_param: usage_info}
504
505   NOKIA-LCP-VMB:
506     type: OS::Nova::Server
507     depends_on:
508       - NOKIA-LCP-Block-StorageB
509       - NOKIA-LCP-RandomB
510       - NOKIA-LCP-VMportGroupB
511     properties:
512       name:
513         str_replace:
514           template: $stk$delim$base$override$default
515           params:
516             $base: {get_param: [default_name_base, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "name"]}]}
517             $default: {get_param: [default_names, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "name"]}, "vmname", "1"]}
518             $override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "name"]}
519             $delim: {get_param: name_delimiter}
520             $stk: {get_param: stack}
521       availability_zone:
522         str_replace:
523           template: $override$default
524           params:
525             $default: {get_param: [usage_info, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "availability_zone"]}]}, "availability_zone", "1"]}
526             $override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "availability_zone"]}
527       image:
528         str_replace:
529           template: $override$default$validate
530           params:
531             $default: {get_param: [usage_info, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, "overrides", "image", "1"]}]}, "image", "1"]}
532             $override: {get_param: [usage_info, "group_info", {get_param: group_id}, "overrides", "image", "1"]}
533             $validate: {get_param: [validation_info, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, "overrides", "image", "1"]}]}, {get_param: [chk4override, {get_param: [usage_info, "defaults", "image", "1"]}]}, "image"]}
534       image_update_policy: REBUILD
535       flavor:
536         str_replace:
537           template: $override$default
538           params:
539             $default: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "flavor"]}]}, "flavor", "1"]}
540             $override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "flavor"]}
541       key_name: {get_param: lcm_keypair}
542       networks: [{get_attr: [NOKIA-LCP-VMportGroupB, PortEntry]}]
543       # Note that the flavor default and override values are included
544       # in CLDsetup.json to force a VM rebuild (instead of replace or resize)
545       # if the VM flavor is changed.
546       personality: {
547         /storage/cloud/.ssh/SSHpubkey: {get_param: ssh_public_key},
548         /storage/cloud/.ssh/SSHprivkey: {get_param: ssh_private_key},
549         /storage/cloud/CLDsetup_data.json: {
550           str_replace: {
551             template: "{\n
552             \t\"drbd_uuid\": \"\",\n
553             \t\"flavor_default\": \"$flavor_default\",\n
554             \t\"flavor_override\": \"$flavor_override\",\n
555             \t\"int_vlan_id\": \"$int_vlan_id\",\n
556             \t\"random\": \"$random\",\n
557             \t\"SSHpubkeyFile\": \"/storage/cloud/.ssh/SSHpubkey\",\n
558             \t\"SSHprivkeyFile\": \"/storage/cloud/.ssh/SSHprivkey\",\n
559             \t\"SSHaccessKey\": \"$acckey\",\n
560             \t\"stk\": \"$stk\",\n
561             \t\"uuid_storage\": \"$uuid_storage\"\n
562             }",
563             params: {
564               $acckey: {get_param: ssh_access_key},
565               $flavor_default: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "flavor"]}]}, "flavor", "1"]},
566               $flavor_override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "flavor"]},
567               $int_vlan_id: {get_param: [usage_info, int_vlan_id]},
568               $random: {get_resource: NOKIA-LCP-RandomB},
569               $stk: {get_param: stack},
570               $uuid_storage: {get_resource: NOKIA-LCP-Block-StorageB}
571             }
572           }
573         },
574         /storage/cloud/discover/GlobalConfig.json: {
575           str_replace: {
576             template: "
577               {
578                 \"v4_dns_server\": \"$v4dns\",
579                 \"v6_dns_server\": \"$v6dns\",
580                 \"v4_enum_server\": \"$v4enum\",
581                 \"v6_enum_server\": \"$v6enum\",
582                 \"v4_ntp_server\": \"$v4ntp\",
583                 \"v6_ntp_server\": \"$v6ntp\",
584                 $cfg
585               }
586             ",
587             params: {
588               $v4dns: {get_param: [usage_info, v4_dns_server]},
589               $v6dns: {get_param: [usage_info, v6_dns_server]},
590               $v4enum: {get_param: [usage_info, v4_enum_server]},
591               $v6enum: {get_param: [usage_info, v6_enum_serve]},
592               $v4ntp: {get_param: [usage_info, v4_ntp_server]},
593               $v6ntp: {get_param: [usage_info, v6_ntp_server]},
594               $cfg: {get_param: install_config}
595             }
596           }
597         },
598         /storage/cloud/discover/VMinfo.json: {
599           str_replace: {
600             template: "
601               {\n
602                 \"vm_suffix\": \"$base$override$default\",
603                 \"service_config\": $servcfg,\n
604                 \"v4_default_gateway\": \"$v4gateway\",\n
605                 \"v6_default_gateway\": \"$v6gateway\",\n
606                 \"v4_static_routes\": $v4static_routes,\n
607                 \"v6_static_routes\": $v6static_routes,\n
608                 \"IPinfo\": [\n$ipinfo\n],\n
609                 \"Netinfo\": $netinfo\n
610               }\n
611             ",
612             params: {
613               $base: {get_param: [default_name_base, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", name]}]},
614               $default: {get_param: [default_names, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", name]}, "vmname", "1"]},
615               $override: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", name]},
616               $servcfg: {get_param: [config_info, poolinfo]},
617               $v4gateway: {get_param: [config_info, v4_default_gateway]},
618               $v6gateway: {get_param: [config_info, v6_default_gateway]},
619               $v4static_routes: {get_param: [config_info, v4_static_routes]},
620               $v6static_routes: {get_param: [config_info, v6_static_routes]},
621               $ipinfo: {list_join: [',', {get_attr: [NOKIA-LCP-VMportGroupB, PortIpInfo]}]},
622               $netinfo: {get_param: net_info_str}
623             }
624           }
625         },
626       }
627       config_drive: "true"
628       metadata: {
629         action: {
630           str_replace: {
631             template: "$pairside$vm",
632             params: {
633               $pairside: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: [chk4override, {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", "action"]}]}, "action", "1"]},
634               $vm: {get_param: [usage_info, "group_info", {get_param: group_id}, {get_param: group_index}, "1", action]}
635             }
636           }
637         },
638         backup_file: {get_param: backup_file},
639         default_action: {get_param: default_action},
640         group_type: "pair",
641         group_index: {get_param: group_index},
642         current_group_count: {get_param: current_group_count},
643         certificate: {get_param: certificate},
644         member_index: "1",
645         side_action: {get_param: [usage_info, defaults, action, "1"]},
646         total_pair_count: {get_param: total_pair_count},
647         vnf_id: {get_param: [usage_info, vnf_id]},
648         vnf_name: {get_param: [usage_info, vnf_name]},
649         vnf_module_id: {get_param: [usage_info, vnf_module_id]},
650         vnf_module_name: {get_param: [usage_info, vnf_module_name]},
651         vnf_role: {get_param: group_tag}
652       }
653       user_data:
654         str_replace:
655           template: |
656             #!/bin/bash
657
658             tmp=$(/opt/LSS/sbin/CLDbase "pair" "$tag" "$grp_id" "$grp_index" "1" "$role")
659             ret=$?
660
661             if (( ret != 0 )); then
662               echo "CLDbase failed, ret=${ret}: ${tmp}"
663               exit 1
664             fi
665             exit 0
666           params:
667             $grp_id: {get_param: group_id}
668             $grp_index: {get_param: group_index}
669             $role: {get_param: role}
670             $tag: {get_param: group_tag}
671
672 outputs:
673
674   Version:
675     description: |
676       Template file version number. This should be updated
677       each time a non-comment change is made to this file.
678     value: K1
679
680   VMA-EXT_IPS:
681     description: IP addresses assigned to the first external network.
682     value: {get_attr: [NOKIA-LCP-VMportGroupA, {get_param: [int_net_map, {get_param: int_net_count}]}, ASSIGNED_IPS]}
683
684   VMB-EXT_IPS:
685     description: IP addresses assigned to the first external network.
686     value: {get_attr: [NOKIA-LCP-VMportGroupB, {get_param: [int_net_map, {get_param: int_net_count}]}, ASSIGNED_IPS]}
687