From bf9bcd9bb4fdec726c31c93f4169221e1017bb16 Mon Sep 17 00:00:00 2001 From: "patchback[bot]" <45432694+patchback[bot]@users.noreply.github.com> Date: Sun, 21 Mar 2021 11:52:40 +0100 Subject: [PATCH] snmp_facts - added timeout and retries params to module (#2065) (#2073) * added timeout and retries params to module * added changelog fragment * Update plugins/modules/net_tools/snmp_facts.py Co-authored-by: Felix Fontein * Update plugins/modules/net_tools/snmp_facts.py Co-authored-by: Felix Fontein * removed default for retries per suggestion in PR * Update plugins/modules/net_tools/snmp_facts.py Co-authored-by: Felix Fontein Co-authored-by: Felix Fontein (cherry picked from commit c147d2fb98fd8443096667ae56d667a0f1541138) Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> --- .../fragments/2065-snmp-facts-timeout.yml | 2 ++ plugins/modules/net_tools/snmp_facts.py | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/2065-snmp-facts-timeout.yml diff --git a/changelogs/fragments/2065-snmp-facts-timeout.yml b/changelogs/fragments/2065-snmp-facts-timeout.yml new file mode 100644 index 0000000000..0e6a4e54fa --- /dev/null +++ b/changelogs/fragments/2065-snmp-facts-timeout.yml @@ -0,0 +1,2 @@ +minor_changes: + - snmp_facts - added parameters ``timeout`` and ``retries`` to module (https://github.com/ansible-collections/community.general/issues/980). diff --git a/plugins/modules/net_tools/snmp_facts.py b/plugins/modules/net_tools/snmp_facts.py index 661db46060..3918a3a1c0 100644 --- a/plugins/modules/net_tools/snmp_facts.py +++ b/plugins/modules/net_tools/snmp_facts.py @@ -67,6 +67,16 @@ options: - Encryption key. - Required if I(level) is C(authPriv). type: str + timeout: + description: + - Response timeout in seconds. + type: int + version_added: 2.3.0 + retries: + description: + - Maximum number of request retries, 0 retries means just a single request. + type: int + version_added: 2.3.0 ''' EXAMPLES = r''' @@ -271,6 +281,8 @@ def main(): privacy=dict(type='str', choices=['aes', 'des']), authkey=dict(type='str', no_log=True), privkey=dict(type='str', no_log=True), + timeout=dict(type='int'), + retries=dict(type='int'), ), required_together=( ['username', 'level', 'integrity', 'authkey'], @@ -285,6 +297,7 @@ def main(): module.fail_json(msg=missing_required_lib('pysnmp'), exception=PYSNMP_IMP_ERR) cmdGen = cmdgen.CommandGenerator() + transport_opts = dict((k, m_args[k]) for k in ('timeout', 'retries') if m_args[k] is not None) # Verify that we receive a community when using snmp v2 if m_args['version'] in ("v2", "v2c"): @@ -333,7 +346,7 @@ def main(): errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd( snmp_auth, - cmdgen.UdpTransportTarget((m_args['host'], 161)), + cmdgen.UdpTransportTarget((m_args['host'], 161), **transport_opts), cmdgen.MibVariable(p.sysDescr,), cmdgen.MibVariable(p.sysObjectId,), cmdgen.MibVariable(p.sysUpTime,), @@ -364,7 +377,7 @@ def main(): errorIndication, errorStatus, errorIndex, varTable = cmdGen.nextCmd( snmp_auth, - cmdgen.UdpTransportTarget((m_args['host'], 161)), + cmdgen.UdpTransportTarget((m_args['host'], 161), **transport_opts), cmdgen.MibVariable(p.ifIndex,), cmdgen.MibVariable(p.ifDescr,), cmdgen.MibVariable(p.ifMtu,),