summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-09-11 09:51:11 +0000
committerGerrit Code Review <review@openstack.org>2020-09-11 09:51:11 +0000
commitb122028baea73a11f7459f2d378485e7deabcffd (patch)
tree815e0cea8769c44ec77aaccb133e78b23b830341
parentc2fa4e0f30876e709d4cf515349b64287191fb38 (diff)
parent3327b40fde0f071b4820c59dd88c6c5565d79406 (diff)
downloadheat-stable/rocky.tar.gz
Merge "Check external resources after creation" into stable/rockyrocky-eolstable/rocky
-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 c33e68c09..470cec2e3 100644
--- a/heat/engine/resource.py
+++ b/heat/engine/resource.py
@@ -1215,7 +1215,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 2fd87e830..9e41f3d6f 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(