summaryrefslogtreecommitdiff
path: root/openstackclient/network
diff options
context:
space:
mode:
authorTang Chen <chen.tang@easystack.cn>2015-12-15 11:40:23 +0800
committerTang Chen <chen.tang@easystack.cn>2016-02-02 13:58:43 +0800
commita83c1f0a4244d6c422a68cf5bf2bbaa3e4617b78 (patch)
treef498e3510ab17be8717900e6afc6c66342ce05b4 /openstackclient/network
parentceb17e11a9ca0a2dc6c6d72466ad2c7b31a29878 (diff)
downloadpython-openstackclient-a83c1f0a4244d6c422a68cf5bf2bbaa3e4617b78.tar.gz
Network: Abstract get_body() out to be a private helper.
get_body() is needed in each network files to construct a dict to pass to sdk proxy. And it is also used by several functions in each file. So define it as a file level private helper function. The unified prototype should be: def _get_attrs(client_manager, parsed_args): 1. The name, in sdk, the parameter passed to proxy is named "attrs". And it is a private method. So let's call it _get_attrs(). 2. The parameters, besides parsed_args, when we deal with project and project_domain, we have to make use of identity_client. So let's pass in the client manager. Change-Id: Ib044ebd4ddedbcd805f46334a7fe99e4ebb5b249
Diffstat (limited to 'openstackclient/network')
-rw-r--r--openstackclient/network/v2/network.py65
1 files changed, 35 insertions, 30 deletions
diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py
index fc94fd82..61237219 100644
--- a/openstackclient/network/v2/network.py
+++ b/openstackclient/network/v2/network.py
@@ -47,6 +47,33 @@ def _get_columns(item):
return tuple(sorted(columns))
+def _get_attrs(client_manager, parsed_args):
+ attrs = {}
+ if parsed_args.name is not None:
+ attrs['name'] = str(parsed_args.name)
+ if parsed_args.admin_state is not None:
+ attrs['admin_state_up'] = parsed_args.admin_state
+ if parsed_args.shared is not None:
+ attrs['shared'] = parsed_args.shared
+
+ # "network set" command doesn't support setting project.
+ if 'project' in parsed_args and parsed_args.project is not None:
+ identity_client = client_manager.identity
+ project_id = identity_common.find_project(
+ identity_client,
+ parsed_args.project,
+ parsed_args.project_domain,
+ ).id
+ attrs['tenant_id'] = project_id
+
+ # "network set" command doesn't support setting availability zone hints.
+ if 'availability_zone_hints' in parsed_args and \
+ parsed_args.availability_zone_hints is not None:
+ attrs['availability_zone_hints'] = parsed_args.availability_zone_hints
+
+ return attrs
+
+
class CreateNetwork(command.ShowOne):
"""Create new network"""
@@ -105,31 +132,14 @@ class CreateNetwork(command.ShowOne):
def take_action(self, parsed_args):
client = self.app.client_manager.network
- body = self.get_body(parsed_args)
- obj = client.create_network(**body)
+
+ attrs = _get_attrs(self.app.client_manager, parsed_args)
+ obj = client.create_network(**attrs)
columns = _get_columns(obj)
+
data = utils.get_item_properties(obj, columns, formatters=_formatters)
return (columns, data)
- def get_body(self, parsed_args):
- body = {'name': str(parsed_args.name),
- 'admin_state_up': parsed_args.admin_state}
- if parsed_args.shared is not None:
- body['shared'] = parsed_args.shared
- if parsed_args.project is not None:
- identity_client = self.app.client_manager.identity
- project_id = identity_common.find_project(
- identity_client,
- parsed_args.project,
- parsed_args.project_domain,
- ).id
- body['tenant_id'] = project_id
- if parsed_args.availability_zone_hints is not None:
- body['availability_zone_hints'] = \
- parsed_args.availability_zone_hints
-
- return body
-
class DeleteNetwork(command.Command):
"""Delete network(s)"""
@@ -271,18 +281,13 @@ class SetNetwork(command.Command):
client = self.app.client_manager.network
obj = client.find_network(parsed_args.identifier, ignore_missing=False)
- if parsed_args.name is not None:
- obj.name = str(parsed_args.name)
- if parsed_args.admin_state is not None:
- obj.admin_state_up = parsed_args.admin_state
- if parsed_args.shared is not None:
- obj.shared = parsed_args.shared
-
- if not obj.is_dirty:
+ attrs = _get_attrs(self.app.client_manager, parsed_args)
+ if attrs == {}:
msg = "Nothing specified to be set"
raise exceptions.CommandError(msg)
- client.update_network(obj)
+ client.update_network(obj, **attrs)
+ return
class ShowNetwork(command.ShowOne):