diff options
| author | Tang Chen <chen.tang@easystack.cn> | 2016-02-25 16:35:57 +0800 |
|---|---|---|
| committer | Tang Chen <chen.tang@easystack.cn> | 2016-03-02 14:39:00 +0800 |
| commit | 359dfa1a06683354ace568c78706e3d0a6372c14 (patch) | |
| tree | 5c3df45b439e6eb887b44cd51bf64386b5dba643 /openstackclient/network | |
| parent | f9add0559c52bf3d0866cfbd320982c5143f6ef6 (diff) | |
| download | python-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.py | 67 |
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)""" |
