Helpers for the NAPALM modules.
New in version 2017.7.0.
salt.modules.napalm_mod.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_mod.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_mod.compliance_report(*args, **kwargs)¶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
salt.modules.napalm_mod.config_diff_text(source1=u'candidate', candidate_path=None, source2=u'running', running_path=None)¶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.
candidatecandidate, running, startup. Default:
candidate.cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.runningcandidate, running, startup. Default:
running.cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.basecandidate_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
salt.modules.napalm_mod.config_diff_tree(source1=u'candidate', candidate_path=None, source2=u'running', running_path=None)¶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.
candidatecandidate, running, startup. Default:
candidate.cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.runningcandidate, running, startup. Default:
running.cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.basecandidate_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
salt.modules.napalm_mod.config_filter_lines(parent_regex, child_regex, source=u'running')¶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.
runningrunning. Available options: running, startup, candidate.CLI Example:
salt '*' napalm.config_filter_lines '^interface' 'ip address'
salt '*' napalm.config_filter_lines '^interface' 'shutdown' source=candidate
salt.modules.napalm_mod.config_find_lines(regex, source=u'running')¶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.
runningrunning. Available options: running, startup, candidate.CLI Example:
salt '*' napalm.config_find_lines '^interface Ethernet1\d'
salt.modules.napalm_mod.config_lines_w_child(parent_regex, child_regex, source=u'running')¶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.
runningrunning. 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
salt.modules.napalm_mod.config_lines_wo_child(parent_regex, child_regex, source=u'running')¶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.
runningrunning. 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
salt.modules.napalm_mod.config_merge_diff(source=u'running', merge_config=None, merge_path=None, saltenv=u'base')¶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).
runningrunning. Available options: running, startup, candidate.merge_path is set.cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.basemerge_path is not a salt:// URL.CLI Example:
salt '*' napalm.config_merge_diff merge_path=salt://path/to/merge.cfg
salt.modules.napalm_mod.config_merge_text(source=u'running', merge_config=None, merge_path=None, saltenv=u'base')¶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).
runningrunning. Available options: running, startup, candidate.merge_path is set.cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.basemerge_path is not a salt:// URL.CLI Example:
salt '*' napalm.config_merge_text merge_path=salt://path/to/merge.cfg
salt.modules.napalm_mod.config_merge_tree(source=u'running', merge_config=None, merge_path=None, saltenv=u'base')¶New in version 2019.2.0.
Return the merge tree of the initial_config with the merge_config,
as a Python dictionary.
runningrunning. Available options: running, startup, candidate.merge_path is set.cp.get_url), e.g., salt://,
https://, s3://, ftp:/, etc.basemerge_path is not a salt:// URL.CLI Example:
salt '*' napalm.config_merge_tree merge_path=salt://path/to/merge.cfg
salt.modules.napalm_mod.config_tree(source=u'running', with_tags=False)¶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.
runningrunning. Available options: running, startup, candidate.FalseCLI Example:
salt '*' napalm.config_tree
salt.modules.napalm_mod.junos_call(*args, **kwargs)¶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'
salt.modules.napalm_mod.junos_cli(*args, **kwargs)¶New in version 2019.2.0.
Execute a CLI command and return the output in the specified format.
texttext or xml).30cp.push.CLI Example:
salt '*' napalm.junos_cli 'show lldp neighbors'
salt.modules.napalm_mod.junos_commit(*args, **kwargs)¶New in version 2019.2.0.
Commit the changes loaded in the candidate configuration.
30FalseTrue, 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.FalseTrue, 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
salt.modules.napalm_mod.junos_copy_file(*args, **kwargs)¶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
salt.modules.napalm_mod.junos_facts(*args, **kwargs)¶New in version 2019.2.0.
The complete list of Junos facts collected by junos-eznc.
CLI Example:
salt '*' napalm.junos_facts
salt.modules.napalm_mod.junos_install_os(*args, **kwargs)¶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://30FalseFalseTrue 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_mod.junos_rpc(*args, **kwargs)¶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.xml30get-config RPC request to filter out the config tree.FalseWhether 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>
salt.modules.napalm_mod.netmiko_args(*args, **kwargs)¶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
salt.modules.napalm_mod.netmiko_call(*args, **kwargs)¶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'
salt.modules.napalm_mod.netmiko_commands(*args, **kwargs)¶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.
11).500TrueTrue).TrueTrue).TrueTrue).TrueTrue).FalseFalse).CLI Example:
salt '*' napalm.netmiko_commands 'show version' 'show interfaces'
salt.modules.napalm_mod.netmiko_config(*args, **kwargs)¶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://True1150150).FalseFalse).FalseFalse).FalseCLI 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_mod.netmiko_conn(*args, **kwargs)¶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()
salt.modules.napalm_mod.netmiko_fun(*args, **kwargs)¶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'
salt.modules.napalm_mod.netmiko_multi_call(*args, **kwargs)¶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']}"
salt.modules.napalm_mod.nxos_api_config(*args, **kwargs)¶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://jinjajinja. To simply fetch the file without attempting to render, set
this argument to None.NoneNonecontext dict.baseconfig_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']}"
salt.modules.napalm_mod.nxos_api_rpc(*args, **kwargs)¶New in version 2019.2.0.
Execute an arbitrary RPC request via the Nexus API.
clicli_ascii) or structured
document (cli). Defaults to cli (structured data).CLI Example:
salt '*' napalm.nxos_api_rpc 'show version'
salt.modules.napalm_mod.nxos_api_show(*args, **kwargs)¶New in version 2019.2.0.
Execute one or more show (non-configuration) commands.
TrueCLI Example:
salt '*' napalm.nxos_api_show 'show version'
salt '*' napalm.nxos_api_show 'show bgp sessions' 'show processes' raw_text=False
salt.modules.napalm_mod.pyeapi_call(*args, **kwargs)¶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
salt.modules.napalm_mod.pyeapi_config(*args, **kwargs)¶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://jinjajinja. To simply fetch the file without attempting to render, set
this argument to None.NoneNonecontext dict.baseconfig_file is not a salt:// URL.CLI Example:
salt '*' napalm.pyeapi_config 'ntp server 1.2.3.4'
salt.modules.napalm_mod.pyeapi_conn(*args, **kwargs)¶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)
salt.modules.napalm_mod.pyeapi_nxos_api_args(**prev_kwargs)¶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
salt.modules.napalm_mod.pyeapi_run_commands(*args, **kwargs)¶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.
jsonjson (default) or text.CLI Example:
salt '*' napalm.pyeapi_run_commands 'show version' encoding=text
salt '*' napalm.pyeapi_run_commands 'show ip bgp neighbors'
salt.modules.napalm_mod.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
salt.modules.napalm_mod.rpc(*args, **kwargs)¶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 junosnapalm.pyeapi_run_commands
for eosnapalm.nxos_api_rpc for
nxosnapalm.netmiko_commands
for ios, iosxr, and nxos_sshThe 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
salt.modules.napalm_mod.scp_get(remote_path, local_path=u'', recursive=False, preserve_times=False, **kwargs)¶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.
FalseFalsemtime and atime of transferred files and directories.1016384TrueFalse to disable connecting to the SSH agent.TrueFalse to disable searching for discoverable private key
files in ~/.ssh/Falseknown_hosts.CLI Example:
salt '*' napalm.scp_get /var/tmp/file /tmp/file auto_add_policy=True
salt.modules.napalm_mod.scp_put(files, remote_path=None, recursive=False, preserve_times=False, saltenv=u'base', **kwargs)¶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.
TrueFalsemtime and atime of transferred files and directories.basefiles is not a
salt:// URL.22passphrase is not given.1016384TrueFalse to disable connecting to the SSH agent.TrueFalse to disable searching for discoverable private key
files in ~/.ssh/Falseknown_hosts.CLI Example:
salt '*' napalm.scp_put /path/to/file /var/tmp/file auto_add_policy=True