Remove testplans and suites for openstack
[integration/test.git] / tools / deployment / openstack_ha / deploy / 06_neutron_setup.robot
1 *** Settings ***
2 Documentation       Suite that Intalls Neutron and Configures Networking ODL
3
4 Library             SSHLibrary
5 Library             OperatingSystem
6 Library             RequestsLibrary
7 Resource            ../libraries/OpenStackInstallUtils.robot
8 Resource            ../libraries/OpenStackOperations.robot
9 Resource            ../libraries/SystemUtils.robot
10 Resource            ../libraries/Utils.robot
11
12 Suite Setup         OpenStackInstallUtils.Get All Ssh Connections
13 Suite Teardown      Close All Connections
14
15
16 *** Test Cases ***
17 Install Neutron
18     Create And Configure Neutron Db    ${OS_CONTROL_1_IP}    root    mysql    ${OS_CONTROL_1_HOSTNAME}
19     IF    2 < ${NUM_CONTROL_NODES}
20         Create And Configure Neutron Db Other Nodes    ${OS_CONTROL_2_IP}    root    mysql    ${OS_CONTROL_2_HOSTNAME}
21     END
22     IF    2 < ${NUM_CONTROL_NODES}
23         Create And Configure Neutron Db Other Nodes    ${OS_CONTROL_3_IP}    root    mysql    ${OS_CONTROL_3_HOSTNAME}
24     END
25     IF    3 < ${NUM_CONTROL_NODES}
26         Create And Configure Neutron Db Other Nodes    ${OS_CONTROL_4_IP}    root    mysql    ${OS_CONTROL_4_HOSTNAME}
27     END
28     IF    4 < ${NUM_CONTROL_NODES}
29         Create And Configure Neutron Db Other Nodes    ${OS_CONTROL_5_IP}    root    mysql    ${OS_CONTROL_5_HOSTNAME}
30     END
31     IF    2 < ${NUM_CONTROL_NODES}
32         Create Openstack Elements    ${HAPROXY_HOSTNAME}
33     END
34     IF    2 > ${NUM_CONTROL_NODES}
35         Create Openstack Elements    ${OS_CONTROL_1_HOSTNAME}
36     END
37     IF    2 < ${NUM_CONTROL_NODES}
38         Install Configure Neutron    ${OS_CONTROL_1_IP}    ${OS_CONTROL_1_IP}    ${HAPROXY_HOSTNAME}
39     END
40     IF    2 > ${NUM_CONTROL_NODES}
41         Install Configure Neutron    ${OS_CONTROL_1_IP}    ${OS_CONTROL_1_IP}    ${OS_CONTROL_1_HOSTNAME}
42     END
43     IF    2 < ${NUM_CONTROL_NODES}
44         Install Configure Neutron    ${OS_CONTROL_2_IP}    ${OS_CONTROL_2_IP}    ${HAPROXY_HOSTNAME}
45     END
46     IF    2 < ${NUM_CONTROL_NODES}
47         Install Configure Neutron    ${OS_CONTROL_3_IP}    ${OS_CONTROL_3_IP}    ${HAPROXY_HOSTNAME}
48     END
49     IF    3 < ${NUM_CONTROL_NODES}
50         Install Configure Neutron    ${OS_CONTROL_4_IP}    ${OS_CONTROL_3_IP}    ${HAPROXY_HOSTNAME}
51     END
52     IF    4 < ${NUM_CONTROL_NODES}
53         Install Configure Neutron    ${OS_CONTROL_5_IP}    ${OS_CONTROL_3_IP}    ${HAPROXY_HOSTNAME}
54     END
55     IF    2 > ${NUM_CONTROL_NODES}    Sync Db    ${OS_CONTROL_1_IP}
56     IF    2 < ${NUM_CONTROL_NODES}    Sync Db    ${OS_CONTROL_1_IP}
57     IF    2 < ${NUM_CONTROL_NODES}    Sync Db    ${OS_CONTROL_2_IP}
58     IF    2 < ${NUM_CONTROL_NODES}    Sync Db    ${OS_CONTROL_3_IP}
59     IF    3 < ${NUM_CONTROL_NODES}    Sync Db    ${OS_CONTROL_4_IP}
60     IF    4 < ${NUM_CONTROL_NODES}    Sync Db    ${OS_CONTROL_5_IP}
61     IF    2 < ${NUM_CONTROL_NODES}
62         Generic HAProxy Entry    ${HAPROXY_IP}    ${HAPROXY_IP}    9696    neutron_server
63     END
64     IF    2 > ${NUM_CONTROL_NODES}
65         Add ODL As Ovs Manager    ${OS_CONTROL_1_IP}
66     END
67     IF    2 < ${NUM_CONTROL_NODES}
68         Add ODL As Ovs Manager    ${OS_CONTROL_1_IP}
69     END
70     IF    2 < ${NUM_CONTROL_NODES}
71         Add ODL As Ovs Manager    ${OS_CONTROL_2_IP}
72     END
73     IF    2 < ${NUM_CONTROL_NODES}
74         Add ODL As Ovs Manager    ${OS_CONTROL_3_IP}
75     END
76     IF    2 > ${NUM_CONTROL_NODES}
77         Start Neutron Service    ${OS_CONTROL_1_IP}
78     END
79     IF    2 < ${NUM_CONTROL_NODES}
80         Start Neutron Service    ${OS_CONTROL_1_IP}
81     END
82     IF    2 < ${NUM_CONTROL_NODES}
83         Start Neutron Service    ${OS_CONTROL_2_IP}
84     END
85     IF    2 < ${NUM_CONTROL_NODES}
86         Start Neutron Service    ${OS_CONTROL_3_IP}
87     END
88     IF    1 > ${NUM_COMPUTE_NODES}
89         Install Configure Neutron Compute    ${OS_CONTROL_1_IP}    ${OS_CONTROL_1_IP}    ${OS_CONTROL_1_IP}
90     END
91     IF    0 < ${NUM_COMPUTE_NODES} and 2 < ${NUM_CONTROL_NODES}
92         Install Configure Neutron Compute    ${OS_COMPUTE_1_IP}    ${OS_COMPUTE_1_IP}    ${HAPROXY_HOSTNAME}
93     END
94     IF    1 < ${NUM_COMPUTE_NODES} and 2 < ${NUM_CONTROL_NODES}
95         Install Configure Neutron Compute    ${OS_COMPUTE_2_IP}    ${OS_COMPUTE_2_IP}    ${HAPROXY_HOSTNAME}
96     END
97     IF    0 < ${NUM_COMPUTE_NODES} and 2 > ${NUM_CONTROL_NODES}
98         Install Configure Neutron Compute    ${OS_COMPUTE_1_IP}    ${OS_COMPUTE_1_IP}    ${OS_CONTROL_1_HOSTNAME}
99     END
100     IF    1 < ${NUM_COMPUTE_NODES} and 2 > ${NUM_CONTROL_NODES}
101         Install Configure Neutron Compute    ${OS_COMPUTE_2_IP}    ${OS_COMPUTE_2_IP}    ${OS_CONTROL_1_HOSTNAME}
102     END
103
104
105 *** Keywords ***
106 Create And Configure Neutron Db
107     [Arguments]    ${os_node_cxn}    ${mysql_user}    ${mysql_pass}    ${host_name}
108     Create Database for Mysql    ${os_node_cxn}    ${mysql_user}    ${mysql_pass}    neutron
109     Grant Privileges To Mysql Database
110     ...    ${os_node_cxn}
111     ...    ${mysql_user}
112     ...    ${mysql_pass}
113     ...    neutron.*
114     ...    neutron
115     ...    ${host_name}
116     ...    neutron
117     Grant Privileges To Mysql Database
118     ...    ${os_node_cxn}
119     ...    ${mysql_user}
120     ...    ${mysql_pass}
121     ...    neutron.*
122     ...    neutron
123     ...    localhost
124     ...    neutron
125     IF    2 < ${NUM_CONTROL_NODES}
126         Grant Privileges To Mysql Database
127         ...    ${os_node_cxn}
128         ...    ${mysql_user}
129         ...    ${mysql_pass}
130         ...    neutron.*
131         ...    neutron
132         ...    ${HAPROXY_HOSTNAME}
133         ...    neutron
134     END
135
136 Create And Configure Neutron Db Other Nodes
137     [Arguments]    ${os_node_cxn}    ${mysql_user}    ${mysql_pass}    ${host_name}
138     Grant Privileges To Mysql Database
139     ...    ${os_node_cxn}
140     ...    ${mysql_user}
141     ...    ${mysql_pass}
142     ...    neutron.*
143     ...    neutron
144     ...    ${host_name}
145     ...    neutron
146     Grant Privileges To Mysql Database
147     ...    ${os_node_cxn}
148     ...    ${mysql_user}
149     ...    ${mysql_pass}
150     ...    neutron.*
151     ...    neutron
152     ...    localhost
153     ...    neutron
154     Grant Privileges To Mysql Database
155     ...    ${os_node_cxn}
156     ...    ${mysql_user}
157     ...    ${mysql_pass}
158     ...    neutron.*
159     ...    neutron
160     ...    ${HAPROXY_HOSTNAME}
161     ...    neutron
162
163 Create Openstack Elements
164     [Arguments]    ${host_name}
165     Create User    neutron    default    neutron    rc_file=/tmp/stackrc
166     Role Add    service    neutron    admin    rc_file=/tmp/stackrc
167     Create Service    neutron    "Networking service"    network    rc_file=/tmp/stackrc
168     Create Endpoint    RegionOne    ${host_name}    network    public    9696    rc_file=/tmp/stackrc
169     Create Endpoint    RegionOne    ${host_name}    network    internal    9696    rc_file=/tmp/stackrc
170     Create Endpoint    RegionOne    ${host_name}    network    admin    9696    rc_file=/tmp/stackrc
171
172 Install Configure Neutron
173     [Arguments]    ${os_node_cxn}    ${host_ip}    ${host_name}
174     IF    '${OS_APPS_PRE_INSTALLED}' == 'no'
175         Install Rpm Package    ${os_node_cxn}    openstack-neutron openstack-neutron-ml2 ebtables
176     END
177     IF    2 < ${NUM_CONTROL_NODES}
178         Crudini Edit
179         ...    ${os_node_cxn}
180         ...    /etc/neutron/neutron.conf
181         ...    DEFAULT
182         ...    transport_url
183         ...    "rabbit://openstack:rabbit@${OS_CONTROL_1_HOSTNAME},openstack:rabbit@${OS_CONTROL_2_HOSTNAME},openstack:rabbit@${OS_CONTROL_3_HOSTNAME}"
184     END
185     IF    2 > ${NUM_CONTROL_NODES}
186         Crudini Edit
187         ...    ${os_node_cxn}
188         ...    /etc/neutron/neutron.conf
189         ...    DEFAULT
190         ...    transport_url
191         ...    "rabbit://openstack:rabbit@${host_name}"
192     END
193     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    DEFAULT    core_plugin    ml2
194     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    DEFAULT    allow_overlapping_ips    true
195     Crudini Edit
196     ...    ${os_node_cxn}
197     ...    /etc/neutron/neutron.conf
198     ...    database
199     ...    connection
200     ...    "mysql+pymysql://neutron:neutron@${host_name}/neutron"
201     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    DEFAULT    auth_strategy    keystone
202     Crudini Edit
203     ...    ${os_node_cxn}
204     ...    /etc/neutron/neutron.conf
205     ...    DEFAULT
206     ...    notify_nova_on_port_status_changes
207     ...    true
208     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    DEFAULT    notify_nova_on_port_data_changes    true
209     IF    2 < ${NUM_CONTROL_NODES}
210         Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    DEFAULT    dhcp_agents_per_network    3
211     END
212     Crudini Edit
213     ...    ${os_node_cxn}
214     ...    /etc/neutron/neutron.conf
215     ...    keystone_authtoken
216     ...    auth_uri
217     ...    http://${host_name}:5000
218     Crudini Edit
219     ...    ${os_node_cxn}
220     ...    /etc/neutron/neutron.conf
221     ...    keystone_authtoken
222     ...    auth_url
223     ...    http://${host_name}:35357
224     IF    2 < ${NUM_CONTROL_NODES}
225         Crudini Edit
226         ...    ${os_node_cxn}
227         ...    /etc/neutron/neutron.conf
228         ...    keystone_authtoken
229         ...    memcached_servers
230         ...    ${OS_CONTROL_1_IP}:11211,${OS_CONTROL_2_IP}:11211,${OS_CONTROL_3_IP}:11211
231     END
232     IF    2 > ${NUM_CONTROL_NODES}
233         Crudini Edit
234         ...    ${os_node_cxn}
235         ...    /etc/neutron/neutron.conf
236         ...    keystone_authtoken
237         ...    memcached_servers
238         ...    ${host_name}:11211
239     END
240     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    keystone_authtoken    auth_type    password
241     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    keystone_authtoken    project_domain_name    default
242     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    keystone_authtoken    user_domain_name    default
243     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    keystone_authtoken    project_name    service
244     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    keystone_authtoken    username    neutron
245     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    keystone_authtoken    password    neutron
246     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    nova    auth_uri    http://${host_name}:5000
247     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    nova    auth_url    http://${host_name}:35357
248     IF    2 < ${NUM_CONTROL_NODES}
249         Crudini Edit
250         ...    ${os_node_cxn}
251         ...    /etc/neutron/neutron.conf
252         ...    nova
253         ...    memcached_servers
254         ...    ${OS_CONTROL_1_IP}:11211,${OS_CONTROL_2_IP}:11211,${OS_CONTROL_3_IP}:11211
255     END
256     IF    2 > ${NUM_CONTROL_NODES}
257         Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    nova    memcached_servers    ${host_name}:11211
258     END
259     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    nova    auth_type    password
260     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    nova    project_domain_name    default
261     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    nova    user_domain_name    default
262     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    nova    project_name    service
263     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    nova    username    nova
264     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    nova    password    nova
265     Crudini Edit
266     ...    ${os_node_cxn}
267     ...    /etc/neutron/neutron.conf
268     ...    oslo_concurrency
269     ...    lock_path
270     ...    /var/lib/neutron/tmp
271     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    OVS    ovsdb_connection    tcp:127.0.0.1:6641
272     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    oslo_messaging_rabbit    rabbit_max_retries    0
273     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    oslo_messaging_rabbit    rabbit_ha_queues    true
274     Crudini Edit    ${os_node_cxn}    /etc/neutron/plugins/ml2/ml2_conf.ini    ml2    type_drivers    "flat,vlan,vxlan"
275     Crudini Edit    ${os_node_cxn}    /etc/neutron/plugins/ml2/ml2_conf.ini    ml2    tenant_network_types    vxlan
276     Crudini Edit    ${os_node_cxn}    /etc/neutron/plugins/ml2/ml2_conf.ini    ml2_type_vxlan    vni_ranges    1:1000
277     Crudini Edit
278     ...    ${os_node_cxn}
279     ...    /etc/neutron/plugins/ml2/ml2_conf.ini
280     ...    ml2_type_vlan
281     ...    network_vlan_ranges
282     ...    physnet1:1:4094
283     Crudini Edit    ${os_node_cxn}    /etc/neutron/dhcp_agent.ini    DEFAULT    ovs_use_veth    True
284     Crudini Edit    ${os_node_cxn}    /etc/neutron/dhcp_agent.ini    DEFAULT    interface_driver    openvswitch
285     Crudini Edit    ${os_node_cxn}    /etc/neutron/dhcp_agent.ini    DEFAULT    enable_isolated_metadata    true
286     Crudini Edit    ${os_node_cxn}    /etc/neutron/dhcp_agent.ini    OVS    ovsdb_connection    tcp:127.0.0.1:6641
287     Crudini Edit    ${os_node_cxn}    /etc/neutron/metadata_agent.ini    DEFAULT    nova_metadata_ip    ${host_name}
288     Crudini Edit
289     ...    ${os_node_cxn}
290     ...    /etc/neutron/metadata_agent.ini
291     ...    DEFAULT
292     ...    metadata_proxy_shared_secret
293     ...    metadata
294     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    url    http://${host_name}:9696
295     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    auth_url    http://${host_name}:35357
296     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    auth_type    password
297     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    project_domain_name    default
298     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    user_domain_name    default
299     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    region_name    RegionOne
300     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    project_name    service
301     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    username    neutron
302     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    password    neutron
303     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    service_metadata_proxy    true
304     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    metadata_proxy_shared_secret    metadata
305     IF    '${OS_APPS_PRE_INSTALLED}' == 'no'
306         Install Rpm Package    ${os_node_cxn}    python-networking-odl
307     END
308     Crudini Edit
309     ...    ${os_node_cxn}
310     ...    /etc/neutron/plugins/ml2/ml2_conf.ini
311     ...    ml2
312     ...    mechanism_drivers
313     ...    opendaylight_v2
314     Crudini Edit
315     ...    ${os_node_cxn}
316     ...    /etc/neutron/plugins/ml2/ml2_conf.ini
317     ...    ml2_odl
318     ...    url
319     ...    http://${host_name}:8080/controller/nb/v2/neutron
320     Crudini Edit    ${os_node_cxn}    /etc/neutron/plugins/ml2/ml2_conf.ini    ml2_odl    username    admin
321     Crudini Edit    ${os_node_cxn}    /etc/neutron/plugins/ml2/ml2_conf.ini    ml2_odl    password    admin
322     Crudini Edit
323     ...    ${os_node_cxn}
324     ...    /etc/neutron/plugins/ml2/ml2_conf.ini
325     ...    ml2_odl
326     ...    port_binding_controller
327     ...    pseudo-agentdb-binding
328     Crudini Edit
329     ...    ${os_node_cxn}
330     ...    /etc/neutron/plugins/ml2/ml2_conf.ini
331     ...    securitygroup
332     ...    enable_security_group
333     ...    true
334     Crudini Edit
335     ...    ${os_node_cxn}
336     ...    /etc/neutron/plugins/ml2/ml2_conf.ini
337     ...    ml2
338     ...    extension_drivers
339     ...    port_security
340     Crudini Edit    ${os_node_cxn}    /etc/neutron/neutron.conf    DEFAULT    service_plugins    odl-router_v2
341     Install OVS And Configure    ${os_node_cxn}    ${host_ip}
342
343 Sync Db
344     [Arguments]    ${os_node_cxn}
345     #Unlink File    ${os_node_cxn}    /etc/neutron/plugin.ini
346     Create Softlink    ${os_node_cxn}    /etc/neutron/plugins/ml2/ml2_conf.ini    /etc/neutron/plugin.ini
347     Run Command As User
348     ...    ${os_node_cxn}
349     ...    "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head"
350     ...    neutron
351     Enable Service
352     ...    ${os_node_cxn}
353     ...    neutron-server.service neutron-dhcp-agent.service neutron-metadata-agent.service
354
355 Start Neutron Service
356     [Arguments]    ${os_node_cxn}
357     Restart Service    ${os_node_cxn}    openstack-nova-api.service
358     Start Service    ${os_node_cxn}    neutron-server.service neutron-dhcp-agent.service neutron-metadata-agent.service
359
360 Install Configure Neutron Compute
361     [Arguments]    ${os_node_cxn}    ${host_ip}    ${host_name}
362     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    auth_type    password
363     IF    2 > ${NUM_CONTROL_NODES}
364         Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    auth_url    http://${host_name}:35357
365     END
366     IF    2 < ${NUM_CONTROL_NODES}
367         Crudini Edit
368         ...    ${os_node_cxn}
369         ...    /etc/nova/nova.conf
370         ...    neutron
371         ...    auth_url
372         ...    http://${HAPROXY_HOSTNAME}:35357
373     END
374     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    username    neutron
375     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    password    neutron
376     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    user_domain_name    Default
377     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    project_domain_name    Default
378     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    project_name    service
379     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    auth_strategy    keystone
380     Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    region_name    RegionOne
381     IF    2 > ${NUM_CONTROL_NODES}
382         Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    url    http://${host_name}:9696
383     END
384     IF    2 < ${NUM_CONTROL_NODES}
385         Crudini Edit    ${os_node_cxn}    /etc/nova/nova.conf    neutron    url    http://${HAPROXY_HOSTNAME}:9696
386     END
387     Restart Service    ${os_node_cxn}    libvirtd.service openstack-nova-compute.service
388     Install OVS And Configure    ${os_node_cxn}    ${host_ip}
389     Add ODL As Ovs Manager    ${os_node_cxn}
390
391 Install OVS And Configure
392     [Arguments]    ${os_node_cxn}    ${host_ip}
393     IF    '${OS_APPS_PRE_INSTALLED}' == 'no'
394         Install Rpm Package    ${os_node_cxn}    python-networking-odl openvswitch
395     END
396     Enable Service    ${os_node_cxn}    openvswitch
397     Restart Service    ${os_node_cxn}    openvswitch
398     Run Command
399     ...    ${os_node_cxn}
400     ...    sudo neutron-odl-ovs-hostconfig --config-file=/etc/neutron/neutron.conf --debug --noovs_dpdk --bridge_mappings="flat1:br-flat1,flat2:br-flat2,physnet1:br-physnet1" --local_ip ${host_ip}
401
402 Add ODL As Ovs Manager
403     [Arguments]    ${os_node_cxn}
404     IF    2 < ${NUM_CONTROL_NODES}
405         Run Command
406         ...    ${os_node_cxn}
407         ...    sudo ovs-vsctl set-manager tcp:${OS_CONTROL_1_IP}:6640 tcp:${OS_CONTROL_2_IP}:6640 tcp:${OS_CONTROL_3_IP}:6640
408     END
409     IF    2 > ${NUM_CONTROL_NODES}
410         Run Command    ${os_node_cxn}    sudo ovs-vsctl set-manager tcp:${OS_CONTROL_1_IP}:6640
411     END