summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2011-04-06 16:10:08 -0700
committerVishvananda Ishaya <vishvananda@gmail.com>2011-04-06 16:10:08 -0700
commit3831008b4e8aeec08b58afb49e40428ad5ece5b1 (patch)
treee9c318df27cf28286fd9510e38ddb86aa448f048
parent040428cc35aa046de4bcf744c95b7c507df94550 (diff)
downloadnova-3831008b4e8aeec08b58afb49e40428ad5ece5b1.tar.gz
nova-3831008b4e8aeec08b58afb49e40428ad5ece5b1.tar.xz
nova-3831008b4e8aeec08b58afb49e40428ad5ece5b1.zip
if we delete the old route when we move it we don't need to check for exists
-rw-r--r--nova/network/linux_net.py9
-rw-r--r--nova/network/manager.py2
2 files changed, 5 insertions, 6 deletions
diff --git a/nova/network/linux_net.py b/nova/network/linux_net.py
index 6a7051d10..a4d312f02 100644
--- a/nova/network/linux_net.py
+++ b/nova/network/linux_net.py
@@ -449,6 +449,7 @@ def ensure_vlan(vlan_num):
return interface
+@utils.synchronized('ensure_bridge', external=True)
def ensure_bridge(bridge, interface, net_attrs=None):
"""Create a bridge unless it already exists.
@@ -502,6 +503,8 @@ def ensure_bridge(bridge, interface, net_attrs=None):
fields = line.split()
if fields and fields[0] == "0.0.0.0" and fields[-1] == interface:
gateway = fields[1]
+ _execute('sudo', 'route', 'del', 'default', 'gw', gateway,
+ 'dev', interface)
out, err = _execute('sudo', 'ip', 'addr', 'show', 'dev', interface,
'scope', 'global')
for line in out.split("\n"):
@@ -511,11 +514,7 @@ def ensure_bridge(bridge, interface, net_attrs=None):
_execute(*_ip_bridge_cmd('del', params, fields[-1]))
_execute(*_ip_bridge_cmd('add', params, bridge))
if gateway:
- # NOTE(vish): If the gateway already exists we are fine
- out, err = _execute('sudo', 'route', 'add', '0.0.0.0', 'gw',
- gateway, check_exit_code=False)
- if err and err != "SIOCADDRT: File exists\n":
- raise exception.Error("Failed to reset gateway: %s" % err)
+ _execute('sudo', 'route', 'add', 'default', 'gw', gateway)
out, err = _execute('sudo', 'brctl', 'addif', bridge, interface,
check_exit_code=False)
diff --git a/nova/network/manager.py b/nova/network/manager.py
index a3c345b69..b80560bdf 100644
--- a/nova/network/manager.py
+++ b/nova/network/manager.py
@@ -128,9 +128,9 @@ class NetworkManager(manager.SchedulerDependentManager):
standalone service.
"""
self.driver.init_host()
+ self.driver.ensure_metadata_ip(FLAGS.metadata_interface)
# Set up networking for the projects for which we're already
# the designated network host.
- self.driver.ensure_metadata_ip(FLAGS.metadata_interface)
ctxt = context.get_admin_context()
for network in self.db.host_get_networks(ctxt, self.host):
self._on_set_network_host(ctxt, network['id'])