From 0eff5bef38d42fb3a90714eddc23327797e34e46 Mon Sep 17 00:00:00 2001
From: Thomas Herve
Date: Mon, 12 Aug 2013 16:51:36 +0200
Subject: [PATCH] Introduce new resource_data_delete db api
This allows removing data associated during to resources during its
lifecycle.
Change-Id: Id45e7cb9129a8187229c708e0d3f6cb2a591bb39
---
heat/db/api.py | 5 +++++
heat/db/sqlalchemy/api.py | 5 +++++
heat/tests/test_sqlalchemy_api.py | 13 +++++++++++++
3 files changed, 23 insertions(+)
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]
--
2.45.2
|