From 6aae4578441b29bd78a3f57f8db48de0dfb9970c Mon Sep 17 00:00:00 2001 From: gord chung Date: Tue, 24 May 2016 12:09:05 -0400 Subject: [PATCH] raise NoSuchMetric when deleting metric already marked deleted we should hide the fact the metric is marked for deletion but not yet deleted. Change-Id: Ib4a5d581208abed7978c53c169ce3ae0cc5d4ece Closes-Bug: #1584139 --- gnocchi/indexer/sqlalchemy.py | 3 ++- gnocchi/tests/gabbi/gabbits/metric.yaml | 4 ++++ gnocchi/tests/test_indexer.py | 8 +------- setup.cfg | 2 +- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/gnocchi/indexer/sqlalchemy.py b/gnocchi/indexer/sqlalchemy.py index 05f74da59..de5953b9d 100644 --- a/gnocchi/indexer/sqlalchemy.py +++ b/gnocchi/indexer/sqlalchemy.py @@ -773,7 +773,8 @@ class SQLAlchemyIndexer(indexer.IndexerDriver): def delete_metric(self, id): with self.facade.writer() as session: if session.query(Metric).filter( - Metric.id == id).update({"status": "delete"}) == 0: + Metric.id == id, Metric.status == 'active').update( + {"status": "delete"}) == 0: raise indexer.NoSuchMetric(id) diff --git a/gnocchi/tests/gabbi/gabbits/metric.yaml b/gnocchi/tests/gabbi/gabbits/metric.yaml index 735dd7c78..e9ef78bcd 100644 --- a/gnocchi/tests/gabbi/gabbits/metric.yaml +++ b/gnocchi/tests/gabbi/gabbits/metric.yaml @@ -278,6 +278,10 @@ tests: method: DELETE status: 204 + - name: delete metric again + DELETE: $LAST_URL + status: 404 + - name: delete non existent metric url: /v1/metric/foo method: DELETE diff --git a/gnocchi/tests/test_indexer.py b/gnocchi/tests/test_indexer.py index ec4b6ea6a..7cfdb3e4a 100644 --- a/gnocchi/tests/test_indexer.py +++ b/gnocchi/tests/test_indexer.py @@ -584,13 +584,7 @@ class TestIndexerDriver(tests_base.TestCase): rc = self.index.create_resource('generic', r1, user, project, metrics={'foo': e1, 'bar': e2}) self.index.delete_metric(e1) - # It can be called twice - try: - self.index.delete_metric(e1) - except indexer.NoSuchMetric: - # It's possible that the metric has been expunged by another - # parallel test. No worry. - pass + self.assertRaises(indexer.NoSuchMetric, self.index.delete_metric, e1) r = self.index.get_resource('generic', r1, with_metrics=True) self.assertIsNotNone(r.started_at) self.assertIsNotNone(r.revision_start) diff --git a/setup.cfg b/setup.cfg index fa9a61ea1..2aba8a3e7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -58,7 +58,7 @@ doc = Jinja2 test = pifpaf>=0.1.0 - gabbi>=0.101.2 + gabbi>=1.19.0 coverage>=3.6 fixtures mock