1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2026-02-04 07:51:50 +00:00

fix return value exception (#11149)

* fix return value `exception`

* add changelog frag

* adjustments after review

* typo

* adjust changelog frag

* vmadm: send rc, stdout, and stderr to fail_json()

* rundeck: pass tracebacks

* Update changelogs/fragments/11149-rv-exception.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update changelogs/fragments/11149-rv-exception.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
Alexei Znamensky 2025-11-18 20:07:26 +13:00 committed by GitHub
parent a986d81c3d
commit 79b16d9ca5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 8 deletions

View file

@ -5,9 +5,9 @@
from __future__ import annotations
import json
import traceback
from ansible.module_utils.urls import fetch_url, url_argument_spec
from ansible.module_utils.common.text.converters import to_native
def api_argument_spec():
@ -82,6 +82,10 @@ def api_request(module, endpoint, data=None, method="GET", content_type="applica
json_response = json.loads(content)
return json_response, info
except AttributeError as error:
module.fail_json(msg="Rundeck API request error", exception=to_native(error), execution_info=info)
module.fail_json(
msg=f"Rundeck API request error: {error}", exception=traceback.format_exc(), execution_info=info
)
except ValueError as error:
module.fail_json(msg="No valid JSON response", exception=to_native(error), execution_info=content)
module.fail_json(
msg=f"No valid JSON response: {error}", exception=traceback.format_exc(), execution_info=content
)

View file

@ -361,7 +361,7 @@ def get_vm_prop(module, uuid, prop):
(rc, stdout, stderr) = module.run_command(cmd)
if rc != 0:
module.fail_json(msg=f"Could not perform lookup of {prop} on {uuid}", exception=stderr)
module.fail_json(msg=f"Could not perform lookup of {prop} on {uuid}", rc=rc, stdout=stdout, stderr=stderr)
try:
stdout_json = json.loads(stdout)
@ -384,7 +384,7 @@ def get_vm_uuid(module, alias):
(rc, stdout, stderr) = module.run_command(cmd)
if rc != 0:
module.fail_json(msg=f"Could not retrieve UUID of {alias}", exception=stderr)
module.fail_json(msg=f"Could not retrieve UUID of {alias}", rc=rc, stdout=stdout, stderr=stderr)
# If no VM was found matching the given alias, we get back an empty array.
# That is not an error condition as we might be explicitly checking for its
@ -409,7 +409,7 @@ def get_all_vm_uuids(module):
(rc, stdout, stderr) = module.run_command(cmd)
if rc != 0:
module.fail_json(msg="Failed to get VMs list", exception=stderr)
module.fail_json(msg="Failed to get VMs list", rc=rc, stdout=stdout, stderr=stderr)
try:
stdout_json = json.loads(stdout)
@ -421,11 +421,11 @@ def get_all_vm_uuids(module):
def new_vm(module, uuid, vm_state):
payload_file = create_payload(module, uuid)
(rc, dummy, stderr) = vmadm_create_vm(module, payload_file)
(rc, stdout, stderr) = vmadm_create_vm(module, payload_file)
if rc != 0:
changed = False
module.fail_json(msg="Could not create VM", exception=stderr)
module.fail_json(msg="Could not create VM", rc=rc, stdout=stdout, stderr=stderr)
else:
changed = True
# 'vmadm create' returns all output to stderr...