def main(peer_asn, output): config = ConfigDictionary() username = config.username() password = config.password() local_preferences = config.get_list_of_localpref() for router in config.get_list_of_router_names(): jdev = Device(user=username, host=config.get_router_ip(router), password=password) jdev.open(gather_facts=False) jdev.timeout = 600 regex_asn = ".* " + peer_asn try: resultxml = jdev.rpc.get_route_information(table='inet.0', aspath_regex=regex_asn, extensive=True) except Exception as err: print "CMD:" etree.dump(err.cmd) print "RSP:" etree.dump(err.rsp) jdev.close() sorted_routes = {} sorted_routes["peer"] = [] sorted_routes["peer-indirect"] = [] sorted_routes["peer-routeserver"] = [] sorted_routes["transit"] = [] sorted_routes["customer"] = [] sorted_routes["outofrange"] = [] for routexml in resultxml.findall('.//rt'): route = RouteData(routexml) full_prefix = route.prefix() session_type = route.get_adjacency_type(local_preferences) sorted_routes[session_type].append(full_prefix) if output == 'machine': print json.dumps(sorted_routes) else: print "For " + router + " in " + config.get_router_location(router) + " Routes: " + str(len(sorted_routes["peer"])) + " via bilateral peering, " + str(len(sorted_routes["peer-routeserver"])) + " via peering at mlp, " + str(len(sorted_routes["peer-indirect"])) + " via peering in other cities " + str(len(sorted_routes["customer"])) + " via customer, and " + str(len(sorted_routes["transit"])) + " via transit."
def test_can_see_rtr1_in_ams_location(self): config = ConfigDictionary('./etc/example.ini') self.assertTrue(config.get_router_location('rtr1') == 'ams')