]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Introduce new resource_data_delete db api
authorThomas Herve <th@rackspace.com>
Mon, 12 Aug 2013 14:51:36 +0000 (16:51 +0200)
committerThomas Herve <th@rackspace.com>
Mon, 12 Aug 2013 17:00:23 +0000 (19:00 +0200)
This allows removing data associated during to resources during its
lifecycle.

Change-Id: Id45e7cb9129a8187229c708e0d3f6cb2a591bb39

heat/db/api.py
heat/db/sqlalchemy/api.py
heat/tests/test_sqlalchemy_api.py

index 2b36f650362a892a28c5c58c2e41662a9563b984..64f42df10ed85ee35b6dc324b1f3a4ee3293c300 100644 (file)
@@ -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)
 
index d3dc88cc4fdfbf0aaf524d27204a1502ccd96d81..22e6ca15c761791d9dc9722e910cbfe64a99e742 100644 (file)
@@ -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)
index 0c7fb13dbafbd5a4509502e9998fabaa10f70fd3..bba56d02c29aeba0d7956c00040e888fc4139e43 100644 (file)
@@ -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]