from trove.quota.models import Quota from trove.quota.models import QuotaUsage from trove.quota.models import Reservation from trove.db.models import DatabaseModelBase from trove.extensions.mgmt.quota.service import QuotaController from trove.common import exception from trove.common import cfg from trove.quota.quota import run_with_quotas from trove.quota.quota import QUOTAS """ Unit tests for the classes and functions in DbQuotaDriver.py. """ CONF = cfg.CONF resources = { Resource.INSTANCES: Resource(Resource.INSTANCES, 'max_instances_per_user'), Resource.VOLUMES: Resource(Resource.VOLUMES, 'max_volumes_per_user'), } FAKE_TENANT1 = "123456" FAKE_TENANT2 = "654321" class Run_with_quotasTest(testtools.TestCase): def setUp(self): super(Run_with_quotasTest, self).setUp() self.quota_reserve_orig = QUOTAS.reserve self.quota_rollback_orig = QUOTAS.rollback self.quota_commit_orig = QUOTAS.commit QUOTAS.reserve = Mock() QUOTAS.rollback = Mock()
try: self._driver.rollback(reservations) except Exception: LOG.exception(_("Failed to roll back reservations " "%(reservations)s") % {'reservations': reservations}) @property def resources(self): return sorted(self._resources.keys()) QUOTAS = QuotaEngine() ''' Define all kind of resources here ''' resources = [Resource(Resource.INSTANCES, 'max_instances_per_tenant'), Resource(Resource.BACKUPS, 'max_backups_per_tenant'), Resource(Resource.VOLUMES, 'max_volumes_per_tenant')] QUOTAS.register_resources(resources) def run_with_quotas(tenant_id, deltas, f): """Quota wrapper.""" reservations = QUOTAS.reserve(tenant_id, **deltas) result = None try: result = f() except Exception: QUOTAS.rollback(reservations)
try: self._driver.rollback(reservations) except Exception: LOG.exception( _("Failed to roll back reservations " "%(reservations)s") % {'reservations': reservations}) @property def resources(self): return sorted(self._resources.keys()) QUOTAS = QuotaEngine() ''' Define all kind of resources here ''' resources = [ Resource(Resource.INSTANCES, 'max_instances_per_user'), Resource(Resource.BACKUPS, 'max_backups_per_user'), Resource(Resource.VOLUMES, 'max_volumes_per_user') ] QUOTAS.register_resources(resources) def run_with_quotas(tenant_id, deltas, f): """Quota wrapper.""" reservations = QUOTAS.reserve(tenant_id, **deltas) result = None try: result = f() except Exception: