From: Thomas Herve Date: Mon, 12 Aug 2013 14:51:36 +0000 (+0200) Subject: Introduce new resource_data_delete db api X-Git-Tag: 2014.1~227^2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=0eff5bef38d42fb3a90714eddc23327797e34e46;p=openstack-build%2Fheat-build.git Introduce new resource_data_delete db api This allows removing data associated during to resources during its lifecycle. Change-Id: Id45e7cb9129a8187229c708e0d3f6cb2a591bb39 --- diff --git a/heat/db/api.py b/heat/db/api.py index 2b36f650..64f42df1 100644 --- a/heat/db/api.py +++ b/heat/db/api.py @@ -78,6 +78,11 @@ def resource_data_get_by_key(context, resource_id, key): return IMPL.resource_data_get_by_key(context, resource_id, key) +def resource_data_delete(resource, key): + """Remove a resource_data element associated to a resource.""" + return IMPL.resource_data_delete(resource, key) + + def resource_get(context, resource_id): return IMPL.resource_get(context, resource_id) diff --git a/heat/db/sqlalchemy/api.py b/heat/db/sqlalchemy/api.py index d3dc88cc..22e6ca15 100644 --- a/heat/db/sqlalchemy/api.py +++ b/heat/db/sqlalchemy/api.py @@ -144,6 +144,11 @@ def resource_data_set(resource, key, value, redact=False): return current +def resource_data_delete(resource, key): + result = resource_data_get_by_key(resource.context, resource.id, key) + result.delete() + + def resource_create(context, values): resource_ref = models.Resource() resource_ref.update(values) diff --git a/heat/tests/test_sqlalchemy_api.py b/heat/tests/test_sqlalchemy_api.py index 0c7fb13d..bba56d02 100644 --- a/heat/tests/test_sqlalchemy_api.py +++ b/heat/tests/test_sqlalchemy_api.py @@ -16,6 +16,7 @@ from heat.db.sqlalchemy import api as db_api from heat.engine import environment from heat.tests.v1_1 import fakes from heat.engine.resource import Resource +from heat.common import exception from heat.common import template_format from heat.engine.resources import instance as instances from heat.engine import parser @@ -137,6 +138,18 @@ class SqlAlchemyTest(HeatTestCase): self.assertEqual(decrypted_key, "fake secret") cs.destroy() + def test_resource_data_delete(self): + stack = self._setup_test_stack('stack', UUID1)[1] + self._mock_create(self.m) + self.m.ReplayAll() + stack.create() + rsrc = stack.resources['WebServer'] + db_api.resource_data_set(rsrc, 'test', 'test_data') + self.assertEqual('test_data', db_api.resource_data_get(rsrc, 'test')) + db_api.resource_data_delete(rsrc, 'test') + self.assertRaises(exception.NotFound, + db_api.resource_data_get, rsrc, 'test') + def test_stack_get_by_name(self): stack = self._setup_test_stack('stack', UUID1)[1]