Currently, the quota API/CLI allows users to set quotas for current tenant only. However, admin users needs the ability to set quota for other tenants. For example: $ source /opt/stack/devstack/openrc admin admin $ openstack appcontainer quota update --containers 100 <DEMO_TENANT_UUID> Depends-On: https://review.openstack.org/627075 Change-Id: Ia147575d3e8d2c6d54bddd98846f0c9e3e518ec3 Related-Bug: #1807620
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#    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.
 | 
						|
 | 
						|
from zunclient.common import cliutils as utils
 | 
						|
 | 
						|
 | 
						|
@utils.arg(
 | 
						|
    '--containers',
 | 
						|
    metavar='<containers>',
 | 
						|
    type=int,
 | 
						|
    help='The number of containers allowed per project')
 | 
						|
@utils.arg(
 | 
						|
    '--cpu',
 | 
						|
    metavar='<cpu>',
 | 
						|
    type=int,
 | 
						|
    help='The number of container cores or vCPUs allowed per project')
 | 
						|
@utils.arg(
 | 
						|
    '--memory',
 | 
						|
    metavar='<memory>',
 | 
						|
    type=int,
 | 
						|
    help='The number of megabytes of container RAM allowed per project')
 | 
						|
@utils.arg(
 | 
						|
    '--disk',
 | 
						|
    metavar='<disk>',
 | 
						|
    type=int,
 | 
						|
    help='The number of gigabytes of container Disk allowed per project')
 | 
						|
@utils.arg(
 | 
						|
    'project_id',
 | 
						|
    metavar='<project_id>',
 | 
						|
    help='The UUID of project in a multi-project cloud')
 | 
						|
def do_quota_update(cs, args):
 | 
						|
    """Print an updated quotas for a project"""
 | 
						|
    utils.print_dict(cs.quotas.update(args.project_id,
 | 
						|
                                      containers=args.containers,
 | 
						|
                                      memory=args.memory,
 | 
						|
                                      cpu=args.cpu,
 | 
						|
                                      disk=args.disk)._info)
 | 
						|
 | 
						|
 | 
						|
@utils.arg(
 | 
						|
    '--usages',
 | 
						|
    default=False,
 | 
						|
    action='store_true',
 | 
						|
    help='Whether show quota usage statistic or not')
 | 
						|
@utils.arg(
 | 
						|
    'project_id',
 | 
						|
    metavar='<project_id>',
 | 
						|
    help='The UUID of project in a multi-project cloud')
 | 
						|
def do_quota_get(cs, args):
 | 
						|
    """Print a quotas for a project with usages (optional)"""
 | 
						|
    if args.usages:
 | 
						|
        utils.print_dict(
 | 
						|
            cs.quotas.get(args.project_id, usages=args.usages)._info,
 | 
						|
            value_fields=('limit', 'in_use'))
 | 
						|
    else:
 | 
						|
        utils.print_dict(
 | 
						|
            cs.quotas.get(args.project_id, usages=args.usages)._info)
 | 
						|
 | 
						|
 | 
						|
@utils.arg(
 | 
						|
    'project_id',
 | 
						|
    metavar='<project_id>',
 | 
						|
    help='The UUID of project in a multi-project cloud')
 | 
						|
def do_quota_defaults(cs, args):
 | 
						|
    """Print a  default quotas for a project"""
 | 
						|
    utils.print_dict(cs.quotas.defaults(args.project_id)._info)
 | 
						|
 | 
						|
 | 
						|
@utils.arg(
 | 
						|
    'project_id',
 | 
						|
    metavar='<project_id>',
 | 
						|
    help='The UUID of project in a multi-project cloud')
 | 
						|
def do_quota_delete(cs, args):
 | 
						|
    """Delete quotas for a project"""
 | 
						|
    cs.quotas.delete(args.project_id)
 |