Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

azure_rm_resource fails on patch request #1303

Closed
tomaxsas opened this issue Oct 27, 2023 · 12 comments · Fixed by #1341
Closed

azure_rm_resource fails on patch request #1303

tomaxsas opened this issue Oct 27, 2023 · 12 comments · Fixed by #1341
Labels
has_pr PR fixes have been made medium_priority Medium priority question Further information is requested

Comments

@tomaxsas
Copy link
Contributor

tomaxsas commented Oct 27, 2023

SUMMARY

After azure collection update to 1.18.1 (assume same on 1.18.0) when doing PATCH method with azure_rm_resource on container apps, getting error:

azure_rm_resource.py\", line 405, in exec_module\nAttributeError: 'RequestsTransportResponse' object has no attribute 'context'\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
ISSUE TYPE
  • Bug Report
COMPONENT NAME

azure.azcollection.azure_rm_resource

ANSIBLE VERSION
ansible [core 2.15.5]
  config file = None
  configured module search path = ['/home/ans/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/ans/.local/lib/python3.11/site-packages/ansible
  ansible collection location = /home/ans/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/ans/.local/bin/ansible
  python version = 3.11.4 (main, Aug  9 2023, 00:00:00) [GCC 11.4.1 20230605 (Red Hat 11.4.1-2)] (/usr/bin/python3.11)
  jinja version = 3.1.2
  libyaml = True
COLLECTION VERSION
# /home/ans/.local/lib/python3.11/site-packages/ansible_collections
Collection         Version
------------------ -------
azure.azcollection 1.18.1 
CONFIGURATION
ANSIBLE_PIPELINING(/home/ans/source_code/iac/ansible/ansible.cfg) = True
CALLBACKS_ENABLED(/home/ans/source_code/iac/ansible/ansible.cfg) = ['ansible.posix.profile_tasks']
CONFIG_FILE() = /home/ans/source_code/iac/ansible/ansible.cfg
HOST_KEY_CHECKING(/home/ans/source_code/iac/ansible/ansible.cfg) = False
OS / ENVIRONMENT

RHEL 9
Python 3.11
Azure Container Apps

STEPS TO REPRODUCE
    - name: Add new revisions to management container app
      azure.azcollection.azure_rm_resource:
        api_version: "2023-05-01"
        resource_group: "resgroup"
        subscription_id: "id"
        method: PATCH
        provider: app
        resource_type: containerApps
        resource_name: "test-app"
        body: "{{ azure_c_app_cfg.response[0].properties.template) }}"
EXPECTED RESULTS

Task suceeds as in 1.17.0 version of collection

ACTUAL RESULTS

Getting following error

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: AttributeError: 'RequestsTransportResponse' object has no attribute 'context'
failed: [localhost] (item=1) => {"ansible_index_var": "ix", "ansible_loop_var": "item", "attempts": 5, "changed": false, "failed_when_result": true, "item": 1, "ix": 1, "module_stderr": "Traceback (most recent call last):\n  File \"/tmp/ansible_azure.azcollection.azure_rm_resource_payload_19xj6dcy/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py\", line 403, in exec_module\n  File \"/usr/local/lib/python3.10/json/__init__.py\", line 346, in loads\n    return _default_decoder.decode(s)\n  File \"/usr/local/lib/python3.10/json/decoder.py\", line 337, in decode\n    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n  File \"/usr/local/lib/python3.10/json/decoder.py\", line 355, in raw_decode\n    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\njson.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"<stdin>\", line 107, in <module>\n  File \"<stdin>\", line 99, in _ansiballz_main\n  File \"<stdin>\", line 47, in invoke_module\n  File \"/usr/local/lib/python3.10/runpy.py\", line 224, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/local/lib/python3.10/runpy.py\", line 96, in _run_module_code\n    _run_code(code, mod_globals, init_globals,\n  File \"/usr/local/lib/python3.10/runpy.py\", line 86, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_azure.azcollection.azure_rm_resource_payload_19xj6dcy/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py\", line 420, in <module>\n  File \"/tmp/ansible_azure.azcollection.azure_rm_resource_payload_19xj6dcy/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py\", line 416, in main\n  File \"/tmp/ansible_azure.azcollection.azure_rm_resource_payload_19xj6dcy/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py\", line 305, in __init__\n  File \"/tmp/ansible_azure.azcollection.azure_rm_resource_payload_19xj6dcy/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/module_utils/azure_rm_common.py\", line 461, in __init__\n  File \"/tmp/ansible_azure.azcollection.azure_rm_resource_payload_19xj6dcy/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py\", line 405, in exec_module\nAttributeError: 'RequestsTransportResponse' object has no attribute 'context'\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
@Fred-sun
Copy link
Collaborator

@tomaxsas You should this error has been a54f50e repair, Could you try again? In addition, I made a judgment on the return value again PR #1307 , can you update this branch to try? Thank you!

@Fred-sun Fred-sun added question Further information is requested medium_priority Medium priority work in In trying to solve, or in working with contributors labels Oct 31, 2023
@tomaxsas
Copy link
Contributor Author

tomaxsas commented Nov 7, 2023

same error with code from your PR. tried 1.19.0 also same error.

@Fred-sun
Copy link
Collaborator

Fred-sun commented Nov 7, 2023

@tomaxsas Thank you for your reply, I am looking at this question

@Fred-sun
Copy link
Collaborator

Fred-sun commented Nov 9, 2023

@tomaxsas I have repeatedly tested it locally, and no matter whether the self.method is PATCH or PUT, the results returned are fine. Thank you!

 self.method = PATCH
response value: :<RequestsTransportResponse: 200 OK, Content-Type: application/json; charset=utf-8>

@tomaxsas
Copy link
Contributor Author

tomaxsas commented Nov 9, 2023

getting new error this time

TASK [Add new revisions to container app] ****************************************************************************************************************
task path: /home/ansible/source_code/anstest/test.yml:20
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: ansible
<127.0.0.1> EXEC /bin/sh -c 'echo ~ansible && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /home/ansible/.ansible/tmp `"&& mkdir "` echo /home/ansible/.ansible/tmp/ansible-tmp-1699535954.9892945-25059-189988069364422 `" && echo ansible-tmp-1699535954.9892945-25059-189988069364422="` echo /home/ansible/.ansible/tmp/ansible-tmp-1699535954.9892945-25059-189988069364422 `" ) && sleep 0'
Using module file /home/ansible/.ansible/collections/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py
<127.0.0.1> PUT /home/ansible/.ansible/tmp/ansible-local-24996ap_iqtg4/tmpsy_aiqan TO /home/ansible/.ansible/tmp/ansible-tmp-1699535954.9892945-25059-189988069364422/AnsiballZ_azure_rm_resource.py
<127.0.0.1> EXEC /bin/sh -c 'chmod u+x /home/ansible/.ansible/tmp/ansible-tmp-1699535954.9892945-25059-189988069364422/ /home/ansible/.ansible/tmp/ansible-tmp-1699535954.9892945-25059-189988069364422/AnsiballZ_azure_rm_resource.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python3.11 /home/ansible/.ansible/tmp/ansible-tmp-1699535954.9892945-25059-189988069364422/AnsiballZ_azure_rm_resource.py && sleep 0'
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /home/ansible/.ansible/tmp/ansible-tmp-1699535954.9892945-25059-189988069364422/ > /dev/null 2>&1 && sleep 0'
The full traceback is:
Traceback (most recent call last):
  File "/home/ansible/.ansible/tmp/ansible-tmp-1699535954.9892945-25059-189988069364422/AnsiballZ_azure_rm_resource.py", line 107, in <module>
    _ansiballz_main()
  File "/home/ansible/.ansible/tmp/ansible-tmp-1699535954.9892945-25059-189988069364422/AnsiballZ_azure_rm_resource.py", line 99, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File "/home/ansible/.ansible/tmp/ansible-tmp-1699535954.9892945-25059-189988069364422/AnsiballZ_azure_rm_resource.py", line 47, in invoke_module
    runpy.run_module(mod_name='ansible_collections.azure.azcollection.plugins.modules.azure_rm_resource', init_globals=dict(_module_fqn='ansible_collections.azure.azcollection.plugins.modules.azure_rm_resource', _modlib_path=modlib_path),
  File "<frozen runpy>", line 226, in run_module
  File "<frozen runpy>", line 98, in _run_module_code
  File "<frozen runpy>", line 88, in _run_code
  File "/tmp/ansible_azure.azcollection.azure_rm_resource_payload_lglnghnv/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py", line 422, in <module>
  File "/tmp/ansible_azure.azcollection.azure_rm_resource_payload_lglnghnv/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py", line 418, in main
  File "/tmp/ansible_azure.azcollection.azure_rm_resource_payload_lglnghnv/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py", line 305, in __init__
  File "/tmp/ansible_azure.azcollection.azure_rm_resource_payload_lglnghnv/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/module_utils/azure_rm_common.py", line 452, in __init__
  File "/tmp/ansible_azure.azcollection.azure_rm_resource_payload_lglnghnv/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py", line 403, in exec_module
  File "/usr/lib64/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
fatal: [localhost]: FAILED! => {
    "changed": false,
    "failed_when_result": true,
    "module_stderr": "Traceback (most recent call last):\n  File \"/home/ansible/.ansible/tmp/ansible-tmp-1699535954.9892945-25059-189988069364422/AnsiballZ_azure_rm_resource.py\", line 107, in <module>\n    _ansiballz_main()\n  File \"/home/ansible/.ansible/tmp/ansible-tmp-1699535954.9892945-25059-189988069364422/AnsiballZ_azure_rm_resource.py\", line 99, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/home/ansible/.ansible/tmp/ansible-tmp-1699535954.9892945-25059-189988069364422/AnsiballZ_azure_rm_resource.py\", line 47, in invoke_module\n    runpy.run_module(mod_name='ansible_collections.azure.azcollection.plugins.modules.azure_rm_resource', init_globals=dict(_module_fqn='ansible_collections.azure.azcollection.plugins.modules.azure_rm_resource', _modlib_path=modlib_path),\n  File \"<frozen runpy>\", line 226, in run_module\n  File \"<frozen runpy>\", line 98, in _run_module_code\n  File \"<frozen runpy>\", line 88, in _run_code\n  File \"/tmp/ansible_azure.azcollection.azure_rm_resource_payload_lglnghnv/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py\", line 422, in <module>\n  File \"/tmp/ansible_azure.azcollection.azure_rm_resource_payload_lglnghnv/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py\", line 418, in main\n  File \"/tmp/ansible_azure.azcollection.azure_rm_resource_payload_lglnghnv/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py\", line 305, in __init__\n  File \"/tmp/ansible_azure.azcollection.azure_rm_resource_payload_lglnghnv/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/module_utils/azure_rm_common.py\", line 452, in __init__\n  File \"/tmp/ansible_azure.azcollection.azure_rm_resource_payload_lglnghnv/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py\", line 403, in exec_module\n  File \"/usr/lib64/python3.11/json/__init__.py\", line 346, in loads\n    return _default_decoder.decode(s)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib64/python3.11/json/decoder.py\", line 337, in decode\n    obj, end = self.raw_decode(s, idx=_w(s, 0).end())\n               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib64/python3.11/json/decoder.py\", line 355, in raw_decode\n    raise JSONDecodeError(\"Expecting value\", s, err.value) from None\njson.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}

@Fred-sun
Copy link
Collaborator

@tomaxsas Could you please help provide the test you have completed? You can hide information that can't be displayed and will help solve the current problem?
Another, I repeatedly tested it locally and found that azure_rm_resource.py was a good way to deploy new resources. Thank you!

@Fred-sun
Copy link
Collaborator

same error with code from your PR. tried 1.19.0 also same error.

Is this how you update to the latest version? ---- ansible-galaxy collection install azure.azcollection --force

@tomaxsas
Copy link
Contributor Author

@Fred-sun
Copy link
Collaborator

@tomaxsas Ansible and Azure cli use different methods, its return value format may be different, because I passed the selfie. method = PATCH test, returned status_code=200, and is a json format sequence. Thank you!

@Fred-sun
Copy link
Collaborator

@tomaxsas And please provide your environment information (pip3 list) and all the use cases, will help solve the current problem, thank you!

@tomaxsas
Copy link
Contributor Author

Well i know, but that doesn't change the fact that before migration it was working properly. Also azure cli and ansible uses same rest API. Sure if azure rest API would return json on 202 response there would be no problem.
also i have changed i azure_rm_resource.py:

                if hasattr(response, 'body'):
                    try: 
                        response = json.loads(response.body())
                    except Exception:
                        response = response.body()

and task suceeds so not sure how pip3 list would help as problem is clear.

@vlenoci
Copy link

vlenoci commented Nov 17, 2023

Hello there, this same error happens also when method is POST.
I was trying to execute OS Update assessment command:

azure.azcollection.azure_rm_resource:
    method: POST
    subscription_id: "test"
    resource_group: "test"
    resource_name: "test"
    provider: HybridCompute
    resource_type: machines
    subresource: 
      - type: assessPatches
    api_version: "2020-08-15-preview"

and I retrieve the following error:

The full traceback is:
Traceback (most recent call last):
  File "/tmp/ansible_azure.azcollection.azure_rm_resource_payload_rkh7ztva/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py", line 420, in exec_module
  File "/usr/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.10/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/admin/.ansible/tmp/ansible-tmp-1700237519.702049-21638-122390165383615/AnsiballZ_azure_rm_resource.py", line 107, in <module>
    _ansiballz_main()
  File "/home/admin/.ansible/tmp/ansible-tmp-1700237519.702049-21638-122390165383615/AnsiballZ_azure_rm_resource.py", line 99, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File "/home/admin/.ansible/tmp/ansible-tmp-1700237519.702049-21638-122390165383615/AnsiballZ_azure_rm_resource.py", line 47, in invoke_module
    runpy.run_module(mod_name='ansible_collections.azure.azcollection.plugins.modules.azure_rm_resource', init_globals=dict(_module_fqn='ansible_collections.azure.azcollection.plugins.modules.azure_rm_resource', _modlib_path=modlib_path),
  File "/usr/lib/python3.10/runpy.py", line 224, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File "/usr/lib/python3.10/runpy.py", line 96, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/tmp/ansible_azure.azcollection.azure_rm_resource_payload_rkh7ztva/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py", line 437, in <module>
  File "/tmp/ansible_azure.azcollection.azure_rm_resource_payload_rkh7ztva/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py", line 433, in main
  File "/tmp/ansible_azure.azcollection.azure_rm_resource_payload_rkh7ztva/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py", line 322, in __init__
  File "/tmp/ansible_azure.azcollection.azure_rm_resource_payload_rkh7ztva/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/module_utils/azure_rm_common.py", line 452, in __init__
  File "/tmp/ansible_azure.azcollection.azure_rm_resource_payload_rkh7ztva/ansible_azure.azcollection.azure_rm_resource_payload.zip/ansible_collections/azure/azcollection/plugins/modules/azure_rm_resource.py", line 422, in exec_module
AttributeError: 'RequestsTransportResponse' object has no attribute 'context'

Note that the command has been executed, but I suspect something went wrong on the response result.

@Fred-sun Fred-sun added has_pr PR fixes have been made and removed work in In trying to solve, or in working with contributors labels Nov 23, 2023
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
has_pr PR fixes have been made medium_priority Medium priority question Further information is requested
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants