[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_a.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_a_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_a_names, { get_param: perimeta_instance_index } ] }
177       network_id: { get_param: mgmt_net_id }
178       fixed_ips:
179         - ip_address: { get_param: [ mgmt_a_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_a_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_a_names, { get_param: perimeta_instance_index } ] }
193       network_id: { get_param: ha_net_id }
194       fixed_ips:
195         - ip_address: { get_param: [ ha_a_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_a_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_a_names, { get_param: perimeta_instance_index } ] }
210       network_id: { get_param: trusted_net_id }
211       fixed_ips:
212         - ip_address: { get_param: [ trusted_a_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_a_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_a_names, { get_param: perimeta_instance_index } ] }
229       network_id: { get_param: untrusted_net_id }
230       fixed_ips:
231         - ip_address: { get_param: [ untrusted_a_ips, { get_param: perimeta_instance_index } ] }
232         - ip_address: { get_param: [ untrusted_a_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_a_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_a_names, { get_param: perimeta_instance_index } ] }
252           parent_interface: { get_resource: perimeta_a_untrusted_0_port }
253           mac_address: { get_attr: [ perimeta_a_untrusted_0_port, mac_address ] }
254           ip_address: { get_param: [ untrusted_a_ips, { get_param: perimeta_instance_index } ] }
255           ipv6_address: { get_param: [ untrusted_a_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_a_server_0:
268     type: OS::Nova::Server
269 #    depends_on: perimeta_b_server_0
270     properties:
271       name: { get_param: [ vm_a_names, { get_param: perimeta_instance_index } ] }
272       image: { get_param: perimeta_image_name }
273       flavor: { get_param: perimeta_flavor_name }
274       key_name: { get_param: perimeta_keypair }
275       scheduler_hints: { group: { get_param: perimeta_param_server_group } }
276       metadata:
277         'vnf_id': { get_param: vnf_id }
278         'vm_role':
279             str_replace:
280               template: $ROLE_a
281               params:
282                 $ROLE: { get_param: vm_role }
283         'vf_module_id': { get_param: vf_module_id }
284       personality:
285         '/opt/MetaSwitch/init/custom.ini': { get_file: custom.ini }
286
287       networks:
288         - port: { get_resource: perimeta_a_mgmt_0_port }
289         - port: { get_resource: perimeta_a_ha_0_port }
290         - port: { get_resource: perimeta_a_trusted_0_port }
291         - port: { get_resource: perimeta_a_untrusted_0_port }
292       availability_zone: { get_param: availability_zone_0 }
293       config_drive: True
294       user_data_format: RAW
295       user_data:
296         str_replace:
297           template: |
298             {
299               "vnic_assignment": {
300                 "IBG1mgmt": {"mac": "$MGMT_MACADDR"},
301                 "IPG1": {"mac": "$HA_MACADDR"},
302                 "RPG1": {"mac": "$TRUSTED_MACADDR"},
303                 "RPG2": {"mac": "$UNTRUSTED_MACADDR"}
304               },
305               "ip_ha_local": "$LOCAL_HA_IP_ADDR",
306               "ip_ha_remote": "$REMOTE_HA_IP_ADDR",
307               "ip_ha_plen": "$HA_NETWORK_PLEN"
308               // "ip_mgmt_local": "$LOCAL_MGMT_IP_ADDR",
309               // "ip_mgmt_remote": "$REMOTE_MGMT_IP_ADDR",
310               // "ip_mgmt_plen": "$MGMT_NETWORK_PLEN",
311               // "ip_mgmt_gway": "$MGMT_NETWORK_DEFAULT_GATEWAY"
312             }
313
314           params:
315             $MGMT_MACADDR: { get_attr: [perimeta_a_mgmt_0_port, mac_address] }
316             $HA_MACADDR: { get_attr: [perimeta_a_ha_0_port, mac_address] }
317             $TRUSTED_MACADDR: { get_attr: [perimeta_a_trusted_0_port, mac_address] }
318             $UNTRUSTED_MACADDR: { get_attr: [perimeta_a_untrusted_0_port, mac_address] }
319             $LOCAL_HA_IP_ADDR: { get_param: [ ha_a_ips, { get_param: perimeta_instance_index } ] }
320             $REMOTE_HA_IP_ADDR: { get_param: [ ha_b_ips, { get_param: perimeta_instance_index } ] }
321             $HA_NETWORK_PLEN: { get_param: ha_network_plen }
322             $LOCAL_MGMT_IP_ADDR: { get_param: [ mgmt_a_ips, { get_param: perimeta_instance_index } ] }
323             $REMOTE_MGMT_IP_ADDR: { get_param: [ mgmt_b_ips, { get_param: perimeta_instance_index } ] }
324             $MGMT_NETWORK_PLEN: { get_param: mgmt_net_plen }
325             $MGMT_NETWORK_DEFAULT_GATEWAY: { get_param: mgmt_net_default_gateway }
326
327
328 outputs:
329
330   server_group_used:
331     description: Server group used for these VMs
332     value: { get_param: perimeta_param_server_group }