1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
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:
subinterface_instance_index:
type: number
description: Index of instance among multiple instances. Use to retrieve correct parameter for this instance when passed all parameters for all instances.
subinterface_name_prefix:
type: string
description: Combined with subinterface_instance_index, this is used as the name of the subinterface resource
parent_interface:
type: string
description: Parent Contrail interface
mac_address:
type: string
description: MAC address to use for subinterface
ip_address:
type: string
description: IPv4 address associated with subinterfaces
ipv6_address:
type: string
description: IPv6 address associated with subinterfaces
virtual_ip_address:
type: string
description: virtual IPv4 address associated with subinterfaces
virtual_ipv6_address:
type: string
description: virtual IPv6 address associated with subinterfaces
vlan_ids:
type: comma_delimited_list
description: List of VLAN IDs to use for subinterfaces
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: subinterface_name_prefix }
$VLAN: { get_param: [ vlan_ids, { get_param: subinterface_instance_index } ] }
virtual_machine_interface_properties:
{
virtual_machine_interface_properties_sub_interface_vlan_tag: { get_param: [ vlan_ids, { get_param: subinterface_instance_index } ] }
}
virtual_machine_interface_mac_addresses:
{
virtual_machine_interface_mac_addresses_mac_address: [{ get_param: 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: 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: virtual_ip_address },
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: 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: virtual_ipv6_address },
virtual_machine_interface_allowed_address_pairs_allowed_address_pair_ip_ip_prefix_len: 128
}
}
]
}
virtual_network_refs: [{ get_param: [ vlan_networks, { get_param: subinterface_instance_index } ] }]
virtual_machine_interface_refs: [{ get_param: 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: [ vlan_networks, { get_param: subinterface_instance_index } ] }]
instance_ip_address: { get_param: ip_address }
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: [ vlan_networks, { get_param: subinterface_instance_index } ] }]
instance_ip_address: { get_param: ipv6_address }
instance_ip_family: v6
|