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
candidate
, running
, startup
. Default: candidate
.cp.get_url
), e.g., salt://
, https://
, s3://
, ftp:/
, etc.running
candidate
, running
, startup
. Default: running
.cp.get_url
), e.g., salt://
, https://
, s3://
, ftp:/
, etc.base
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
candidate
, running
, startup
. Default: candidate
.cp.get_url
), e.g., salt://
, https://
, s3://
, ftp:/
, etc.running
candidate
, running
, startup
. Default: running
.cp.get_url
), e.g., salt://
, https://
, s3://
, ftp:/
, etc.base
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.
running
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.
running
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.
running
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.
running
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
running
. Available options: running
, startup
, candidate
.merge_path
is set.cp.get_url
), e.g., salt://
, https://
, s3://
, ftp:/
, etc.base
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
running
. Available options: running
, startup
, candidate
.merge_path
is set.cp.get_url
), e.g., salt://
, https://
, s3://
, ftp:/
, etc.base
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
running
. Available options: running
, startup
, candidate
.merge_path
is set.cp.get_url
), e.g., salt://
, https://
, s3://
, ftp:/
, etc.base
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
running
. Available options: running
, startup
, candidate
.False
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.
set_hostname
.junos
function invoked.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.
text
text
or xml
).30
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
False
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
True
, on dual control plane systems, force the candidate configuration on one control plane to be copied to the other control plane.True
, requires all the daemons to check and evaluate the new configuration.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.
salt://
, http://
, https://
, s3://
, ftp://
, etc.).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:
salt://
to fetch from the Salt fileserver.http://
and https://
ftp://
swift:/
s3://
30
False
False
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.
| display xml rpc
, e.g., show lldp neighbors | display xml rpc
.cp.push
Execution function.xml
30
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.
CLI Example:
salt '*' napalm.junos_rpc get-lldp-neighbors-information salt '*' napalm.junos_rcp 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.
method
.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.
1
1
).500
True
True
).True
True
).True
True
).True
True
).False
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.
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
1
150
150
).False
False
).False
False
).False
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.
Netmiko
to invoke.fun
.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
jinja
. To simply fetch the file without attempting to render, set this argument to None
.None
None
context
dict.base
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.
cli
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.
True
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.
pyeapi
method to invoke.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
jinja
. To simply fetch the file without attempting to render, set this argument to None
.None
None
context
dict.base
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.
json
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 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.
False
False
mtime
and atime
of transferred files and directories.10
16384
True
False
to disable connecting to the SSH agent.True
False
to disable searching for discoverable private key files in ~/.ssh/
False
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.
True
False
mtime
and atime
of transferred files and directories.base
files
is not a salt://
URL.22
passphrase
is not given.10
16384
True
False
to disable connecting to the SSH agent.True
False
to disable searching for discoverable private key files in ~/.ssh/
False
known_hosts
.CLI Example:
salt '*' napalm.scp_put /path/to/file /var/tmp/file auto_add_policy=True
© 2019 SaltStack.
Licensed under the Apache License, Version 2.0.
https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.napalm_mod.html