diff options
-rwxr-xr-x | bin/nova-manage | 40 | ||||
-rw-r--r-- | nova/tests/test_nova_manage.py | 21 |
2 files changed, 32 insertions, 29 deletions
diff --git a/bin/nova-manage b/bin/nova-manage index 736e556536..349a53a5c0 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -798,32 +798,34 @@ class NetworkCommands(object): @args('--network', dest="fixed_range", metavar='<x.x.x.x/yy>', help='Network to modify') @args('--project', dest="project", metavar='<project name>', - help='Project name to associate/disasscociate') + help='Project name to associate') @args('--host', dest="host", metavar='<host>', - help='Host to associate/disasscociate') - def modify(self, fixed_range, project=None, host=None): - """Associate/Disasscociate Network with Project and/or Host + help='Host to associate') + @args('--disassociate-project', action="store_true", dest='dis_project', + default=False, help='Disassociate Network from Project') + @args('--disassociate-host', action="store_true", dest='dis_host', + default=False, help='Disassociate Host from Project') + def modify(self, fixed_range, project=None, host=None, + dis_project=None, dis_host=None): + """Associate/Disassociate Network with Project and/or Host arguments: network project host - specify 'None' to disassociate it leave any field blank to ignore it """ admin_context = context.get_admin_context() network = db.network_get_by_cidr(admin_context, fixed_range) - if project != "None": - if project: - project_id = manager.Project.safe_id(project) - db.network_associate_by_id(admin_context, - network_id=network['id'], - project_id=project, - force=True) - else: + if project: + project_id = manager.Project.safe_id(project) + db.network_associate_by_id(admin_context, + network_id=network['id'], + project_id=project, + force=True) + elif dis_project: db.network_disassociate(admin_context, network_id=network['id']) - if host != "None": - if host: - db.network_set_host(admin_context, - network['id'], - host) - else: + if host: + db.network_set_host(admin_context, + network['id'], + host) + elif dis_host: db.network_set_host(admin_context, network['id'], None) diff --git a/nova/tests/test_nova_manage.py b/nova/tests/test_nova_manage.py index d6edc8ba94..91130de67c 100644 --- a/nova/tests/test_nova_manage.py +++ b/nova/tests/test_nova_manage.py @@ -36,10 +36,10 @@ import netaddr import StringIO from nova import context from nova import db -from nova import flags -from nova import test from nova import exception +from nova import flags from nova import log as logging +from nova import test FLAGS = flags.FLAGS LOG = logging.getLogger('nova.tests.nova_manage') @@ -101,7 +101,7 @@ class NetworkCommandsTestCase(test.TestCase): def tearDown(self): super(NetworkCommandsTestCase, self).tearDown() - def test_create(self): + def _create_network(self): FLAGS.network_manager = 'nova.network.manager.VlanManager' self.commands.create( label='Test', @@ -114,7 +114,10 @@ class NetworkCommandsTestCase(test.TestCase): fixed_range_v6='fd00:2::/120', gateway_v6='fd00:2::22', bridge_interface='eth0') - net = db.network_get_by_cidr(self.context, '10.2.0.0/24') + return db.network_get_by_cidr(self.context, '10.2.0.0/24') + + def test_create(self): + net = self._create_network() self.assertEqual(net['label'], 'Test') self.assertEqual(net['cidr'], '10.2.0.0/24') self.assertEqual(net['netmask'], '255.255.255.0') @@ -127,8 +130,7 @@ class NetworkCommandsTestCase(test.TestCase): self.assertEqual(net['bridge_interface'], 'eth0') def test_list(self): - self.test_create() - net = db.network_get_by_cidr(self.context, '10.2.0.0/24') + net = self._create_network() output = StringIO.StringIO() sys.stdout = output self.commands.list() @@ -158,7 +160,7 @@ class NetworkCommandsTestCase(test.TestCase): self.assertEqual(result, answer) def test_delete(self): - self.test_create() + net = self._create_network() self.commands.delete(fixed_range='10.2.0.0/24') net_exist = True try: @@ -168,8 +170,7 @@ class NetworkCommandsTestCase(test.TestCase): self.assertEqual(net_exist, False) def test_modify(self): - self.test_create() - net = db.network_get_by_cidr(self.context, '10.2.0.0/24') + net = self._create_network() db.network_disassociate(self.context, net['id']) net = db.network_get_by_cidr(self.context, '10.2.0.0/24') self.assertEqual(net['project_id'], None) @@ -183,7 +184,7 @@ class NetworkCommandsTestCase(test.TestCase): net = db.network_get_by_cidr(self.context, '10.2.0.0/24') self.assertEqual(net['project_id'], 'test_project') self.assertEqual(net['host'], 'test_host') - self.commands.modify('10.2.0.0/24', project='None', host='None') + self.commands.modify('10.2.0.0/24', dis_project=True, dis_host=True) net = db.network_get_by_cidr(self.context, '10.2.0.0/24') self.assertEqual(net['project_id'], None) self.assertEqual(net['host'], None) |