It's a NAPALM Community Driver for Huawei VRP5/VRP8 Enterprise/Service Provider Routers and Switches.
This repository is reference NAPALM-CE and Cisco IOS code, thanks for thdDaniel's contribution 中文版
- NE Series:
- 40E, 8000
- AR Series:
- 2200
- ATN 900 Series:
- 910B, 910C and 910D
- S Switch Series:
- S5700, S6700
This driver is not limited to these models and series, these are just devices where the driver have been tested.
The driver is under development and iteration.
API | Description |
---|---|
get_facts() | Return general device information |
get_config() | Read config |
get_arp_table() | Get device ARP table |
get_mac_address_table() | Get mac table of connected devices |
get_interfaces() | Get interface information |
get_interfaces_ip() | Get interface IP information |
get_interfaces_counters() | Get interface counters |
get_lldp_neighbors() | Fetch LLDP neighbor information |
API | Description |
---|---|
cli() | Send any cli commands |
load_merge_candidate() | Load config |
compare_config() | A string showing the difference between the running configuration and the candidate configuration |
discard_config() | Discards the configuration loaded into the candidate |
commit_config() | Commits the changes requested by the method load_replace_candidate or load_merge_candidate |
API | Description |
---|---|
is_active() | get devices active status |
ping() | Ping remote ip |
- get_bgp_config
- get_bgp_neighbors
- get_bgp_neighbors_detail
- get_environment
- get_ipv6_neighbors_table
- get_lldp_neighbors_detail
- get_network_instances
- get_ntp_peers
- get_ntp_servers
- get_ntp_stats
- get_optics
- get_route_to
- get_snmp_information
- get_users
- get_vlans
You can install napalm-huawei-vrp with pip:
pip install napalm-huawei-vrp
That will install napalm and huawei_vrp driver currently available.
You can upgrade napalm-huawei-vrp with pip once the new version released:
pip install --upgrade napalm-huawei-vrp
check the package version.
pip list | grep napalm-huawei-vrp
from napalm import get_network_driver
driver = get_network_driver('huawei_vrp')
device = driver(hostname='192.168.76.10', username='admin', password='this_is_not_a_secure_password')
device.open()
# Send Any CLI command
send_command = device.cli(['dis version'])
# Return general device information
get_facts = device.get_facts()
print(get_facts)
# other API
device.get_config()
device.get_arp_table()
device.get_mac_address_table()
device.get_interfaces()
device.get_interfaces_ip()
device.get_interfaces_counters()
device.get_lldp_neighbors()
The driver supports two diff modes when merging configuration:
- non-contextual diff (default behavior)
- contextual diff (as proposed in PR #23)
The second mode can be set during driver instantiation:
from napalm import get_network_driver
driver = get_network_driver('huawei_vrp')
device = driver(
hostname='192.168.76.10',
username='admin',
password='this_is_not_a_secure_password',
optional_args={'contextual_diff': True} # enable contextual diff mode
)
device.open()
# Merging Configuration
device.load_merge_candidate(config=candidate) # candidate is an str
print(device.compare_config())
The contextual mode is smarter as it computes the diff per config section. You might want to enable it.
Say we have these configs:
Candidate (to merge into the running) | Running (extract only) |
---|---|
#
interface GigabitEthernet0/0/2
undo portswitch
undo shutdown
l2 binding vsi CUST
#
bgp 1234
router-id 1.2.3.4
ipv4-family vpn-instance SOME-VPN
import-route direct
# |
#
interface GigabitEthernet0/0/1
description CustomerA
undo portswitch
l2 binding vsi CUST
#
interface GigabitEthernet0/0/2
description CustomerB
shutdown
#
bgp 1234
router-id 1.2.3.4
ipv4-family vpn-instance SOME-VPN
import-route static
# |
device.compare_config()
will result in:
# Non-contextual diff (default mode)
undo shutdown
import-route direct
# Contextual diff
interface GigabitEthernet0/0/2
+ undo portswitch
+ undo shutdown
+ l2 binding vsi CUST
bgp 1234
ipv4-family vpn-instance SOME-VPN
+ import-route direct
Slack is probably the easiest way to get help with NAPALM. You can find us in the channel napalm on the network.toCode() team.
- NAPALM Network Automation Python: Working with Huawei VRP by Michael Alvarez
- NAPALM Network Automation Python: Collect Data from Multiple Vendors. Cisco and Huawei by Michael Alvarez
- NAPALM Network Automation Python: Making Configurations in a Multivendor Network. Cisco and Huawei by Michael Alvarez