コード例 #1
0
ファイル: quota.py プロジェクト: altai/nova
def allowed_volumes(context, requested_volumes, size):
    """Check volume quotas and return breached if any."""
    project_id = context.project_id
    context = context.elevated()
    size = int(size)

    allowed = {}
    overs = []

    used_volumes, used_gigabytes = db.volume_data_get_for_project(context,
                                                                  project_id)
    usages = dict(volumes=used_volumes, gigabytes=used_gigabytes)

    quotas = get_project_quotas(context, project_id)

    def _check_allowed(resource, requested):
        allow = _get_request_allotment(requested,
                                       usages[resource],
                                       quotas[resource])
        if requested and allow < requested:
            overs.append(resource)
        allowed[resource] = allow

    _check_allowed('volumes', requested_volumes)
    _check_allowed('gigabytes', requested_volumes * size)

    if size != 0:
        allowed['volumes'] = min(allowed['volumes'],
                                 int(allowed['gigabytes'] // size))

    return dict(overs=overs, usages=usages, quotas=quotas, allowed=allowed)
コード例 #2
0
def allowed_volumes(context, num_volumes, size):
    """Check quota and return min(num_volumes, allowed_volumes)."""
    project_id = context.project_id
    context = context.elevated()
    used_volumes, used_gigabytes = db.volume_data_get_for_project(
        context, project_id)
    quota = get_quota(context, project_id)
    allowed_volumes = quota['volumes'] - used_volumes
    allowed_gigabytes = quota['gigabytes'] - used_gigabytes
    size = int(size)
    num_gigabytes = num_volumes * size
    allowed_volumes = min(allowed_volumes, int(allowed_gigabytes // size))
    return min(num_volumes, allowed_volumes)
コード例 #3
0
ファイル: quota.py プロジェクト: kurlez/nova
def allowed_volumes(context, requested_volumes, size):
    """Check quota and return min(requested_volumes, allowed_volumes)."""
    project_id = context.project_id
    context = context.elevated()
    size = int(size)
    requested_gigabytes = requested_volumes * size
    used_volumes, used_gigabytes = db.volume_data_get_for_project(context, project_id)
    quota = get_project_quotas(context, project_id)
    allowed_volumes = _get_request_allotment(requested_volumes, used_volumes, quota["volumes"])
    allowed_gigabytes = _get_request_allotment(requested_gigabytes, used_gigabytes, quota["gigabytes"])
    if size != 0:
        allowed_volumes = min(allowed_volumes, int(allowed_gigabytes // size))
    return min(requested_volumes, allowed_volumes)
コード例 #4
0
ファイル: quota.py プロジェクト: termie/nova-migration-demo
def allowed_volumes(context, num_volumes, size):
    """Check quota and return min(num_volumes, allowed_volumes)."""
    project_id = context.project_id
    context = context.elevated()
    used_volumes, used_gigabytes = db.volume_data_get_for_project(context,
                                                                  project_id)
    quota = get_quota(context, project_id)
    allowed_volumes = quota['volumes'] - used_volumes
    allowed_gigabytes = quota['gigabytes'] - used_gigabytes
    size = int(size)
    num_gigabytes = num_volumes * size
    allowed_volumes = min(allowed_volumes,
                          int(allowed_gigabytes // size))
    return min(num_volumes, allowed_volumes)
コード例 #5
0
def allowed_volumes(context, requested_volumes, size):
    """Check quota and return min(requested_volumes, allowed_volumes)."""
    project_id = context.project_id
    context = context.elevated()
    size = int(size)
    requested_gigabytes = requested_volumes * size
    used_volumes, used_gigabytes = db.volume_data_get_for_project(
        context, project_id)
    quota = get_project_quotas(context, project_id)
    allowed_volumes = _get_request_allotment(requested_volumes, used_volumes,
                                             quota['volumes'])
    allowed_gigabytes = _get_request_allotment(requested_gigabytes,
                                               used_gigabytes,
                                               quota['gigabytes'])
    allowed_volumes = min(allowed_volumes, int(allowed_gigabytes // size))
    return min(requested_volumes, allowed_volumes)
コード例 #6
0
ファイル: quota.py プロジェクト: openstack-ja/nova
def _sync_volumes(context, project_id, session):
    return dict(zip(('volumes', 'gigabytes'),
                    db.volume_data_get_for_project(
                context, project_id, session=session)))
コード例 #7
0
ファイル: quota.py プロジェクト: paulmathews/nova
def _sync_volumes(context, project_id, session):
    return dict(zip(('volumes', 'gigabytes'),
                    db.volume_data_get_for_project(
                context, project_id, session=session)))