diff --git a/changelogs/fragments/2065-snmp-facts-timeout.yml b/changelogs/fragments/2065-snmp-facts-timeout.yml new file mode 100644 index 00000000000..0e6a4e54fa5 --- /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 661db46060e..3918a3a1c04 100644 --- a/plugins/modules/net_tools/snmp_facts.py +++ b/plugins/modules/net_tools/snmp_facts.py @@ -67,6 +67,16 @@ - 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 Tree(): 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 Tree(): 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,),