ovirt_hosts: Don't fail upgrade when NON_RESPONSIVE state (#32123)
This commit is contained in:
parent
13807e7ee8
commit
4f01ad41bd
1 changed files with 25 additions and 3 deletions
|
@ -317,6 +317,28 @@ class HostsModule(BaseModule):
|
||||||
timeout=self.param('timeout'),
|
timeout=self.param('timeout'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def failed_state_after_reinstall(self, host, count=0):
|
||||||
|
if host.status in [
|
||||||
|
hoststate.ERROR,
|
||||||
|
hoststate.INSTALL_FAILED,
|
||||||
|
hoststate.NON_OPERATIONAL,
|
||||||
|
]:
|
||||||
|
return True
|
||||||
|
|
||||||
|
# If host is in non-responsive state after upgrade/install
|
||||||
|
# let's wait for few seconds and re-check again the state:
|
||||||
|
if host.status == hoststate.NON_RESPONSIVE:
|
||||||
|
if count <= 3:
|
||||||
|
time.sleep(20)
|
||||||
|
return self.failed_state_after_reinstall(
|
||||||
|
self._service.service(host.id).get(),
|
||||||
|
count + 1,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def failed_state(host):
|
def failed_state(host):
|
||||||
return host.status in [
|
return host.status in [
|
||||||
|
@ -421,7 +443,7 @@ def main():
|
||||||
module.params.get('hosted_engine') == 'deploy'
|
module.params.get('hosted_engine') == 'deploy'
|
||||||
) if module.params.get('hosted_engine') is not None else None,
|
) if module.params.get('hosted_engine') is not None else None,
|
||||||
result_state=hoststate.UP if host is None else None,
|
result_state=hoststate.UP if host is None else None,
|
||||||
fail_condition=failed_state if host is None else lambda h: False,
|
fail_condition=hosts_module.failed_state_after_reinstall if host is None else lambda h: False,
|
||||||
)
|
)
|
||||||
if module.params['activate'] and host is not None:
|
if module.params['activate'] and host is not None:
|
||||||
ret = hosts_module.action(
|
ret = hosts_module.action(
|
||||||
|
@ -473,7 +495,7 @@ def main():
|
||||||
action_condition=lambda h: h.update_available,
|
action_condition=lambda h: h.update_available,
|
||||||
wait_condition=lambda h: h.status == result_state,
|
wait_condition=lambda h: h.status == result_state,
|
||||||
post_action=lambda h: time.sleep(module.params['poll_interval']),
|
post_action=lambda h: time.sleep(module.params['poll_interval']),
|
||||||
fail_condition=failed_state,
|
fail_condition=hosts_module.failed_state_after_reinstall,
|
||||||
)
|
)
|
||||||
elif state == 'iscsidiscover':
|
elif state == 'iscsidiscover':
|
||||||
host_id = get_id_by_name(hosts_service, module.params['name'])
|
host_id = get_id_by_name(hosts_service, module.params['name'])
|
||||||
|
@ -546,7 +568,7 @@ def main():
|
||||||
action_condition=lambda h: h.status == hoststate.MAINTENANCE,
|
action_condition=lambda h: h.status == hoststate.MAINTENANCE,
|
||||||
post_action=hosts_module.post_reinstall,
|
post_action=hosts_module.post_reinstall,
|
||||||
wait_condition=lambda h: h.status == hoststate.MAINTENANCE,
|
wait_condition=lambda h: h.status == hoststate.MAINTENANCE,
|
||||||
fail_condition=failed_state,
|
fail_condition=hosts_module.failed_state_after_reinstall,
|
||||||
host=otypes.Host(
|
host=otypes.Host(
|
||||||
override_iptables=module.params['override_iptables'],
|
override_iptables=module.params['override_iptables'],
|
||||||
) if module.params['override_iptables'] else None,
|
) if module.params['override_iptables'] else None,
|
||||||
|
|
Loading…
Reference in a new issue