diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-09-03 00:03:58 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-09-03 00:03:58 +0000 |
| commit | 649cb4bf84c20ded563ea9fe5638ac19ac5d67eb (patch) | |
| tree | dd90275fe822c955cd4b5be808db72a7ce89be1b /nova | |
| parent | 9ed4e4f096569935146d33687b8b831c85e98aec (diff) | |
| parent | 22f0e324f3d3172b563aa67e513fe4d9318de2e5 (diff) | |
| download | nova-649cb4bf84c20ded563ea9fe5638ac19ac5d67eb.tar.gz nova-649cb4bf84c20ded563ea9fe5638ac19ac5d67eb.tar.xz nova-649cb4bf84c20ded563ea9fe5638ac19ac5d67eb.zip | |
Merge "Fix quota reservation expiration"
Diffstat (limited to 'nova')
| -rw-r--r-- | nova/db/sqlalchemy/models.py | 6 | ||||
| -rw-r--r-- | nova/tests/api/openstack/compute/test_limits.py | 1 | ||||
| -rw-r--r-- | nova/tests/test_quota.py | 20 |
3 files changed, 27 insertions, 0 deletions
diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py index 65d5eb5e0..8b8322276 100644 --- a/nova/db/sqlalchemy/models.py +++ b/nova/db/sqlalchemy/models.py @@ -496,6 +496,12 @@ class Reservation(BASE, NovaBase): delta = Column(Integer) expire = Column(DateTime, nullable=False) + usage = relationship( + "QuotaUsage", + foreign_keys=usage_id, + primaryjoin='and_(Reservation.usage_id == QuotaUsage.id,' + 'QuotaUsage.deleted == False)') + class Snapshot(BASE, NovaBase): """Represents a block storage device that can be attached to a VM.""" diff --git a/nova/tests/api/openstack/compute/test_limits.py b/nova/tests/api/openstack/compute/test_limits.py index 059deabf7..2a3038267 100644 --- a/nova/tests/api/openstack/compute/test_limits.py +++ b/nova/tests/api/openstack/compute/test_limits.py @@ -794,6 +794,7 @@ class WsgiLimiterProxyTest(BaseLimitTestSuite): def tearDown(self): # restore original HTTPConnection object httplib.HTTPConnection = self.oldHTTPConnection + super(WsgiLimiterProxyTest, self).tearDown() class LimitsViewBuilderTest(test.TestCase): diff --git a/nova/tests/test_quota.py b/nova/tests/test_quota.py index 794c578d6..8dddef173 100644 --- a/nova/tests/test_quota.py +++ b/nova/tests/test_quota.py @@ -228,6 +228,26 @@ class QuotaIntegrationTestCase(test.TestCase): self.assertRaises(exception.QuotaError, self._create_with_injected_files, files) + def test_reservation_expire(self): + timeutils.set_time_override() + + def assertInstancesReserved(reserved): + result = quota.QUOTAS.get_project_quotas(self.context, + self.context.project_id) + self.assertEqual(result['instances']['reserved'], reserved) + + quota.QUOTAS.reserve(self.context, + expire=60, + instances=2) + + assertInstancesReserved(2) + + timeutils.advance_time_seconds(80) + + result = quota.QUOTAS.expire(self.context) + + assertInstancesReserved(0) + class FakeContext(object): def __init__(self, project_id, quota_class): |
