From 9508bb599c15035f7afbdc80fe70d539e8598edf Mon Sep 17 00:00:00 2001 From: Hisaharu Ishii Date: Mon, 22 Aug 2011 08:59:35 -0700 Subject: Add 'nova-manage network modify' command. --- bin/nova-manage | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'bin') diff --git a/bin/nova-manage b/bin/nova-manage index 62504f827..0a8edb9f3 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -795,6 +795,36 @@ class NetworkCommands(object): ' before delete' % network.project_id)) db.network_delete_safe(context.get_admin_context(), network.id) + @args('--network', dest="fixed_range", metavar='', + help='Network to modify') + @args('--project', dest="project", metavar='', + help='Project name to associate/disasscociate') + @args('--host', dest="host", metavar='', + help='Host to associate/disasscociate') + def modify(self, fixed_range, project=None, host=None): + """Associate/Disasscociate 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: + db.network_disassociate(admin_context, network_id=network['id']) + if host != "None": + if host: + db.network_set_host(admin_context, + network['id'], + host) + else: + db.network_set_host(admin_context, + network['id'], + None) + class VmCommands(object): """Class for mangaging VM instances.""" -- cgit From f05da72e28fac1bfc7f208ce57d4462a53f290f2 Mon Sep 17 00:00:00 2001 From: Hisaharu Ishii Date: Mon, 22 Aug 2011 11:50:44 -0700 Subject: Fix pep8 --- bin/nova-manage | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'bin') diff --git a/bin/nova-manage b/bin/nova-manage index 0a8edb9f3..736e55653 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -812,7 +812,10 @@ class NetworkCommands(object): 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) + db.network_associate_by_id(admin_context, + network_id=network['id'], + project_id=project, + force=True) else: db.network_disassociate(admin_context, network_id=network['id']) if host != "None": -- cgit From 0d0c8dfbf29b47aa13e18dd8861bad6ccb10cf12 Mon Sep 17 00:00:00 2001 From: Hisaharu Ishii Date: Mon, 22 Aug 2011 16:46:29 -0700 Subject: Change parameters of 'nova-manage network modify'. Move common test codes into private method. --- bin/nova-manage | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) (limited to 'bin') diff --git a/bin/nova-manage b/bin/nova-manage index 736e55653..349a53a5c 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -798,32 +798,34 @@ class NetworkCommands(object): @args('--network', dest="fixed_range", metavar='', help='Network to modify') @args('--project', dest="project", metavar='', - help='Project name to associate/disasscociate') + help='Project name to associate') @args('--host', dest="host", metavar='', - 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) -- cgit From 8cd7dcca1ccac0347289d633ebd10567d6cba4c7 Mon Sep 17 00:00:00 2001 From: Hisaharu Ishii Date: Tue, 23 Aug 2011 15:06:24 -0700 Subject: Stub out the DB in unit test. Fix 'nova-manage network modify' to use db.network_update() --- bin/nova-manage | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'bin') diff --git a/bin/nova-manage b/bin/nova-manage index 349a53a5c..b0322eb11 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -813,22 +813,16 @@ class NetworkCommands(object): """ admin_context = context.get_admin_context() network = db.network_get_by_cidr(admin_context, fixed_range) + net = {} 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) + net['project_id'] = project elif dis_project: - db.network_disassociate(admin_context, network_id=network['id']) + net['project_id'] = None if host: - db.network_set_host(admin_context, - network['id'], - host) + net['host'] = host elif dis_host: - db.network_set_host(admin_context, - network['id'], - None) + net['host'] = None + db.network_update(admin_context, network['id'], net) class VmCommands(object): -- cgit From 88a2dfb582eec7b4c7547c2aa51f3b661a3b9c5d Mon Sep 17 00:00:00 2001 From: Hisaharu Ishii Date: Wed, 24 Aug 2011 14:01:33 -0700 Subject: Add comments for associate/dissociate logic --- bin/nova-manage | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'bin') diff --git a/bin/nova-manage b/bin/nova-manage index eae9e905c..890cde0b8 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -817,6 +817,10 @@ class NetworkCommands(object): admin_context = context.get_admin_context() network = db.network_get_by_cidr(admin_context, fixed_range) net = {} + #User can choose the following actions each for project and host. + #1) Associate (set not None value given by project/host parameter) + #2) Disassociate (set None by disassociate parameter) + #3) Keep unchanged (project/host key is not added to 'net') if project: net['project_id'] = project elif dis_project: -- cgit