docs: def get_auth_data(cls, instance):
          '''
          Generate a Security Parameters object based on the instance's
          configuration.
          See http://pysnmp.sourceforge.net/docs/current/security-configuration.html
          '''
          if "community_string" in instance:
              # SNMP v1 - SNMP v2
  
              # See http://pysnmp.sourceforge.net/docs/current/security-configuration.html
              if int(instance.get("snmp_version", 2)) == 1:
                  return hlapi.CommunityData(instance['community_string'], mpModel=0)
              return hlapi.CommunityData(instance['community_string'], mpModel=1)
  
          elif "user" in instance:
              # SNMP v3
              user = instance["user"]
              auth_key = None
              priv_key = None
              auth_protocol = None
              priv_protocol = None
              if "authKey" in instance:
                  auth_key = instance["authKey"]
                  auth_protocol = hlapi.usmHMACMD5AuthProtocol
              if "privKey" in instance:
                  priv_key = instance["privKey"]
                  auth_protocol = hlapi.usmHMACMD5AuthProtocol
                  priv_protocol = hlapi.usmDESPrivProtocol
              if "authProtocol" in instance:
                  auth_protocol = getattr(hlapi, instance["authProtocol"])
              if "privProtocol" in instance:
                  priv_protocol = getattr(hlapi, instance["privProtocol"])
              return hlapi.UsmUserData(user, auth_key, priv_key, auth_protocol, priv_protocol)
          else:
              raise Exception("An authentication method needs to be provided")