예제 #1
0
    def test_reserve(self):

        FAKE_QUOTAS = [
            QuotaUsage(id=1,
                       tenant_id=FAKE_TENANT1,
                       resource=Resource.INSTANCES,
                       in_use=1,
                       reserved=2),
            QuotaUsage(id=2,
                       tenant_id=FAKE_TENANT1,
                       resource=Resource.VOLUMES,
                       in_use=1,
                       reserved=1)
        ]

        self.mock_quota_result.all = Mock(return_value=[])
        self.mock_usage_result.all = Mock(return_value=FAKE_QUOTAS)
        QuotaUsage.save = Mock()
        Reservation.create = Mock()

        delta = {'instances': 2, 'volumes': 3}
        self.driver.reserve(FAKE_TENANT1, resources, delta)
        _, kw = Reservation.create.call_args_list[0]
        self.assertEquals(1, kw['usage_id'])
        self.assertEquals(2, kw['delta'])
        self.assertEquals(Reservation.Statuses.RESERVED, kw['status'])
        _, kw = Reservation.create.call_args_list[1]
        self.assertEquals(2, kw['usage_id'])
        self.assertEquals(3, kw['delta'])
        self.assertEquals(Reservation.Statuses.RESERVED, kw['status'])
예제 #2
0
    def test_get_all_quota_usages_by_tenant_with_one_default(self):

        FAKE_QUOTAS = [
            QuotaUsage(tenant_id=FAKE_TENANT1,
                       resource=Resource.INSTANCES,
                       in_use=0,
                       reserved=0)
        ]

        NEW_FAKE_QUOTA = QuotaUsage(tenant_id=FAKE_TENANT1,
                                    resource=Resource.VOLUMES,
                                    in_use=0,
                                    reserved=0)
        self.mock_usage_result.all = Mock(return_value=FAKE_QUOTAS)
        QuotaUsage.create = Mock(return_value=NEW_FAKE_QUOTA)

        usages = self.driver.get_all_quota_usages_by_tenant(
            FAKE_TENANT1, resources.keys())

        self.assertEquals(FAKE_TENANT1, usages[Resource.INSTANCES].tenant_id)
        self.assertEquals(Resource.INSTANCES,
                          usages[Resource.INSTANCES].resource)
        self.assertEquals(0, usages[Resource.INSTANCES].in_use)
        self.assertEquals(0, usages[Resource.INSTANCES].reserved)
        self.assertEquals(FAKE_TENANT1, usages[Resource.VOLUMES].tenant_id)
        self.assertEquals(Resource.VOLUMES, usages[Resource.VOLUMES].resource)
        self.assertEquals(0, usages[Resource.VOLUMES].in_use)
        self.assertEquals(0, usages[Resource.VOLUMES].reserved)
예제 #3
0
    def test_get_all_quota_usages_by_tenant(self):

        FAKE_QUOTAS = [
            QuotaUsage(tenant_id=FAKE_TENANT1,
                       resource=Resource.INSTANCES,
                       in_use=2,
                       reserved=1),
            QuotaUsage(tenant_id=FAKE_TENANT1,
                       resource=Resource.VOLUMES,
                       in_use=1,
                       reserved=1)
        ]

        self.mock_usage_result.all = Mock(return_value=FAKE_QUOTAS)

        usages = self.driver.get_all_quota_usages_by_tenant(
            FAKE_TENANT1, resources.keys())

        self.assertEquals(FAKE_TENANT1, usages[Resource.INSTANCES].tenant_id)
        self.assertEquals(Resource.INSTANCES,
                          usages[Resource.INSTANCES].resource)
        self.assertEquals(2, usages[Resource.INSTANCES].in_use)
        self.assertEquals(1, usages[Resource.INSTANCES].reserved)
        self.assertEquals(FAKE_TENANT1, usages[Resource.VOLUMES].tenant_id)
        self.assertEquals(Resource.VOLUMES, usages[Resource.VOLUMES].resource)
        self.assertEquals(1, usages[Resource.VOLUMES].in_use)
        self.assertEquals(1, usages[Resource.VOLUMES].reserved)
예제 #4
0
    def test_rollback(self):

        Reservation.save = Mock()
        QuotaUsage.save = Mock()

        FAKE_QUOTAS = [QuotaUsage(id=1,
                                  tenant_id=FAKE_TENANT1,
                                  resource=Resource.INSTANCES,
                                  in_use=5,
                                  reserved=2),
                       QuotaUsage(id=2,
                                  tenant_id=FAKE_TENANT1,
                                  resource=Resource.VOLUMES,
                                  in_use=1,
                                  reserved=2)]

        FAKE_RESERVATIONS = [Reservation(usage_id=1,
                                         delta=1,
                                         status=Reservation.Statuses.RESERVED),
                             Reservation(usage_id=2,
                                         delta=2,
                                         status=Reservation.Statuses.RESERVED)]

        QuotaUsage.find_by = Mock(side_effect=FAKE_QUOTAS)
        self.driver.rollback(FAKE_RESERVATIONS)

        self.assertEqual(5, FAKE_QUOTAS[0].in_use)
        self.assertEqual(1, FAKE_QUOTAS[0].reserved)
        self.assertEqual(Reservation.Statuses.ROLLEDBACK,
                         FAKE_RESERVATIONS[0].status)

        self.assertEqual(1, FAKE_QUOTAS[1].in_use)
        self.assertEqual(0, FAKE_QUOTAS[1].reserved)
        self.assertEqual(Reservation.Statuses.ROLLEDBACK,
                         FAKE_RESERVATIONS[1].status)
예제 #5
0
    def test_reserve_over_quota_with_reserved(self):

        FAKE_QUOTAS = [
            QuotaUsage(id=1,
                       tenant_id=FAKE_TENANT1,
                       resource=Resource.INSTANCES,
                       in_use=1,
                       reserved=2),
            QuotaUsage(id=2,
                       tenant_id=FAKE_TENANT1,
                       resource=Resource.VOLUMES,
                       in_use=0,
                       reserved=0)
        ]

        self.mock_quota_result.all = Mock(return_value=[])
        self.mock_usage_result.all = Mock(return_value=FAKE_QUOTAS)

        delta = {'instances': 4, 'volumes': 2}
        self.assertRaises(exception.QuotaExceeded, self.driver.reserve,
                          FAKE_TENANT1, resources, delta)
예제 #6
0
    def test_get_quota_usage_by_tenant(self):

        FAKE_QUOTAS = [QuotaUsage(tenant_id=FAKE_TENANT1,
                                  resource=Resource.VOLUMES,
                                  in_use=3,
                                  reserved=1)]

        self.mock_usage_result.all = Mock(return_value=FAKE_QUOTAS)

        usage = self.driver.get_quota_usage_by_tenant(FAKE_TENANT1,
                                                      Resource.VOLUMES)

        self.assertEquals(FAKE_TENANT1, usage.tenant_id)
        self.assertEquals(Resource.VOLUMES, usage.resource)
        self.assertEquals(3, usage.in_use)
        self.assertEquals(1, usage.reserved)
예제 #7
0
    def test_get_quota_usage_by_tenant_default(self):

        FAKE_QUOTA = QuotaUsage(tenant_id=FAKE_TENANT1,
                                resource=Resource.VOLUMES,
                                in_use=0,
                                reserved=0)

        self.mock_usage_result.all = Mock(return_value=[])
        QuotaUsage.create = Mock(return_value=FAKE_QUOTA)

        usage = self.driver.get_quota_usage_by_tenant(FAKE_TENANT1,
                                                      Resource.VOLUMES)

        self.assertEquals(FAKE_TENANT1, usage.tenant_id)
        self.assertEquals(Resource.VOLUMES, usage.resource)
        self.assertEquals(0, usage.in_use)
        self.assertEquals(0, usage.reserved)