diff options
author | Zuul <zuul@review.opendev.org> | 2021-09-10 21:20:15 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2021-09-10 21:20:15 +0000 |
commit | 85f6166473ad39f04455fe7eae34a653744203e5 (patch) | |
tree | ad128dfb5419b1a631ad5733dd1c988fefca7022 | |
parent | cbd0262ac1aa34c3edcb6e7dd6565d0f1640772b (diff) | |
parent | 78e8b7506a7d68089cf08ba24085bf99e070e4ce (diff) | |
download | glance-85f6166473ad39f04455fe7eae34a653744203e5.tar.gz |
Merge "Fix image/tasks API for in-progress tasks" into stable/wallaby
-rw-r--r-- | glance/db/sqlalchemy/api.py | 3 | ||||
-rw-r--r-- | glance/tests/functional/db/base.py | 10 |
2 files changed, 7 insertions, 6 deletions
diff --git a/glance/db/sqlalchemy/api.py b/glance/db/sqlalchemy/api.py index 15698e335..0d373ba6c 100644 --- a/glance/db/sqlalchemy/api.py +++ b/glance/db/sqlalchemy/api.py @@ -1672,7 +1672,8 @@ def tasks_get_by_image(context, image_id, session=None): ).filter_by(image_id=image_id) expires_at = models.Task.expires_at - query = query.filter(expires_at >= timeutils.utcnow()) + query = query.filter(sa_sql.or_(expires_at == None, + expires_at >= timeutils.utcnow())) updated_at = models.Task.updated_at query.filter( updated_at <= (timeutils.utcnow() + diff --git a/glance/tests/functional/db/base.py b/glance/tests/functional/db/base.py index 1897edc14..da358b17b 100644 --- a/glance/tests/functional/db/base.py +++ b/glance/tests/functional/db/base.py @@ -1774,13 +1774,13 @@ class TaskTests(test_utils.BaseTestCase): self.assertTrue(tasks[0]['deleted']) def test_task_get_by_image_no_expiry(self): - # Make sure we do not retrieve the expired task + # Make sure we find the task that has expires_at=NULL task_id, tasks = self._test_task_get_by_image(expired=None) - self.assertEqual(0, len(tasks)) + self.assertEqual(1, len(tasks)) - # The task should not have been retrieved at all above, - # but it's also not deleted because it doesn't have an expiry, - # so it should still be in the DB. + # The task should have been retrieved above, and it's also not + # deleted because it doesn't have an expiry, so it should + # still be in the DB. tasks = self.db_api.task_get_all(self.adm_context) self.assertEqual(1, len(tasks)) self.assertEqual(task_id, tasks[0]['id']) |