summaryrefslogtreecommitdiff
path: root/openstackclient/network
diff options
context:
space:
mode:
authorTang Chen <chen.tang@easystack.cn>2016-02-25 16:35:57 +0800
committerTang Chen <chen.tang@easystack.cn>2016-03-02 14:39:00 +0800
commit359dfa1a06683354ace568c78706e3d0a6372c14 (patch)
tree5c3df45b439e6eb887b44cd51bf64386b5dba643 /openstackclient/network
parentf9add0559c52bf3d0866cfbd320982c5143f6ef6 (diff)
downloadpython-openstackclient-359dfa1a06683354ace568c78706e3d0a6372c14.tar.gz
Support "network create" command in nova network
This patch only provide network name and subnet setting for "network create" command. The other options, such as --project which depends on identity v2 or v3, will make the unit tests too complicated. So I prefer to implement them in other patches. Change-Id: I9ec93f0af813c8fae4170c36e16bbe8f0f53cbb6 Partial-Bug: 1543672
Diffstat (limited to 'openstackclient/network')
-rw-r--r--openstackclient/network/v2/network.py67
1 files changed, 46 insertions, 21 deletions
diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py
index fd7ab8fb..308e0e52 100644
--- a/openstackclient/network/v2/network.py
+++ b/openstackclient/network/v2/network.py
@@ -75,30 +75,27 @@ def _get_attrs(client_manager, parsed_args):
return attrs
-class CreateNetwork(command.ShowOne):
+def _get_attrs_compute(client_manager, parsed_args):
+ attrs = {}
+ if parsed_args.name is not None:
+ attrs['label'] = str(parsed_args.name)
+ if parsed_args.shared is not None:
+ attrs['share_address'] = parsed_args.shared
+ if parsed_args.subnet is not None:
+ attrs['cidr'] = parsed_args.subnet
+
+ return attrs
+
+
+class CreateNetwork(common.NetworkAndComputeShowOne):
"""Create new network"""
- def get_parser(self, prog_name):
- parser = super(CreateNetwork, self).get_parser(prog_name)
+ def update_parser_common(self, parser):
parser.add_argument(
'name',
metavar='<name>',
help='New network name',
)
- admin_group = parser.add_mutually_exclusive_group()
- admin_group.add_argument(
- '--enable',
- dest='admin_state',
- action='store_true',
- default=True,
- help='Enable network (default)',
- )
- admin_group.add_argument(
- '--disable',
- dest='admin_state',
- action='store_false',
- help='Disable network',
- )
share_group = parser.add_mutually_exclusive_group()
share_group.add_argument(
'--share',
@@ -113,13 +110,29 @@ class CreateNetwork(command.ShowOne):
action='store_false',
help='Do not share the network between projects',
)
+ return parser
+
+ def update_parser_network(self, parser):
+ admin_group = parser.add_mutually_exclusive_group()
+ admin_group.add_argument(
+ '--enable',
+ dest='admin_state',
+ action='store_true',
+ default=True,
+ help='Enable network (default)',
+ )
+ admin_group.add_argument(
+ '--disable',
+ dest='admin_state',
+ action='store_false',
+ help='Disable network',
+ )
parser.add_argument(
'--project',
metavar='<project>',
help="Owner's project (name or ID)"
)
identity_common.add_project_domain_option_to_parser(parser)
-
parser.add_argument(
'--availability-zone-hint',
action='append',
@@ -131,16 +144,28 @@ class CreateNetwork(command.ShowOne):
)
return parser
- def take_action(self, parsed_args):
- client = self.app.client_manager.network
+ def update_parser_compute(self, parser):
+ parser.add_argument(
+ '--subnet',
+ metavar='<subnet>',
+ help="IPv4 subnet for fixed IPs (in CIDR notation)"
+ )
+ return parser
+ def take_action_network(self, client, parsed_args):
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 take_action_compute(self, client, parsed_args):
+ attrs = _get_attrs_compute(self.app.client_manager, parsed_args)
+ obj = client.networks.create(**attrs)
+ columns = tuple(sorted(obj._info.keys()))
+ data = utils.get_dict_properties(obj._info, columns)
+ return (columns, data)
+
class DeleteNetwork(common.NetworkAndComputeCommand):
"""Delete network(s)"""