Example #1
0
def allowed_instances(context, requested_instances, instance_type):
    """Check quota and return min(requested_instances, allowed_instances)."""
    project_id = context.project_id
    context = context.elevated()
    requested_cores = requested_instances * instance_type['vcpus']
    requested_ram = requested_instances * instance_type['memory_mb']
    usage = db.instance_data_get_for_project(context, project_id)
    used_instances, used_cores, used_ram = usage
    quota = get_project_quotas(context, project_id)
    allowed_instances = _get_request_allotment(requested_instances,
                                               used_instances,
                                               quota['instances'])
    allowed_cores = _get_request_allotment(requested_cores, used_cores,
                                           quota['cores'])
    allowed_ram = _get_request_allotment(requested_ram, used_ram, quota['ram'])
    if instance_type['vcpus']:
        allowed_instances = min(allowed_instances,
                                allowed_cores // instance_type['vcpus'])
    if instance_type['memory_mb']:
        allowed_instances = min(allowed_instances,
                                allowed_ram // instance_type['memory_mb'])

    return min(requested_instances, allowed_instances)
Example #2
0
def _sync_instances(context, project_id, session):
    return dict(zip(('instances', 'cores', 'ram'),
                    db.instance_data_get_for_project(
                context, project_id, session=session)))
Example #3
0
def _sync_instances(context, project_id, session):
    return dict(
        zip(('instances', 'cores', 'ram'),
            db.instance_data_get_for_project(context,
                                             project_id,
                                             session=session)))