summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-07-27 08:28:15 +0000
committerGerrit Code Review <review@openstack.org>2020-07-27 08:28:15 +0000
commitec6cd9ed001f46198684c7b477a4e2334236d474 (patch)
tree5def27f160d044df81cfe2eb3ccab8b93179e211
parentbcfb92d9272e40c0c67c4d9e93ea51f8515edf50 (diff)
parent9d9ca36072461d1b436a104bc6e2a6bb5df175bb (diff)
downloadheat-ec6cd9ed001f46198684c7b477a4e2334236d474.tar.gz
Merge "Check external resources after creation" into stable/ussuri
-rw-r--r--heat/engine/resource.py2
-rw-r--r--heat/tests/generic_resource.py6
-rw-r--r--heat/tests/test_resource.py9
3 files changed, 16 insertions, 1 deletions
diff --git a/heat/engine/resource.py b/heat/engine/resource.py
index 31e9ca03a..8d0f04f42 100644
--- a/heat/engine/resource.py
+++ b/heat/engine/resource.py
@@ -1206,7 +1206,7 @@ class Resource(status.ResourceStatus):
yield self._do_action(self.ADOPT,
resource_data={
'resource_id': self.external_id})
- self.check()
+ yield self.check()
return
# This method can be called when we replace a resource, too. In that
diff --git a/heat/tests/generic_resource.py b/heat/tests/generic_resource.py
index 5f98af74a..4bad64ea2 100644
--- a/heat/tests/generic_resource.py
+++ b/heat/tests/generic_resource.py
@@ -60,6 +60,12 @@ class GenericResource(resource.Resource):
self.type())
+class CheckableResource(GenericResource):
+ def handle_check(self):
+ LOG.warning(('Checking generic resource (Type "%s")'),
+ self.type())
+
+
class CancellableResource(GenericResource):
def check_create_complete(self, cookie):
return True
diff --git a/heat/tests/test_resource.py b/heat/tests/test_resource.py
index 1bac44654..2d30bd464 100644
--- a/heat/tests/test_resource.py
+++ b/heat/tests/test_resource.py
@@ -366,6 +366,15 @@ class ResourceTest(common.HeatTestCase):
self.assertEqual((res.CHECK, res.COMPLETE), res.state)
self.assertEqual('f00d', res.resource_id)
+ def test_create_from_external_with_check(self):
+ tmpl = rsrc_defn.ResourceDefinition(
+ 'test_resource', 'GenericResourceType',
+ external_id='f00d')
+ res = generic_rsrc.CheckableResource('test_resource', tmpl, self.stack)
+ scheduler.TaskRunner(res.create)()
+ self.assertEqual((res.CHECK, res.COMPLETE), res.state)
+ self.assertEqual('f00d', res.resource_id)
+
def test_create_from_external_not_found(self):
external_id = 'f00d'
tmpl = rsrc_defn.ResourceDefinition(