heat_template_version: 2014-10-16 description: > HOT template to instantiate a single Contrail VLAN sub-interface with associated instance IP addresses and allowed address pairs parameters: perimeta_subinterface_instance_index: # constraint copied from parent module type: number description: Index of instance among multiple instances. Use to retrieve correct parameter for this instance when passed all parameters for all instances. constraints: - range: { min: 1, max: 1001 } description: perimeta_subinterface_instance_index must be between 1 and 1001 perimeta_subinterface_name_prefix: type: string description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource perimeta_parent_interface: type: string description: Parent Contrail interface perimeta_mac_address: type: string description: MAC address to use for subinterface perimeta_ip_0: type: string description: IPv4 address associated with subinterfaces perimeta_v6_ip_0: type: string description: IPv6 address associated with subinterfaces perimeta_vip_0: type: string description: virtual IPv4 address associated with subinterfaces perimeta_v6_vip_0: type: string description: virtual IPv6 address associated with subinterfaces perimeta_vlan_ids: type: comma_delimited_list description: List of VLAN IDs to use for subinterfaces perimeta_vlan_networks: type: comma_delimited_list description: List of Contrail VLAN networks to use for the subinterfaces. The order and number of these must match the VLAN ID list resources: contrail_vmi_subinterface: type: OS::ContrailV2::VirtualMachineInterface properties: name: str_replace: template: $NAME_$VLAN params: $NAME: { get_param: perimeta_subinterface_name_prefix } $VLAN: { get_param: [ perimeta_vlan_ids, { get_param: perimeta_subinterface_instance_index } ] } virtual_machine_interface_properties: { virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: [ perimeta_vlan_ids, { get_param: perimeta_subinterface_instance_index } ] } } virtual_machine_interface_mac_addresses: { virtual_machine_interface_mac_addresses_mac_address: [{ get_param: perimeta_mac_address }], } virtual_machine_interface_allowed_address_pairs: { virtual_machine_interface_allowed_address_pairs_allowed_address_pair: [ { virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby, virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: perimeta_mac_address }, virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: { virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: perimeta_vip_0 }, virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 32 } }, { virtual_machine_interface_allowed_address_pairs_allowed_address_pair_address_mode: active-standby, virtual_machine_interface_allowed_address_pairs_allowed_address_pair_mac: { get_param: perimeta_mac_address }, virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip: { virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix: { get_param: perimeta_v6_vip_0 }, virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128 } } ] } virtual_network_refs: [{ get_param: [ perimeta_vlan_networks, { get_param: perimeta_subinterface_instance_index } ] }] virtual_machine_interface_refs: [{ get_param: perimeta_parent_interface }] contrail_vmi_ip: type: OS::ContrailV2::InstanceIp depends_on: [ contrail_vmi_subinterface ] properties: virtual_machine_interface_refs: [{ get_resource: contrail_vmi_subinterface }] virtual_network_refs: [{ get_param: [ perimeta_vlan_networks, { get_param: perimeta_subinterface_instance_index } ] }] instance_ip_address: { get_param: perimeta_ip_0 } instance_ip_family: v4 contrail_vmi_ipv6: type: OS::ContrailV2::InstanceIp depends_on: [ contrail_vmi_subinterface ] properties: virtual_machine_interface_refs: [{ get_resource: contrail_vmi_subinterface }] virtual_network_refs: [{ get_param: [ perimeta_vlan_networks, { get_param: perimeta_subinterface_instance_index } ] }] instance_ip_address: { get_param: perimeta_v6_ip_0 } instance_ip_family: v6