Helpers for the NAPALM modules.
New in version 2017.7.0.
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: ''
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'
Return the compliance report.
The absolute path to the validation file.
Changed in version 2019.2.0.
Beginning with release codename 2019.2.0, 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).
New in version 2019.2.0.
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.
jinja|yamlNew in version 2019.2.0.
The renderer pipe to send the file through; this is overridden by a "she-bang" at the top of the file.
Changed in version 2019.2.0.
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
New in version 2019.2.0.
Return the diff, as text, between the two different configuration sources.
The sources can be either specified using the source1 and source2
arguments when retrieving from the managed network device.
candidateThe source from where to retrieve the configuration to be compared with.
Available options: candidate, running, startup. Default:
candidate.
Absolute or remote path from where to load the candidate configuration
text. This argument allows any URI supported by
cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.
runningThe source from where to retrieve the configuration to compare with.
Available options: candidate, running, startup. Default:
running.
Absolute or remote path from where to load the running configuration
text. This argument allows any URI supported by
cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.
baseSalt fileserver environment from which to retrieve the file.
Ignored if candidate_path or running_path is not a
salt:// URL.
CLI Example:
salt '*' napalm.config_diff_text
salt '*' napalm.config_diff_text candidate_path=https://bit.ly/2mAdq7z
# Would compare the running config with the configuration available at
# https://bit.ly/2mAdq7z
New in version 2019.2.0.
Return the diff, as Python dictionary, between two different sources.
The sources can be either specified using the source1 and source2
arguments when retrieving from the managed network device.
candidateThe source from where to retrieve the configuration to be compared with.
Available options: candidate, running, startup. Default:
candidate.
Absolute or remote path from where to load the candidate configuration
text. This argument allows any URI supported by
cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.
runningThe source from where to retrieve the configuration to compare with.
Available options: candidate, running, startup. Default:
running.
Absolute or remote path from where to load the running configuration
text. This argument allows any URI supported by
cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.
baseSalt fileserver environment from which to retrieve the file.
Ignored if candidate_path or running_path is not a
salt:// URL.
CLI Example:
salt '*' napalm.config_diff_text
salt '*' napalm.config_diff_text candidate_path=https://bit.ly/2mAdq7z
# Would compare the running config with the configuration available at
# https://bit.ly/2mAdq7z
CLI Example:
salt '*' napalm.config_diff_tree
salt '*' napalm.config_diff_tree running startup
New in version 2019.2.0.
Return a list of detailed matches, for the configuration blocks (parent-child
relationship) whose parent respects the regular expressions configured via
the parent_regex argument, and the child matches the child_regex
regular expression. The result is a list of dictionaries with the following
keys:
match: a boolean value that tells whether child_regex matched any
children lines.
parent: the parent line (as text).
child: the child line (as text). If no child line matched, this field
will be None.
Note
This function is only available only when the underlying library
ciscoconfparse
is installed. See
ciscoconfparse module for
more details.
The regular expression to match the parent configuration lines against.
The regular expression to match the child configuration lines against.
runningThe configuration type to retrieve from the network device. Default:
running. Available options: running, startup, candidate.
CLI Example:
salt '*' napalm.config_filter_lines '^interface' 'ip address'
salt '*' napalm.config_filter_lines '^interface' 'shutdown' source=candidate
New in version 2019.2.0.
Return the configuration lines that match the regular expressions from the
regex argument. The configuration is read from the network device
interrogated.
The regular expression to match the configuration lines against.
runningThe configuration type to retrieve from the network device. Default:
running. Available options: running, startup, candidate.
CLI Example:
salt '*' napalm.config_find_lines '^interface Ethernet1\d'
New in version 2019.2.0.
Return the configuration lines that match the regular expressions from the
parent_regex argument, having child lines matching child_regex.
The configuration is read from the network device interrogated.
Note
This function is only available only when the underlying library
ciscoconfparse
is installed. See
ciscoconfparse module for
more details.
The regular expression to match the parent configuration lines against.
The regular expression to match the child configuration lines against.
runningThe configuration type to retrieve from the network device. Default:
running. Available options: running, startup, candidate.
CLI Example:
salt '*' napalm.config_lines_w_child '^interface' 'ip address'
salt '*' napalm.config_lines_w_child '^interface' 'shutdown' source=candidate
New in version 2019.2.0.
Return the configuration lines that match the regular expressions from the
parent_regex argument, having the child lines not matching
child_regex.
The configuration is read from the network device interrogated.
Note
This function is only available only when the underlying library
ciscoconfparse
is installed. See
ciscoconfparse module for
more details.
The regular expression to match the parent configuration lines against.
The regular expression to match the child configuration lines against.
runningThe configuration type to retrieve from the network device. Default:
running. Available options: running, startup, candidate.
CLI Example:
salt '*' napalm.config_lines_wo_child '^interface' 'ip address'
salt '*' napalm.config_lines_wo_child '^interface' 'shutdown' source=candidate
New in version 2019.2.0.
Return the merge diff, as text, after merging the merge config into the configuration source requested (without loading the config on the device).
runningThe configuration type to retrieve from the network device. Default:
running. Available options: running, startup, candidate.
The config to be merged into the initial config, sent as text. This
argument is ignored when merge_path is set.
Absolute or remote path from where to load the merge configuration
text. This argument allows any URI supported by
cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.
baseSalt fileserver environment from which to retrieve the file.
Ignored if merge_path is not a salt:// URL.
CLI Example:
salt '*' napalm.config_merge_diff merge_path=salt://path/to/merge.cfg
New in version 2019.2.0.
Return the merge result of the configuration from source with the
merge configuration, as plain text (without loading the config on the
device).
runningThe configuration type to retrieve from the network device. Default:
running. Available options: running, startup, candidate.
The config to be merged into the initial config, sent as text. This
argument is ignored when merge_path is set.
Absolute or remote path from where to load the merge configuration
text. This argument allows any URI supported by
cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.
baseSalt fileserver environment from which to retrieve the file.
Ignored if merge_path is not a salt:// URL.
CLI Example:
salt '*' napalm.config_merge_text merge_path=salt://path/to/merge.cfg
New in version 2019.2.0.
Return the merge tree of the initial_config with the merge_config,
as a Python dictionary.
runningThe configuration type to retrieve from the network device. Default:
running. Available options: running, startup, candidate.
The config to be merged into the initial config, sent as text. This
argument is ignored when merge_path is set.
Absolute or remote path from where to load the merge configuration
text. This argument allows any URI supported by
cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.
baseSalt fileserver environment from which to retrieve the file.
Ignored if merge_path is not a salt:// URL.
CLI Example:
salt '*' napalm.config_merge_tree merge_path=salt://path/to/merge.cfg
New in version 2019.2.0.
Transform Cisco IOS style configuration to structured Python dictionary.
Depending on the value of the with_tags argument, this function may
provide different views, valuable in different situations.
runningThe configuration type to retrieve from the network device. Default:
running. Available options: running, startup, candidate.
FalseWhether this function should return a detailed view, with tags.
CLI Example:
salt '*' napalm.config_tree
New in version 2019.2.0.
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.
The name of the function. E.g., set_hostname.
List of arguments to send to the junos function invoked.
Dictionary of key-value arguments to send to the juno function
invoked.
CLI Example:
salt '*' napalm.junos_fun cli 'show system commit'
New in version 2019.2.0.
Execute a CLI command and return the output in the specified format.
The command to execute on the Junos CLI.
textFormat in which to get the CLI output (either text or xml).
30The NETCONF RPC timeout (in seconds).
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'
New in version 2019.2.0.
Commit the changes loaded in the candidate configuration.
30The NETCONF RPC timeout (in seconds).
Provide a comment for the commit.
Provide time in minutes for commit confirmation. If this option is specified, the commit will be rolled back in the specified amount of time unless the commit is confirmed.
FalseWhen True, on dual control plane systems, requests that the candidate
configuration on one control plane be copied to the other control plane,
checked for correct syntax, and committed on both Routing Engines.
FalseWhen True, on dual control plane systems, force the candidate
configuration on one control plane to be copied to the other control
plane.
When True, requires all the daemons to check and evaluate the new
configuration.
When True, return commit detail.
CLI Examples:
salt '*' napalm.junos_commit comment='Commitiing via Salt' detail=True
salt '*' napalm.junos_commit dev_timeout=60 confirm=10
salt '*' napalm.junos_commit sync=True dev_timeout=90
New in version 2019.2.0.
Copies the file on the remote Junos device.
The source file path. This argument accepts the usual Salt URIs (e.g.,
salt://, http://, https://, s3://, ftp://, etc.).
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
New in version 2019.2.0.
The complete list of Junos facts collected by junos-eznc.
CLI Example:
salt '*' napalm.junos_facts
New in version 2019.2.0.
Installs the given image on the device.
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://
30The NETCONF RPC timeout (in seconds)
FalseWhether to reboot the device after the installation is complete.
FalseIf 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
New in version 2019.2.0.
Execute an RPC request on the remote Junos device.
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.
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.
xmlThe format in which the RPC reply is received from the device.
30The NETCONF RPC timeout.
Used with the get-config RPC request to filter out the config tree.
FalseWhether to return terse output.
Note
Some RPC requests may not support this argument.
Name of the interface to query.
CLI Example:
salt '*' napalm.junos_rpc get-lldp-neighbors-information
salt '*' napalm.junos_rpc get-config <configuration><system><ntp/></system></configuration>
New in version 2019.2.0.
Return the key-value arguments used for the authentication arguments for the netmiko module.
When running in a non-native NAPALM driver (e.g., panos, f5`, mos -
either from https://github.com/napalm-automation-community or defined in
user's own environment, one can specify the Netmiko device type (the
device_type argument) via the netmiko_device_type_map configuration
option / Pillar key, e.g.,
netmiko_device_type_map:
f5: f5_ltm
dellos10: dell_os10
The configuration above defines the mapping between the NAPALM os Grain
and the Netmiko device_type, e.g., when the NAPALM Grain is f5, it
would use the f5_ltm SSH Netmiko driver to execute commands over SSH on
the remote network device.
CLI Example:
salt '*' napalm.netmiko_args
New in version 2019.2.0.
Execute an arbitrary Netmiko method, passing the authentication details from the existing NAPALM connection.
The name of the Netmiko method to execute.
List of arguments to send to the Netmiko method specified in method.
Key-value arguments to send to the execution function specified in
method.
CLI Example:
salt '*' napalm.netmiko_call send_command 'show version'
New in version 2019.2.0.
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.
A list of commands to be executed.
Regular expression pattern to use for determining end of output. If left blank will default to being based on router prompt.
1Multiplying factor used to adjust delays (default: 1).
500Controls wait time in conjunction with delay_factor. Will default to be based upon self.timeout.
TrueWhether it should try to auto-detect the prompt (default: True).
TrueRemove the trailing router prompt from the output (default: True).
TrueRemove the echo of the command from the output (default: True).
TrueEnsure the proper enter is sent at end of command (default: True).
FalseProcess command output through TextFSM template (default: False).
CLI Example:
salt '*' napalm.netmiko_commands 'show version' 'show interfaces'
New in version 2019.2.0.
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.
A list of configuration commands to be loaded on the remote device.
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://
TrueDetermines whether or not to exit config mode after complete.
1Factor to adjust delays.
150Controls wait time in conjunction with delay_factor (default: 150).
FalseDetermines whether or not to strip the prompt (default: False).
FalseDetermines whether or not to strip the command (default: False).
The command to enter into config mode.
FalseCommit 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
New in version 2019.2.0.
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()
New in version 2019.2.0.
Call an arbitrary function from the Netmiko
module, passing the authentication details from the existing NAPALM
connection.
The name of the function from the Netmiko
to invoke.
List of arguments to send to the execution function specified in
fun.
Key-value arguments to send to the execution function specified in
fun.
CLI Example:
salt '*' napalm.netmiko_fun send_command 'show version'
New in version 2019.2.0.
Execute a list of arbitrary Netmiko methods, passing the authentication details from the existing NAPALM connection.
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']}"
New in version 2019.2.0.
Configures the Nexus switch with the specified commands, via the NX-API.
The list of configuration commands to load on the Nexus switch.
Note
This argument is ignored when config_file is specified.
The source file with the configuration commands to be sent to the device.
The file can also be a template that can be rendered using the template engine of choice. This can be specified using the absolute path to the file, or using one of the following URL schemes:
salt://
https://
ftp:/
s3:/
swift://
jinjaThe template engine to use when rendering the source file. Default:
jinja. To simply fetch the file without attempting to render, set
this argument to None.
NoneVariables to add to the template context.
NoneDefault values of the context dict.
baseSalt fileserver environment from which to retrieve the file. Ignored if
config_file is not a salt:// URL.
CLI Example:
salt '*' napalm.nxos_api_config 'spanning-tree mode mstp'
salt '*' napalm.nxos_api_config config_file=https://bit.ly/2LGLcDy context="{'servers': ['1.2.3.4']}"
New in version 2019.2.0.
Execute an arbitrary RPC request via the Nexus API.
The RPC commands to be executed.
cliThe type of the response, i.e., raw text (cli_ascii) or structured
document (cli). Defaults to cli (structured data).
CLI Example:
salt '*' napalm.nxos_api_rpc 'show version'
New in version 2019.2.0.
Execute one or more show (non-configuration) commands.
The commands to be executed.
TrueWhether to return raw text or structured data.
CLI Example:
salt '*' napalm.nxos_api_show 'show version'
salt '*' napalm.nxos_api_show 'show bgp sessions' 'show processes' raw_text=False
New in version 2019.2.0.
Invoke an arbitrary method from the pyeapi library.
This function forwards the existing connection details to the
pyeapi.run_commands
execution function.
The name of the pyeapi method to invoke.
Key-value arguments to send to the pyeapi method.
CLI Example:
salt '*' napalm.pyeapi_call run_commands 'show version' encoding=text
salt '*' napalm.pyeapi_call get_config as_string=True
New in version 2019.2.0.
Configures the Arista switch with the specified commands, via the pyeapi
library. This function forwards the existing connection details to the
pyeapi.run_commands
execution function.
The list of configuration commands to load on the Arista switch.
Note
This argument is ignored when config_file is specified.
The source file with the configuration commands to be sent to the device.
The file can also be a template that can be rendered using the template engine of choice. This can be specified using the absolute path to the file, or using one of the following URL schemes:
salt://
https://
ftp:/
s3:/
swift://
jinjaThe template engine to use when rendering the source file. Default:
jinja. To simply fetch the file without attempting to render, set
this argument to None.
NoneVariables to add to the template context.
NoneDefault values of the context dict.
baseSalt fileserver environment from which to retrieve the file. Ignored if
config_file is not a salt:// URL.
CLI Example:
salt '*' napalm.pyeapi_config 'ntp server 1.2.3.4'
New in version 2019.2.0.
Return the connection object with the Arista switch, over pyeapi,
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, to reusing the established connection, as in opposite to opening a new connection for each task.
Usage example:
conn = __salt__['napalm.pyeapi_conn']()
res1 = conn.run_commands('show version')
res2 = conn.get_config(as_string=True)
New in version 2019.2.0.
Return the key-value arguments used for the authentication arguments for the
pyeapi execution module.
CLI Example:
salt '*' napalm.pyeapi_nxos_api_args
Execute a list of commands on the Arista switch, via the pyeapi library.
This function forwards the existing connection details to the
pyeapi.run_commands
execution function.
A list of commands to execute.
jsonThe requested encoding of the command output. Valid values for encoding
are json (default) or text.
CLI Example:
salt '*' napalm.pyeapi_run_commands 'show version' encoding=text
salt '*' napalm.pyeapi_run_commands 'show ip bgp neighbors'
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
New in version 2019.2.0.
This is a wrapper to execute RPC requests on various network operating systems supported by NAPALM, invoking the following functions for the NAPALM native drivers:
napalm.junos_rpc for junos
napalm.pyeapi_run_commands
for eos
napalm.nxos_api_rpc for
nxos
napalm.netmiko_commands
for ios, iosxr, and nxos_ssh
The RPC command to execute. This depends on the nature of the operating system.
Key-value arguments to be sent to the underlying Execution function.
The function capabilities are extensible in the user environment via the
napalm_rpc_map configuration option / Pillar, e.g.,
napalm_rpc_map:
f5: napalm.netmiko_commands
panos: panos.call
The mapping above reads: when the NAPALM os Grain is f5, then call
napalm.netmiko_commands for RPC requests.
By default, if the user does not specify any map, non-native NAPALM drivers
will invoke the napalm.netmiko_commands Execution function.
CLI Example:
salt '*' napalm.rpc 'show version'
salt '*' napalm.rpc get-interfaces
New in version 2019.2.0.
Transfer files and directories from remote network device to the localhost of the Minion.
Note
This function is only available only when the underlying library
scp
is installed. See
scp module for
more details.
Path to retrieve from remote host. Since this is evaluated by scp on the remote host, shell wildcards and environment variables may be used.
FalseTransfer files and directories recursively.
FalsePreserve mtime and atime of transferred files and directories.
Used for decrypting private keys.
An optional private key to use for authentication.
The filename, or list of filenames, of optional private key(s) and/or certificates to try for authentication.
An optional timeout (in seconds) for the TCP connect.
10The channel socket timeout in seconds.
16384The size of the SCP send buffer.
TrueSet to False to disable connecting to the SSH agent.
TrueSet to False to disable searching for discoverable private key
files in ~/.ssh/
An optional timeout (in seconds) to wait for the SSH banner to be presented.
An optional timeout (in seconds) to wait for an authentication response.
FalseAutomatically add the host to the known_hosts.
CLI Example:
salt '*' napalm.scp_get /var/tmp/file /tmp/file auto_add_policy=True
New in version 2019.2.0.
Transfer files and directories to remote network device.
Note
This function is only available only when the underlying library
scp
is installed. See
scp module for
more details.
A single path or a list of paths to be transferred.
The path on the remote device where to store the files.
TrueTransfer files and directories recursively.
FalsePreserve mtime and atime of transferred files and directories.
baseThe name of the Salt environment. Ignored when files is not a
salt:// URL.
The hostname of the remote device.
22The port of the remote device.
The username required for SSH authentication on the device.
Used for password authentication. It is also used for private key
decryption if passphrase is not given.
Used for decrypting private keys.
An optional private key to use for authentication.
The filename, or list of filenames, of optional private key(s) and/or certificates to try for authentication.
An optional timeout (in seconds) for the TCP connect.
10The channel socket timeout in seconds.
16384The size of the SCP send buffer.
TrueSet to False to disable connecting to the SSH agent.
TrueSet to False to disable searching for discoverable private key
files in ~/.ssh/
An optional timeout (in seconds) to wait for the SSH banner to be presented.
An optional timeout (in seconds) to wait for an authentication response.
FalseAutomatically add the host to the known_hosts.
CLI Example:
salt '*' napalm.scp_put /path/to/file /var/tmp/file auto_add_policy=True