summaryrefslogtreecommitdiff
path: root/neutronclient/osc
diff options
context:
space:
mode:
authorRyan Tidwell <rtidwell@suse.com>2019-02-05 10:59:09 -0600
committerRyan Tidwell <rtidwell@suse.com>2019-02-27 08:39:40 -0600
commit680b417111dbbda9e318700286c4efd9055f1af3 (patch)
treea52bf43f859935120fcc3a32d4ff4dc4c81e49c1 /neutronclient/osc
parent1f35b8f25cb328ede6aea7933ecd33a1cd713ba8 (diff)
downloadpython-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__.py0
-rw-r--r--neutronclient/osc/v2/subnet_onboard/subnet_onboard.py59
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']