salt.modules.napalm module

NAPALM helpers

Helpers for the NAPALM modules.

New in version 2017.7.0.

salt.modules.napalm.alive(*args, **kwargs)

Returns the alive status of the connection layer. The output is a dictionary under the usual dictionary output of the NAPALM modules.

CLI Example:

salt '*' napalm.alive

Output Example:

result: True
out:
    is_alive: False
comment: ''
salt.modules.napalm.call(*args, **kwargs)

Execute arbitrary methods from the NAPALM library. To see the expected output, please consult the NAPALM documentation.

Note

This feature is not recommended to be used in production. It should be used for testing only!

CLI Example:

salt '*' napalm.call get_lldp_neighbors
salt '*' napalm.call get_firewall_policies
salt '*' napalm.call get_bgp_config group='my-group'
salt.modules.napalm.compliance_report(*args, **kwargs)

Return the compliance report.

filepath

The absolute path to the validation file.

Changed in version Fluorine.

Beginning with release codename Fluorine, this function has been enhanced, to be able to leverage the multi-engine template rendering of Salt, besides the possibility to retrieve the file source from remote systems, the URL schemes supported being:

  • salt://
  • http:// and https://
  • ftp://
  • s3://
  • swift:/

Or on the local file system (on the Minion).

Note

The rendering result does not necessarily need to be YAML, instead it can be any format interpreted by Salt's rendering pipeline (including pure Python).

string

Changed in version Fluorine.

The compliance report send as inline string, to be used as the file to send through the renderer system. Note, not all renderer modules can work with strings; the 'py' renderer requires a file, for example.

renderer: jinja|yaml

Changed in version Fluorine.

The renderer pipe to send the file through; this is overridden by a "she-bang" at the top of the file.

kwargs

Changed in version Fluorine.

Keyword args to pass to Salt's compile_template() function.

CLI Example:

salt '*' napalm.compliance_report ~/validate.yml
salt '*' napalm.compliance_report salt://path/to/validator.sls

Validation File Example (pure YAML):

- get_facts:
    os_version: 4.17

- get_interfaces_ip:
    Management1:
      ipv4:
        10.0.2.14:
          prefix_length: 24
        _mode: strict

Validation File Example (as Jinja + YAML):

- get_facts:
    os_version: {{ grains.version }}
- get_interfaces_ip:
    Loopback0:
      ipv4:
        {{ grains.lo0.ipv4 }}:
          prefix_length: 24
        _mode: strict
- get_bgp_neighbors: {{ pillar.bgp.neighbors }}

Output Example:

device1:
    ----------
    comment:
    out:
        ----------
        complies:
            False
        get_facts:
            ----------
            complies:
                False
            extra:
            missing:
            present:
                ----------
                os_version:
                    ----------
                    actual_value:
                        15.1F6-S1.4
                    complies:
                        False
                    nested:
                        False
        get_interfaces_ip:
            ----------
            complies:
                False
            extra:
            missing:
                - Management1
            present:
                ----------
        skipped:
    result:
        True
salt.modules.napalm.junos_call(*args, **kwargs)

New in version Fluorine.

Execute an arbitrary function from the junos execution module. To check what args and kwargs you must send to the function, please consult the appropriate documentation.

fun
The name of the function. E.g., set_hostname.
args
List of arguments to send to the junos function invoked.
kwargs
Dictionary of key-value arguments to send to the juno function invoked.

CLI Example:

salt '*' napalm.junos_fun cli 'show system commit'
salt.modules.napalm.junos_cli(*args, **kwargs)

New in version Fluorine.

Execute a CLI command and return the output in the specified format.

command
The command to execute on the Junos CLI.
format: text
Format in which to get the CLI output (either text or xml).
dev_timeout: 30
The NETCONF RPC timeout (in seconds).
dest
Destination file where the RPC output is stored. Note that the file will be stored on the Proxy Minion. To push the files to the Master, use cp.push.

CLI Example:

salt '*' napalm.junos_cli 'show lldp neighbors'
salt.modules.napalm.junos_copy_file(*args, **kwargs)

New in version Fluorine.

Copies the file on the remote Junos device.

src
The source file path. This argument accepts the usual Salt URIs (e.g., salt://, http://, https://, s3://, ftp://, etc.).
dst
The destination path on the device where to copy the file.

CLI Example:

salt '*' napalm.junos_copy_file https://example.com/junos.cfg /var/tmp/myjunos.cfg
salt.modules.napalm.junos_facts(*args, **kwargs)

New in version Fluorine.

The complete list of Junos facts collected by junos-eznc.

CLI Example:

salt '*' napalm.junos_facts
salt.modules.napalm.junos_install_os(*args, **kwargs)

New in version Fluorine.

Installs the given image on the device.

path

The image file source. This argument supports the following URIs:

  • Absolute path on the Minion.
  • salt:// to fetch from the Salt fileserver.
  • http:// and https://
  • ftp://
  • swift:/
  • s3://
dev_timeout: 30
The NETCONF RPC timeout (in seconds)
reboot: False
Whether to reboot the device after the installation is complete.
no_copy: False
If True the software package will not be copied to the remote device.

CLI Example:

salt '*' napalm.junos_install_os salt://images/junos_16_1.tgz reboot=True
salt.modules.napalm.junos_rpc(*args, **kwargs)

New in version Fluorine.

Execute an RPC request on the remote Junos device.

cmd
The RPC request to the executed. To determine the RPC request, you can check the from the command line of the device, by executing the usual command followed by | display xml rpc, e.g., show lldp neighbors | display xml rpc.
dest
Destination file where the RPC output is stored. Note that the file will be stored on the Proxy Minion. To push the files to the Master, use cp.push Execution function.
format: xml
The format in which the RPC reply is received from the device.
dev_timeout: 30
The NETCONF RPC timeout.
filter
Used with the get-config RPC request to filter out the config tree.
terse: False

Whether to return terse output.

Note

Some RPC requests may not support this argument.

interface_name
Name of the interface to query.

CLI Example:

salt '*' napalm.junos_rpc get-lldp-neighbors-information
salt '*' napalm.junos_rcp get-config <configuration><system><ntp/></system></configuration>
salt.modules.napalm.netmiko_args(*args, **kwargs)

New in version Fluorine.

Return the key-value arguments used for the authentication arguments for the netmiko module.

CLI Example:

salt '*' napalm.netmiko_args
salt.modules.napalm.netmiko_call(*args, **kwargs)

New in version Fluorine.

Execute an arbitrary Netmiko method, passing the authentication details from the existing NAPALM connection.

method
The name of the Netmiko method to execute.
args
List of arguments to send to the Netmiko method specified in method.
kwargs
Key-value arguments to send to the execution function specified in method.

CLI Example:

salt '*' napalm.netmiko_call send_command 'show version'
salt.modules.napalm.netmiko_commands(*args, **kwargs)

New in version Fluorine.

Invoke one or more commands to be executed on the remote device, via Netmiko. Returns a list of strings, with the output from each command.

commands
A list of commands to be executed.
expect_string
Regular expression pattern to use for determining end of output. If left blank will default to being based on router prompt.
delay_factor: 1
Multiplying factor used to adjust delays (default: 1).
max_loops: 500
Controls wait time in conjunction with delay_factor. Will default to be based upon self.timeout.
auto_find_prompt: True
Whether it should try to auto-detect the prompt (default: True).
strip_prompt: True
Remove the trailing router prompt from the output (default: True).
strip_command: True
Remove the echo of the command from the output (default: True).
normalize: True
Ensure the proper enter is sent at end of command (default: True).
use_textfsm: False
Process command output through TextFSM template (default: False).

CLI Example:

salt '*' napalm.netmiko_commands 'show version' 'show interfaces'
salt.modules.napalm.netmiko_config(*args, **kwargs)

New in version Fluorine.

Load a list of configuration commands on the remote device, via Netmiko.

Warning

Please remember that netmiko does not have any rollback safeguards and any configuration change will be directly loaded into the running config if the platform doesn't have the concept of candidate config.

On Junos, or other platforms that have this capability, the changes will not be loaded into the running config, and the user must set the commit argument to True to transfer the changes from the candidate into the running config before exiting.

config_commands
A list of configuration commands to be loaded on the remote device.
config_file

Read the configuration commands from a file. The file can equally be a template that can be rendered using the engine of choice (see template_engine).

This can be specified using the absolute path to the file, or using one of the following URL schemes:

  • salt://, to fetch the file from the Salt fileserver.
  • http:// or https://
  • ftp://
  • s3://
  • swift://
exit_config_mode: True
Determines whether or not to exit config mode after complete.
delay_factor: 1
Factor to adjust delays.
max_loops: 150
Controls wait time in conjunction with delay_factor (default: 150).
strip_prompt: False
Determines whether or not to strip the prompt (default: False).
strip_command: False
Determines whether or not to strip the command (default: False).
config_mode_command
The command to enter into config mode.
commit: False
Commit the configuration changes before exiting the config mode. This option is by default disabled, as many platforms don't have this capability natively.

CLI Example:

salt '*' napalm.netmiko_config 'set system ntp peer 1.2.3.4' commit=True
salt '*' napalm.netmiko_config https://bit.ly/2sgljCB
salt.modules.napalm.netmiko_conn(*args, **kwargs)

New in version Fluorine.

Return the connection object with the network device, over Netmiko, passing the authentication details from the existing NAPALM connection.

Warning

This function is not suitable for CLI usage, more rather to be used in various Salt modules.

USAGE Example:

conn = __salt__['napalm.netmiko_conn']()
res = conn.send_command('show interfaces')
conn.disconnect()
salt.modules.napalm.netmiko_fun(*args, **kwargs)

New in version Fluorine.

Call an arbitrary function from the Netmiko module, passing the authentication details from the existing NAPALM connection.

fun
The name of the function from the Netmiko to invoke.
args
List of arguments to send to the execution function specified in fun.
kwargs
Key-value arguments to send to the execution function specified in fun.

CLI Example:

salt '*' napalm.netmiko_fun send_command 'show version'
salt.modules.napalm.netmiko_multi_call(*args, **kwargs)

New in version Fluorine.

Execute a list of arbitrary Netmiko methods, passing the authentication details from the existing NAPALM connection.

methods

List of dictionaries with the following keys:

  • name: the name of the Netmiko function to invoke.
  • args: list of arguments to send to the name method.
  • kwargs: key-value arguments to send to the name method.

CLI Example:

salt '*' napalm.netmiko_multi_call "{'name': 'send_command', 'args': ['show version']}" "{'name': 'send_command', 'args': ['show interfaces']}"
salt.modules.napalm.reconnect(*args, **kwargs)

Reconnect the NAPALM proxy when the connection is dropped by the network device. The connection can be forced to be restarted using the force argument.

Note

This function can be used only when running proxy minions.

CLI Example:

salt '*' napalm.reconnect
salt '*' napalm.reconnect force=True