diff options
author | Ryan Tidwell <rtidwell@suse.com> | 2019-02-05 10:59:09 -0600 |
---|---|---|
committer | Ryan Tidwell <rtidwell@suse.com> | 2019-02-27 08:39:40 -0600 |
commit | 680b417111dbbda9e318700286c4efd9055f1af3 (patch) | |
tree | a52bf43f859935120fcc3a32d4ff4dc4c81e49c1 /neutronclient/osc | |
parent | 1f35b8f25cb328ede6aea7933ecd33a1cd713ba8 (diff) | |
download | python-neutronclient-680b417111dbbda9e318700286c4efd9055f1af3.tar.gz |
Add subnet onboard CLI6.12.0
This is the implementation of the "onboard network subnets" CLI.
This enables the subnet onboard feature of neutron to be driven via
CLI.
Depends-On: https://review.openstack.org/348080
Change-Id: Ic637ed689b0d3806d2c33faa419c3a98a310effa
Implements: blueprint subnet-onboard
Diffstat (limited to 'neutronclient/osc')
-rw-r--r-- | neutronclient/osc/v2/subnet_onboard/__init__.py | 0 | ||||
-rw-r--r-- | neutronclient/osc/v2/subnet_onboard/subnet_onboard.py | 59 |
2 files changed, 59 insertions, 0 deletions
diff --git a/neutronclient/osc/v2/subnet_onboard/__init__.py b/neutronclient/osc/v2/subnet_onboard/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/neutronclient/osc/v2/subnet_onboard/__init__.py diff --git a/neutronclient/osc/v2/subnet_onboard/subnet_onboard.py b/neutronclient/osc/v2/subnet_onboard/subnet_onboard.py new file mode 100644 index 0000000..10c6ab4 --- /dev/null +++ b/neutronclient/osc/v2/subnet_onboard/subnet_onboard.py @@ -0,0 +1,59 @@ +# Copyright (c) 2019 SUSE Linux Products GmbH +# All Rights Reserved +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# + +"""Subnet onboard action implementation""" +import logging + +from osc_lib.command import command +from osc_lib import exceptions + +from neutronclient._i18n import _ + +LOG = logging.getLogger(__name__) + + +class NetworkOnboardSubnets(command.Command): + """Onboard network subnets into a subnet pool""" + + def get_parser(self, prog_name): + parser = super(NetworkOnboardSubnets, self).get_parser(prog_name) + parser.add_argument( + 'network', + metavar="<network>", + help=_("Onboard all subnets associated with this network") + ) + parser.add_argument( + 'subnetpool', + metavar="<subnetpool>", + help=_("Target subnet pool for onboarding subnets") + ) + return parser + + def take_action(self, parsed_args): + client = self.app.client_manager.neutronclient + subnetpool_id = _get_id(client, parsed_args.subnetpool, 'subnetpool') + network_id = _get_id(client, parsed_args.network, 'network') + body = {'network_id': network_id} + try: + client.onboard_network_subnets(subnetpool_id, body) + except Exception as e: + msg = (_("Failed to onboard subnets for network '%(n)s': %(e)s") + % {'n': parsed_args.network, 'e': e}) + raise exceptions.CommandError(msg) + + +def _get_id(client, id_or_name, resource): + return client.find_resource(resource, str(id_or_name))['id'] |