1500
1500
@require_admin_context
1501
def quota_get(context, project_id, session=None):
1501
def quota_get(context, project_id, resource, session=None):
1502
1502
if not session:
1503
1503
session = get_session()
1505
1504
result = session.query(models.Quota).\
1506
1505
filter_by(project_id=project_id).\
1507
filter_by(deleted=can_read_deleted(context)).\
1506
filter_by(resource=resource).\
1507
filter_by(deleted=False).\
1510
1510
raise exception.ProjectQuotaNotFound(project_id=project_id)
1515
@require_admin_context
1516
def quota_create(context, values):
1514
@require_admin_context
1515
def quota_get_all_by_project(context, project_id):
1516
session = get_session()
1517
result = {'project_id': project_id}
1518
rows = session.query(models.Quota).\
1519
filter_by(project_id=project_id).\
1520
filter_by(deleted=False).\
1523
result[row.resource] = row.hard_limit
1527
@require_admin_context
1528
def quota_create(context, project_id, resource, limit):
1517
1529
quota_ref = models.Quota()
1518
quota_ref.update(values)
1530
quota_ref.project_id = project_id
1531
quota_ref.resource = resource
1532
quota_ref.hard_limit = limit
1519
1533
quota_ref.save()
1520
1534
return quota_ref
1523
1537
@require_admin_context
1524
def quota_update(context, project_id, values):
1538
def quota_update(context, project_id, resource, limit):
1525
1539
session = get_session()
1526
1540
with session.begin():
1527
quota_ref = quota_get(context, project_id, session=session)
1528
quota_ref.update(values)
1541
quota_ref = quota_get(context, project_id, resource, session=session)
1542
quota_ref.hard_limit = limit
1529
1543
quota_ref.save(session=session)
1532
1546
@require_admin_context
1533
def quota_destroy(context, project_id):
1547
def quota_destroy(context, project_id, resource):
1534
1548
session = get_session()
1535
1549
with session.begin():
1536
quota_ref = quota_get(context, project_id, session=session)
1550
quota_ref = quota_get(context, project_id, resource, session=session)
1537
1551
quota_ref.delete(session=session)
1554
@require_admin_context
1555
def quota_destroy_all_by_project(context, project_id):
1556
session = get_session()
1557
with session.begin():
1558
quotas = session.query(models.Quota).\
1559
filter_by(project_id=project_id).\
1560
filter_by(deleted=False).\
1562
for quota_ref in quotas:
1563
quota_ref.delete(session=session)
1540
1566
###################