ovirt_vms: Fix the module to work with check mode (#37916)

Fixes: https://github.com/ansible/ansible/issues/36712
This commit is contained in:
Ondra Machacek 2018-05-02 14:47:30 +02:00 committed by Ryan Brown
parent 0a17adb3df
commit 17928ff666
2 changed files with 22 additions and 18 deletions

View file

@ -581,29 +581,30 @@ class BaseModule(object):
self.post_create(entity) self.post_create(entity)
self.changed = True self.changed = True
# Wait for the entity to be created and to be in the defined state: if not self._module.check_mode:
entity_service = self._service.service(entity.id) # Wait for the entity to be created and to be in the defined state:
entity_service = self._service.service(entity.id)
def state_condition(entity):
return entity
if result_state:
def state_condition(entity): def state_condition(entity):
return entity and entity.status == result_state return entity
wait( if result_state:
service=entity_service,
condition=state_condition, def state_condition(entity):
fail_condition=fail_condition, return entity and entity.status == result_state
wait=self._module.params['wait'],
timeout=self._module.params['timeout'], wait(
poll_interval=self._module.params['poll_interval'], service=entity_service,
) condition=state_condition,
fail_condition=fail_condition,
wait=self._module.params['wait'],
timeout=self._module.params['timeout'],
poll_interval=self._module.params['poll_interval'],
)
return { return {
'changed': self.changed, 'changed': self.changed,
'id': entity.id, 'id': getattr(entity, 'id', None),
type(entity).__name__.lower(): get_dict_of_struct( type(entity).__name__.lower(): get_dict_of_struct(
struct=entity, struct=entity,
connection=self._connection, connection=self._connection,

View file

@ -1933,8 +1933,11 @@ def main():
clone=module.params['clone'], clone=module.params['clone'],
clone_permissions=module.params['clone_permissions'], clone_permissions=module.params['clone_permissions'],
) )
vms_module.post_present(ret['id']) # If VM is going to be created and check_mode is on, return now:
if module.check_mode and ret.get('id') is None:
module.exit_json(**ret)
vms_module.post_present(ret['id'])
# Run the VM if it was just created, else don't run it: # Run the VM if it was just created, else don't run it:
if state == 'running': if state == 'running':
initialization = vms_module.get_initialization() initialization = vms_module.get_initialization()