Browse code

Remove no_wait ovs flag from vmw_nsx 3rd party lib

The no_wait flag can trigger a race conditon with ip addr flush
if the public bridge is not yet up. Due to this race condition
the local route for the external subnet might not be added.

The patch also renames br-ex to $PUBLIC_BRIDGE in some places

Change-Id: I11335c99dba580e7ca26b0b15b0df8dead367fdc

taturiello authored on 2014/10/15 21:09:45
Showing 1 changed files
... ...
@@ -8,7 +8,7 @@
8 8
 # * enable_service vmware_nsx        --> to execute this third-party addition
9 9
 # * PUBLIC_BRIDGE                    --> bridge used for external connectivity, typically br-ex
10 10
 # * NSX_GATEWAY_NETWORK_INTERFACE    --> interface used to communicate with the NSX Gateway
11
-# * NSX_GATEWAY_NETWORK_CIDR         --> CIDR to configure br-ex, e.g. 172.24.4.211/24
11
+# * NSX_GATEWAY_NETWORK_CIDR         --> CIDR to configure $PUBLIC_BRIDGE, e.g. 172.24.4.211/24
12 12
 
13 13
 # Save trace setting
14 14
 NSX3_XTRACE=$(set +o | grep xtrace)
... ...
@@ -29,7 +29,7 @@ function configure_vmware_nsx {
29 29
 function init_vmware_nsx {
30 30
     if ! is_set NSX_GATEWAY_NETWORK_CIDR; then
31 31
         NSX_GATEWAY_NETWORK_CIDR=$PUBLIC_NETWORK_GATEWAY/${FLOATING_RANGE#*/}
32
-        echo "The IP address to set on br-ex was not specified. "
32
+        echo "The IP address to set on $PUBLIC_BRIDGE was not specified. "
33 33
         echo "Defaulting to "$NSX_GATEWAY_NETWORK_CIDR
34 34
     fi
35 35
     # Make sure the interface is up, but not configured
... ...
@@ -42,14 +42,15 @@ function init_vmware_nsx {
42 42
     # only with mac learning enabled, portsecurity and security profiles disabled
43 43
     # The public bridge might not exist for the NSX plugin if Q_USE_DEBUG_COMMAND is off
44 44
     # Try to create it anyway
45
-    sudo ovs-vsctl --no-wait -- --may-exist add-br $PUBLIC_BRIDGE
46
-    sudo ovs-vsctl -- --may-exist add-port $PUBLIC_BRIDGE $NSX_GATEWAY_NETWORK_INTERFACE
45
+    sudo ovs-vsctl --may-exist add-br $PUBLIC_BRIDGE
46
+    sudo ovs-vsctl --may-exist add-port $PUBLIC_BRIDGE $NSX_GATEWAY_NETWORK_INTERFACE
47 47
     nsx_gw_net_if_mac=$(ip link show $NSX_GATEWAY_NETWORK_INTERFACE | awk '/ether/ {print $2}')
48 48
     sudo ip link set address $nsx_gw_net_if_mac dev $PUBLIC_BRIDGE
49 49
     for address in $addresses; do
50 50
         sudo ip addr add dev $PUBLIC_BRIDGE $address
51 51
     done
52 52
     sudo ip addr add dev $PUBLIC_BRIDGE $NSX_GATEWAY_NETWORK_CIDR
53
+    sudo ip link set $PUBLIC_BRIDGE up
53 54
 }
54 55
 
55 56
 function install_vmware_nsx {
... ...
@@ -63,7 +64,7 @@ function start_vmware_nsx {
63 63
 function stop_vmware_nsx {
64 64
     if ! is_set NSX_GATEWAY_NETWORK_CIDR; then
65 65
         NSX_GATEWAY_NETWORK_CIDR=$PUBLIC_NETWORK_GATEWAY/${FLOATING_RANGE#*/}
66
-        echo "The IP address expected on br-ex was not specified. "
66
+        echo "The IP address expected on $PUBLIC_BRIDGE was not specified. "
67 67
         echo "Defaulting to "$NSX_GATEWAY_NETWORK_CIDR
68 68
     fi
69 69
     sudo ip addr del $NSX_GATEWAY_NETWORK_CIDR dev $PUBLIC_BRIDGE