diff --git a/heat/engine/resource.py b/heat/engine/resource.py index 6d68f2861..654880b4e 100644 --- a/heat/engine/resource.py +++ b/heat/engine/resource.py @@ -1062,9 +1062,6 @@ class Resource(object): ) def cancel_grace_period(self): - if self.status != self.IN_PROGRESS: - return None - canceller = getattr(self, 'handle_%s_cancel' % self.action.lower(), None) diff --git a/heat/engine/scheduler.py b/heat/engine/scheduler.py index 37e02a30f..d6e17568f 100644 --- a/heat/engine/scheduler.py +++ b/heat/engine/scheduler.py @@ -473,7 +473,10 @@ class DependencyTaskGroup(object): return grace_period for k, r in six.iteritems(self._runners): - gp = get_grace_period(k) + if not r.started() or r.done(): + gp = None + else: + gp = get_grace_period(k) try: r.cancel(grace_period=gp) except Exception as ex: