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