def get_quota(self, context, project_id, action=None): """Get quota for a specified tenant. :param context: context object. :param project_id: It's UUID of the project. Note: In v1.0 it can be defaults sometimes. Only specified tenant quota is retrieved from database using this param. :param action: Optional. If provided, it can be 'detail' action - Gets details quota for the specified tenant. """ result = collections.defaultdict(dict) if project_id == 'defaults' or action == 'defaults': # Get default quota limits from conf file result = self.get_defaults(context, CONF.kingbird_global_limit) else: if action and action != 'detail': pecan.abort(404, _('Invalid request URL')) elif action == 'detail': # Get the current quota usages for a project result = self.rpc_client.get_total_usage_for_tenant( context, project_id) else: # Get quota limits for all the resources for a project result = db_api.quota_get_all_by_project(context, project_id) return result
def get(self, project_id, action=None): quota = collections.defaultdict(dict) context = restcomm.extract_context_from_environ() result = collections.defaultdict(dict) try: if project_id == 'defaults': # Get default quota limits from conf file result = self._get_defaults(context, CONF.kingbird_global_limit) else: if action and action != 'detail': pecan.abort(404, _('Invalid request URL')) elif action == 'detail': # Get the current quota usages for a project result = self.rpc_client.get_total_usage_for_tenant( context, project_id) else: # Get quota limits for all the resources for a project result = db_api.quota_get_all_by_project( context, project_id) quota['quota_set'] = result return quota # Could be raised by get total usage call except exceptions.InternalError: pecan.abort(400, _('Error while requesting usage'))
def test_quota_get_by_project(self): project_id = UUID2 resource = "cores" limit = self.create_quota_limit(self.ctx, project_id=project_id, resource=resource, limit=15) self.assertIsNotNone(limit) by_project = db_api.quota_get_all_by_project(self.ctx, project_id) self.assertIsNotNone(by_project) self.assertEqual(project_id, by_project["project_id"])
def test_quota_get_by_project(self): project_id = UUID2 resource = 'cores' limit = self.create_quota_limit(self.ctx, project_id=project_id, resource=resource, limit=15) self.assertIsNotNone(limit) by_project = db_api.quota_get_all_by_project(self.ctx, project_id) self.assertIsNotNone(by_project) self.assertEqual(project_id, by_project['project_id'])
def test_quota_get_by_non_existing_project(self): project_id = UUID2 expected_quota_set = {'project_id': project_id} project_limit = db_api.quota_get_all_by_project(self.ctx, project_id) self.assertEqual(project_limit, expected_quota_set)
def test_quota_get_by_non_existing_project(self): project_id = UUID2 expected_quota_set = {"project_id": project_id} project_limit = db_api.quota_get_all_by_project(self.ctx, project_id) self.assertEqual(project_limit, expected_quota_set)