Update Release Notes for Gambia 7.1 Release
[sdnvpn.git] / sdnvpn / artifacts / testcase_1bis.yaml
1 heat_template_version: 2013-05-23
2
3 description: >
4   Template for SDNVPN testcase 1
5   VPN provides connectivity between subnets
6
7 parameters:
8   flavor:
9     type: string
10     description: flavor for the servers to be created
11     constraints:
12       - custom_constraint: nova.flavor
13   image_n:
14     type: string
15     description: image for the servers to be created
16     constraints:
17       - custom_constraint: glance.image
18   av_zone_1:
19     type: string
20     description: availability zone 1
21   av_zone_2:
22     type: string
23     description: availability zone 2
24
25   net_1_name:
26     type: string
27     description: network 1
28   subnet_1_name:
29     type: string
30     description: subnet 1 name
31   subnet_1_cidr:
32     type: string
33     description: subnet 1 cidr
34   net_2_name:
35     type: string
36     description: network 2
37   subnet_2_name:
38     type: string
39     description: subnet 2 name
40   subnet_2_cidr:
41     type: string
42     description: subnet 1 cidr
43
44   secgroup_name:
45     type: string
46     description: security group name
47   secgroup_descr:
48     type: string
49     description: security group slogan
50
51   instance_1_name:
52     type: string
53     description: instance name
54   instance_2_name:
55     type: string
56     description: instance name
57   instance_3_name:
58     type: string
59     description: instance name
60   instance_4_name:
61     type: string
62     description: instance name
63   instance_5_name:
64     type: string
65     description: instance name
66
67   ping_count:
68     type: string
69     description: ping count for user data script
70     default: 10
71
72 resources:
73   net_1:
74     type: OS::Neutron::Net
75     properties:
76       name: { get_param: net_1_name }
77   subnet_1:
78     type: OS::Neutron::Subnet
79     properties:
80       name: { get_param: subnet_1_name }
81       network: { get_resource: net_1 }
82       cidr: { get_param: subnet_1_cidr }
83   net_2:
84     type: OS::Neutron::Net
85     properties:
86       name: { get_param: net_2_name }
87   subnet_2:
88     type: OS::Neutron::Subnet
89     properties:
90       name: { get_param: subnet_2_name }
91       network: { get_resource: net_2 }
92       cidr: { get_param: subnet_2_cidr }
93
94   sec_group:
95     type: OS::Neutron::SecurityGroup
96     properties:
97       name: { get_param: secgroup_name }
98       description: { get_param: secgroup_descr }
99       rules:
100         - protocol: icmp
101           remote_ip_prefix: 0.0.0.0/0
102         - protocol: tcp
103           port_range_min: 22
104           port_range_max: 22
105           remote_ip_prefix: 0.0.0.0/0
106
107   vm1:
108     type: OS::Nova::Server
109     depends_on: [ vm2, vm3, vm4, vm5 ]
110     properties:
111       name: { get_param: instance_1_name }
112       image: { get_param: image_n }
113       flavor: { get_param: flavor }
114       availability_zone: { get_param: av_zone_1 }
115       security_groups:
116         - { get_resource: sec_group }
117       networks:
118         - subnet: { get_resource: subnet_1 }
119       config_drive: True
120       user_data_format: RAW
121       user_data:
122         str_replace:
123           template: |
124             #!/bin/sh
125             set $IP_VM2 $IP_VM3 $IP_VM4 $IP_VM5
126             while true; do
127              for i do
128               ip=$i
129               ping -c $COUNT $ip 2>&1 >/dev/null
130               RES=$?
131               if [ \"Z$RES\" = \"Z0\" ] ; then
132                echo ping $ip OK
133               else echo ping $ip KO
134               fi
135               done
136              sleep 1
137             done
138           params:
139             $IP_VM2: { get_attr: [vm2, addresses, { get_resource: net_1}, 0, addr] }
140             $IP_VM3: { get_attr: [vm3, addresses, { get_resource: net_1}, 0, addr] }
141             $IP_VM4: { get_attr: [vm4, addresses, { get_resource: net_2}, 0, addr] }
142             $IP_VM5: { get_attr: [vm5, addresses, { get_resource: net_2}, 0, addr] }
143             $COUNT: { get_param: ping_count }
144   vm2:
145     type: OS::Nova::Server
146     properties:
147       name: { get_param: instance_2_name }
148       image: { get_param: image_n }
149       flavor: { get_param: flavor }
150       availability_zone: { get_param: av_zone_1 }
151       security_groups:
152         - { get_resource: sec_group }
153       networks:
154         - subnet: { get_resource: subnet_1 }
155   vm3:
156     type: OS::Nova::Server
157     properties:
158       name: { get_param: instance_3_name }
159       image: { get_param: image_n }
160       flavor: { get_param: flavor }
161       availability_zone: { get_param: av_zone_2 }
162       security_groups:
163         - { get_resource: sec_group }
164       networks:
165         - subnet: { get_resource: subnet_1 }
166   vm4:
167     type: OS::Nova::Server
168     depends_on: vm5
169     properties:
170       name: { get_param: instance_4_name }
171       image: { get_param: image_n }
172       flavor: { get_param: flavor }
173       availability_zone: { get_param: av_zone_1 }
174       security_groups:
175         - { get_resource: sec_group }
176       networks:
177         - subnet: { get_resource: subnet_2 }
178       config_drive: True
179       user_data_format: RAW
180       user_data:
181         str_replace:
182           template: |
183             #!/bin/sh
184             set $IP_VM5
185             while true; do
186              for i do
187               ip=$i
188               ping -c $COUNT $ip 2>&1 >/dev/null
189               RES=$?
190               if [ \"Z$RES\" = \"Z0\" ] ; then
191                echo ping $ip OK
192               else echo ping $ip KO
193               fi
194               done
195              sleep 1
196             done
197           params:
198             $IP_VM5: { get_attr: [vm5, addresses, { get_resource: net_2}, 0, addr] }
199             $COUNT: { get_param: ping_count }
200
201   vm5:
202     type: OS::Nova::Server
203     properties:
204       name: { get_param: instance_5_name }
205       image: { get_param: image_n }
206       flavor: { get_param: flavor }
207       availability_zone: { get_param: av_zone_2 }
208       security_groups:
209         - { get_resource: sec_group }
210       networks:
211         - subnet: { get_resource: subnet_2 }
212
213 outputs:
214   net_1_o:
215     description: the id of network 1
216     value: { get_attr: [net_1, show, id] }
217   net_2_o:
218     description: the id of network 2
219     value: { get_attr: [net_2, show, id] }
220   vm1_o:
221     description: the deployed vm resource
222     value: { get_attr: [vm1, show, name] }
223   vm2_o:
224     description: the deployed vm resource
225     value: { get_attr: [vm2, show, name] }
226   vm3_o:
227     description: the deployed vm resource
228     value: { get_attr: [vm3, show, name] }
229   vm4_o:
230     description: the deployed vm resource
231     value: { get_attr: [vm4, show, name] }
232   vm5_o:
233     description: the deployed vm resource
234     value: { get_attr: [vm5, show, name] }