summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Koelker <jason@koelker.net>2011-08-15 16:41:11 -0500
committerJason Koelker <jason@koelker.net>2011-08-15 16:41:11 -0500
commita34943e89e9aee0a26bd4fd03a2b12fc954029fd (patch)
tree498fadc9c4873e16d152ce610c74036bbd4090f7
parenta20e18c5ae2c77ed005e5dc9cec7b92d67e50a0b (diff)
have the tests call create_networks directly
-rw-r--r--nova/network/manager.py28
-rw-r--r--nova/tests/test_network.py72
2 files changed, 65 insertions, 35 deletions
diff --git a/nova/network/manager.py b/nova/network/manager.py
index 7e9a0ecf6..4954dc7e9 100644
--- a/nova/network/manager.py
+++ b/nova/network/manager.py
@@ -662,12 +662,17 @@ class NetworkManager(manager.SchedulerDependentManager):
nets = []
used_subnets = [netaddr.IPNetwork(net['cidr']) for net in nets]
+ def find_next(subnet):
+ next_subnet = subnet.next()
+ while next_subnet in subnets_v4:
+ next_subnet = next_subnet.next()
+ if next_subnet in fixed_net_v4:
+ return next_subnet
+
for subnet in list(subnets_v4):
if subnet in used_subnets:
- next_subnet = subnet.next()
- while next_subnet in subnets_v4:
- next_subnet = next_subnet.next()
- if next_subnet in fixed_net_v4:
+ next_subnet = find_next(subnet)
+ if next_subnet:
subnets_v4.remove(subnet)
subnets_v4.append(next_subnet)
subnet = next_subnet
@@ -680,10 +685,17 @@ class NetworkManager(manager.SchedulerDependentManager):
raise ValueError(msg % {'cidr': subnet,
'super': used_subnet})
if used_subnet in subnet:
- msg = _('requested cidr (%(cidr)s) conflicts with '
- 'existing smaller cidr (%(smaller)s)')
- raise ValueError(msg % {'cidr': subnet,
- 'smaller': used_subnet})
+ next_subnet = find_next(subnet)
+ if next_subnet:
+ subnets_v4.remove(subnet)
+ subnets_v4.append(next_subnet)
+ subnet = next_subnet
+ else:
+ msg = _('requested cidr (%(cidr)s) conflicts '
+ 'with existing smaller cidr '
+ '(%(smaller)s)')
+ raise ValueError(msg % {'cidr': subnet,
+ 'smaller': used_subnet})
networks = []
subnets = itertools.izip_longest(subnets_v4, subnets_v6)
diff --git a/nova/tests/test_network.py b/nova/tests/test_network.py
index c673f5d06..0ead680ee 100644
--- a/nova/tests/test_network.py
+++ b/nova/tests/test_network.py
@@ -255,7 +255,7 @@ class CommonNetworkTestCase(test.TestCase):
raise exception.NetworkNotFoundForCidr()
def network_create_safe(self, context, net):
- fakenet = {}
+ fakenet = dict(net)
fakenet['id'] = 999
return fakenet
@@ -269,6 +269,9 @@ class CommonNetworkTestCase(test.TestCase):
def deallocate_fixed_ip(self, context, address):
self.deallocate_called = address
+ def _create_fixed_ips(self, context, network_id):
+ pass
+
def fake_create_fixed_ips(self, context, network_id):
return None
@@ -286,16 +289,20 @@ class CommonNetworkTestCase(test.TestCase):
def test_validate_cidrs(self):
manager = self.FakeNetworkManager()
- nets = manager._validate_cidrs(None, '192.168.0.0/24', 1, 256)
+ nets = manager.create_networks(None, 'fake', '192.168.0.0/24',
+ False, 1, 256, None, None, None,
+ None)
self.assertEqual(1, len(nets))
- cidrs = [str(net) for net in nets]
+ cidrs = [str(net['cidr']) for net in nets]
self.assertTrue('192.168.0.0/24' in cidrs)
def test_validate_cidrs_split_exact_in_half(self):
manager = self.FakeNetworkManager()
- nets = manager._validate_cidrs(None, '192.168.0.0/24', 2, 128)
+ nets = manager.create_networks(None, 'fake', '192.168.0.0/24',
+ False, 2, 128, None, None, None,
+ None)
self.assertEqual(2, len(nets))
- cidrs = [str(net) for net in nets]
+ cidrs = [str(net['cidr']) for net in nets]
self.assertTrue('192.168.0.0/25' in cidrs)
self.assertTrue('192.168.0.128/25' in cidrs)
@@ -306,9 +313,11 @@ class CommonNetworkTestCase(test.TestCase):
manager.db.network_get_all(ctxt).AndReturn([{'id': 1,
'cidr': '192.168.2.0/24'}])
self.mox.ReplayAll()
- nets = manager._validate_cidrs(None, '192.168.0.0/16', 4, 256)
+ nets = manager.create_networks(None, 'fake', '192.168.0.0/16',
+ False, 4, 256, None, None, None,
+ None)
self.assertEqual(4, len(nets))
- cidrs = [str(net) for net in nets]
+ cidrs = [str(net['cidr']) for net in nets]
exp_cidrs = ['192.168.0.0/24', '192.168.1.0/24', '192.168.3.0/24',
'192.168.4.0/24']
for exp_cidr in exp_cidrs:
@@ -324,8 +333,9 @@ class CommonNetworkTestCase(test.TestCase):
self.mox.ReplayAll()
# ValueError: requested cidr (192.168.2.0/24) conflicts with
# existing smaller cidr
- args = [None, '192.168.2.0/24', 1, 256]
- self.assertRaises(ValueError, manager._validate_cidrs, *args)
+ args = (None, 'fake', '192.168.2.0/24', False, 1, 256, None, None,
+ None, None)
+ self.assertRaises(ValueError, manager.create_networks, *args)
def test_validate_cidrs_split_smaller_cidr_in_use(self):
manager = self.FakeNetworkManager()
@@ -334,9 +344,10 @@ class CommonNetworkTestCase(test.TestCase):
manager.db.network_get_all(ctxt).AndReturn([{'id': 1,
'cidr': '192.168.2.0/25'}])
self.mox.ReplayAll()
- nets = manager._validate_cidrs(None, '192.168.0.0/16', 4, 256)
+ nets = manager.create_networks(None, 'fake', '192.168.0.0/16',
+ False, 4, 256, None, None, None, None)
self.assertEqual(4, len(nets))
- cidrs = [str(net) for net in nets]
+ cidrs = [str(net['cidr']) for net in nets]
exp_cidrs = ['192.168.0.0/24', '192.168.1.0/24', '192.168.3.0/24',
'192.168.4.0/24']
for exp_cidr in exp_cidrs:
@@ -350,9 +361,10 @@ class CommonNetworkTestCase(test.TestCase):
manager.db.network_get_all(ctxt).AndReturn([{'id': 1,
'cidr': '192.168.2.9/29'}])
self.mox.ReplayAll()
- nets = manager._validate_cidrs(None, '192.168.2.0/24', 3, 32)
+ nets = manager.create_networks(None, 'fake', '192.168.2.0/24',
+ False, 3, 32, None, None, None, None)
self.assertEqual(3, len(nets))
- cidrs = [str(net) for net in nets]
+ cidrs = [str(net['cidr']) for net in nets]
exp_cidrs = ['192.168.2.32/27', '192.168.2.64/27', '192.168.2.96/27']
for exp_cidr in exp_cidrs:
self.assertTrue(exp_cidr in cidrs)
@@ -367,17 +379,19 @@ class CommonNetworkTestCase(test.TestCase):
{'id': 3, 'cidr': '192.168.2.128/26'}]
manager.db.network_get_all(ctxt).AndReturn(in_use)
self.mox.ReplayAll()
- args = [None, '192.168.2.0/24', 3, 64]
+ args = (None, 'fake', '192.168.2.0/24', False, 3, 64, None, None,
+ None, None)
# ValueError: Not enough subnets avail to satisfy requested num_
# networks - some subnets in requested range already
# in use
- self.assertRaises(ValueError, manager._validate_cidrs, *args)
+ self.assertRaises(ValueError, manager.create_networks, *args)
def test_validate_cidrs_one_in_use(self):
manager = self.FakeNetworkManager()
- args = [None, '192.168.0.0/24', 2, 256]
+ args = (None, 'fake', '192.168.0.0/24', False, 2, 256, None, None,
+ None, None)
# ValueError: network_size * num_networks exceeds cidr size
- self.assertRaises(ValueError, manager._validate_cidrs, *args)
+ self.assertRaises(ValueError, manager.create_networks, *args)
def test_validate_cidrs_already_used(self):
manager = self.FakeNetworkManager()
@@ -387,20 +401,23 @@ class CommonNetworkTestCase(test.TestCase):
'cidr': '192.168.0.0/24'}])
self.mox.ReplayAll()
# ValueError: cidr already in use
- args = [None, '192.168.0.0/24', 1, 256]
- self.assertRaises(ValueError, manager._validate_cidrs, *args)
+ args = (None, 'fake', '192.168.0.0/24', False, 1, 256, None, None,
+ None, None)
+ self.assertRaises(ValueError, manager.create_networks, *args)
def test_validate_cidrs_too_many(self):
manager = self.FakeNetworkManager()
- args = [None, '192.168.0.0/24', 200, 256]
+ args = (None, 'fake', '192.168.0.0/24', False, 200, 256, None, None,
+ None, None)
# ValueError: Not enough subnets avail to satisfy requested
# num_networks
- self.assertRaises(ValueError, manager._validate_cidrs, *args)
+ self.assertRaises(ValueError, manager.create_networks, *args)
def test_validate_cidrs_split_partial(self):
manager = self.FakeNetworkManager()
- nets = manager._validate_cidrs(None, '192.168.0.0/16', 2, 256)
- returned_cidrs = [str(net) for net in nets]
+ nets = manager.create_networks(None, 'fake', '192.168.0.0/16',
+ False, 2, 256, None, None, None, None)
+ returned_cidrs = [str(net['cidr']) for net in nets]
self.assertTrue('192.168.0.0/24' in returned_cidrs)
self.assertTrue('192.168.1.0/24' in returned_cidrs)
@@ -411,10 +428,11 @@ class CommonNetworkTestCase(test.TestCase):
fakecidr = [{'id': 1, 'cidr': '192.168.0.0/8'}]
manager.db.network_get_all(ctxt).AndReturn(fakecidr)
self.mox.ReplayAll()
- args = [None, '192.168.0.0/24', 1, 256]
+ args = (None, 'fake', '192.168.0.0/24', False, 1, 256, None, None,
+ None, None)
# ValueError: requested cidr (192.168.0.0/24) conflicts
# with existing supernet
- self.assertRaises(ValueError, manager._validate_cidrs, *args)
+ self.assertRaises(ValueError, manager.create_networks, *args)
def test_create_networks(self):
cidr = '192.168.0.0/24'
@@ -424,7 +442,7 @@ class CommonNetworkTestCase(test.TestCase):
args = [None, 'foo', cidr, None, 1, 256, 'fd00::/48', None, None,
None]
result = manager.create_networks(*args)
- self.assertEqual(manager.create_networks(*args), None)
+ self.assertTrue(manager.create_networks(*args))
def test_create_networks_cidr_already_used(self):
manager = self.FakeNetworkManager()
@@ -444,4 +462,4 @@ class CommonNetworkTestCase(test.TestCase):
self.fake_create_fixed_ips)
args = [None, 'foo', cidr, None, 10, 256, 'fd00::/48', None, None,
None]
- self.assertEqual(manager.create_networks(*args), None)
+ self.assertTrue(manager.create_networks(*args))