Closed fortinetps closed 5 months ago
Hi @fortinetps,
Thanks for bringing us the question! I've optimized the code to spend less time when sending GET requests. There will be a new release at the end of this month, the fix will be included in it.
Hi @fortinetps,
The issue was resolved in the previous version. Please upgrade to the latest version and try the module again. I will close the ticket since the issue has been resolved.
Thanks, Jie
I am working with my customer on a playbook which uses fortios_json_generic module, and we noticed that if we use fortios_json_generic module for a GET method API call, the generic module will cost 20 seconds more. please see the following playbook and running result snippets:
playbook snippet:
name: get system ha-statistics with fortios_monitor_fact fortios_monitor_fact: vdom: "" selectors:
name: get system ha-statistics with fortios_json_generic fortios_json_generic: vdom: "" json_generic: method: "GET" path: "/api/v2/monitor/system/ha-statistics" register: info running result: TASK [get system ha-statistics with fortios_monitor_fact] *** Thursday 05 October 2023 01:34:06 +0000 (0:00:00.111) 0:00:00.111 ** ok: [fw-4444]
TASK [get system ha-statistics with fortios_json_generic] *** Thursday 05 October 2023 01:34:07 +0000 (0:00:00.845) 0:00:00.956 ** changed: [fw-4444]
PLAY RECAP ** fw-4444 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Thursday 05 October 2023 01:34:28 +0000 (0:00:20.833) 0:00:21.790 ** =============================================================================== get system ha-statistics with fortios_json_generic ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 20.83s get system ha-statistics with fortios_monitor_fact ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0.85s
I did some debugging and I noticed the issue is within the file: plugins/httpapi/fortios.py on line#234: response, response_data = self.connection.send(url, data, method=method)
When using fortios_monitor_fact module, since this module knows the monitor API call method is always GET, so it doesn't pass anything to data, so the log shows: Sending request: METHOD:GET URL:/api/v2/monitor/system/ha-statistics?access_token=tpzkw9413zwHQm8sfQN37xNsHx4500 DATA:
When using fortios_json_generic module, even though the method is GET and we didn't specify the jsonbody, it always pass "" to the data, here is the log shows, see the DATA here is "", and this is the only difference and this cause extra 20 seconds wait for the same API call. Sending request: METHOD:GET URL:/api/v2/monitor/system/ha-statistics?access_token=tpzkw9413zwHQm8sfQN37xNsHx4500 DATA:""
Here is my env, and both my customer and me are having the same issue,
root@ansible:/workspaces/ansible# ansible-playbook --version ansible-playbook [core 2.13.9] config file = /workspaces/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/lib/python3.8/site-packages/ansible ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections executable location = /usr/local/bin/ansible-playbook python version = 3.8.10 (default, Jun 23 2021, 15:19:53) [GCC 8.3.0] jinja version = 3.1.2 libyaml = True root@ansible:/workspaces/ansible# ansible-galaxy collection list
/root/.ansible/collections/ansible_collections
Collection Version
ansible.netcommon 5.2.0
ansible.posix 1.5.4
ansible.utils 2.11.0 community.general 7.4.0
fortinet.fortimanager 2.2.0
fortinet.fortios 2.3.2
Please let me know if you have any questions.
Thanks!