[SDC-29] Amdocs OnBoard 1707 initial commit.
[sdc.git] / openecomp-be / lib / openecomp-sdc-translator-lib / openecomp-sdc-translator-core / src / test / resources / mock / services / heattotosca / subInterfaceToInterfaceConnection / vTSBC_AIC / inputfiles / perimeta_ha_sw_b.yaml
1 # Heat template which intstantiates a 1+1 HA Perimeta instance with 4 or 5
2 # vNICs.
3 #
4 # This is designed to be included in a higher level template.
5 #
6 # This template puts the Perimeta configuration in place using userdata
7 # injected via OpenStack's ConfigDrive mechanism.
8 #
9 # Host anti-affinity is achieved using different availability zones for
10 # the Perimeta instance or server group anti-affinity if they are in the
11 # same availability zone.
12 #
13 # Template requires Juno or above and has been tested on Kilo.
14 #
15 heat_template_version: 2014-10-16
16
17 description: >
18   HOT template to instantiate a Perimeta 1+1 HA instance with 4vNICs as part of a nested template
19
20 parameters:
21   vnf_id:
22     type: string
23     description: VNF ID of this deployment
24   vm_role:
25     type: string
26     description: Role of these VMs
27   vf_module_id:
28     type: string
29     description: Unique ID for this VF Module instance
30   system_names:
31     type: comma_delimited_list
32     description: List of system names of Perimeta instances.  Name of a specific instance is indexed by perimeta_instance_index
33   vm_a_names:
34     type: comma_delimited_list
35     description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index
36   vm_b_names:
37     type: comma_delimited_list
38     description: List of names of Perimeta VM A instances, indexed by perimeta_instance_index
39   perimeta_instance_index:
40     type: number
41     description: Index of instance among multiple instances.  Use to retrieve correct parameter for this instance when passed all parameters for all instances.
42   perimeta_image_name:
43     type: string
44     description: Glance image for Perimeta instance
45     constraints:
46     - custom_constraint: glance.image
47   perimeta_flavor_name:
48     type: string
49     description: Flavor to use for creating VM instances
50     constraints:
51     - custom_constraint: nova.flavor
52   perimeta_keypair:
53     type: string
54     description: Keypair to use for accessing this Perimeta instance
55     constraints:
56     - custom_constraint: nova.keypair
57   availability_zone_0:
58     # Can be commented out along with references if always using a single availability zone
59     type: string
60     description: Availability zone for A instances.
61   availability_zone_1:
62     # Can be commented out along with references if always using a single availability zone
63     type: string
64     description: Availability zone for B instances.  May be the same as A instance.
65   mgmt_net_id:
66     type: string
67     description: Management network id
68     constraints:
69     - custom_constraint: neutron.network
70   mgmt_net_plen:
71     type: string
72     description: Prefix length of management network
73   mgmt_net_default_gateway:
74     type: string
75     description: IP address of management default gateway
76   mgmt_vips:
77     type: comma_delimited_list
78     description: List of management virtual IP addresses for all instances.
79   mgmt_a_ips:
80     type: comma_delimited_list
81     description: List of fixed IP addresses to use as management IPs of A instances.
82   mgmt_b_ips:
83     type: comma_delimited_list
84     description: List of fixed IP addresses to use as management IPs of B instances.
85   mgmt_sec_groups:
86     type: comma_delimited_list
87     description: List of security groups to add on management interfaces.
88   ha_net_id:
89     type: string
90     description: HA network id
91     constraints:
92     - custom_constraint: neutron.network
93   ha_network_plen:
94     type: number
95     constraints:
96     - range: { min: 0, max: 32 }
97       description: ha_network_plen must be between 0 and 32
98   ha_a_ips:
99     type: comma_delimited_list
100     description: List of fixed IP addresses to use as HA IPs of A instances.
101   ha_b_ips:
102     type: comma_delimited_list
103     description: List of fixed IP addresses to use as HA IPs of B instances.
104   ha_sec_groups:
105     type: comma_delimited_list
106     description: List of security groups to add on HA interfaces.
107   trusted_net_id:
108     type: string
109     description: Service network 1 network UUID
110     constraints:
111     - custom_constraint: neutron.network
112   trusted_vips:
113     type: comma_delimited_list
114     description: List of service network 1 virtual IP addresses for all instances.
115   trusted_a_ips:
116     type: comma_delimited_list
117     description: List of fixed IP addresses to use as trusted fixed IPs of A instances.
118   trusted_b_ips:
119     type: comma_delimited_list
120     description: List of fixed IP addresses to use as trusted fixed IPs of B instances.
121   trusted_sec_groups:
122     type: comma_delimited_list
123     description: List of security groups to add on trusted interfaces.
124   untrusted_net_id:
125     type: string
126     description: Service network 2 network UUID
127     constraints:
128     - custom_constraint: neutron.network
129   untrusted_vips:
130     type: comma_delimited_list
131     description: List of service network 2 virtual IP addresses for all instances.
132   untrusted_v6_vips:
133     type: comma_delimited_list
134     description: List of service network 2 alternate virtual IP addresses for all instances.
135   untrusted_a_ips:
136     type: comma_delimited_list
137     description: List of fixed IP addresses to use as untrusted fixed IPs of A instances.
138   untrusted_a_v6_ips:
139     type: comma_delimited_list
140     description: List of fixed IP addresses to use as untrusted alternate fixed IPs of A instances.
141   untrusted_b_ips:
142     type: comma_delimited_list
143     description: List of fixed IP addresses to use as untrusted fixed IPs of B instances.
144   untrusted_b_v6_ips:
145     type: comma_delimited_list
146     description: List of fixed IP addresses to use as untrusted alternate fixed IPs of B instances.
147   untrusted_sec_groups:
148     type: comma_delimited_list
149     description: List of security groups to add on untrusted interfaces.
150   untrusted_num_vlans:
151     type: number
152     description: Number of VLANs to connect to on the untrusted/access network
153   untrusted_vlan_ids:
154     type: comma_delimited_list
155     description: List of VLAN IDs to use on the untrusted/access network
156   untrusted_vlan_networks:
157     type: comma_delimited_list
158     description: List of Contrail VLAN networks to use on the untrusted/access network.   The order and number of these must match the VLAN ID list.
159   perimeta_param_server_group:
160     type: string
161     description: Server group to use for these VMs - ignored
162   perimeta_config:
163     type: string
164     description: Orchestration template configuration for instance.
165
166 resources:
167
168   # Perimeta management ports
169   perimeta_b_mgmt_0_port:
170     type: OS::Neutron::Port
171     properties:
172       name:
173         str_replace:
174           template: $VM_mgmt_port
175           params:
176             $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] }
177       network_id: { get_param: mgmt_net_id }
178       fixed_ips:
179         - ip_address: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] }
180       security_groups: { get_param: mgmt_sec_groups }
181       allowed_address_pairs:
182         - ip_address: { get_param: [ mgmt_vips, { get_param: perimeta_instance_index } ] }
183
184   # Perimeta HA ports
185   perimeta_b_ha_0_port:
186     type: OS::Neutron::Port
187     properties:
188       name:
189         str_replace:
190           template: $VM_ha_port
191           params:
192             $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] }
193       network_id: { get_param: ha_net_id }
194       fixed_ips:
195         - ip_address: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] }
196       security_groups: { get_param: ha_sec_groups }
197
198   # Perimeta core/trusted service network ports
199   #
200   # Dual stack core network - if only IPv4 required, comment out second entry
201   # in fixed_ips and allowed_addrsess_pairs parameters.
202   perimeta_b_trusted_0_port:
203     type: OS::Neutron::Port
204     properties:
205       name:
206         str_replace:
207           template: $VM_trusted_port
208           params:
209             $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] }
210       network_id: { get_param: trusted_net_id }
211       fixed_ips:
212         - ip_address: { get_param: [ trusted_b_ips, { get_param: perimeta_instance_index } ] }
213       security_groups: { get_param: trusted_sec_groups }
214       allowed_address_pairs:
215         - ip_address: { get_param: [ trusted_vips, { get_param: perimeta_instance_index } ] }
216
217   # Perimeta access/untrusted service network ports
218   #
219   # Dual stack access network - if only IPv4 required, comment out second entry
220   # in fixed_ips and allowed_addrsess_pairs parameters.
221   perimeta_b_untrusted_0_port:
222     type: OS::Neutron::Port
223     properties:
224       name:
225         str_replace:
226           template: $VM_untrusted_port
227           params:
228             $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] }
229       network_id: { get_param: untrusted_net_id }
230       fixed_ips:
231         - ip_address: { get_param: [ untrusted_b_ips, { get_param: perimeta_instance_index } ] }
232         - ip_address: { get_param: [ untrusted_b_v6_ips, { get_param: perimeta_instance_index } ] }
233       security_groups: { get_param: untrusted_sec_groups }
234       allowed_address_pairs:
235         - ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] }
236         - ip_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] }
237
238   # Contrail VLAN subinterfaces
239   perimeta_b_untrusted_0_vlan_ports:
240     type: OS::Heat::ResourceGroup
241     properties:
242       count: { get_param: untrusted_num_vlans }
243       resource_def:
244         type: vlan_subinterface_dual.yaml
245         properties:
246           subinterface_instance_index: "%index%"
247           subinterface_name_prefix:
248             str_replace:
249               template: $VM_untrusted_port_vlan_
250               params:
251                 $VM: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] }
252           parent_interface: { get_resource: perimeta_b_untrusted_0_port }
253           mac_address: { get_attr: [ perimeta_b_untrusted_0_port, mac_address ] }
254           ip_address: { get_param: [ untrusted_b_ips, { get_param: perimeta_instance_index } ] }
255           ipv6_address: { get_param: [ untrusted_b_v6_ips, { get_param: perimeta_instance_index } ] }
256           virtual_ip_address: { get_param: [ untrusted_vips, { get_param: perimeta_instance_index } ] }
257           virtual_ipv6_address: { get_param: [ untrusted_v6_vips, { get_param: perimeta_instance_index } ] }
258           vlan_ids: { get_param: untrusted_vlan_ids }
259           vlan_networks: { get_param: untrusted_vlan_networks }
260
261   # Perimeta Rf service network ports (SSC only)
262   #
263   # Dual stack access network - if only IPv4 required, comment out second entry
264   # in fixed_ips and allowed_addrsess_pairs parameters.
265   # Add any additional service ports here.
266
267   perimeta_b_server_0:
268     type: OS::Nova::Server
269     properties:
270       name: { get_param: [ vm_b_names, { get_param: perimeta_instance_index } ] }
271       image: { get_param: perimeta_image_name }
272       flavor: { get_param: perimeta_flavor_name }
273       key_name: { get_param: perimeta_keypair }
274       scheduler_hints: { group: { get_param: perimeta_param_server_group } }
275       metadata:
276         'vnf_id': { get_param: vnf_id }
277         'vm_role':
278             str_replace:
279               template: $ROLE_b
280               params:
281                 $ROLE: { get_param: vm_role }
282         'vf_module_id': { get_param: vf_module_id }
283       networks:
284         - port: { get_resource: perimeta_b_mgmt_0_port }
285         - port: { get_resource: perimeta_b_ha_0_port }
286         - port: { get_resource: perimeta_b_trusted_0_port }
287         - port: { get_resource: perimeta_b_untrusted_0_port }
288       availability_zone: { get_param: availability_zone_1 }
289       config_drive: True
290       user_data_format: RAW
291       user_data:
292         str_replace:
293           template: |
294             {
295               "vnic_assignment": {
296                 "IBG1mgmt": {"mac": "$MGMT_MACADDR"},
297                 "IPG1": {"mac": "$HA_MACADDR"},
298                 "RPG1": {"mac": "$TRUSTED_MACADDR"},
299                 "RPG2": {"mac": "$UNTRUSTED_MACADDR"}
300               },
301               "ip_ha_local": "$LOCAL_HA_IP_ADDR",
302               "ip_ha_remote": "$REMOTE_HA_IP_ADDR",
303               "ip_ha_plen": "$HA_NETWORK_PLEN"
304               //"ip_mgmt_local": "$LOCAL_MGMT_IP_ADDR",
305               //"ip_mgmt_remote": "$REMOTE_MGMT_IP_ADDR",
306               //"ip_mgmt_plen": "$MGMT_NETWORK_PLEN",
307               //"ip_mgmt_gway": "$MGMT_NETWORK_DEFAULT_GATEWAY"
308             }
309
310           params:
311             $MGMT_MACADDR: { get_attr: [perimeta_b_mgmt_0_port, mac_address] }
312             $HA_MACADDR: { get_attr: [perimeta_b_ha_0_port, mac_address] }
313             $TRUSTED_MACADDR: { get_attr: [perimeta_b_trusted_0_port, mac_address] }
314             $UNTRUSTED_MACADDR: { get_attr: [perimeta_b_untrusted_0_port, mac_address] }
315             $LOCAL_HA_IP_ADDR: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] }
316             $REMOTE_HA_IP_ADDR: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] }
317             $HA_NETWORK_PLEN: { get_param: ha_network_plen }
318             $LOCAL_MGMT_IP_ADDR: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] }
319             $REMOTE_MGMT_IP_ADDR: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] }
320             $MGMT_NETWORK_PLEN: { get_param: mgmt_net_plen }
321             $MGMT_NETWORK_DEFAULT_GATEWAY: { get_param: mgmt_net_default_gateway }
322
323 outputs:
324
325   server_group_used:
326     description: Server group used for these VMs
327     value: { get_param: perimeta_param_server_group }