summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorKeisuke Tagami <tagami.keisuke@lab.ntt.co.jp>2011-09-06 10:14:27 +0900
committerKeisuke Tagami <tagami.keisuke@lab.ntt.co.jp>2011-09-06 10:14:27 +0900
commitb922e08a6c15eeaab1f7ec342c00673b610d0e76 (patch)
tree282f8d7afbf14a7e93c5d2162590608871d365d6 /nova
parentb9ef3dcaa241088e205e170ca0a236afb0ea34dd (diff)
correct a method to collect instances from db
add interface data to test
Diffstat (limited to 'nova')
-rwxr-xr-xnova/db/api.py5
-rwxr-xr-xnova/db/sqlalchemy/api.py14
-rwxr-xr-xnova/network/linux_net.py8
-rwxr-xr-xnova/tests/test_linux_net.py74
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)