def test_quota_class_get_all_by_name(self): sample1 = db.quota_class_create(self.ctxt, 'test2', 'res1', 43) sample2 = db.quota_class_create(self.ctxt, 'test2', 'res2', 44) self.assertEqual({'class_name': 'test_qc', 'test_resource': 42}, db.quota_class_get_all_by_name(self.ctxt, 'test_qc')) self.assertEqual({'class_name': 'test2', 'res1': 43, 'res2': 44}, db.quota_class_get_all_by_name(self.ctxt, 'test2'))
def test_quota_class_get_all_by_name(self): db.quota_class_create(self.ctxt, "test2", "res1", 43) db.quota_class_create(self.ctxt, "test2", "res2", 44) self.assertEqual( {"class_name": "test_qc", "test_resource": 42}, db.quota_class_get_all_by_name(self.ctxt, "test_qc") ) self.assertEqual( {"class_name": "test2", "res1": 43, "res2": 44}, db.quota_class_get_all_by_name(self.ctxt, "test2") )
def test_quota_class_get_all_by_name(self): sample1 = db.quota_class_create(self.ctxt, 'test2', 'res1', 43) sample2 = db.quota_class_create(self.ctxt, 'test2', 'res2', 44) self.assertEqual({ 'class_name': 'test_qc', 'test_resource': 42 }, db.quota_class_get_all_by_name(self.ctxt, 'test_qc')) self.assertEqual({ 'class_name': 'test2', 'res1': 43, 'res2': 44 }, db.quota_class_get_all_by_name(self.ctxt, 'test2'))
def get_class_quotas(self, context, resources, quota_class, defaults=True): """Given list of resources, retrieve the quotas for given quota class. :param context: The request context, for access checks. :param resources: A dictionary of the registered resources. :param quota_class: The name of the quota class to return quotas for. :param defaults: If True, the default value will be reported if there is no specific value for the resource. """ quotas = {} default_quotas = {} class_quotas = db.quota_class_get_all_by_name(context, quota_class) if defaults: default_quotas = db.quota_class_get_default(context) for resource in resources.values(): if resource.name in class_quotas: quotas[resource.name] = class_quotas[resource.name] continue if defaults: quotas[resource.name] = default_quotas.get(resource.name, resource.default) return quotas
def get_project_quotas(self, context, resources, project_id, quota_class=None, defaults=True, usages=True): """ Given a list of resources, retrieve the quotas for the given project. :param context: The request context, for access checks. :param resources: A dictionary of the registered resources. :param project_id: The ID of the project to return quotas for. :param quota_class: If project_id != context.project_id, the quota class cannot be determined. This parameter allows it to be specified. It will be ignored if project_id == context.project_id. :param defaults: If True, the quota class value (or the default value, if there is no value from the quota class) will be reported if there is no specific value for the resource. :param usages: If True, the current in_use and reserved counts will also be returned. """ quotas = {} project_quotas = db.quota_get_all_by_project(context, project_id) if usages: project_usages = db.quota_usage_get_all_by_project(context, project_id) # Get the quotas for the appropriate class. If the project ID # matches the one in the context, we use the quota_class from # the context, otherwise, we use the provided quota_class (if # any) if project_id == context.project_id: quota_class = context.quota_class if quota_class: class_quotas = db.quota_class_get_all_by_name(context, quota_class) else: class_quotas = {} for resource in resources.values(): # Omit default/quota class values if not defaults and resource.name not in project_quotas: continue quotas[resource.name] = dict( limit=project_quotas.get(resource.name, class_quotas.get(resource.name, resource.default)), ) # Include usages if desired. This is optional because one # internal consumer of this interface wants to access the # usages directly from inside a transaction. if usages: usage = project_usages.get(resource.name, {}) quotas[resource.name].update( in_use=usage.get('in_use', 0), reserved=usage.get('reserved', 0), ) return quotas
def get_class_quotas(context, quota_class, defaults=None): """Update defaults with the quota class values.""" if not defaults: defaults = _get_default_quotas() quota = db.quota_class_get_all_by_name(context, quota_class) for key in defaults.keys(): if key in quota: defaults[key] = quota[key] return defaults
def get_project_quotas(self, context, resources, project_id, quota_class=None, defaults=True, usages=True, parent_project_id=None): """Given a list of resources, retrieve the quotas for the given project. :param context: The request context, for access checks. :param resources: A dictionary of the registered resources. :param project_id: The ID of the project to return quotas for. :param quota_class: If project_id != context.project_id, the quota class cannot be determined. This parameter allows it to be specified. It will be ignored if project_id == context.project_id. :param defaults: If True, the quota class value (or the default value, if there is no value from the quota class) will be reported if there is no specific value for the resource. :param usages: If True, the current in_use and reserved counts will also be returned. :param parent_project_id: The id of the current project's parent, if any. """ quotas = {} project_quotas = db.quota_get_all_by_project(context, project_id) if usages: project_usages = db.quota_usage_get_all_by_project(context, project_id) # Get the quotas for the appropriate class. If the project ID # matches the one in the context, we use the quota_class from # the context, otherwise, we use the provided quota_class (if # any) if project_id == context.project_id: quota_class = context.quota_class if quota_class: class_quotas = db.quota_class_get_all_by_name(context, quota_class) else: class_quotas = {} default_quotas = self.get_defaults(context, resources, parent_project_id=parent_project_id) for resource in resources.values(): # Omit default/quota class values if not defaults and resource.name not in project_quotas: continue quotas[resource.name] = dict( limit=project_quotas.get( resource.name, class_quotas.get(resource.name, default_quotas[resource.name])), ) # Include usages if desired. This is optional because one # internal consumer of this interface wants to access the # usages directly from inside a transaction. if usages: usage = project_usages.get(resource.name, {}) quotas[resource.name].update( in_use=usage.get('in_use', 0), reserved=usage.get('reserved', 0), ) return quotas
def test_quota_class_destroy_all_by_name(self): sample1 = db.quota_class_create(self.ctxt, 'test2', 'res1', 43) sample2 = db.quota_class_create(self.ctxt, 'test2', 'res2', 44) db.quota_class_destroy_all_by_name(self.ctxt, 'test2') self.assertEqual({'class_name': 'test2'}, db.quota_class_get_all_by_name(self.ctxt, 'test2'))
def test_quota_class_destroy_all_by_name(self): db.quota_class_create(self.ctxt, "test2", "res1", 43) db.quota_class_create(self.ctxt, "test2", "res2", 44) db.quota_class_destroy_all_by_name(self.ctxt, "test2") self.assertEqual({"class_name": "test2"}, db.quota_class_get_all_by_name(self.ctxt, "test2"))