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|yaml
New 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.
candidate
The 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.
running
The 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.
base
Salt 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.
candidate
The 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.
running
The 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.
base
Salt 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.
running
The 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.
running
The 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.
running
The 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.
running
The 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).
running
The 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.
base
Salt 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).
running
The 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.
base
Salt 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.
running
The 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.
base
Salt 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.
running
The configuration type to retrieve from the network device. Default:
running
. Available options: running
, startup
, candidate
.
False
Whether 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.
text
Format in which to get the CLI output (either text
or xml
).
30
The 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.
30
The 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.
False
When 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.
False
When 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://
30
The NETCONF RPC timeout (in seconds)
False
Whether to reboot the device after the installation is complete.
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
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.
xml
The format in which the RPC reply is received from the device.
30
The NETCONF RPC timeout.
Used with the get-config
RPC request to filter out the config tree.
False
Whether 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.
1
Multiplying factor used to adjust delays (default: 1
).
500
Controls wait time in conjunction with delay_factor. Will default to be based upon self.timeout.
True
Whether it should try to auto-detect the prompt (default: True
).
True
Remove the trailing router prompt from the output (default: True
).
True
Remove the echo of the command from the output (default: True
).
True
Ensure the proper enter is sent at end of command (default: True
).
False
Process 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://
True
Determines whether or not to exit config mode after complete.
1
Factor to adjust delays.
150
Controls wait time in conjunction with delay_factor (default: 150
).
False
Determines whether or not to strip the prompt (default: False
).
False
Determines whether or not to strip the command (default: False
).
The command to enter into config mode.
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
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://
jinja
The 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
.
None
Variables to add to the template context.
None
Default values of the context
dict.
base
Salt 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.
cli
The 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.
True
Whether 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://
jinja
The 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
.
None
Variables to add to the template context.
None
Default values of the context
dict.
base
Salt 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.
json
The 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.
False
Transfer files and directories recursively.
False
Preserve 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.
10
The channel socket timeout in seconds.
16384
The size of the SCP send buffer.
True
Set to False
to disable connecting to the SSH agent.
True
Set 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.
False
Automatically 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.
True
Transfer files and directories recursively.
False
Preserve mtime
and atime
of transferred files and directories.
base
The name of the Salt environment. Ignored when files
is not a
salt://
URL.
The hostname of the remote device.
22
The 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.
10
The channel socket timeout in seconds.
16384
The size of the SCP send buffer.
True
Set to False
to disable connecting to the SSH agent.
True
Set 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.
False
Automatically add the host to the known_hosts
.
CLI Example:
salt '*' napalm.scp_put /path/to/file /var/tmp/file auto_add_policy=True