diff options
| author | Keisuke Tagami <tagami.keisuke@lab.ntt.co.jp> | 2011-09-06 10:14:27 +0900 |
|---|---|---|
| committer | Keisuke Tagami <tagami.keisuke@lab.ntt.co.jp> | 2011-09-06 10:14:27 +0900 |
| commit | b922e08a6c15eeaab1f7ec342c00673b610d0e76 (patch) | |
| tree | 282f8d7afbf14a7e93c5d2162590608871d365d6 /nova | |
| parent | b9ef3dcaa241088e205e170ca0a236afb0ea34dd (diff) | |
correct a method to collect instances from db
add interface data to test
Diffstat (limited to 'nova')
| -rwxr-xr-x | nova/db/api.py | 5 | ||||
| -rwxr-xr-x | nova/db/sqlalchemy/api.py | 14 | ||||
| -rwxr-xr-x | nova/network/linux_net.py | 8 | ||||
| -rwxr-xr-x | nova/tests/test_linux_net.py | 74 |
4 files changed, 54 insertions, 47 deletions
diff --git a/nova/db/api.py b/nova/db/api.py index faac13966..148887635 100755 --- a/nova/db/api.py +++ b/nova/db/api.py @@ -532,11 +532,6 @@ def instance_get_all_by_reservation(context, reservation_id): return IMPL.instance_get_all_by_reservation(context, reservation_id) -def instance_get_all_by_network(context, network_id): - """Get all instances belonging to a network.""" - return IMPL.instance_get_all_by_network(context, network_id) - - def instance_get_by_fixed_ip(context, address): """Get an instance for a fixed ip by address.""" return IMPL.instance_get_by_fixed_ip(context, address) diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 3194a5231..b99667afc 100755 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -1417,20 +1417,6 @@ def instance_get_all_by_reservation(context, reservation_id): all() -def instance_get_all_by_network(context, network_id): - session = get_session() - return session.query(models.Instance).\ - options(joinedload_all('fixed_ips.floating_ips')).\ - options(joinedload('virtual_interfaces')).\ - options(joinedload('security_groups')).\ - options(joinedload_all('fixed_ips.network')).\ - options(joinedload('metadata')).\ - options(joinedload('instance_type')).\ - filter_by(deleted=can_read_deleted(context)).\ - filter_by(network_id=network_id).\ - all() - - @require_context def instance_get_by_fixed_ip(context, address): """Return instance ref by exact match of FixedIP""" diff --git a/nova/network/linux_net.py b/nova/network/linux_net.py index 4ebc3df23..c26e3574e 100755 --- a/nova/network/linux_net.py +++ b/nova/network/linux_net.py @@ -517,11 +517,13 @@ def get_dhcp_opts(context, network_ref): hosts = [] default_gateway_network_node = dict() network_id = network_ref['id'] - instance_refs = db.instance_get_all_by_network(context, network_id) + instance_set = set() ips_ref = db.network_get_associated_fixed_ips(context, network_id) - for instance_ref in instance_refs: - instance_id = instance_ref['id'] + for fixed_ip_ref in ips_ref: + instance_set.add(fixed_ip_ref['instance_id']) + + for instance_id in instance_set: # nic number is decided by xxx from this function in xxx function vifs = db.virtual_interface_get_by_instance(context, instance_id) if vifs == None: diff --git a/nova/tests/test_linux_net.py b/nova/tests/test_linux_net.py index 93d9b02c9..3f44fbd05 100755 --- a/nova/tests/test_linux_net.py +++ b/nova/tests/test_linux_net.py @@ -18,10 +18,10 @@ from nova import context
from nova import db
from nova import exception
+from nova import flags
from nova import log as logging
from nova import test
from nova import utils
-from nova import flags
from nova.network import manager as network_manager
import mox
@@ -44,7 +44,9 @@ instances = [{'id': 0, addresses = [{"address": "10.0.0.1"},
{"address": "10.0.0.2"},
{"address": "10.0.0.3"},
- {"address": "10.0.0.4"}]
+ {"address": "10.0.0.4"},
+ {"address": "10.0.0.5"},
+ {"address": "10.0.0.6"}]
networks = [{'id': 0,
@@ -128,6 +130,24 @@ fixed_ips = [{'id': 0, 'virtual_interface_id': 3,
'virtual_interface': addresses[3],
'instance': instances[1],
+ 'floating_ips': []},
+ {'id': 4,
+ 'network_id': 0,
+ 'address': '192.168.0.102',
+ 'instance_id': 0,
+ 'allocated': True,
+ 'virtual_interface_id': 4,
+ 'virtual_interface': addresses[4],
+ 'instance': instances[0],
+ 'floating_ips': []},
+ {'id': 5,
+ 'network_id': 1,
+ 'address': '192.168.1.102',
+ 'instance_id': 1,
+ 'allocated': True,
+ 'virtual_interface_id': 5,
+ 'virtual_interface': addresses[5],
+ 'instance': instances[1],
'floating_ips': []}]
@@ -154,6 +174,18 @@ vifs = [{'id': 0, 'uuid': '00000000-0000-0000-0000-0000000000000003',
'network_id': 0,
'network': networks[0],
+ 'instance_id': 1},
+ {'id': 4,
+ 'address': 'DE:AD:BE:EF:00:04',
+ 'uuid': '00000000-0000-0000-0000-0000000000000004',
+ 'network_id': 0,
+ 'network': networks[0],
+ 'instance_id': 0},
+ {'id': 5,
+ 'address': 'DE:AD:BE:EF:00:05',
+ 'uuid': '00000000-0000-0000-0000-0000000000000005',
+ 'network_id': 1,
+ 'network': networks[1],
'instance_id': 1}]
@@ -167,7 +199,6 @@ class LinuxNetworkTestCase(test.TestCase): def test_update_dhcp_for_nw00(self):
self.mox.StubOutWithMock(db, 'network_get_associated_fixed_ips')
- self.mox.StubOutWithMock(db, 'instance_get_all_by_network')
self.mox.StubOutWithMock(db, 'virtual_interface_get_by_instance')
db.network_get_associated_fixed_ips(mox.IgnoreArg(),
@@ -175,9 +206,6 @@ class LinuxNetworkTestCase(test.TestCase): .AndReturn([fixed_ips[0],
fixed_ips[3]])
- db.instance_get_all_by_network(mox.IgnoreArg(),
- mox.IgnoreArg())\
- .AndReturn(instances)
db.network_get_associated_fixed_ips(mox.IgnoreArg(),
mox.IgnoreArg())\
.AndReturn([fixed_ips[0],
@@ -194,7 +222,6 @@ class LinuxNetworkTestCase(test.TestCase): def test_update_dhcp_for_nw01(self):
self.mox.StubOutWithMock(db, 'network_get_associated_fixed_ips')
- self.mox.StubOutWithMock(db, 'instance_get_all_by_network')
self.mox.StubOutWithMock(db, 'virtual_interface_get_by_instance')
db.network_get_associated_fixed_ips(mox.IgnoreArg(),
@@ -202,9 +229,6 @@ class LinuxNetworkTestCase(test.TestCase): .AndReturn([fixed_ips[1],
fixed_ips[2]])
- db.instance_get_all_by_network(mox.IgnoreArg(),
- mox.IgnoreArg())\
- .AndReturn(instances)
db.network_get_associated_fixed_ips(mox.IgnoreArg(),
mox.IgnoreArg())\
.AndReturn([fixed_ips[1],
@@ -257,27 +281,27 @@ class LinuxNetworkTestCase(test.TestCase): def test_get_dhcp_opts_for_nw00(self):
self.mox.StubOutWithMock(db, 'network_get_associated_fixed_ips')
- self.mox.StubOutWithMock(db, 'instance_get_all_by_network')
self.mox.StubOutWithMock(db, 'virtual_interface_get_by_instance')
- db.instance_get_all_by_network(mox.IgnoreArg(),
- mox.IgnoreArg())\
- .AndReturn(instances)
db.network_get_associated_fixed_ips(mox.IgnoreArg(),
mox.IgnoreArg())\
.AndReturn([fixed_ips[0],
- fixed_ips[3]])
+ fixed_ips[3],
+ fixed_ips[4]])
db.virtual_interface_get_by_instance(mox.IgnoreArg(),
mox.IgnoreArg())\
.AndReturn([vifs[0],
- vifs[1]])
+ vifs[1],
+ vifs[4]])
db.virtual_interface_get_by_instance(mox.IgnoreArg(),
mox.IgnoreArg())\
.AndReturn([vifs[2],
- vifs[3]])
+ vifs[3],
+ vifs[5]])
self.mox.ReplayAll()
expected_opts = '\n'\
+ '\n'\
''
actual_opts = self.driver.get_dhcp_opts(None, networks[0])
@@ -285,28 +309,28 @@ class LinuxNetworkTestCase(test.TestCase): def test_get_dhcp_opts_for_nw01(self):
self.mox.StubOutWithMock(db, 'network_get_associated_fixed_ips')
- self.mox.StubOutWithMock(db, 'instance_get_all_by_network')
self.mox.StubOutWithMock(db, 'virtual_interface_get_by_instance')
- db.instance_get_all_by_network(mox.IgnoreArg(),
- mox.IgnoreArg())\
- .AndReturn(instances)
db.network_get_associated_fixed_ips(mox.IgnoreArg(),
mox.IgnoreArg())\
.AndReturn([fixed_ips[1],
- fixed_ips[2]])
+ fixed_ips[2],
+ fixed_ips[5]])
db.virtual_interface_get_by_instance(mox.IgnoreArg(),
mox.IgnoreArg())\
.AndReturn([vifs[0],
- vifs[1]])
+ vifs[1],
+ vifs[4]])
db.virtual_interface_get_by_instance(mox.IgnoreArg(),
mox.IgnoreArg())\
.AndReturn([vifs[2],
- vifs[3]])
+ vifs[3],
+ vifs[5]])
self.mox.ReplayAll()
expected_opts = 'NW-i00000000-1,3\n'\
- 'NW-i00000001-0,3'
+ 'NW-i00000001-0,3\n'\
+ 'NW-i00000002-1,3'
actual_opts = self.driver.get_dhcp_opts(None, networks[1])
self.assertEquals(actual_opts, expected_opts)
|
