summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-05-29 16:30:49 +0000
committerGerrit Code Review <review@openstack.org>2012-05-29 16:30:49 +0000
commitdab262af0d642c48c7d2b92bf8b0520ffc65daaf (patch)
treec82ecd34ce82eefb66ad7dd863bcc978a2def241
parent09b13b84493144ebc9c71e504709bd596e546a0f (diff)
parent4e65a33276895432121e2d4e8efd323956d73529 (diff)
downloadnova-dab262af0d642c48c7d2b92bf8b0520ffc65daaf.tar.gz
nova-dab262af0d642c48c7d2b92bf8b0520ffc65daaf.tar.xz
nova-dab262af0d642c48c7d2b92bf8b0520ffc65daaf.zip
Merge "Allow adding fixed IPs by network UUID"
-rw-r--r--nova/network/manager.py7
-rw-r--r--nova/tests/network/test_manager.py35
2 files changed, 39 insertions, 3 deletions
diff --git a/nova/network/manager.py b/nova/network/manager.py
index 31871c1a9..e552dec7f 100644
--- a/nova/network/manager.py
+++ b/nova/network/manager.py
@@ -1177,8 +1177,11 @@ class NetworkManager(manager.SchedulerDependentManager):
@wrap_check_policy
def add_fixed_ip_to_instance(self, context, instance_id, host, network_id):
"""Adds a fixed ip to an instance from specified network."""
- networks = [self._get_network_by_id(context, network_id)]
- self._allocate_fixed_ips(context, instance_id, host, networks)
+ if utils.is_uuid_like(network_id):
+ network = self.get_network(context, network_id)
+ else:
+ network = self._get_network_by_id(context, network_id)
+ self._allocate_fixed_ips(context, instance_id, host, [network])
@wrap_check_policy
def remove_fixed_ip_from_instance(self, context, instance_id, host,
diff --git a/nova/tests/network/test_manager.py b/nova/tests/network/test_manager.py
index 9e0a754b7..ff38af492 100644
--- a/nova/tests/network/test_manager.py
+++ b/nova/tests/network/test_manager.py
@@ -268,7 +268,7 @@ class FlatNetworkTestCase(test.TestCase):
self.network.validate_networks(self.context, requested_networks)
- def test_add_fixed_ip_instance_without_vpn_requested_networks(self):
+ def test_add_fixed_ip_instance_using_id_without_vpn(self):
self.mox.StubOutWithMock(db, 'network_get')
self.mox.StubOutWithMock(db, 'network_update')
self.mox.StubOutWithMock(db, 'fixed_ip_associate_pool')
@@ -301,6 +301,39 @@ class FlatNetworkTestCase(test.TestCase):
self.network.add_fixed_ip_to_instance(self.context, 1, HOST,
networks[0]['id'])
+ def test_add_fixed_ip_instance_using_uuid_without_vpn(self):
+ self.mox.StubOutWithMock(db, 'network_get_by_uuid')
+ self.mox.StubOutWithMock(db, 'network_update')
+ self.mox.StubOutWithMock(db, 'fixed_ip_associate_pool')
+ self.mox.StubOutWithMock(db, 'instance_get')
+ self.mox.StubOutWithMock(db,
+ 'virtual_interface_get_by_instance_and_network')
+ self.mox.StubOutWithMock(db, 'fixed_ip_update')
+
+ db.fixed_ip_update(mox.IgnoreArg(),
+ mox.IgnoreArg(),
+ mox.IgnoreArg())
+ db.virtual_interface_get_by_instance_and_network(mox.IgnoreArg(),
+ mox.IgnoreArg(), mox.IgnoreArg()).AndReturn({'id': 0})
+
+ db.instance_get(mox.IgnoreArg(),
+ mox.IgnoreArg()).AndReturn({'security_groups':
+ [{'id': 0}]})
+ db.instance_get(self.context,
+ 1).AndReturn({'display_name': HOST,
+ 'uuid': 'test-00001'})
+ db.instance_get(mox.IgnoreArg(),
+ mox.IgnoreArg()).AndReturn({'availability_zone': ''})
+ db.fixed_ip_associate_pool(mox.IgnoreArg(),
+ mox.IgnoreArg(),
+ mox.IgnoreArg()).AndReturn('192.168.0.101')
+ db.network_get_by_uuid(mox.IgnoreArg(),
+ mox.IgnoreArg()).AndReturn(networks[0])
+ db.network_update(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg())
+ self.mox.ReplayAll()
+ self.network.add_fixed_ip_to_instance(self.context, 1, HOST,
+ networks[0]['uuid'])
+
def test_mini_dns_driver(self):
zone1 = "example.org"
zone2 = "example.com"