summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Gordon <jogo@cloudscaling.com>2011-11-01 12:22:13 -0700
committerJoe Gordon <jogo@cloudscaling.com>2011-11-03 10:52:24 -0700
commita6a7e936fe8fb55471dc1ecc41d8644398e45ef7 (patch)
tree61b3c3728f034c2649197b7ab8eb4b0e9aa3965c
parent005db2d7d494115c05b68875dcf222a68abc0957 (diff)
downloadnova-a6a7e936fe8fb55471dc1ecc41d8644398e45ef7.tar.gz
nova-a6a7e936fe8fb55471dc1ecc41d8644398e45ef7.tar.xz
nova-a6a7e936fe8fb55471dc1ecc41d8644398e45ef7.zip
fix bug 816630
Off by one error fixed With test case Change-Id: I5060c0a59949d69d6f859a01e7cf5fa8e0227d8a
-rw-r--r--nova/network/manager.py2
-rw-r--r--nova/tests/test_network.py11
2 files changed, 12 insertions, 1 deletions
diff --git a/nova/network/manager.py b/nova/network/manager.py
index 79bb0eda1..921d25645 100644
--- a/nova/network/manager.py
+++ b/nova/network/manager.py
@@ -1018,7 +1018,7 @@ class NetworkManager(manager.SchedulerDependentManager):
ips = []
for index in range(num_ips):
address = str(project_net[index])
- if index < bottom_reserved or num_ips - index < top_reserved:
+ if index < bottom_reserved or num_ips - index <= top_reserved:
reserved = True
else:
reserved = False
diff --git a/nova/tests/test_network.py b/nova/tests/test_network.py
index 17e79f39a..afcebc223 100644
--- a/nova/tests/test_network.py
+++ b/nova/tests/test_network.py
@@ -201,6 +201,17 @@ class FlatNetworkTestCase(test.TestCase):
self.mox.ReplayAll()
self.network.validate_networks(self.context, requested_networks)
+ def test_validate_reserved(self):
+ context_admin = context.RequestContext('testuser', 'testproject',
+ is_admin=True)
+ nets = self.network.create_networks(context_admin, 'fake',
+ '192.168.0.0/24', False, 1,
+ 256, None, None, None, None )
+ self.assertEqual(1, len(nets))
+ network = nets[0]
+ self.assertEqual(3, db.network_count_reserved_ips(context_admin,
+ network['id']))
+
def test_validate_networks_none_requested_networks(self):
self.network.validate_networks(self.context, None)