PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/napalm_snmp.py |
""" NAPALM SNMP =========== Manages SNMP on network devices. :codeauthor: Mircea Ulinic <ping@mirceaulinic.net> :maturity: new :depends: napalm :platform: unix Dependencies ------------ - :mod:`NAPALM proxy minion <salt.proxy.napalm>` - :mod:`NET basic features <salt.modules.napalm_network>` .. seealso:: :mod:`SNMP configuration management state <salt.states.netsnmp>` .. versionadded:: 2016.11.0 """ import logging # import NAPALM utils import salt.utils.napalm from salt.utils.napalm import proxy_napalm_wrap log = logging.getLogger(__file__) # ---------------------------------------------------------------------------------------------------------------------- # module properties # ---------------------------------------------------------------------------------------------------------------------- __virtualname__ = "snmp" __proxyenabled__ = ["napalm"] # uses NAPALM-based proxy to interact with network devices __virtual_aliases__ = ("napalm_snmp",) # ---------------------------------------------------------------------------------------------------------------------- # property functions # ---------------------------------------------------------------------------------------------------------------------- def __virtual__(): """ NAPALM library must be installed for this module to work and run in a (proxy) minion. """ return salt.utils.napalm.virtual(__opts__, __virtualname__, __file__) # ---------------------------------------------------------------------------------------------------------------------- # helper functions -- will not be exported # ---------------------------------------------------------------------------------------------------------------------- # ---------------------------------------------------------------------------------------------------------------------- # callable functions # ---------------------------------------------------------------------------------------------------------------------- @proxy_napalm_wrap def config(**kwargs): # pylint: disable=unused-argument """ Returns the SNMP configuration CLI Example: .. code-block:: bash salt '*' snmp.config """ return salt.utils.napalm.call( napalm_device, # pylint: disable=undefined-variable "get_snmp_information", **{} ) @proxy_napalm_wrap def remove_config( chassis_id=None, community=None, contact=None, location=None, test=False, commit=True, **kwargs ): # pylint: disable=unused-argument """ Removes a configuration element from the SNMP configuration. :param chassis_id: (optional) Chassis ID :param community: (optional) A dictionary having the following optional keys: - acl (if any policy / ACL need to be set) - mode: rw or ro. Default: ro :param contact: Contact details :param location: Location :param test: Dry run? If set as True, will apply the config, discard and return the changes. Default: False :param commit: Commit? (default: True) Sometimes it is not needed to commit the config immediately after loading the changes. E.g.: a state loads a couple of parts (add / remove / update) and would not be optimal to commit after each operation. Also, from the CLI when the user needs to apply the similar changes before committing, can specify commit=False and will not discard the config. :raise MergeConfigException: If there is an error on the configuration sent. :return: A dictionary having the following keys: - result (bool): if the config was applied successfully. It is `False` only in case of failure. In case there are no changes to be applied and successfully performs all operations it is still `True` and so will be the `already_configured` flag (example below) - comment (str): a message for the user - already_configured (bool): flag to check if there were no changes applied - diff (str): returns the config changes applied CLI Example: .. code-block:: bash salt '*' snmp.remove_config community='abcd' """ dic = {"template_name": "delete_snmp_config", "test": test, "commit": commit} if chassis_id: dic["chassis_id"] = chassis_id if community: dic["community"] = community if contact: dic["contact"] = contact if location: dic["location"] = location dic["inherit_napalm_device"] = napalm_device # pylint: disable=undefined-variable return __salt__["net.load_template"](**dic) @proxy_napalm_wrap def update_config( chassis_id=None, community=None, contact=None, location=None, test=False, commit=True, **kwargs ): # pylint: disable=unused-argument """ Updates the SNMP configuration. :param chassis_id: (optional) Chassis ID :param community: (optional) A dictionary having the following optional keys: - acl (if any policy / ACL need to be set) - mode: rw or ro. Default: ro :param contact: Contact details :param location: Location :param test: Dry run? If set as True, will apply the config, discard and return the changes. Default: False :param commit: Commit? (default: True) Sometimes it is not needed to commit the config immediately after loading the changes. E.g.: a state loads a couple of parts (add / remove / update) and would not be optimal to commit after each operation. Also, from the CLI when the user needs to apply the similar changes before committing, can specify commit=False and will not discard the config. :raise MergeConfigException: If there is an error on the configuration sent. :return a dictionary having the following keys: - result (bool): if the config was applied successfully. It is `False` only in case of failure. In case there are no changes to be applied and successfully performs all operations it is still `True` and so will be the `already_configured` flag (example below) - comment (str): a message for the user - already_configured (bool): flag to check if there were no changes applied - diff (str): returns the config changes applied CLI Example: .. code-block:: bash salt 'edge01.lon01' snmp.update_config location="Greenwich, UK" test=True Output example (for the CLI example above): .. code-block:: yaml edge01.lon01: ---------- already_configured: False comment: Configuration discarded. diff: [edit snmp] - location "London, UK"; + location "Greenwich, UK"; result: True """ dic = {"template_name": "snmp_config", "test": test, "commit": commit} if chassis_id: dic["chassis_id"] = chassis_id if community: dic["community"] = community if contact: dic["contact"] = contact if location: dic["location"] = location dic["inherit_napalm_device"] = napalm_device # pylint: disable=undefined-variable return __salt__["net.load_template"](**dic)