1 heat_template_version: 2015-04-30
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.
13 <cURL path>/<backup file>
14 This is only used for restore (aka "disaster recovery") and
15 only referenced on OAM-A.
21 Default action for all VMs. This can be overridden on a
22 per-VM group, pair or VM basis via the ENV file.
35 # This parameter should always be defaulted.
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"}
46 description: Service configuration and network layout.
49 # This parameter should always be defaulted.
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.
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.
82 description: External network info. Keyed by subnet tag.
86 description: ID number of the elastic group this pair is a member of.
90 description: Index of the VM pair within the elastic group.
94 description: Key into "usage_info" for members of this elastic group.
98 description: JSON formatted string of install config values.
102 description: Number of internal networks.
104 # This parameter should always be defaulted.
108 Maps the number of internal networks to the resource string
109 used to get the first external vnic IP addresses.
117 description: Internal network info. Keyed by INTERNALnet[0|1].
121 description: Lifecycle management access key pair.
123 - custom_constraint: nova.keypair
129 Current VM pair count within the elastic group.
134 Certificate to use when accessing data from from secure URLs.
139 description: Flexname name prefix/suffix delimiter.
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.
152 description: VM role during LCM activities.
154 - allowed_values: ["oam", "other"]
159 description: All-open security group UUID.
163 description: Public SSH key for VM to VM communication in this system.
167 description: Private SSH key for VM to VM communication in this system.
172 description: Public SSH key for external access.
177 description: Stack name.
179 - allowed_pattern: "^[a-zA-Z0-9][a-zA-Z0-9_-]*$"
183 description: Size of /storage in GB.
189 This string will evaluate to the number of PairGroups in the VNF.
194 Per-VM/vNIC data for members of this elastic group.
196 # This parameter should always be defaulted.
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.
207 "image": "dummyImage",
215 type: OS::Heat::RandomString
219 NOKIA-LCP-Block-StorageA:
220 type: OS::Cinder::Volume
222 description: Used for VM /storage partition.
225 template: $stk$delim$base$override$default
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}
235 template: $override$default
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"]}
240 NOKIA-LCP-BlockAttachA:
241 type: OS::Cinder::VolumeAttachment
244 - NOKIA-LCP-Block-StorageA
246 instance_uuid: {get_resource: NOKIA-LCP-VMA}
247 volume_id: {get_resource: NOKIA-LCP-Block-StorageA}
249 NOKIA-LCP-VMportGroupA:
250 type: OS::Heat::ResourceGroup
252 count: {get_param: [config_info, vnic_count]}
254 type: LCP-Port.template.yaml
261 $base: {get_param: [default_name_base, ""]}
262 $vm: {get_param: [default_names, "", "vmname", "0"]}
263 group_index: {get_param: group_index}
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}
277 type: OS::Nova::Server
279 - NOKIA-LCP-Block-StorageA
281 - NOKIA-LCP-VMportGroupA
285 template: $stk$delim$base$override$default
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}
294 template: $override$default
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"]}
300 template: $override$default$validate
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
308 template: $override$default
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.
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: {
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
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}
345 /storage/cloud/discover/GlobalConfig.json: {
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\",
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}
369 /storage/cloud/discover/VMinfo.json: {
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
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}
402 template: "$pairside$vm",
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]}
409 backup_file: {get_param: backup_file},
410 default_action: {get_param: default_action},
412 group_index: {get_param: group_index},
413 current_group_count: {get_param: current_group_count},
414 certificate: {get_param: certificate},
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}
429 tmp=$(/opt/LSS/sbin/CLDbase "pair" "$tag" "$grp_id" "$grp_index" "0" "$role")
432 if (( ret != 0 )); then
433 echo "CLDbase failed, ret=${ret}: ${tmp}"
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}
444 type: OS::Heat::RandomString
448 NOKIA-LCP-Block-StorageB:
449 type: OS::Cinder::Volume
451 description: Used for VM /storage partition.
454 template: $stk$delim$base$override$default
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}
464 template: $override$default
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"]}
469 NOKIA-LCP-BlockAttachB:
470 type: OS::Cinder::VolumeAttachment
473 - NOKIA-LCP-Block-StorageB
475 instance_uuid: {get_resource: NOKIA-LCP-VMB}
476 volume_id: {get_resource: NOKIA-LCP-Block-StorageB}
478 NOKIA-LCP-VMportGroupB:
479 type: OS::Heat::ResourceGroup
481 count: {get_param: [config_info, vnic_count]}
483 type: LCP-Port.template.yaml
490 $base: {get_param: [default_name_base, ""]}
491 $vm: {get_param: [default_names, "", "vmname", "1"]}
492 group_index: {get_param: group_index}
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}
506 type: OS::Nova::Server
508 - NOKIA-LCP-Block-StorageB
510 - NOKIA-LCP-VMportGroupB
514 template: $stk$delim$base$override$default
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}
523 template: $override$default
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"]}
529 template: $override$default$validate
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
537 template: $override$default
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.
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: {
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
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}
574 /storage/cloud/discover/GlobalConfig.json: {
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\",
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}
598 /storage/cloud/discover/VMinfo.json: {
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
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}
631 template: "$pairside$vm",
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]}
638 backup_file: {get_param: backup_file},
639 default_action: {get_param: default_action},
641 group_index: {get_param: group_index},
642 current_group_count: {get_param: current_group_count},
643 certificate: {get_param: certificate},
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}
658 tmp=$(/opt/LSS/sbin/CLDbase "pair" "$tag" "$grp_id" "$grp_index" "1" "$role")
661 if (( ret != 0 )); then
662 echo "CLDbase failed, ret=${ret}: ${tmp}"
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}
676 Template file version number. This should be updated
677 each time a non-comment change is made to this file.
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]}
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]}