heat_template_version: 2013-05-23 description: > Metaswitch MVS (Metaview Server) parameters: cloud_zone_id: type: string description: The cloud zone for this VF instance vf_name: type: string description: The VF Name; defaults to VMVM for the virtual MVM VNF. constraints: - allowed_pattern: "[a-zA-Z0-9]+" - length: { min: 4, max: 4 } description: Each VF will have a 4-character alphanumeric identifier vf_instance_num: type: string description: The number for this VF instance constraints: - allowed_pattern: "[0-9]+" - length: { min: 2, max: 2 } description: VF instance number must be a two-digit numeric value vf_component: type: string description: The component that this VF instance is running constraints: - allowed_pattern: "[a-zA-Z0-9]+" - length: { min: 3, max: 3 } description: Each VF component will have a 3-character alphanumeric identifier vm_instance_num: type: comma_delimited_list description: VM instance number list must be a list of three-digit numeric value vnf_id: type: string description: Unique ID for this VF instance vf_module_id: type: string description: Unique ID for this VF_MODULE instance bootimage: type: string description: Master bootimage volume id flavor: type: string description: Server flavor constraints: - custom_constraint: nova.flavor key_name: type: string description: SSH key name constraints: - custom_constraint: nova.keypair type_name: type: string availability_zone_0: type: comma_delimited_list description: List of Availability Zone IDs or Names sec_groups: type: comma_delimited_list description: Security groups mgmt_net_id: type: string description: Neutron UUID for the Management network constraints: - custom_constraint: neutron.network virtual_mgmt_ip_0: type: string description: Virtual management network ip address mvs_mgmt_ip_0: type: comma_delimited_list description: List of Management network IP addresses for IPv4 num_instances: type: number description: number of instance of the VF_module compute_image_name: type: string resources: mvs_modules_defaultIndexVar: type: OS::Heat::ResourceGroup properties: count: 3 resource_def: type: mvs.nested.heat.yaml properties: cloud_zone_id: cloud_zone_id_%index% vf_name: "%index%vf_name" vf_instance_num: "vf_instance_num_%index%_bbbb" vf_component: "%index%" vm_instance_num: "%index%_vm_instance_num_%index%_hhh_%index%%index%%index%_pppp%index%" vnf_id: vf_module_id: [{ get_param: vf_module_id }, "%index%", fff%index% ] bootimage: { get_param: bootimage } flavor: a: a b: aa: [sss,dddd%index%ppp, sd] ppp: "%index%_pppp___%index%" eeee: eeeeeee e: "%index%" w: "%index%_pp" key_name: [a,b,"%index%",p%index%] availability_zone_0: { get_param: availability_zone_0 } sec_groups: { get_param: sec_groups } mgmt_net_id: { get_param: mgmt_net_id } virtual_mgmt_ip_0: { get_param: virtual_mgmt_ip_0 } mvs_mgmt_ip_0: mvs_mgmt_ip_0 indx: "%index%" mvs_modules_custIndexVar1: type: OS::Heat::ResourceGroup properties: count: 2 index_var: myIndex resource_def: type: mvs.nested.heat.yaml properties: cloud_zone_id: cloud_zone_id_myIndex vf_name: "myIndexvf_name" vf_instance_num: "vf_instance_num_myIndex_bbbb" vf_component: "myIndex" vm_instance_num: "myIndex_vm_instance_num_myIndex_hhh_myIndexmyIndexmyIndex_ppppmyIndex" vnf_id: vf_module_id: [{ get_param: vf_module_id }, "myIndex", fffmyIndex ] bootimage: { get_param: bootimage } flavor: a: a b: b e: myIndex w: myIndex_pp key_name: [a,b,myIndex,pmyIndex] availability_zone_0: { get_param: availability_zone_0 } sec_groups: { get_param: sec_groups } mgmt_net_id: { get_param: mgmt_net_id } virtual_mgmt_ip_0: { get_param: virtual_mgmt_ip_0 } mvs_mgmt_ip_0: mvs_mgmt_ip_0 indx: "myIndex" mvs_modules_custIndexVar2: type: OS::Heat::ResourceGroup properties: count: 2 index_var: "%myIndex%" resource_def: type: mvs.nested.heat.yaml properties: cloud_zone_id: cloud_zone_id_%myIndex% vf_name: "%myIndex%vf_name" vf_instance_num: "vf_instance_num_%myIndex%_bbbb" vf_component: "%myIndex%" vm_instance_num: "%myIndex%_vm_instance_num_%myIndex%_hhh_%myIndex%%myIndex%%myIndex%_pppp%myIndex%" vnf_id: vf_module_id: [{ get_param: vf_module_id }, "%myIndex%", fff%myIndex% ] bootimage: { get_param: bootimage } flavor: a: a b: b e: "%myIndex%" w: "%myIndex%_pp" key_name: [a,b,"%myIndex%",p%myIndex%] availability_zone_0: { get_param: availability_zone_0 } sec_groups: { get_param: sec_groups } mgmt_net_id: { get_param: mgmt_net_id } virtual_mgmt_ip_0: { get_param: virtual_mgmt_ip_0 } mvs_mgmt_ip_0: mvs_mgmt_ip_0 indx: "%myIndex%" not_supported_resourceGroup1: type: OS::Heat::ResourceGroup properties: count: 3 resource_def: type: OS::Heat::ResourceGroup properties: cloud_zone_id: { get_param: cloud_zone_id } vf_name: { get_param: vf_name } vf_instance_num: { get_param: vf_instance_num } vf_component: { get_param: vf_component } vm_instance_num: { get_param: vm_instance_num } vnf_id: { get_param: vnf_id } vf_module_id: { get_param: vf_module_id } bootimage: { get_param: bootimage } flavor: { get_param: flavor } key_name: { get_param: key_name } availability_zone_0: { get_param: availability_zone_0 } sec_groups: { get_param: sec_groups } mgmt_net_id: { get_param: mgmt_net_id } virtual_mgmt_ip_0: { get_param: virtual_mgmt_ip_0 } mvs_mgmt_ip_0: { get_param: mvs_mgmt_ip_0 } indx: "%index%" not_supported_resourceGroup2: type: OS::Heat::ResourceGroup properties: count: 3 resource_def: type: { get_param: type_name } properties: cloud_zone_id: { get_param: cloud_zone_id } vf_name: { get_param: vf_name } vf_instance_num: { get_param: vf_instance_num } vf_component: { get_param: vf_component } vm_instance_num: { get_param: vm_instance_num } vnf_id: { get_param: vnf_id } vf_module_id: { get_param: vf_module_id } bootimage: { get_param: bootimage } flavor: { get_param: flavor } key_name: { get_param: key_name } availability_zone_0: { get_param: availability_zone_0 } sec_groups: { get_param: sec_groups } mgmt_net_id: { get_param: mgmt_net_id } virtual_mgmt_ip_0: { get_param: virtual_mgmt_ip_0 } mvs_mgmt_ip_0: { get_param: mvs_mgmt_ip_0 } indx: "%index%" server_compute_get_attr_test: type: OS::Nova::Server properties: config_drive: {get_attr: [mvs_modules_defaultIndexVar]} name: compute_name image: { get_param: compute_image_name } flavor: compute_flavor_name user_data_format: { get_attr: [mvs_modules_defaultIndexVar , resource.1.vnfci_id_1] } user_data: { get_attr: [mvs_modules_defaultIndexVar, resource.vnfci_id_2]}