From ed809e059a85f70e8f89d1a59e533064b9e9143e Mon Sep 17 00:00:00 2001 From: Steve Martinelli <stevemar@ca.ibm.com> Date: Sun, 3 Mar 2013 00:42:42 -0600 Subject: [PATCH] Add quota v1 support for volume added dhellmann's suggestions created entry points in setup.py added show/set/list quotas for v1 volume Change-Id: I8ed6a9518007b31cafeaa70a54d5bf54a549195b --- openstackclient/volume/v1/quota.py | 113 +++++++++++++++++++++++++++++ setup.py | 3 + 2 files changed, 116 insertions(+) create mode 100644 openstackclient/volume/v1/quota.py diff --git a/openstackclient/volume/v1/quota.py b/openstackclient/volume/v1/quota.py new file mode 100644 index 0000000000..ae6c50f5e3 --- /dev/null +++ b/openstackclient/volume/v1/quota.py @@ -0,0 +1,113 @@ +# Copyright 2012-2013 OpenStack, LLC. +# +# 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. +# + +"""Volume v1 Quota action implementations""" + +import logging + +from cliff import command +from cliff import show + +from openstackclient.common import utils + + +class ListQuota(show.ShowOne): + """List quota command""" + + api = 'volume' + log = logging.getLogger(__name__ + '.ListQuota') + + def get_parser(self, prog_name): + parser = super(ListQuota, self).get_parser(prog_name) + parser.add_argument( + 'tenant', + metavar='<tenant>', + help='ID of tenant to list the default quotas for') + return parser + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)' % parsed_args) + volume_client = self.app.client_manager.volume + defaults = volume_client.quotas.defaults(parsed_args.tenant) + + return zip(*sorted(defaults._info.iteritems())) + + +class SetQuota(command.Command): + """Set quota command""" + + api = 'volume' + log = logging.getLogger(__name__ + '.SetQuota') + + def get_parser(self, prog_name): + parser = super(SetQuota, self).get_parser(prog_name) + parser.add_argument( + 'tenant', + metavar='<tenant>', + help='ID of tenant to set the quotas for') + parser.add_argument( + '--volumes', + metavar='<new-volumes>', + type=int, + help='New value for the volumes quota') + parser.add_argument( + '--gigabytes', + metavar='<new-gigabytes>', + type=int, + help='New value for the gigabytes quota') + return parser + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)' % parsed_args) + + kwargs = {} + if parsed_args.volumes: + kwargs['volumes'] = parsed_args.volumes + if parsed_args.gigabytes: + kwargs['gigabytes'] = parsed_args.gigabytes + + if kwargs == {}: + stdout.write("Quota not updated, no arguments present") + return + + volume_client = self.app.client_manager.volume + volume_client.quotas.update(parsed_args.tenant, + parsed_args.volumes, + parsed_args.gigabytes) + + return + + +class ShowQuota(show.ShowOne): + """Show quota command""" + + api = 'volume' + log = logging.getLogger(__name__ + '.ShowQuota') + + def get_parser(self, prog_name): + parser = super(ShowQuota, self).get_parser(prog_name) + parser.add_argument( + 'tenant', + metavar='<tenant>', + help='ID of tenant to list the quotas for') + return parser + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)' % parsed_args) + volume_client = self.app.client_manager.volume + quota = utils.find_resource(volume_client.quotas, + parsed_args.tenant) + + return zip(*sorted(quota._info.iteritems())) diff --git a/setup.py b/setup.py index 3ad427f5bc..6f3e407931 100644 --- a/setup.py +++ b/setup.py @@ -147,6 +147,9 @@ setuptools.setup( 'create_type=openstackclient.volume.v1.type:CreateType', 'delete_type=openstackclient.volume.v1.type:DeleteType', 'list_type=openstackclient.volume.v1.type:ListType', + 'show_quota=openstackclient.volume.v1.quota:ShowQuota', + 'list_quota=openstackclient.volume.v1.quota:ListQuota', + 'set_quota=openstackclient.volume.v1.quota:SetQuota', ] } )