ovirt_hosts: Add upgrade_check action (#28437)

* ovirt_hosts: Add upgrade_check action

* Fix pep8 issue
pull/28725/head
Ondra Machacek 7 years ago committed by Ryan Brown
parent f787be3597
commit b9600281d6

@ -123,6 +123,12 @@ options:
- "If C(state) is I(iscsilogin) it means that the iscsi attribute is being - "If C(state) is I(iscsilogin) it means that the iscsi attribute is being
used to login to the specified targets passed as part of the iscsi attribute" used to login to the specified targets passed as part of the iscsi attribute"
version_added: "2.4" version_added: "2.4"
check_upgrade:
description:
- "If I(true) and C(state) is I(upgraded) run check for upgrade
action before executing upgrade action."
default: True
version_added: 2.4
extends_documentation_fragment: ovirt extends_documentation_fragment: ovirt
''' '''
@ -385,6 +391,7 @@ def main():
power_management_enabled=dict(default=None, type='bool'), power_management_enabled=dict(default=None, type='bool'),
activate=dict(default=True, type='bool'), activate=dict(default=True, type='bool'),
iscsi=dict(default=None, type='dict'), iscsi=dict(default=None, type='dict'),
check_upgrade=dict(default=True, type='bool'),
) )
module = AnsibleModule( module = AnsibleModule(
argument_spec=argument_spec, argument_spec=argument_spec,
@ -435,6 +442,32 @@ def main():
ret = hosts_module.create() ret = hosts_module.create()
elif state == 'upgraded': elif state == 'upgraded':
result_state = hoststate.MAINTENANCE if host.status == hoststate.MAINTENANCE else hoststate.UP result_state = hoststate.MAINTENANCE if host.status == hoststate.MAINTENANCE else hoststate.UP
events_service = connection.system_service().events_service()
last_event = events_service.list(max=1)[0]
if module.params['check_upgrade']:
hosts_module.action(
action='upgrade_check',
action_condition=lambda host: not host.update_available,
wait_condition=lambda host: host.update_available or (
len([
event
for event in events_service.list(
from_=int(last_event.id),
search='type=885 and host.name=%s' % host.name,
)
]) > 0
),
fail_condition=lambda host: len([
event
for event in events_service.list(
from_=int(last_event.id),
search='type=839 or type=887 and host.name=%s' % host.name,
)
]) > 0,
)
# Set to False, because upgrade_check isn't 'changing' action:
hosts_module._changed = False
ret = hosts_module.action( ret = hosts_module.action(
action='upgrade', action='upgrade',
action_condition=lambda h: h.update_available, action_condition=lambda h: h.update_available,

Loading…
Cancel
Save