get rid of network indexes and make networks into a pool
This commit is contained in:
@@ -72,6 +72,7 @@ from nova import flags
|
|||||||
from nova import quota
|
from nova import quota
|
||||||
from nova import utils
|
from nova import utils
|
||||||
from nova.auth import manager
|
from nova.auth import manager
|
||||||
|
from nova.network import manager as network_manager
|
||||||
from nova.cloudpipe import pipelib
|
from nova.cloudpipe import pipelib
|
||||||
|
|
||||||
|
|
||||||
@@ -321,6 +322,25 @@ class FloatingIpCommands(object):
|
|||||||
floating_ip['address'],
|
floating_ip['address'],
|
||||||
instance)
|
instance)
|
||||||
|
|
||||||
|
class NetworkCommands(object):
|
||||||
|
"""Class for managing networks."""
|
||||||
|
|
||||||
|
def create(self, num_networks=None, network_size=None,
|
||||||
|
vlan_start=None, vpn_start=None):
|
||||||
|
"""Creates floating ips for host by range
|
||||||
|
arguments: [num_networks=FLAG], [network_size=FLAG],
|
||||||
|
[vlan_start=FLAG, vpn_start=FLAG]"""
|
||||||
|
if not num_networks:
|
||||||
|
num_networks = FLAGS.num_networks
|
||||||
|
if not network_size:
|
||||||
|
network_size = FLAGS.network_size
|
||||||
|
if not vlan_start:
|
||||||
|
vlan_start = FLAGS.vlan_start
|
||||||
|
if not vpn_start:
|
||||||
|
vpn_start = FLAGS.vpn_start
|
||||||
|
net_manager = network_manager.VlanManager()
|
||||||
|
net_manager.create_networks(None, int(num_networks), int(network_size),
|
||||||
|
int(vlan_start), int(vpn_start))
|
||||||
|
|
||||||
CATEGORIES = [
|
CATEGORIES = [
|
||||||
('user', UserCommands),
|
('user', UserCommands),
|
||||||
@@ -328,7 +348,8 @@ CATEGORIES = [
|
|||||||
('role', RoleCommands),
|
('role', RoleCommands),
|
||||||
('shell', ShellCommands),
|
('shell', ShellCommands),
|
||||||
('vpn', VpnCommands),
|
('vpn', VpnCommands),
|
||||||
('floating', FloatingIpCommands)
|
('floating', FloatingIpCommands),
|
||||||
|
('network', NetworkCommands)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@@ -394,9 +415,9 @@ def main():
|
|||||||
fn(*argv)
|
fn(*argv)
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
print "Wrong number of arguments supplied"
|
print "Possible wrong number of arguments supplied"
|
||||||
print "%s %s: %s" % (category, action, fn.__doc__)
|
print "%s %s: %s" % (category, action, fn.__doc__)
|
||||||
sys.exit(2)
|
raise
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|||||||
@@ -484,12 +484,6 @@ class AuthManager(object):
|
|||||||
member_users)
|
member_users)
|
||||||
if project_dict:
|
if project_dict:
|
||||||
project = Project(**project_dict)
|
project = Project(**project_dict)
|
||||||
try:
|
|
||||||
self.network_manager.allocate_network(context,
|
|
||||||
project.id)
|
|
||||||
except:
|
|
||||||
drv.delete_project(project.id)
|
|
||||||
raise
|
|
||||||
return project
|
return project
|
||||||
|
|
||||||
def modify_project(self, project, manager_user=None, description=None):
|
def modify_project(self, project, manager_user=None, description=None):
|
||||||
@@ -558,13 +552,6 @@ class AuthManager(object):
|
|||||||
|
|
||||||
def delete_project(self, project, context=None):
|
def delete_project(self, project, context=None):
|
||||||
"""Deletes a project"""
|
"""Deletes a project"""
|
||||||
try:
|
|
||||||
network_ref = db.project_get_network(context,
|
|
||||||
Project.safe_id(project))
|
|
||||||
db.network_destroy(context, network_ref['id'])
|
|
||||||
except:
|
|
||||||
logging.exception('Could not destroy network for %s',
|
|
||||||
project)
|
|
||||||
with self.driver() as drv:
|
with self.driver() as drv:
|
||||||
drv.delete_project(Project.safe_id(project))
|
drv.delete_project(Project.safe_id(project))
|
||||||
|
|
||||||
|
|||||||
10
nova/test.py
10
nova/test.py
@@ -31,8 +31,10 @@ from tornado import ioloop
|
|||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
from twisted.trial import unittest
|
from twisted.trial import unittest
|
||||||
|
|
||||||
|
from nova import db
|
||||||
from nova import fakerabbit
|
from nova import fakerabbit
|
||||||
from nova import flags
|
from nova import flags
|
||||||
|
from nova.network import manager as network_manager
|
||||||
|
|
||||||
|
|
||||||
FLAGS = flags.FLAGS
|
FLAGS = flags.FLAGS
|
||||||
@@ -56,6 +58,13 @@ class TrialTestCase(unittest.TestCase):
|
|||||||
def setUp(self): # pylint: disable-msg=C0103
|
def setUp(self): # pylint: disable-msg=C0103
|
||||||
"""Run before each test method to initialize test environment"""
|
"""Run before each test method to initialize test environment"""
|
||||||
super(TrialTestCase, self).setUp()
|
super(TrialTestCase, self).setUp()
|
||||||
|
# NOTE(vish): We need a better method for creating fixtures for tests
|
||||||
|
# now that we have some required db setup for the system
|
||||||
|
# to work properly.
|
||||||
|
if db.network_count(None) != 5:
|
||||||
|
network_manager.VlanManager().create_networks(None, 5, 16,
|
||||||
|
FLAGS.vlan_start,
|
||||||
|
FLAGS.vpn_start)
|
||||||
|
|
||||||
# emulate some of the mox stuff, we can't use the metaclass
|
# emulate some of the mox stuff, we can't use the metaclass
|
||||||
# because it screws with our generators
|
# because it screws with our generators
|
||||||
@@ -71,6 +80,7 @@ class TrialTestCase(unittest.TestCase):
|
|||||||
self.stubs.UnsetAll()
|
self.stubs.UnsetAll()
|
||||||
self.stubs.SmartUnsetAll()
|
self.stubs.SmartUnsetAll()
|
||||||
self.mox.VerifyAll()
|
self.mox.VerifyAll()
|
||||||
|
db.network_disassociate_all(None)
|
||||||
|
|
||||||
if FLAGS.fake_rabbit:
|
if FLAGS.fake_rabbit:
|
||||||
fakerabbit.reset_all()
|
fakerabbit.reset_all()
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ class NetworkTestCase(test.TrialTestCase):
|
|||||||
float_addr = self.network.allocate_floating_ip(self.context,
|
float_addr = self.network.allocate_floating_ip(self.context,
|
||||||
self.projects[0].id)
|
self.projects[0].id)
|
||||||
fix_addr = self._create_address(0)
|
fix_addr = self._create_address(0)
|
||||||
|
lease_ip(fix_addr)
|
||||||
self.assertEqual(float_addr, str(pubnet[0]))
|
self.assertEqual(float_addr, str(pubnet[0]))
|
||||||
self.network.associate_floating_ip(self.context, float_addr, fix_addr)
|
self.network.associate_floating_ip(self.context, float_addr, fix_addr)
|
||||||
address = db.instance_get_floating_address(None, self.instance_id)
|
address = db.instance_get_floating_address(None, self.instance_id)
|
||||||
@@ -103,6 +104,7 @@ class NetworkTestCase(test.TrialTestCase):
|
|||||||
self.assertEqual(address, None)
|
self.assertEqual(address, None)
|
||||||
self.network.deallocate_floating_ip(self.context, float_addr)
|
self.network.deallocate_floating_ip(self.context, float_addr)
|
||||||
self.network.deallocate_fixed_ip(self.context, fix_addr)
|
self.network.deallocate_fixed_ip(self.context, fix_addr)
|
||||||
|
release_ip(fix_addr)
|
||||||
|
|
||||||
def test_allocate_deallocate_fixed_ip(self):
|
def test_allocate_deallocate_fixed_ip(self):
|
||||||
"""Makes sure that we can allocate and deallocate a fixed ip"""
|
"""Makes sure that we can allocate and deallocate a fixed ip"""
|
||||||
@@ -180,8 +182,8 @@ class NetworkTestCase(test.TrialTestCase):
|
|||||||
release_ip(address3)
|
release_ip(address3)
|
||||||
for instance_id in instance_ids:
|
for instance_id in instance_ids:
|
||||||
db.instance_destroy(None, instance_id)
|
db.instance_destroy(None, instance_id)
|
||||||
release_ip(first)
|
|
||||||
self.network.deallocate_fixed_ip(self.context, first)
|
self.network.deallocate_fixed_ip(self.context, first)
|
||||||
|
release_ip(first)
|
||||||
|
|
||||||
def test_vpn_ip_and_port_looks_valid(self):
|
def test_vpn_ip_and_port_looks_valid(self):
|
||||||
"""Ensure the vpn ip and port are reasonable"""
|
"""Ensure the vpn ip and port are reasonable"""
|
||||||
@@ -197,10 +199,13 @@ class NetworkTestCase(test.TrialTestCase):
|
|||||||
for i in range(networks_left):
|
for i in range(networks_left):
|
||||||
project = self.manager.create_project('many%s' % i, self.user)
|
project = self.manager.create_project('many%s' % i, self.user)
|
||||||
projects.append(project)
|
projects.append(project)
|
||||||
|
db.project_get_network(None, project.id)
|
||||||
|
project = self.manager.create_project('last', self.user)
|
||||||
|
projects.append(project)
|
||||||
self.assertRaises(db.NoMoreNetworks,
|
self.assertRaises(db.NoMoreNetworks,
|
||||||
self.manager.create_project,
|
db.project_get_network,
|
||||||
'boom',
|
None,
|
||||||
self.user)
|
project.id)
|
||||||
for project in projects:
|
for project in projects:
|
||||||
self.manager.delete_project(project)
|
self.manager.delete_project(project)
|
||||||
|
|
||||||
@@ -213,7 +218,9 @@ class NetworkTestCase(test.TrialTestCase):
|
|||||||
|
|
||||||
address2 = self._create_address(0)
|
address2 = self._create_address(0)
|
||||||
self.assertEqual(address, address2)
|
self.assertEqual(address, address2)
|
||||||
|
lease_ip(address)
|
||||||
self.network.deallocate_fixed_ip(self.context, address2)
|
self.network.deallocate_fixed_ip(self.context, address2)
|
||||||
|
release_ip(address)
|
||||||
|
|
||||||
def test_available_ips(self):
|
def test_available_ips(self):
|
||||||
"""Make sure the number of available ips for the network is correct
|
"""Make sure the number of available ips for the network is correct
|
||||||
|
|||||||
Reference in New Issue
Block a user