bb4813dec123ba9255b2f58d63d542fd7b24c9be
[integration/test.git] / tools / deployment / openstack_ha / deploy / 00_initial_setup.robot
1 *** Settings ***
2 Documentation       Test suite to verify packet flows between vm instances.
3
4 Library             SSHLibrary
5 Library             OperatingSystem
6 Resource            ../libraries/OpenStackInstallUtils.robot
7 Resource            ../libraries/SystemUtils.robot
8 Resource            ../libraries/OpendaylightInstallUtils.robot
9
10 Suite Setup         OpenStackInstallUtils.Get All Ssh Connections
11 Suite Teardown      Close All Connections
12
13
14 *** Test Cases ***
15 Stop Firewall
16     [Documentation]    Stop Firewalld and disable
17     Stop And Disable Firewall    ${OS_CONTROL_1_IP}
18     IF    1 < ${NUM_CONTROL_NODES}
19         Stop And Disable Firewall    ${OS_CONTROL_2_IP}
20     END
21     IF    2 < ${NUM_CONTROL_NODES}
22         Stop And Disable Firewall    ${OS_CONTROL_3_IP}
23     END
24     IF    3 < ${NUM_CONTROL_NODES}
25         Stop And Disable Firewall    ${OS_CONTROL_4_IP}
26     END
27     IF    4 < ${NUM_CONTROL_NODES}
28         Stop And Disable Firewall    ${OS_CONTROL_5_IP}
29     END
30     IF    2 < ${NUM_CONTROL_NODES}    Stop And Disable Firewall    ${HAPROXY_IP}
31     IF    0 < ${NUM_COMPUTE_NODES}
32         Stop And Disable Firewall    ${OS_COMPUTE_1_IP}
33     END
34     IF    1 < ${NUM_COMPUTE_NODES}
35         Stop And Disable Firewall    ${OS_COMPUTE_2_IP}
36     END
37
38 Create Etc Hosts Entries
39     [Documentation]    Create Etc Hosts Entries
40     Create Etc Hosts    ${OS_CONTROL_1_IP}
41     IF    1 < ${NUM_CONTROL_NODES}    Create Etc Hosts    ${OS_CONTROL_2_IP}
42     IF    2 < ${NUM_CONTROL_NODES}    Create Etc Hosts    ${OS_CONTROL_3_IP}
43     IF    3 < ${NUM_CONTROL_NODES}    Create Etc Hosts    ${OS_CONTROL_4_IP}
44     IF    4 < ${NUM_CONTROL_NODES}    Create Etc Hosts    ${OS_CONTROL_5_IP}
45     IF    2 < ${NUM_CONTROL_NODES}    Create Etc Hosts    ${HAPROXY_IP}
46     IF    0 < ${NUM_COMPUTE_NODES}    Create Etc Hosts    ${OS_COMPUTE_1_IP}
47     IF    1 < ${NUM_COMPUTE_NODES}    Create Etc Hosts    ${OS_COMPUTE_2_IP}
48     Create Etc Hosts In RobotVM
49
50 Update the Distro
51     [Documentation]    Always Better to run yum update first :-)
52     Pass Execution If    '${UPGRADE_REQUIRED}' == 'no'    "No need to do yum update in CSIT"
53     Update Packages    ${OS_CONTROL_1_IP}
54     IF    1 < ${NUM_CONTROL_NODES}    Update Packages    ${OS_CONTROL_2_IP}
55     IF    2 < ${NUM_CONTROL_NODES}    Update Packages    ${OS_CONTROL_3_IP}
56     IF    3 < ${NUM_CONTROL_NODES}    Update Packages    ${OS_CONTROL_4_IP}
57     IF    4 < ${NUM_CONTROL_NODES}    Update Packages    ${OS_CONTROL_5_IP}
58     IF    2 < ${NUM_CONTROL_NODES}    Update Packages    ${HAPROXY_IP}
59     IF    0 < ${NUM_COMPUTE_NODES}    Update Packages    ${OS_COMPUTE_1_IP}
60     IF    1 < ${NUM_COMPUTE_NODES}    Update Packages    ${OS_COMPUTE_2_IP}
61
62 Get Package List
63     [Documentation]    Get List of PAckages Installed
64     Run Command    ${OS_CONTROL_1_IP}    sudo yum list installed
65     Run Command    ${OS_COMPUTE_1_IP}    sudo yum list installed
66     Run Command    ${OS_COMPUTE_2_IP}    sudo yum list installed
67
68 Get Chrony
69     [Documentation]    Install Chrony
70     Setup Chrony    ${OS_CONTROL_1_IP}
71     IF    1 < ${NUM_CONTROL_NODES}    Setup Chrony    ${OS_CONTROL_2_IP}
72     IF    2 < ${NUM_CONTROL_NODES}    Setup Chrony    ${OS_CONTROL_3_IP}
73     IF    3 < ${NUM_CONTROL_NODES}    Setup Chrony    ${OS_CONTROL_4_IP}
74     IF    4 < ${NUM_CONTROL_NODES}    Setup Chrony    ${OS_CONTROL_5_IP}
75     IF    0 < ${NUM_COMPUTE_NODES}    Setup Chrony    ${OS_COMPUTE_1_IP}
76     IF    1 < ${NUM_COMPUTE_NODES}    Setup Chrony    ${OS_COMPUTE_2_IP}
77
78 Install Openstack Base Repo
79     [Documentation]    Install Openstack Release Repo
80     Pass Execution If    '${OS_APPS_PRE_INSTALLED}' == 'yes'    "Already installed in Image"
81     Install Openstack Base Rpm    ${OS_CONTROL_1_IP}
82     IF    1 < ${NUM_CONTROL_NODES}
83         Install Openstack Base Rpm    ${OS_CONTROL_2_IP}
84     END
85     IF    2 < ${NUM_CONTROL_NODES}
86         Install Openstack Base Rpm    ${OS_CONTROL_3_IP}
87     END
88     IF    3 < ${NUM_CONTROL_NODES}
89         Install Openstack Base Rpm    ${OS_CONTROL_4_IP}
90     END
91     IF    4 < ${NUM_CONTROL_NODES}
92         Install Openstack Base Rpm    ${OS_CONTROL_5_IP}
93     END
94     IF    2 < ${NUM_CONTROL_NODES}
95         Install Openstack Base Rpm    ${HAPROXY_IP}
96     END
97     IF    0 < ${NUM_COMPUTE_NODES}
98         Install Openstack Base Rpm    ${OS_COMPUTE_1_IP}
99     END
100     IF    1 < ${NUM_COMPUTE_NODES}
101         Install Openstack Base Rpm    ${OS_COMPUTE_2_IP}
102     END
103
104 Get Crudini
105     [Documentation]    Install Crudini in all the Openstack nodes
106     Pass Execution If    '${OS_APPS_PRE_INSTALLED}' == 'yes'    "Already Installed"
107     Install Rpm Package    ${OS_CONTROL_1_IP}    crudini
108     IF    1 < ${NUM_CONTROL_NODES}
109         Install Rpm Package    ${OS_CONTROL_2_IP}    crudini
110     END
111     IF    2 < ${NUM_CONTROL_NODES}
112         Install Rpm Package    ${OS_CONTROL_3_IP}    crudini
113     END
114     IF    3 < ${NUM_CONTROL_NODES}
115         Install Rpm Package    ${OS_CONTROL_4_IP}    crudini
116     END
117     IF    4 < ${NUM_CONTROL_NODES}
118         Install Rpm Package    ${OS_CONTROL_5_IP}    crudini
119     END
120     IF    2 < ${NUM_CONTROL_NODES}
121         Install Rpm Package    ${HAPROXY_IP}    crudini
122     END
123     IF    0 < ${NUM_COMPUTE_NODES}
124         Install Rpm Package    ${OS_COMPUTE_1_IP}    crudini
125     END
126     IF    1 < ${NUM_COMPUTE_NODES}
127         Install Rpm Package    ${OS_COMPUTE_2_IP}    crudini
128     END
129
130 Get MemCached
131     [Documentation]    Install memcached in all Control Nodes
132     IF    '${OS_APPS_PRE_INSTALLED}' == 'no'
133         Install Rpm Package    ${OS_CONTROL_1_IP}    memcached python-memcached
134     END
135     Crudini Edit
136     ...    ${OS_CONTROL_1_IP}
137     ...    /etc/sysconfig/memcached
138     ...    ''
139     ...    OPTIONS
140     ...    "-l127.0.0.1,::1,${OS_CONTROL_1_IP}"
141     Enable Service    ${OS_CONTROL_1_IP}    memcached
142     Start Service    ${OS_CONTROL_1_IP}    memcached
143     IF    1 < ${NUM_CONTROL_NODES} and '${OS_APPS_PRE_INSTALLED}' == 'no'
144         Install Rpm Package    ${OS_CONTROL_2_IP}    memcached python-memcached
145     END
146     IF    1 < ${NUM_CONTROL_NODES}
147         Crudini Edit
148         ...    ${OS_CONTROL_2_IP}
149         ...    /etc/sysconfig/memcached
150         ...    ''
151         ...    OPTIONS
152         ...    "-l127.0.0.1,::1,${OS_CONTROL_2_IP}"
153     END
154     IF    1 < ${NUM_CONTROL_NODES}
155         Enable Service    ${OS_CONTROL_2_IP}    memcached
156     END
157     IF    1 < ${NUM_CONTROL_NODES}
158         Start Service    ${OS_CONTROL_2_IP}    memcached
159     END
160     IF    2 < ${NUM_CONTROL_NODES} and '${OS_APPS_PRE_INSTALLED}' == 'no'
161         Install Rpm Package    ${OS_CONTROL_3_IP}    memcached python-memcached
162     END
163     IF    2 < ${NUM_CONTROL_NODES}
164         Crudini Edit
165         ...    ${OS_CONTROL_3_IP}
166         ...    /etc/sysconfig/memcached
167         ...    ''
168         ...    OPTIONS
169         ...    "-l127.0.0.1,::1,${OS_CONTROL_3_IP}"
170     END
171     IF    2 < ${NUM_CONTROL_NODES}
172         Enable Service    ${OS_CONTROL_3_IP}    memcached
173     END
174     IF    2 < ${NUM_CONTROL_NODES}
175         Start Service    ${OS_CONTROL_3_IP}    memcached
176     END
177     IF    3 < ${NUM_CONTROL_NODES} and '${OS_APPS_PRE_INSTALLED}' == 'no'
178         Install Rpm Package    ${OS_CONTROL_4_IP}    memcached python-memcached
179     END
180     IF    3 < ${NUM_CONTROL_NODES}
181         Crudini Edit
182         ...    ${OS_CONTROL_4_IP}
183         ...    /etc/sysconfig/memcached
184         ...    ''
185         ...    OPTIONS
186         ...    "-l127.0.0.1,::1,${OS_CONTROL_3_IP}"
187     END
188     IF    3 < ${NUM_CONTROL_NODES}
189         Enable Service    ${OS_CONTROL_4_IP}    memcached
190     END
191     IF    3 < ${NUM_CONTROL_NODES}
192         Start Service    ${OS_CONTROL_4_IP}    memcached
193     END
194     IF    4 < ${NUM_CONTROL_NODES} and '${OS_APPS_PRE_INSTALLED}' == 'no'
195         Install Rpm Package    ${OS_CONTROL_5_IP}    memcached python-memcached
196     END
197     IF    4 < ${NUM_CONTROL_NODES}
198         Crudini Edit
199         ...    ${OS_CONTROL_5_IP}
200         ...    /etc/sysconfig/memcached
201         ...    ''
202         ...    OPTIONS
203         ...    "-l127.0.0.1,::1,${OS_CONTROL_3_IP}"
204     END
205     IF    4 < ${NUM_CONTROL_NODES}
206         Enable Service    ${OS_CONTROL_5_IP}    memcached
207     END
208     IF    4 < ${NUM_CONTROL_NODES}
209         Start Service    ${OS_CONTROL_5_IP}    memcached
210     END
211
212 Install HAProxy
213     [Documentation]    Install HAProxy on a VM and configure the basic setting
214     IF    2 < ${NUM_CONTROL_NODES} and '${OS_APPS_PRE_INSTALLED}' == 'no'
215         Install Rpm Package    ${HAPROXY_IP}    haproxy
216     END
217     IF    2 < ${NUM_CONTROL_NODES}
218         Move File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    /etc/haproxy/haproxy.cfg_bkp
219     END
220     IF    2 < ${NUM_CONTROL_NODES}
221         Touch File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg
222     END
223     IF    2 < ${NUM_CONTROL_NODES}
224         Write To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    "global"
225     END
226     IF    2 < ${NUM_CONTROL_NODES}
227         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " chroot /var/lib/haproxy"
228     END
229     IF    2 < ${NUM_CONTROL_NODES}
230         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " daemon"
231     END
232     IF    2 < ${NUM_CONTROL_NODES}
233         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " group haproxy"
234     END
235     IF    2 < ${NUM_CONTROL_NODES}
236         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " maxconn 4000"
237     END
238     IF    2 < ${NUM_CONTROL_NODES}
239         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " pidfile /var/run/haproxy.pid"
240     END
241     IF    2 < ${NUM_CONTROL_NODES}
242         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " user haproxy"
243     END
244     IF    2 < ${NUM_CONTROL_NODES}
245         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    $'\n'
246     END
247     IF    2 < ${NUM_CONTROL_NODES}
248         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    "defaults"
249     END
250     IF    2 < ${NUM_CONTROL_NODES}
251         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " log global"
252     END
253     IF    2 < ${NUM_CONTROL_NODES}
254         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " maxconn 4000"
255     END
256     IF    2 < ${NUM_CONTROL_NODES}
257         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " option redispatch"
258     END
259     IF    2 < ${NUM_CONTROL_NODES}
260         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " retries 3"
261     END
262     IF    2 < ${NUM_CONTROL_NODES}
263         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " timeout http-request 10s"
264     END
265     IF    2 < ${NUM_CONTROL_NODES}
266         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " timeout queue 1m"
267     END
268     IF    2 < ${NUM_CONTROL_NODES}
269         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " timeout connect 10s"
270     END
271     IF    2 < ${NUM_CONTROL_NODES}
272         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " timeout client 1m"
273     END
274     IF    2 < ${NUM_CONTROL_NODES}
275         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " timeout server 1m"
276     END
277     IF    2 < ${NUM_CONTROL_NODES}
278         Append To File    ${HAPROXY_IP}    /etc/haproxy/haproxy.cfg    " timeout check 10s"
279     END
280     IF    2 < ${NUM_CONTROL_NODES} and '${OS_APPS_PRE_INSTALLED}' == 'no'
281         Install Rpm Package    ${HAPROXY_IP}    "nfs-utils"
282     END
283     IF    2 < ${NUM_CONTROL_NODES}
284         Run Command    ${HAPROXY_IP}    sudo mkdir -p /images;sudo chmod -R 777 /images
285     END
286     IF    2 < ${NUM_CONTROL_NODES}
287         Run Command    ${HAPROXY_IP}    sudo mkdir -p /instances;sudo chmod -R 777 /instances
288     END
289     IF    2 < ${NUM_CONTROL_NODES}
290         Write To File    ${HAPROXY_IP}    /etc/exports    /images *\\(rw,no_root_squash\\)
291     END
292     IF    2 < ${NUM_CONTROL_NODES}
293         Append To File    ${HAPROXY_IP}    /etc/exports    /instances *\\(rw,no_root_squash\\)
294     END
295     IF    2 < ${NUM_CONTROL_NODES}
296         Enable Service    ${HAPROXY_IP}    rpcbind nfs-server
297     END
298     IF    2 < ${NUM_CONTROL_NODES}
299         Start Service    ${HAPROXY_IP}    rpcbind nfs-server
300     END
301     IF    2 < ${NUM_CONTROL_NODES}
302         Run Command    ${HAPROXY_IP}    sudo exportfs
303     END
304     IF    2 < ${NUM_CONTROL_NODES}
305         Restart Service    ${HAPROXY_IP}    rpcbind nfs-server
306     END
307     IF    2 < ${NUM_CONTROL_NODES}
308         Run Command    ${HAPROXY_IP}    sudo exportfs
309     END
310
311 Create NFS Share for VM Live Migration Tests
312     Pass Execution If    2 < ${NUM_CONTROL_NODES}    "Will Be Configured in HAProxy Node"
313     Local Install Rpm Package    "nfs-utils"
314     Run Command In Local Node    sudo mkdir -p /instances;sudo chmod -R 777 /instances
315     Write To Local File    /etc/exports    /instances *\\(rw,no_root_squash\\)
316     Run Command In Local Node    sudo systemctl enable rpcbind nfs-server
317     Run Command In Local Node    sudo systemctl start rpcbind nfs-server
318     Run Command In Local Node    sudo exportfs
319
320 Install OSC For Testing
321     [Documentation]    Install Openstack Client for testing with Robot
322     IF    '${OPENSTACK_VERSION}' == 'ocata'
323         Local Install Rpm Package    centos-release-openstack-ocata
324     END
325     IF    '${OPENSTACK_VERSION}' == 'pike'
326         Local Install Rpm Package    centos-release-openstack-pike
327     END
328     Local Install Rpm Package    python-openstackclient
329
330 Install ODL From CBS or Nexus
331     Pass Execution If    '${ODL_INSTALL_LOCAL_RPM}' == 'yes'    "Do Not Download from Nexus or cbs"
332     Install Rpm Package    ${OS_CONTROL_1_IP}    ${ODL_RPM}
333     IF    1 < ${NUM_CONTROL_NODES}
334         Install Rpm Package    ${OS_CONTROL_2_IP}    ${ODL_RPM}
335     END
336     IF    2 < ${NUM_CONTROL_NODES}
337         Install Rpm Package    ${OS_CONTROL_3_IP}    ${ODL_RPM}
338     END
339     IF    3 < ${NUM_CONTROL_NODES}
340         Install Rpm Package    ${OS_CONTROL_4_IP}    ${ODL_RPM}
341     END
342     IF    4 < ${NUM_CONTROL_NODES}
343         Install Rpm Package    ${OS_CONTROL_5_IP}    ${ODL_RPM}
344     END
345     Install Feature as Boot    ${OS_CONTROL_1_IP}    odl-netvirt-openstack
346     IF    1 < ${NUM_CONTROL_NODES}
347         Install Feature as Boot    ${OS_CONTROL_2_IP}    odl-netvirt-openstack
348     END
349     IF    2 < ${NUM_CONTROL_NODES}
350         Install Feature as Boot    ${OS_CONTROL_3_IP}    odl-netvirt-openstack
351     END
352     IF    3 < ${NUM_CONTROL_NODES}
353         Install Feature as Boot    ${OS_CONTROL_4_IP}    odl-netvirt-openstack
354     END
355     IF    4 < ${NUM_CONTROL_NODES}
356         Install Feature as Boot    ${OS_CONTROL_5_IP}    odl-netvirt-openstack
357     END
358     Configure SNAT MODE In Odl    ${OS_CONTROL_1_IP}
359     IF    1 < ${NUM_CONTROL_NODES}
360         Configure SNAT MODE In Odl    ${OS_CONTROL_2_IP}
361     END
362     IF    2 < ${NUM_CONTROL_NODES}
363         Configure SNAT MODE In Odl    ${OS_CONTROL_3_IP}
364     END
365     IF    3 < ${NUM_CONTROL_NODES}
366         Configure SNAT MODE In Odl    ${OS_CONTROL_4_IP}
367     END
368     IF    4 < ${NUM_CONTROL_NODES}
369         Configure SNAT MODE In Odl    ${OS_CONTROL_5_IP}
370     END
371     IF    2 < ${NUM_CONTROL_NODES}
372         Configure ODL Clustering    ${OS_CONTROL_1_IP}    1
373     END
374     IF    2 < ${NUM_CONTROL_NODES}
375         Configure ODL Clustering    ${OS_CONTROL_2_IP}    2
376     END
377     IF    2 < ${NUM_CONTROL_NODES}
378         Configure ODL Clustering    ${OS_CONTROL_3_IP}    3
379     END
380     IF    3 < ${NUM_CONTROL_NODES}
381         Configure ODL Clustering    ${OS_CONTROL_4_IP}    4
382     END
383     IF    4 < ${NUM_CONTROL_NODES}
384         Configure ODL Clustering    ${OS_CONTROL_5_IP}    5
385     END
386     Enable Service    ${OS_CONTROL_1_IP}    opendaylight
387     Start Service    ${OS_CONTROL_1_IP}    opendaylight
388     IF    1 < ${NUM_CONTROL_NODES}
389         Enable Service    ${OS_CONTROL_2_IP}    opendaylight
390     END
391     IF    1 < ${NUM_CONTROL_NODES}
392         Start Service    ${OS_CONTROL_2_IP}    opendaylight
393     END
394     IF    2 < ${NUM_CONTROL_NODES}
395         Enable Service    ${OS_CONTROL_3_IP}    opendaylight
396     END
397     IF    2 < ${NUM_CONTROL_NODES}
398         Start Service    ${OS_CONTROL_3_IP}    opendaylight
399     END
400     IF    3 < ${NUM_CONTROL_NODES}
401         Enable Service    ${OS_CONTROL_4_IP}    opendaylight
402     END
403     IF    4 < ${NUM_CONTROL_NODES}
404         Enable Service    ${OS_CONTROL_5_IP}    opendaylight
405     END
406     IF    2 < ${NUM_CONTROL_NODES}
407         Generic HAProxy Entry    ${HAPROXY_IP}    ${HAPROXY_IP}    8181    odl_rest
408     END
409     IF    2 < ${NUM_CONTROL_NODES}
410         Generic HAProxy Entry    ${HAPROXY_IP}    ${HAPROXY_IP}    8080    odl_neutron
411     END
412     IF    2 < ${NUM_CONTROL_NODES}
413         Generic HAProxy Entry    ${HAPROXY_IP}    ${HAPROXY_IP}    8185    odl_websocket
414     END
415
416 Install ODL From Local Rpm
417     Pass Execution If    '${ODL_INSTALL_LOCAL_RPM}' == 'no'    "Installed from Cbs or Nexus"
418     Install Local Rpm Package    ${OS_CONTROL_1_IP}    ${ODL_RPM}
419     IF    1 < ${NUM_CONTROL_NODES}
420         Install Local Rpm Package    ${OS_CONTROL_2_IP}    ${ODL_RPM}
421     END
422     IF    2 < ${NUM_CONTROL_NODES}
423         Install Local Rpm Package    ${OS_CONTROL_3_IP}    ${ODL_RPM}
424     END
425     IF    3 < ${NUM_CONTROL_NODES}
426         Install Local Rpm Package    ${OS_CONTROL_4_IP}    ${ODL_RPM}
427     END
428     IF    4 < ${NUM_CONTROL_NODES}
429         Install Local Rpm Package    ${OS_CONTROL_5_IP}    ${ODL_RPM}
430     END
431     Install Feature as Boot    ${OS_CONTROL_1_IP}    odl-netvirt-openstack
432     IF    1 < ${NUM_CONTROL_NODES}
433         Install Feature as Boot    ${OS_CONTROL_2_IP}    odl-netvirt-openstack
434     END
435     IF    2 < ${NUM_CONTROL_NODES}
436         Install Feature as Boot    ${OS_CONTROL_3_IP}    odl-netvirt-openstack
437     END
438     IF    3 < ${NUM_CONTROL_NODES}
439         Install Feature as Boot    ${OS_CONTROL_4_IP}    odl-netvirt-openstack
440     END
441     IF    4 < ${NUM_CONTROL_NODES}
442         Install Feature as Boot    ${OS_CONTROL_5_IP}    odl-netvirt-openstack
443     END
444     Configure SNAT MODE In Odl    ${OS_CONTROL_1_IP}
445     IF    1 < ${NUM_CONTROL_NODES}
446         Configure SNAT MODE In Odl    ${OS_CONTROL_2_IP}
447     END
448     IF    2 < ${NUM_CONTROL_NODES}
449         Configure SNAT MODE In Odl    ${OS_CONTROL_3_IP}
450     END
451     IF    3 < ${NUM_CONTROL_NODES}
452         Configure SNAT MODE In Odl    ${OS_CONTROL_4_IP}
453     END
454     IF    4 < ${NUM_CONTROL_NODES}
455         Configure SNAT MODE In Odl    ${OS_CONTROL_5_IP}
456     END
457     IF    2 < ${NUM_CONTROL_NODES}
458         Configure ODL Clustering    ${OS_CONTROL_1_IP}    1
459     END
460     IF    2 < ${NUM_CONTROL_NODES}
461         Configure ODL Clustering    ${OS_CONTROL_2_IP}    2
462     END
463     IF    2 < ${NUM_CONTROL_NODES}
464         Configure ODL Clustering    ${OS_CONTROL_3_IP}    3
465     END
466     IF    3 < ${NUM_CONTROL_NODES}
467         Configure ODL Clustering    ${OS_CONTROL_4_IP}    4
468     END
469     IF    4 < ${NUM_CONTROL_NODES}
470         Configure ODL Clustering    ${OS_CONTROL_5_IP}    5
471     END
472     Enable Service    ${OS_CONTROL_1_IP}    opendaylight
473     Start Service    ${OS_CONTROL_1_IP}    opendaylight
474     IF    1 < ${NUM_CONTROL_NODES}
475         Enable Service    ${OS_CONTROL_2_IP}    opendaylight
476     END
477     IF    1 < ${NUM_CONTROL_NODES}
478         Start Service    ${OS_CONTROL_2_IP}    opendaylight
479     END
480     IF    2 < ${NUM_CONTROL_NODES}
481         Enable Service    ${OS_CONTROL_3_IP}    opendaylight
482     END
483     IF    2 < ${NUM_CONTROL_NODES}
484         Start Service    ${OS_CONTROL_3_IP}    opendaylight
485     END
486     IF    3 < ${NUM_CONTROL_NODES}
487         Enable Service    ${OS_CONTROL_4_IP}    opendaylight
488     END
489     IF    4 < ${NUM_CONTROL_NODES}
490         Enable Service    ${OS_CONTROL_5_IP}    opendaylight
491     END
492     IF    2 < ${NUM_CONTROL_NODES}
493         Generic HAProxy Entry    ${HAPROXY_IP}    ${HAPROXY_IP}    8181    odl_rest
494     END
495     IF    2 < ${NUM_CONTROL_NODES}
496         Generic HAProxy Entry    ${HAPROXY_IP}    ${HAPROXY_IP}    8080    odl_neutron
497     END
498     IF    2 < ${NUM_CONTROL_NODES}
499         Generic HAProxy Entry    ${HAPROXY_IP}    ${HAPROXY_IP}    8185    odl_websocket
500     END
501
502
503 *** Keywords ***
504 Create Etc Hosts
505     [Documentation]    Create a hosts file
506     [Arguments]    ${os_node_cxn}
507     Write To File    ${os_node_cxn}    /etc/hosts    "127.0.0.1 localhost"
508     Append To File    ${os_node_cxn}    /etc/hosts    "${OS_CONTROL_1_IP} ${OS_CONTROL_1_HOSTNAME}"
509     IF    1 < ${NUM_CONTROL_NODES}
510         Append To File    ${os_node_cxn}    /etc/hosts    "${OS_CONTROL_2_IP} ${OS_CONTROL_2_HOSTNAME}"
511     END
512     IF    2 < ${NUM_CONTROL_NODES}
513         Append To File    ${os_node_cxn}    /etc/hosts    "${OS_CONTROL_3_IP} ${OS_CONTROL_3_HOSTNAME}"
514     END
515     IF    3 < ${NUM_CONTROL_NODES}
516         Append To File    ${os_node_cxn}    /etc/hosts    "${OS_CONTROL_4_IP} ${OS_CONTROL_4_HOSTNAME}"
517     END
518     IF    4 < ${NUM_CONTROL_NODES}
519         Append To File    ${os_node_cxn}    /etc/hosts    "${OS_CONTROL_5_IP} ${OS_CONTROL_5_HOSTNAME}"
520     END
521     IF    2 < ${NUM_CONTROL_NODES}
522         Append To File    ${os_node_cxn}    /etc/hosts    "${HAPROXY_IP} ${HAPROXY_HOSTNAME}"
523     END
524     IF    0 < ${NUM_COMPUTE_NODES}
525         Append To File    ${os_node_cxn}    /etc/hosts    "${OS_COMPUTE_1_IP} ${OS_COMPUTE_1_HOSTNAME}"
526     END
527     IF    1 < ${NUM_COMPUTE_NODES}
528         Append To File    ${os_node_cxn}    /etc/hosts    "${OS_COMPUTE_2_IP} ${OS_COMPUTE_2_HOSTNAME}"
529     END
530
531 Create Etc Hosts In RobotVM
532     [Documentation]    Create a hosts file
533     Write To Local File    /etc/hosts    "127.0.0.1 localhost"
534     Append To Local File    /etc/hosts    "${OS_CONTROL_1_IP} ${OS_CONTROL_1_HOSTNAME}"
535     IF    1 < ${NUM_CONTROL_NODES}
536         Append To Local File    /etc/hosts    "${OS_CONTROL_2_IP} ${OS_CONTROL_2_HOSTNAME}"
537     END
538     IF    2 < ${NUM_CONTROL_NODES}
539         Append To Local File    /etc/hosts    "${OS_CONTROL_3_IP} ${OS_CONTROL_3_HOSTNAME}"
540     END
541     IF    3 < ${NUM_CONTROL_NODES}
542         Append To Local File    /etc/hosts    "${OS_CONTROL_4_IP} ${OS_CONTROL_4_HOSTNAME}"
543     END
544     IF    4 < ${NUM_CONTROL_NODES}
545         Append To Local File    /etc/hosts    "${OS_CONTROL_5_IP} ${OS_CONTROL_5_HOSTNAME}"
546     END
547     IF    2 < ${NUM_CONTROL_NODES}
548         Append To Local File    /etc/hosts    "${HAPROXY_IP} ${HAPROXY_HOSTNAME}"
549     END
550     IF    0 < ${NUM_COMPUTE_NODES}
551         Append To Local File    /etc/hosts    "${OS_COMPUTE_1_IP} ${OS_COMPUTE_1_HOSTNAME}"
552     END
553     IF    1 < ${NUM_COMPUTE_NODES}
554         Append To Local File    /etc/hosts    "${OS_COMPUTE_2_IP} ${OS_COMPUTE_2_HOSTNAME}"
555     END
556
557 Setup Chrony
558     [Documentation]    Install and configure chrony
559     [Arguments]    ${os_node_cxn}
560     IF    '${OS_APPS_PRE_INSTALLED}' == 'no'
561         Install Rpm Package    ${os_node_cxn}    chrony
562     END
563     Append To File    ${os_node_cxn}    /etc/chrony.conf    "allow 0.0.0.0"
564     Enable Service    ${os_node_cxn}    chronyd.service
565     Start Service    ${os_node_cxn}    chronyd.service
566
567 Install Openstack Base Rpm
568     [Documentation]    Install the Openstack release
569     [Arguments]    ${os_node_cxn}
570     Pass Execution If    '${OS_APPS_PRE_INSTALLED}' == 'yes'    "Already Installd"
571     IF    '${OPENSTACK_VERSION}' == 'ocata'
572         Install Rpm Package    ${os_node_cxn}    centos-release-openstack-ocata
573     END
574     IF    '${OPENSTACK_VERSION}' == 'pike'
575         Install Rpm Package    ${os_node_cxn}    centos-release-openstack-pike
576     END
577
578 Configure SNAT MODE In Odl
579     [Arguments]    ${os_node_cxn}
580     Run Command    ${os_node_cxn}    sudo mkdir -p /opt/opendaylight/etc/opendaylight/datastore/initial/config/
581     Touch File
582     ...    ${os_node_cxn}
583     ...    /opt/opendaylight/etc/opendaylight/datastore/initial/config/netvirt-natservice-config.xml
584     Write To File
585     ...    ${os_node_cxn}
586     ...    /opt/opendaylight/etc/opendaylight/datastore/initial/config/netvirt-natservice-config.xml
587     ...    '<natservice-config xmlns="urn:opendaylight:netvirt:natservice:config">'
588     Append To File
589     ...    ${os_node_cxn}
590     ...    /opt/opendaylight/etc/opendaylight/datastore/initial/config/netvirt-natservice-config.xml
591     ...    '<nat-mode>${ODL_NETVIRT_SNAT_MODE}</nat-mode>'
592     Append To File
593     ...    ${os_node_cxn}
594     ...    /opt/opendaylight/etc/opendaylight/datastore/initial/config/netvirt-natservice-config.xml
595     ...    '</natservice-config>'
596     Run Command    ${os_node_cxn}    sudo chown -R odl:odl /opt/opendaylight/