diff --git a/lib/ansible/modules/cloud/ovirt/ovirt_hosts.py b/lib/ansible/modules/cloud/ovirt/ovirt_hosts.py index a07b1cb742d..62213da8524 100644 --- a/lib/ansible/modules/cloud/ovirt/ovirt_hosts.py +++ b/lib/ansible/modules/cloud/ovirt/ovirt_hosts.py @@ -94,6 +94,13 @@ options: - "Kernel boot parameters changes require host deploy and restart. The host needs to be I(reinstalled) suceesfully and then to be I(rebooted) for kernel boot parameters to be applied." + hosted_engine: + description: + - "If I(deploy) it means this host should deploy also hosted engine + components." + - "If I(undeploy) it means this host should un-deploy hosted engine + components and this host will not function as part of the High + Availability cluster." extends_documentation_fragment: ovirt ''' @@ -117,6 +124,14 @@ EXAMPLES = ''' name: myhost2 address: 10.34.61.145 +# Deploy hosted engine host +- ovirt_hosts: + cluster: Default + name: myhost2 + password: secret + address: 10.34.61.145 + hosted_engine: deploy + # Maintenance - ovirt_hosts: state: maintenance @@ -157,7 +172,6 @@ host: returned: On success if host is found. ''' -import time import traceback try: @@ -311,6 +325,7 @@ def main(): timeout=dict(default=600, type='int'), override_display=dict(default=None), kernel_params=dict(default=None, type='list'), + hosted_engine=dict(default=None, choices=['deploy', 'undeploy']), ) module = AnsibleModule( argument_spec=argument_spec, @@ -330,7 +345,11 @@ def main(): state = module.params['state'] control_state(hosts_module) if state == 'present': - hosts_module.create() + hosts_module.create( + deploy_hosted_engine=( + module.params.get('hosted_engine') == 'deploy' + ) if module.params.get('hosted_engine') is not None else None, + ) ret = hosts_module.action( action='activate', action_condition=lambda h: h.status == hoststate.MAINTENANCE, @@ -406,6 +425,12 @@ def main(): ssh=otypes.Ssh( authentication_method=otypes.SshAuthenticationMethod.PUBLICKEY, ) if module.params['public_key'] else None, + deploy_hosted_engine=( + module.params.get('hosted_engine') == 'deploy' + ) if module.params.get('hosted_engine') is not None else None, + undeploy_hosted_engine=( + module.params.get('hosted_engine') == 'undeploy' + ) if module.params.get('hosted_engine') is not None else None, ) # Activate host after reinstall: @@ -415,7 +440,6 @@ def main(): wait_condition=lambda h: h.status == hoststate.UP, fail_condition=failed_state, ) - module.exit_json(**ret) except Exception as e: module.fail_json(msg=str(e), exception=traceback.format_exc())