Skip to content

Commit

Permalink
Fix #736 (get_route_to bgp confed) (#737)
Browse files Browse the repository at this point in the history
* Add test case for #736

* Strip parans from path when doing remote_as in get_route_to
  • Loading branch information
bewing committed May 24, 2018
1 parent d80d5d0 commit 24f887b
Show file tree
Hide file tree
Showing 5 changed files with 146 additions and 1 deletion.
2 changes: 1 addition & 1 deletion napalm/eos/eos.py
Original file line number Diff line number Diff line change
Expand Up @@ -1129,7 +1129,7 @@ def get_route_to(self, destination='', protocol=''):
for bgp_route_details in bgp_routes:
bgp_route = route.copy()
as_path = bgp_route_details.get('asPathEntry', {}).get('asPath', u'')
remote_as = int(as_path.split()[-1])
remote_as = int(as_path.strip("()").split()[-1])
remote_address = napalm.base.helpers.ip(bgp_route_details.get(
'routeDetail', {}).get('peerEntry', {}).get('peerAddr', ''))
local_preference = bgp_route_details.get('localPreference')
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"1.0.4.0/24": [{"current_active": true, "last_active": true, "age": 0, "next_hop": "1.0.4.221", "protocol": "eBGP", "outgoing_interface": "Ethernet51/1", "preference": 200, "inactive_reason": "noReason", "routing_table": "default", "selected_next_hop": true, "protocol_attributes": {"metric": 175, "as_path": "(20901 21149)", "local_preference": 100, "local_as": 20948, "remote_as": 21149, "remote_address": "1.0.4.221", "preference2": 0, "communities": []}}, {"current_active": false, "last_active": false, "age": 0, "next_hop": "1.0.4.223", "protocol": "eBGP", "outgoing_interface": "Ethernet52/1", "preference": 200, "inactive_reason": "ecmpFast", "routing_table": "default", "selected_next_hop": false, "protocol_attributes": {"metric": 175, "as_path": "(20902 21149)", "local_preference": 100, "local_as": 20948, "remote_as": 21149, "remote_address": "1.0.4.223", "preference2": 0, "communities": []}}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
{
"vrfs": {
"default": {
"routerId": "1.0.4.48",
"vrf": "default",
"bgpRouteEntries": {
"1.0.4.0/24": {
"totalPaths": 2,
"bgpAdvertisedPeerGroups": {
"INTERNAL-TOR": {
"peerList": [
"1.0.4.223"
]
}
},
"totalAdvertisedPeers": 1,
"maskLength": 16,
"bgpRoutePaths": [
{
"asPathEntry": {
"asPathType": "Confed-External",
"asPath": "(20901 21149)"
},
"med": 175,
"localPreference": 100,
"weight": 0,
"reasonNotBestpath": "noReason",
"timestamp": 1526591713,
"nextHop": "1.0.4.221",
"routeType": {
"atomicAggregator": false,
"origin": "Igp",
"suppressed": false,
"queued": false,
"valid": true,
"ecmpContributor": true,
"luRoute": false,
"active": true,
"stale": false,
"ecmp": true,
"backup": false,
"ecmpHead": true,
"ucmp": false
},
"routeDetail": {
"origin": "Igp",
"peerEntry": {
"peerRouterId": "1.0.4.1",
"peerAddr": "1.0.4.221"
},
"tunnelRibEligible": false,
"extCommunityList": [],
"communityList": [],
"rxSafi": "Unicast",
"aggregator": " (aggregated by 65001 1.0.4.49)",
"recvdFromRRClient": false,
"labelStack": []
}
},
{
"asPathEntry": {
"asPathType": "Confed-External",
"asPath": "(20902 21149)"
},
"med": 175,
"localPreference": 100,
"weight": 0,
"reasonNotBestpath": "ecmpFast",
"timestamp": 1526591756,
"nextHop": "1.0.4.223",
"routeType": {
"atomicAggregator": false,
"origin": "Igp",
"suppressed": false,
"queued": false,
"valid": true,
"ecmpContributor": true,
"luRoute": false,
"active": false,
"stale": false,
"ecmp": true,
"backup": false,
"ecmpHead": false,
"ucmp": false
},
"routeDetail": {
"origin": "Igp",
"peerEntry": {
"peerRouterId": "1.0.4.2",
"peerAddr": "1.0.4.223"
},
"tunnelRibEligible": false,
"extCommunityList": [],
"communityList": [],
"rxSafi": "Unicast",
"aggregator": " (aggregated by 65501 1.0.4.49)",
"recvdFromRRClient": false,
"labelStack": []
}
}
],
"address": "1.0.4.0"
}
},
"asn": 20948
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"vrfs": {
"default": {
"routes": {
"1.0.4.0/24": {
"kernelProgrammed": true,
"directlyConnected": false,
"preference": 200,
"routeAction": "forward",
"vias": [
{
"interface": "Ethernet51/1",
"interfaceDescription": "veos1:e5-21-1:",
"nexthopAddr": "1.0.4.221"
},
{
"interface": "Ethernet52/1",
"interfaceDescription": "veos2:e5-21-1:",
"nexthopAddr": "1.0.4.223"
}
],
"metric": 175,
"hardwareProgrammed": true,
"routeType": "eBGP"
}
},
"allRoutesProgrammedKernel": true,
"routingDisabled": false,
"allRoutesProgrammedHardware": true,
"defaultRouteState": "reachable"
}
}
}
3 changes: 3 additions & 0 deletions test/eos/mocked_data/test_get_route_to/iss_736/show_vrf.text
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Maximum number of vrfs allowed: 14
Vrf RD Protocols State Interfaces
------- ------------ ------------ ------------------------- -------------------

0 comments on commit 24f887b

Please sign in to comment.