Expose Quota.update API

There exists a method in the management API to change the quota
for a given resource.  This change exposes that API via a new
"trove quota-update" command.  Also, adds v1.Quotas to the python
client.

Note that this command requires admin privileges.

Partial implements: blueprint bp/quota-management
Change-Id: I6ca1a87fbc46781f83bc9b7bd33745783b8aaab1
This commit is contained in:
Morgan Jones 2016-06-20 15:11:26 -04:00 committed by Peter Stachowski
parent 8c1fee10cd
commit f5616b7d52
4 changed files with 28 additions and 2 deletions

View File

@ -0,0 +1,4 @@
features:
- Adds quota-show and quota-update commands to show the limits for all
resources and to change the limit for a single resource. These commands
require admin privileges.

View File

@ -26,6 +26,7 @@ from troveclient.v1 import limits
# from troveclient.v1 import management
from troveclient.v1 import metadata
from troveclient.v1 import modules
from troveclient.v1 import quota
from troveclient.v1 import root
from troveclient.v1 import security_groups
from troveclient.v1 import users
@ -81,7 +82,7 @@ class Client(object):
self.modules = modules.Modules(self)
# self.hosts = Hosts(self)
# self.quota = Quotas(self)
self.quota = quota.Quotas(self)
# self.storage = StorageInfo(self)
# self.management = Management(self)
# self.management = MgmtClusters(self)

View File

@ -34,7 +34,7 @@ class Quotas(base.ManagerWithFind):
raise Exception("Call to " + url + " did not return a body.")
if 'quotas' not in body:
raise Exception("Missing key value 'quotas' in response body.")
return body['quotas']
return [self.resource_class(self, quota) for quota in body['quotas']]
def update(self, id, quotas):
"""Set limits for quotas."""

View File

@ -2137,3 +2137,24 @@ def do_log_save(cs, args):
# args.datastore_version,
# args.name,
# )
@utils.arg('tenant_id', metavar='<tenant_id>',
help='Id of tenant for which to show quotas.')
@utils.service_type('database')
def do_quota_show(cs, args):
"""Show quotas for a tenant."""
utils.print_list(cs.quota.show(args.tenant_id),
['resource', 'in_use', 'reserved', 'limit'])
@utils.arg('tenant_id', metavar='<tenant_id>',
help='Id of tenant for which to update quotas.')
@utils.arg('resource', metavar='<resource>',
help='Id of resource to change.')
@utils.arg('limit', metavar='<limit>', type=int,
help='New limit to set for the named resource.')
@utils.service_type('database')
def do_quota_update(cs, args):
"""Update quotas for a tenant."""
utils.print_dict(cs.quota.update(args.tenant_id,
{args.resource: args.limit}))