ansible-junos-stdlib icon indicating copy to clipboard operation
ansible-junos-stdlib copied to clipboard

Ansible RPC error with junipe.device.rpc module

Open aravindhananbarasu opened this issue 1 year ago • 1 comments

When performing RPC calls that return a value of type boolean, we are seeing an error being returned. This only happens if the connection type is using pyez which is persistent.

We are using the below variables: [juniper:vars] ansible_connection=juniper.device.pyez ansible_network_os=juniper.device.junos >>>> We didn’t get any issues when we were using Juniper.junos here. But we are using juniper.device as it’s depreciated.

An example of a play is shown below:

  • name: Clear logs for test-1 when: inventory_hostname == 'test301-rtr-6' juniper.device.rpc: rpc:
  • clear-log kwarg: filename: messages

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ansible.module_utils.connection.ConnectionError: Type 'bool' cannot be serialized. fatal: [test301-rtr-6]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n File "/home/ext.paul.herbert/.ansible/tmp/ansible-local-1408nir1vvrb/ansible-tmp-1684838319.1980417-1522-87497565430803/AnsiballZ_rpc.py", line 107, in \n _ansiballz_main()\n File "/home/ext.paul.herbert/.ansible/tmp/ansible-local-1408nir1vvrb/ansible-tmp-1684838319.1980417-1522-87497565430803/AnsiballZ_rpc.py", line 99, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File "/home/ext.paul.herbert/.ansible/tmp/ansible-local-1408nir1vvrb/ansible-tmp-1684838319.1980417-1522-87497565430803/AnsiballZ_rpc.py", line 47, in invoke_module\n runpy.run_module(mod_name='ansible_collections.juniper.device.plugins.modules.rpc', init_globals=dict(_module_fqn='ansible_collections.juniper.device.plugins.modules.rpc', _modlib_path=modlib_path),\n File "/usr/lib/python3.8/runpy.py", line 205, in run_module\n return _run_module_code(code, init_globals, run_name, mod_spec)\n File "/usr/lib/python3.8/runpy.py", line 95, in _run_module_code\n _run_code(code, mod_globals, init_globals,\n File "/usr/lib/python3.8/runpy.py", line 85, in _run_code\n exec(code, run_globals)\n File "/tmp/ansible_juniper.device.rpc_payload_3e8q3l8g/ansible_juniper.device.rpc_payload.zip/ansible_collections/juniper/device/plugins/modules/rpc.py", line 636, in \n File "/tmp/ansible_juniper.device.rpc_payload_3e8q3l8g/ansible_juniper.device.rpc_payload.zip/ansible_collections/juniper/device/plugins/modules/rpc.py", line 556, in main\n File "/tmp/ansible_juniper.device.rpc_payload_3e8q3l8g/ansible_juniper.device.rpc_payload.zip/ansible_collections/juniper/device/plugins/module_utils/juniper_junos_common.py", line 1719, in get_rpc\n File "/tmp/ansible_juniper.device.rpc_payload_3e8q3l8g/ansible_juniper.device.rpc_payload.zip/ansible/module_utils/connection.py", line 200, in rpc\nansible.module_utils.connection.ConnectionError: Type 'bool' cannot be serialized.\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}


(venv) root@nms5-salt-master-b:~/ansible_galaxy_release_v102_final_test3/ansible-junos-stdlib/tests# vi pb.juniper_junos_rpc.yml

  • name: Test juniper.device.rpc module hosts: all connection: juniper.device.pyez gather_facts: no collections:

    • juniper.device

    tasks: #################

    • name: "Execute single RPC get-software-information without any kwargs" rpc: rpcs: - "clear-log" kwargs: - filename: "messages" formats: "text" register: test1 ignore_errors: True tags: [ test1 ]

    • name: Print response debug: var: test1

(venv) root@nms5-salt-master-b:~/ansible_galaxy_release_v102_final_test3/ansible-junos-stdlib/tests# ansible-playbook pb.juniper_junos_rpc.yml

PLAY [Test juniper.device.rpc module] *************************************************************************************************************************************

TASK [Execute single RPC get-software-information without any kwargs] ***************************************************************************************************** An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ansible.module_utils.connection.ConnectionError: Type 'bool' cannot be serialized. fatal: [test]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n File "/root/.ansible/tmp/ansible-local-5965ors8akzp/ansible-tmp-1687413300.0735672-5970-231951512970846/AnsiballZ_rpc.py", line 107, in \n _ansiballz_main()\n File "/root/.ansible/tmp/ansible-local-5965ors8akzp/ansible-tmp-1687413300.0735672-5970-231951512970846/AnsiballZ_rpc.py", line 99, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File "/root/.ansible/tmp/ansible-local-5965ors8akzp/ansible-tmp-1687413300.0735672-5970-231951512970846/AnsiballZ_rpc.py", line 47, in invoke_module\n runpy.run_module(mod_name='ansible_collections.juniper.device.plugins.modules.rpc', init_globals=dict(_module_fqn='ansible_collections.juniper.device.plugins.modules.rpc', _modlib_path=modlib_path),\n File "/usr/local/lib/python3.9/runpy.py", line 210, in run_module\n return _run_module_code(code, init_globals, run_name, mod_spec)\n File "/usr/local/lib/python3.9/runpy.py", line 97, in _run_module_code\n _run_code(code, mod_globals, init_globals,\n File "/usr/local/lib/python3.9/runpy.py", line 87, in _run_code\n exec(code, run_globals)\n File "/tmp/ansible_rpc_payload_pobj_xj7/ansible_rpc_payload.zip/ansible_collections/juniper/device/plugins/modules/rpc.py", line 631, in \n File "/tmp/ansible_rpc_payload_pobj_xj7/ansible_rpc_payload.zip/ansible_collections/juniper/device/plugins/modules/rpc.py", line 551, in main\n File "/tmp/ansible_rpc_payload_pobj_xj7/ansible_rpc_payload.zip/ansible_collections/juniper/device/plugins/module_utils/juniper_junos_common.py", line 1759, in get_rpc\n File "/tmp/ansible_rpc_payload_pobj_xj7/ansible_rpc_payload.zip/ansible/module_utils/connection.py", line 200, in rpc\nansible.module_utils.connection.ConnectionError: Type 'bool' cannot be serialized.\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1} ...ignoring

TASK [Print response] ***************************************************************************************************************************************************** ok: [test] => { "test1": { "changed": false, "exception": "Traceback (most recent call last):\n File "/root/.ansible/tmp/ansible-local-5965ors8akzp/ansible-tmp-1687413300.0735672-5970-231951512970846/AnsiballZ_rpc.py", line 107, in \n _ansiballz_main()\n File "/root/.ansible/tmp/ansible-local-5965ors8akzp/ansible-tmp-1687413300.0735672-5970-231951512970846/AnsiballZ_rpc.py", line 99, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File "/root/.ansible/tmp/ansible-local-5965ors8akzp/ansible-tmp-1687413300.0735672-5970-231951512970846/AnsiballZ_rpc.py", line 47, in invoke_module\n runpy.run_module(mod_name='ansible_collections.juniper.device.plugins.modules.rpc', init_globals=dict(_module_fqn='ansible_collections.juniper.device.plugins.modules.rpc', _modlib_path=modlib_path),\n File "/usr/local/lib/python3.9/runpy.py", line 210, in run_module\n return _run_module_code(code, init_globals, run_name, mod_spec)\n File "/usr/local/lib/python3.9/runpy.py", line 97, in _run_module_code\n _run_code(code, mod_globals, init_globals,\n File "/usr/local/lib/python3.9/runpy.py", line 87, in _run_code\n exec(code, run_globals)\n File "/tmp/ansible_rpc_payload_pobj_xj7/ansible_rpc_payload.zip/ansible_collections/juniper/device/plugins/modules/rpc.py", line 631, in \n File "/tmp/ansible_rpc_payload_pobj_xj7/ansible_rpc_payload.zip/ansible_collections/juniper/device/plugins/modules/rpc.py", line 551, in main\n File "/tmp/ansible_rpc_payload_pobj_xj7/ansible_rpc_payload.zip/ansible_collections/juniper/device/plugins/module_utils/juniper_junos_common.py", line 1759, in get_rpc\n File "/tmp/ansible_rpc_payload_pobj_xj7/ansible_rpc_payload.zip/ansible/module_utils/connection.py", line 200, in rpc\nansible.module_utils.connection.ConnectionError: Type 'bool' cannot be serialized.\n", "failed": true, "module_stderr": "Traceback (most recent call last):\n File "/root/.ansible/tmp/ansible-local-5965ors8akzp/ansible-tmp-1687413300.0735672-5970-231951512970846/AnsiballZ_rpc.py", line 107, in \n _ansiballz_main()\n File "/root/.ansible/tmp/ansible-local-5965ors8akzp/ansible-tmp-1687413300.0735672-5970-231951512970846/AnsiballZ_rpc.py", line 99, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File "/root/.ansible/tmp/ansible-local-5965ors8akzp/ansible-tmp-1687413300.0735672-5970-231951512970846/AnsiballZ_rpc.py", line 47, in invoke_module\n runpy.run_module(mod_name='ansible_collections.juniper.device.plugins.modules.rpc', init_globals=dict(_module_fqn='ansible_collections.juniper.device.plugins.modules.rpc', _modlib_path=modlib_path),\n File "/usr/local/lib/python3.9/runpy.py", line 210, in run_module\n return _run_module_code(code, init_globals, run_name, mod_spec)\n File "/usr/local/lib/python3.9/runpy.py", line 97, in _run_module_code\n _run_code(code, mod_globals, init_globals,\n File "/usr/local/lib/python3.9/runpy.py", line 87, in _run_code\n exec(code, run_globals)\n File "/tmp/ansible_rpc_payload_pobj_xj7/ansible_rpc_payload.zip/ansible_collections/juniper/device/plugins/modules/rpc.py", line 631, in \n File "/tmp/ansible_rpc_payload_pobj_xj7/ansible_rpc_payload.zip/ansible_collections/juniper/device/plugins/modules/rpc.py", line 551, in main\n File "/tmp/ansible_rpc_payload_pobj_xj7/ansible_rpc_payload.zip/ansible_collections/juniper/device/plugins/module_utils/juniper_junos_common.py", line 1759, in get_rpc\n File "/tmp/ansible_rpc_payload_pobj_xj7/ansible_rpc_payload.zip/ansible/module_utils/connection.py", line 200, in rpc\nansible.module_utils.connection.ConnectionError: Type 'bool' cannot be serialized.\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1 } }

PLAY RECAP **************************************************************************************************************************************************************** test : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=1

(venv) root@nms5-salt-master-b:~/ansible_galaxy_release_v102_final_test3/ansible-junos-stdlib/tests# vi pb.juniper_junos_rpc.yml

  • name: Test juniper.device.rpc module hosts: all connection: local
    gather_facts: no collections:

    • juniper.device

    tasks: #################

    • name: "Execute single RPC get-software-information without any kwargs" rpc: rpcs: - "clear-log" kwargs: - filename: "messages" formats: "text" register: test1 ignore_errors: True tags: [ test1 ]

    • name: Print response debug: var: test1

(venv) root@nms5-salt-master-b:~/ansible_galaxy_release_v102_final_test3/ansible-junos-stdlib/tests# ansible-playbook pb.juniper_junos_rpc.yml

PLAY [Test juniper.device.rpc module] *************************************************************************************************************************************

TASK [Execute single RPC get-software-information without any kwargs] ***************************************************************************************************** ok: [test]

TASK [Print response] ***************************************************************************************************************************************************** ok: [test] => { "test1": { "attrs": null, "changed": false, "failed": false, "format": "text", "kwargs": { "filename": "messages" }, "msg": "The RPC executed successfully.", "rpc": "clear-log", "stdout": "", "stdout_lines": [] } }

PLAY RECAP **************************************************************************************************************************************************************** test : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

aravindhananbarasu avatar Jun 22 '23 15:06 aravindhananbarasu