1 heat_template_version: 2013-05-23
2 #################################
5 # - Unique availability zone for each VM
6 # - LAN8 and SLAN networks removed according to latest Prod/Type I diagram
9 # - VM start-up order: SMP->DB->BE->FE (no error handling yet)
10 # - Provisioning scripts placeholders
12 #################################
14 description: ASC Template
17 # availability_zone_smp0:
20 # availability_zone_smp1:
23 # availability_zone_fe0:
26 # availability_zone_fe1:
29 # availability_zone_db0:
32 # availability_zone_db1:
35 # availability_zone_be0:
38 # availability_zone_be1:
41 # availability_zone_be2:
44 # availability_zone_be3:
47 # availability_zone_be4:
53 description: Unique name for this VNF instance
54 default: This_is_the_SCP_name
57 description: Unique ID for this VNF instance
58 default: This_is_ths_SCP_id
62 description: flavor type
66 description: flavor type
70 description: flavor type
74 description: flavor type
78 description: Image use to boot a server
79 default: asc_base_image_be
82 description: Image use to boot a server
83 default: asc_base_image_fe
86 description: Image use to boot a server
87 default: asc_base_image_smp
90 description: Image use to boot a server
91 default: asc_base_image_db
93 int_vscp_fe_cluster_net_id:
95 description: LAN2 FE Cluster/KA
96 int_vscp_fe_cluster_cidr:
98 description: Private Network2 Address (CIDR notation)
99 int_vscp_cluster_net_id:
101 description: LAN3 Cluster
102 int_vscp_cluster_cidr:
104 description: Private Network3 Address (CIDR notation)
105 int_vscp_db_network_net_id:
108 int_vscp_db_network_cidr:
110 description: Private Network4 Address (CIDR notation)
111 SIGNET_vrf_A1_direct_net_id:
113 description: Network name for SIGTRAN_A
114 SIGNET_vrf_B1_direct_net_id:
116 description: Network name for SIGTRAN_B
117 Cricket_OCS_protected_net_id:
119 description: Network name for CRICKET_OCS
122 description: Network name for OAM
123 be0_Cricket_OCS_protected_ips:
125 label: be0 port 5 OAM ip address
126 description: be0 port 5 OAM ip address
127 be1_Cricket_OCS_protected_ips:
129 label: be1 port 5 OAM ip address
130 description: be1 port 5 OAM ip address
131 be2_Cricket_OCS_protected_ips:
133 label: be2 port 5 OAM ip address
134 description: be2 port 5 OAM ip address
135 be3_Cricket_OCS_protected_ips:
137 label: be3 port 5 OAM ip address
138 description: be3 port 5 OAM ip address
139 be4_Cricket_OCS_protected_ips:
141 label: be4 port 5 OAM ip address
142 description: be4 port 5 OAM ip address
145 label: be0 port 7 OAM ip address
146 description: be0 port 7 OAM ip address
149 label: be1 port 7 OAM ip address
150 description: be1 port 7 OAM ip address
153 label: be2 port 7 OAM ip address
154 description: be2 port 7 OAM ip address
157 label: be3 port 7 OAM ip address
158 description: be3 port 7 OAM ip address
161 label: be4 port 7 OAM ip address
162 description: be4 port 7 OAM ip address
163 fe0_SIGNET_vrf_A1_direct_ips:
165 label: fe0 port 0 SIGTRAN ip address
166 description: fe0 port 0 SIGTRAN ip address
169 label: fe0 port 7 OAM ip address
170 description: fe0 port 7 OAM ip address
171 fe1_SIGNET_vrf_B1_direct_ips:
173 label: fe1 port 1 SIGTRAN ip address
174 description: fe1 port 1 SIGTRAN ip address
177 label: fe1 port 7 OAM ip address
178 description: fe1 port 7 OAM ip address
181 label: smp0 port 7 OAM ip address
182 description: smp0 port 7 OAM ip address
185 label: smp1 port 7 OAM ip address
186 description: smp1 port 7 OAM ip address
189 label: db0 port 7 OAM ip address
190 description: smp0 port 7 OAM ip address
193 label: smp1 port 7 OAM ip address
194 description: db1 port 7 OAM ip address
198 description: name of VM
202 description: name of VM
206 description: name of VM
210 description: name of VM
214 description: name of VM
218 description: name of VM
222 description: name of VM
226 description: name of VM
230 description: name of VM
234 description: name of VM
238 description: name of VM
241 # scp_be_wait_condition:
242 # type: OS::Heat::WaitCondition
244 # handle: { get_resource: scp_be_wait_handle }
247 # scp_be_wait_handle:
248 # type: OS::Heat::WaitConditionHandle
250 # scp_fe_wait_condition:
251 # type: OS::Heat::WaitCondition
253 # handle: { get_resource: scp_fe_wait_handle }
256 # scp_fe_wait_handle:
257 # type: OS::Heat::WaitConditionHandle
259 # smp_wait_condition:
260 # type: OS::Heat::WaitCondition
262 # handle: { get_resource: smp_wait_handle }
266 # type: OS::Heat::WaitConditionHandle
269 # type: OS::Heat::WaitCondition
271 # handle: { get_resource: db_wait_handle }
275 # type: OS::Heat::WaitConditionHandle
278 type: OS::Nova::ServerGroup
280 policies: ["anti-affinity"]
282 type: OS::Nova::ServerGroup
284 policies: ["anti-affinity"]
286 type: OS::Nova::ServerGroup
288 policies: ["anti-affinity"]
290 type: OS::Nova::ServerGroup
292 policies: ["anti-affinity"]
295 type: OS::Contrail::VirtualNetwork
297 name: { get_param: int_vscp_fe_cluster_net_id }
299 FE_Clustering_subnet:
300 type: OS::Neutron::Subnet
302 network_id: { get_resource: FE_Clustering_KA }
303 cidr: { get_param: int_vscp_fe_cluster_cidr }
306 type: OS::Contrail::VirtualNetwork
308 name: { get_param: int_vscp_cluster_net_id }
310 Clustering_Network_subnet:
311 type: OS::Neutron::Subnet
313 network_id: { get_resource: Clustering_Network }
314 cidr: { get_param: int_vscp_cluster_cidr }
317 type: OS::Contrail::VirtualNetwork
319 name: { get_param: int_vscp_db_network_net_id }
322 type: OS::Neutron::Subnet
324 network_id: { get_resource: DB_Network }
325 cidr: { get_param: int_vscp_db_network_cidr }
328 type: OS::Nova::Server
329 # depends on: db_wait_condition
331 name: { get_param: vm_scp_be0_name }
332 image: { get_param: image_scp_be_id }
333 # availability_zone: { get_param: availability_zone_be0 }
334 flavor: { get_param: flavor_scp_be_id }
335 scheduler_hints: { group: { get_resource: BE_Affinity } }
337 - port: { get_resource: be0_port_3 }
338 - port: { get_resource: be0_port_4 }
339 - port: { get_resource: be0_port_5 }
340 - port: { get_resource: be0_port_7 }
342 vnf_id: { get_param: vnf_id }
347 #todo: provision $vm_name
348 wc_notify --data-binary '{"status": "SUCCESS"}'
350 $vm_name: {get_param: vm_scp_be0_name}
351 # wc_notify: { get_attr: ['scp_be_wait_handle', 'curl_cli'] }
354 type: OS::Neutron::Port
356 network_id: { get_resource: Clustering_Network }
359 type: OS::Neutron::Port
361 network_id: { get_resource: DB_Network }
364 type: OS::Neutron::Port
366 network: { get_param: Cricket_OCS_protected_net_id }
367 fixed_ips: [{"ip_address": {get_param: be0_Cricket_OCS_protected_ips}}]
370 type: OS::Neutron::Port
372 network: { get_param: OAM_direct_net_id }
373 fixed_ips: [{"ip_address": {get_param: be0_OAM_direct_ips}}]
376 type: OS::Nova::Server
377 # depends on: db_wait_condition
379 name: { get_param: vm_scp_be1_name }
380 image: { get_param: image_scp_be_id }
381 # availability_zone: { get_param: availability_zone_be1 }
382 flavor: { get_param: flavor_scp_be_id }
383 scheduler_hints: { group: { get_resource: BE_Affinity } }
385 - port: { get_resource: be1_port_3 }
386 - port: { get_resource: be1_port_4 }
387 - port: { get_resource: be1_port_5 }
388 - port: { get_resource: be1_port_7 }
390 vnf_id: { get_param: vnf_id }
395 #todo: provision $vm_name
396 wc_notify --data-binary '{"status": "SUCCESS"}'
398 $vm_name: {get_param: vm_scp_be1_name}
399 # wc_notify: { get_attr: ['scp_be_wait_handle', 'curl_cli'] }
402 type: OS::Neutron::Port
404 network_id: { get_resource: Clustering_Network }
407 type: OS::Neutron::Port
409 network_id: { get_resource: DB_Network }
412 type: OS::Neutron::Port
414 network: { get_param: Cricket_OCS_protected_net_id }
415 fixed_ips: [{"ip_address": {get_param: be1_Cricket_OCS_protected_ips}}]
418 type: OS::Neutron::Port
420 network: { get_param: OAM_direct_net_id }
421 fixed_ips: [{"ip_address": {get_param: be1_OAM_direct_ips}}]
424 type: OS::Nova::Server
425 # depends on: db_wait_condition
427 name: { get_param: vm_scp_be2_name }
428 image: { get_param: image_scp_be_id }
429 # availability_zone: { get_param: availability_zone_be2 }
430 flavor: { get_param: flavor_scp_be_id }
431 scheduler_hints: { group: { get_resource: BE_Affinity } }
433 - port: { get_resource: be2_port_3 }
434 - port: { get_resource: be2_port_4 }
435 - port: { get_resource: be2_port_5 }
436 - port: { get_resource: be2_port_7 }
438 vnf_id: { get_param: vnf_id }
443 #todo: provision $vm_name
444 wc_notify --data-binary '{"status": "SUCCESS"}'
446 $vm_name: {get_param: vm_scp_be2_name}
447 # wc_notify: { get_attr: ['scp_be_wait_handle', 'curl_cli'] }
450 type: OS::Neutron::Port
452 network_id: { get_resource: Clustering_Network }
455 type: OS::Neutron::Port
457 network_id: { get_resource: DB_Network }
460 type: OS::Neutron::Port
462 network: { get_param: Cricket_OCS_protected_net_id }
463 fixed_ips: [{"ip_address": {get_param: be2_Cricket_OCS_protected_ips}}]
466 type: OS::Neutron::Port
468 network: { get_param: OAM_direct_net_id }
469 fixed_ips: [{"ip_address": {get_param: be2_OAM_direct_ips}}]
472 type: OS::Nova::Server
473 # depends on: db_wait_condition
475 name: { get_param: vm_scp_be3_name }
476 image: { get_param: image_scp_be_id }
477 # availability_zone: { get_param: availability_zone_be3 }
478 flavor: { get_param: flavor_scp_be_id }
479 scheduler_hints: { group: { get_resource: BE_Affinity } }
481 - port: { get_resource: be3_port_3 }
482 - port: { get_resource: be3_port_4 }
483 - port: { get_resource: be3_port_5 }
484 - port: { get_resource: be3_port_7 }
486 vnf_id: { get_param: vnf_id }
491 #todo: provision $vm_name
492 wc_notify --data-binary '{"status": "SUCCESS"}'
494 $vm_name: {get_param: vm_scp_be3_name}
495 # wc_notify: { get_attr: ['scp_be_wait_handle', 'curl_cli'] }
498 type: OS::Neutron::Port
500 network_id: { get_resource: Clustering_Network }
503 type: OS::Neutron::Port
505 network_id: { get_resource: DB_Network }
508 type: OS::Neutron::Port
510 network: { get_param: Cricket_OCS_protected_net_id }
511 fixed_ips: [{"ip_address": {get_param: be3_Cricket_OCS_protected_ips}}]
514 type: OS::Neutron::Port
516 network: { get_param: OAM_direct_net_id }
517 fixed_ips: [{"ip_address": {get_param: be3_OAM_direct_ips}}]
520 type: OS::Nova::Server
521 # depends on: db_wait_condition
523 name: { get_param: vm_scp_be4_name }
524 image: { get_param: image_scp_be_id }
525 # availability_zone: { get_param: availability_zone_be4 }
526 flavor: { get_param: flavor_scp_be_id }
527 scheduler_hints: { group: { get_resource: BE_Affinity } }
529 - port: { get_resource: be4_port_3 }
530 - port: { get_resource: be4_port_4 }
531 - port: { get_resource: be4_port_5 }
532 - port: { get_resource: be4_port_7 }
534 vnf_id: { get_param: vnf_id }
539 #todo: provision $vm_name
540 wc_notify --data-binary '{"status": "SUCCESS"}'
542 $vm_name: {get_param: vm_scp_be4_name}
543 # wc_notify: { get_attr: ['scp_be_wait_handle', 'curl_cli'] }
546 type: OS::Neutron::Port
548 network_id: { get_resource: Clustering_Network }
551 type: OS::Neutron::Port
553 network_id: { get_resource: DB_Network }
556 type: OS::Neutron::Port
558 network: { get_param: Cricket_OCS_protected_net_id }
559 fixed_ips: [{"ip_address": {get_param: be4_Cricket_OCS_protected_ips}}]
562 type: OS::Neutron::Port
564 network: { get_param: OAM_direct_net_id }
565 fixed_ips: [{"ip_address": {get_param: be4_OAM_direct_ips}}]
568 type: OS::Nova::Server
569 # depends on: scp_be_wait_condition
571 name: { get_param: vm_scp_fe0_name }
572 image: { get_param: image_scp_fe_id }
573 # availability_zone: { get_param: availability_zone_fe0 }
574 flavor: { get_param: flavor_scp_fe_id }
575 scheduler_hints: { group: { get_resource: FE_Affinity } }
577 - port: { get_resource: fe0_port_0 }
578 - port: { get_resource: fe0_port_2 }
579 - port: { get_resource: fe0_port_3 }
580 - port: { get_resource: fe0_port_7 }
582 vnf_id: { get_param: vnf_id }
587 #todo: provision $vm_name
588 wc_notify --data-binary '{"status": "SUCCESS"}'
590 $vm_name: {get_param: vm_scp_fe0_name}
591 # wc_notify: { get_attr: ['scp_fe_wait_handle', 'curl_cli'] }
594 type: OS::Neutron::Port
596 network: { get_param: SIGNET_vrf_A1_direct_net_id }
597 fixed_ips: [{"ip_address": {get_param: fe0_SIGNET_vrf_A1_direct_ips}}]
600 type: OS::Neutron::Port
602 network_id: { get_resource: FE_Clustering_KA }
605 type: OS::Neutron::Port
607 network_id: { get_resource: Clustering_Network }
610 type: OS::Neutron::Port
612 network: { get_param: OAM_direct_net_id }
613 fixed_ips: [{"ip_address": {get_param: fe0_OAM_direct_ips}}]
616 type: OS::Nova::Server
617 # depends on: scp_be_wait_condition
619 name: { get_param: vm_scp_fe1_name }
620 image: { get_param: image_scp_fe_id }
621 # availability_zone: { get_param: availability_zone_fe1 }
622 flavor: { get_param: flavor_scp_fe_id }
623 scheduler_hints: { group: { get_resource: FE_Affinity } }
625 - port: { get_resource: fe1_port_1 }
626 - port: { get_resource: fe1_port_2 }
627 - port: { get_resource: fe1_port_3 }
628 - port: { get_resource: fe1_port_7 }
630 vnf_id: { get_param: vnf_id }
635 #todo: provision $vm_name
636 wc_notify --data-binary '{"status": "SUCCESS"}'
638 $vm_name: {get_param: vm_scp_fe1_name}
639 # wc_notify: { get_attr: ['scp_fe_wait_handle', 'curl_cli'] }
642 type: OS::Neutron::Port
644 network: { get_param: SIGNET_vrf_B1_direct_net_id }
645 fixed_ips: [{"ip_address": {get_param: fe1_SIGNET_vrf_B1_direct_ips}}]
648 type: OS::Neutron::Port
650 network_id: { get_resource: FE_Clustering_KA }
653 type: OS::Neutron::Port
655 network_id: { get_resource: Clustering_Network }
658 type: OS::Neutron::Port
660 network: { get_param: OAM_direct_net_id }
661 fixed_ips: [{"ip_address": {get_param: fe1_OAM_direct_ips}}]
664 type: OS::Nova::Server
666 name: { get_param: vm_smp0_name }
667 image: { get_param: image_smp_id }
668 # availability_zone: { get_param: availability_zone_smp0 }
669 flavor: { get_param: flavor_smp_id }
670 scheduler_hints: { group: { get_resource: SMP_Affinity } }
672 - port: { get_resource: smp0_port_7 }
674 vnf_id: { get_param: vnf_id }
679 #todo: provision $vm_name
680 wc_notify --data-binary '{"status": "SUCCESS"}'
682 $vm_name: {get_param: vm_smp0_name}
683 # wc_notify: { get_attr: ['smp_wait_handle', 'curl_cli'] }
686 type: OS::Neutron::Port
688 network: { get_param: OAM_direct_net_id }
689 fixed_ips: [{"ip_address": {get_param: smp0_OAM_direct_ips}}]
692 type: OS::Nova::Server
694 name: { get_param: vm_smp1_name }
695 image: { get_param: image_smp_id }
696 # availability_zone: { get_param: availability_zone_smp1 }
697 flavor: { get_param: flavor_smp_id }
698 scheduler_hints: { group: { get_resource: SMP_Affinity } }
700 - port: { get_resource: smp1_port_7 }
702 vnf_id: { get_param: vnf_id }
707 #todo: provision $vm_name
708 wc_notify --data-binary '{"status": "SUCCESS"}'
710 $vm_name: {get_param: vm_smp1_name}
711 # wc_notify: { get_attr: ['smp_wait_handle', 'curl_cli'] }
714 type: OS::Neutron::Port
716 network: { get_param: OAM_direct_net_id }
717 fixed_ips: [{"ip_address": {get_param: smp1_OAM_direct_ips}}]
720 type: OS::Nova::Server
721 # depends_on: smp_wait_condition
723 name: { get_param: vm_db0_name }
724 image: { get_param: image_db_id }
725 # availability_zone: { get_param: availability_zone_db0 }
726 flavor: { get_param: flavor_db_id }
727 scheduler_hints: { group: { get_resource: DB_Affinity } }
729 - port: { get_resource: db0_port_4 }
730 - port: { get_resource: db0_port_7 }
732 vnf_id: { get_param: vnf_id }
737 #todo: provision $vm_name
738 wc_notify --data-binary '{"status": "SUCCESS"}'
740 $vm_name: {get_param: vm_db0_name}
741 # wc_notify: { get_attr: ['db_wait_handle', 'curl_cli'] }
744 type: OS::Neutron::Port
746 network_id: { get_resource: DB_Network }
749 type: OS::Neutron::Port
751 network: { get_param: OAM_direct_net_id }
752 fixed_ips: [{"ip_address": {get_param: db0_OAM_direct_ips}}]
755 type: OS::Nova::Server
756 # depends_on: smp_wait_condition
758 name: { get_param: vm_db1_name }
759 image: { get_param: image_db_id }
760 # availability_zone: { get_param: availability_zone_db1 }
761 flavor: { get_param: flavor_db_id }
762 scheduler_hints: { group: { get_resource: DB_Affinity } }
764 - port: { get_resource: db1_port_4 }
765 - port: { get_resource: db1_port_7 }
767 vnf_id: { get_param: vnf_id }
772 #todo: provision $vm_name
773 wc_notify --data-binary '{"status": "SUCCESS"}'
775 $vm_name: {get_param: vm_db1_name}
776 # wc_notify: { get_attr: ['db_wait_handle', 'curl_cli'] }
779 type: OS::Neutron::Port
781 network_id: { get_resource: DB_Network }
784 type: OS::Neutron::Port
786 network: { get_param: OAM_direct_net_id }
787 fixed_ips: [{"ip_address": {get_param: db1_OAM_direct_ips}}]