From 51aed6e41f8f02045580f04fb92c06585aa4cb05 Mon Sep 17 00:00:00 2001 From: liyi Date: Wed, 8 Nov 2017 15:26:58 +1100 Subject: [PATCH] Fix logic error in sqlarchemy api Change-Id: Ic3074969b8a75f7b38aa3ba9a37b23dcf133aa8e --- heat/db/sqlalchemy/api.py | 4 +++- heat/tests/db/test_sqlalchemy_api.py | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/heat/db/sqlalchemy/api.py b/heat/db/sqlalchemy/api.py index 79ef68d840..dfdbcde005 100644 --- a/heat/db/sqlalchemy/api.py +++ b/heat/db/sqlalchemy/api.py @@ -1316,12 +1316,14 @@ def service_get_all_by_args(context, host, binary, hostname): def purge_deleted(age, granularity='days', project_id=None, batch_size=20): def _validate_positive_integer(val, argname): try: - return int(val) + val = int(val) except ValueError: raise exception.Error(_("%s should be an integer") % argname) + if val < 0: raise exception.Error(_("%s should be a positive integer") % argname) + return val age = _validate_positive_integer(age, 'age') batch_size = _validate_positive_integer(batch_size, 'batch_size') diff --git a/heat/tests/db/test_sqlalchemy_api.py b/heat/tests/db/test_sqlalchemy_api.py index c4adcef0c2..98cf8ced00 100644 --- a/heat/tests/db/test_sqlalchemy_api.py +++ b/heat/tests/db/test_sqlalchemy_api.py @@ -2018,6 +2018,9 @@ class DBAPIStackTest(common.HeatTestCase): self._deleted_stack_existance(admin_ctx, stacks, resources, events, tmpl_files, (), (0, 1, 2, 3, 4)) + # test wrong age + self.assertRaises(exception.Error, db_api.purge_deleted, -1, 'seconds') + def test_purge_project_deleted(self): now = timeutils.utcnow() delta = datetime.timedelta(seconds=3600 * 7)