Basic methods for interaction with the network device through the virtual proxy 'napalm'.
codeauthor: | Mircea Ulinic <mircea@cloudflare.com> & Jerome Fleury <jf@cloudflare.com> |
---|---|
maturity: | new |
depends: | napalm |
platform: | linux |
salt.modules.napalm_network.
arp
(interface='', ipaddr='', macaddr='')¶NAPALM returns a list of dictionaries with details of the ARP entries.
Parameters: |
|
---|---|
Returns: | List of the entries in the ARP table |
CLI Example:
salt '*' net.arp
salt '*' net.arp macaddr='5c:5e:ab:da:3c:f0'
Example output:
[
{
'interface' : 'MgmtEth0/RSP0/CPU0/0',
'mac' : '5c:5e:ab:da:3c:f0',
'ip' : '172.17.17.1',
'age' : 1454496274.84
},
{
'interface': 'MgmtEth0/RSP0/CPU0/0',
'mac' : '66:0e:94:96:e0:ff',
'ip' : '172.17.17.2',
'age' : 1435641582.49
}
]
salt.modules.napalm_network.
cli
(*commands)¶Returns a dictionary with the raw output of all commands passed as arguments.
Parameters: | commands -- list of commands to be executed on the device |
---|---|
Returns: | a dictionary with the mapping between each command and its raw output |
CLI Example:
salt '*' net.cli "show version" "show chassis fan"
Example output:
{
u'show version and haiku': u'Hostname: re0.edge01.arn01
Model: mx480
Junos: 13.3R6.5
Help me, Obi-Wan
I just saw Episode Two
You're my only hope
',
u'show chassis fan' : u'Item Status RPM Measurement
Top Rear Fan OK 3840 Spinning at intermediate-speed
Bottom Rear Fan OK 3840 Spinning at intermediate-speed
Top Middle Fan OK 3900 Spinning at intermediate-speed
Bottom Middle Fan OK 3840 Spinning at intermediate-speed
Top Front Fan OK 3810 Spinning at intermediate-speed
Bottom Front Fan OK 3840 Spinning at intermediate-speed
'
}
salt.modules.napalm_network.
commit
()¶Commits the configuration changes made on the network device.
CLI Example:
salt '*' net.commit
salt.modules.napalm_network.
compare_config
()¶Returns the difference between the running config and the candidate config.
CLI Example:
salt '*' net.compare_config
salt.modules.napalm_network.
config_changed
()¶Will prompt if the configuration has been changed.
Returns: | A tuple with a boolean that specifies if the config was changed on the device. And a string that provides more details of the reason why the configuration was not changed. |
---|
CLI Example:
salt '*' net.config_changed
salt.modules.napalm_network.
config_control
()¶Will check if the configuration was changed. If differences found, will try to commit. In case commit unsuccessful, will try to rollback.
Returns: | A tuple with a boolean that specifies if the config was changed/commited/rollbacked on the device. And a string that provides more details of the reason why the configuration was not commited properly. |
---|
CLI Example:
salt '*' net.config_control
salt.modules.napalm_network.
connected
()¶Specifies if the proxy succeeded to connect to the network device.
CLI Example:
salt '*' net.connected
salt.modules.napalm_network.
environment
()¶Returns the environment of the device.
CLI Example:
salt '*' net.environment
Example output:
{
'fans': {
'Bottom Rear Fan': {
'status': True
},
'Bottom Middle Fan': {
'status': True
},
'Top Middle Fan': {
'status': True
},
'Bottom Front Fan': {
'status': True
},
'Top Front Fan': {
'status': True
},
'Top Rear Fan': {
'status': True
}
},
'memory': {
'available_ram': 16349,
'used_ram': 4934
},
'temperature': {
'FPC 0 Exhaust A': {
'is_alert': False,
'temperature': 35.0,
'is_critical': False
}
},
'cpu': {
'1': {
'%usage': 19.0
},
'0': {
'%usage': 35.0
}
}
}
salt.modules.napalm_network.
facts
()¶Returns characteristics of the network device. :return: a dictionary with the following keys:
- uptime - Uptime of the device in seconds.
- vendor - Manufacturer of the device.
- model - Device model.
- hostname - Hostname of the device
- fqdn - Fqdn of the device
- os_version - String with the OS version running on the device.
- serial_number - Serial number of the device
- interface_list - List of the interfaces of the device
CLI Example:
salt '*' net.facts
Example output:
{
'os_version': u'13.3R6.5',
'uptime': 10117140,
'interface_list': [
'lc-0/0/0',
'pfe-0/0/0',
'pfh-0/0/0',
'xe-0/0/0',
'xe-0/0/1',
'xe-0/0/2',
'xe-0/0/3',
'gr-0/0/10',
'ip-0/0/10'
],
'vendor': u'Juniper',
'serial_number': u'JN131356FBFA',
'model': u'MX480',
'hostname': u're0.edge05.syd01',
'fqdn': u're0.edge05.syd01'
}
salt.modules.napalm_network.
interfaces
()¶Returns details of the interfaces on the device.
Returns: | Returns a dictionary of dictionaries. The keys for the first dictionary will be the interfaces in the devices. |
---|
CLI Example:
salt '*' net.interfaces
Example output:
{
u'Management1': {
'is_up': False,
'is_enabled': False,
'description': u'',
'last_flapped': -1,
'speed': 1000,
'mac_address': u'dead:beef:dead',
},
u'Ethernet1':{
'is_up': True,
'is_enabled': True,
'description': u'foo',
'last_flapped': 1429978575.1554043,
'speed': 1000,
'mac_address': u'beef:dead:beef',
}
}
salt.modules.napalm_network.
ipaddrs
()¶Returns IP addresses configured on the device.
Returns: | A dictionary with the IPv4 and IPv6 addresses of the interfaces. Returns all configured IP addresses on all interfaces as a dictionary of dictionaries. Keys of the main dictionary represent the name of the interface. Values of the main dictionary represent are dictionaries that may consist of two keys 'ipv4' and 'ipv6' (one, both or none) which are themselvs dictionaries witht the IP addresses as keys. |
---|
CLI Example:
salt '*' net.ipaddrs
Example output:
{
u'FastEthernet8': {
u'ipv4': {
u'10.66.43.169': {
'prefix_length': 22
}
}
},
u'Loopback555': {
u'ipv4': {
u'192.168.1.1': {
'prefix_length': 24
}
},
u'ipv6': {
u'1::1': {
'prefix_length': 64
},
u'2001:DB8:1::1': {
'prefix_length': 64
},
u'FE80::3': {
'prefix_length': u'N/A'
}
}
}
}
salt.modules.napalm_network.
lldp
(interface='')¶Returns a detailed view of the LLDP neighbors.
Parameters: | interface -- interface name to filter on |
---|---|
Returns: | A dictionary with the LLDL neighbors. The keys are the interfaces with LLDP activated on. |
CLI Example:
salt '*' net.lldp
salt '*' net.lldp interface='TenGigE0/0/0/8'
Example output:
{
'TenGigE0/0/0/8': [
{
'parent_interface': u'Bundle-Ether8',
'interface_description': u'TenGigE0/0/0/8',
'remote_chassis_id': u'8c60.4f69.e96c',
'remote_system_name': u'switch',
'remote_port': u'Eth2/2/1',
'remote_port_description': u'Ethernet2/2/1',
'remote_system_description': u'Cisco Nexus Operating System (NX-OS) Software 7.1(0)N1(1a)
TAC support: http://www.cisco.com/tac
Copyright (c) 2002-2015, Cisco Systems, Inc. All rights reserved.',
'remote_system_capab': u'B, R',
'remote_system_enable_capab': u'B'
}
]
}
salt.modules.napalm_network.
mac
(address='', interface='', vlan=0)¶Returns the MAC Address Table on the device.
Parameters: |
|
---|---|
Returns: | A list of dictionaries representing the entries in the MAC Address Table |
CLI Example:
salt '*' net.mac
salt '*' net.mac vlan=10
Example output:
[
{
'mac' : '00:1c:58:29:4a:71',
'interface' : 'xe-3/0/2',
'static' : False,
'active' : True,
'moves' : 1,
'vlan' : 10,
'last_move' : 1454417742.58
},
{
'mac' : '8c:60:4f:58:e1:c1',
'interface' : 'xe-1/0/1',
'static' : False,
'active' : True,
'moves' : 2,
'vlan' : 42,
'last_move' : 1453191948.11
}
]
salt.modules.napalm_network.
ping
(destination, source='', ttl=0, timeout=0, size=0, count=0)¶Executes a ping on the network device and returns a dictionary as a result.
Parameters: |
|
---|
CLI Example:
salt '*' net.ping 8.8.8.8
salt '*' net.ping 8.8.8.8 ttl=3 size=65468
salt '*' net.ping 8.8.8.8 source=127.0.0.1 timeout=1 count=100
salt.modules.napalm_network.
rollback
()¶Rollbacks the configuration.
CLI Example:
salt '*' net.rollback
salt.modules.napalm_network.
traceroute
(destination, source='', ttl=0, timeout=0)¶Calls the method traceroute from the NAPALM driver object and returns a dictionary with the result of the traceroute command executed on the device.
Parameters: |
|
---|
CLI Example:
salt '*' net.traceroute 8.8.8.8
salt '*' net.traceroute 8.8.8.8 source=127.0.0.1 ttl=5 timeout=1