diff options
author | Balazs Gibizer <balazs.gibizer@est.tech> | 2021-09-20 20:54:42 +0200 |
---|---|---|
committer | Balazs Gibizer <balazs.gibizer@est.tech> | 2021-09-21 14:21:16 +0200 |
commit | ef731bca05ea683c30448a2db397ae631c121d95 (patch) | |
tree | e16cd5a2b0b8282a788ccab26771eed250ade8cd /heat | |
parent | 863d645d7ef223a2534423e623fbc1c420c8557f (diff) | |
download | heat-ef731bca05ea683c30448a2db397ae631c121d95.tar.gz |
Fix timeout calc of nested resource groups
The timeout calculation of nested resource groups are using seconds but
then it passing the value in seconds to the stack resource that is
expected it in minutes. This leads to a rapidly increasing timeout value
in each nesting levels.
This patch converts the seconds to minutes before passing it forward.
Story: 2009237
Task: 43372
Change-Id: I3f132d4889723f7b4a3a416779ac5ee7663249b8
Diffstat (limited to 'heat')
-rw-r--r-- | heat/engine/resources/openstack/heat/resource_group.py | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/heat/engine/resources/openstack/heat/resource_group.py b/heat/engine/resources/openstack/heat/resource_group.py index 48ef05ae9..1bdc0c312 100644 --- a/heat/engine/resources/openstack/heat/resource_group.py +++ b/heat/engine/resources/openstack/heat/resource_group.py @@ -15,6 +15,7 @@ import collections import copy import functools import itertools +import math from oslo_log import log as logging @@ -433,18 +434,18 @@ class ResourceGroup(stack_resource.StackResource): return False return True - def _run_to_completion(self, template, timeout): + def _run_to_completion(self, template, timeout_mins): updater = self.update_with_template(template, {}, - timeout) + timeout_mins) while not super(ResourceGroup, self).check_update_complete(updater): yield - def _run_update(self, total_capacity, max_updates, timeout): + def _run_update(self, total_capacity, max_updates, timeout_mins): template = self._assemble_for_rolling_update(total_capacity, max_updates) - return self._run_to_completion(template, timeout) + return self._run_to_completion(template, timeout_mins) def check_update_complete(self, checkers): for checker in checkers: @@ -776,13 +777,18 @@ class ResourceGroup(stack_resource.StackResource): batches = list(self._get_batches(self.get_size(), curr_cap, batch_size, min_in_service)) - update_timeout = self._update_timeout(len(batches), pause_sec) + update_timeout_secs = self._update_timeout(len(batches), pause_sec) + + # NOTE(gibi) update_timeout is in seconds but the _run_update + # eventually calls StackResource.update_with_template that takes + # timeout in minutes so we need to convert here. + update_timeout_mins = math.ceil(update_timeout_secs / 60) def tasks(): for index, (curr_cap, max_upd) in enumerate(batches): yield scheduler.TaskRunner(self._run_update, curr_cap, max_upd, - update_timeout) + update_timeout_mins) if index < (len(batches) - 1) and pause_sec > 0: yield scheduler.TaskRunner(pause_between_batch, pause_sec) |