summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/nova-manage40
-rw-r--r--nova/tests/test_nova_manage.py21
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)