def test_children_concrete_classes(self): """ Test ConcreteCdp _get_children_concrete_classes returns something list-like """ node_id = '103' node = Node(node_id) concreteCdp = ConcreteCdp(node) self.assertTrue( isinstance( concreteCdp._get_children_concrete_classes(), list)) for child in concreteCdp._get_children_concrete_classes(): self.assertFalse(isinstance(child, ConcreteCdpIf))
def test_get_name_from_dn(self): """ Test that ConcreteCdp._get_name_from_dn returns the name derived from the dn provided """ dn = 'topology/pod-1/node-103/sys/cdp/inst' self.assertEquals(ConcreteCdp._get_name_from_dn(dn), '')
def main(): """ Main show Cdps routine :return: None """ # Take login credentials from the command line if provided # Otherwise, take them from your environment variables file ~/.profile description = 'Simple application that logs on to the APIC and displays all the CDP neighbours.' creds = ACI.Credentials('apic', description) args = creds.get() # Login to APIC session = ACI.Session(args.url, args.login, args.password) resp = session.login() if not resp.ok: print('%% Could not login to APIC') sys.exit(0) nodes = Node.get_deep(session, include_concrete=True) cdps = [] for node in nodes: node_concreteCdp = node.get_children(child_type=ConcreteCdp) for node_concreteCdp_obj in node_concreteCdp: cdps.append(node_concreteCdp_obj) tables = ConcreteCdp.get_table(cdps) output_list = [] for table in tables: for table_data in table.data: if table_data not in output_list: output_list.append(table_data) print tabulate(output_list, headers=["Node-ID", "Local Interface", "Neighbour Device", "Neighbour Platform", "Neighbour Interface"])
def test_get_table(self): """ Test ConcreteCdp create table function """ node_id1 = '103' node1 = Node(node_id1) concreteCdp1 = ConcreteCdp(node1) concreteCdpIf1 = ConcreteCdpIf(concreteCdp1) concreteCdp1.add_child(concreteCdpIf1) node_id2 = '103' node2 = Node(node_id2) concreteCdp2 = ConcreteCdp(node2) concreteCdpIf2 = ConcreteCdpIf(concreteCdp2) concreteCdp2.add_child(concreteCdpIf2) concreteCdps = [concreteCdp1, concreteCdp2] self.assertTrue( isinstance( ConcreteCdp.get_table(concreteCdps)[0], Table))
def main(): """ Main show Cdps routine :return: None """ # Take login credentials from the command line if provided # Otherwise, take them from your environment variables file ~/.profile description = ('Simple application that logs on to the APIC' 'and displays all the CDP neighbours.') creds = ACI.Credentials('apic', description) args = creds.get() # Login to APIC session = ACI.Session(args.url, args.login, args.password) resp = session.login() if not resp.ok: print('%% Could not login to APIC') return nodes = Node.get_deep(session, include_concrete=True) cdps = [] for node in nodes: node_concrete_cdp = node.get_children(child_type=ConcreteCdp) for node_concrete_cdp_obj in node_concrete_cdp: cdps.append(node_concrete_cdp_obj) tables = ConcreteCdp.get_table(cdps) output_list = [] for table in tables: for table_data in table.data: if table_data not in output_list: output_list.append(table_data) print({ tabulate(output_list, headers=[ "Node-ID", "Local Interface", "Neighbour Device", "Neighbour Platform", "Neighbour Interface" ]) })
def test_get_parent_class(self): """ Ensure class has the correct parent class """ self.assertEquals(ConcreteCdp._get_parent_class(), Node)
def main(): """ Main show Cdps routine :return: None """ # Take login credentials from the command line if provided start_time = time.time() description = ('Simple application that logs on to the APIC' 'and displays all the CDP/LLDP neighbours.') creds = ACI.Credentials('apic', description) creds.add_argument('--protocol', choices=["cdp", "lldp", "both"], default="both", help='Choose if you want to see CDP/LLDP or both. Default is both') args = creds.get() # Login to APIC session = ACI.Session(args.url, args.login, args.password) resp = session.login() if not resp.ok: print('%% Could not login to APIC') return else: print('%% Login to APIC: Successful') # Start time count at this point, otherwise takes into consideration the amount of time taken to input the password start_time = time.time() print ("Proceeding to next step...") print ("Retrieving node information...") nodes = Node.get_deep(session, include_concrete=True) cdp_count = 0 lldp_count = 0 if args.protocol == "both" or args.protocol == "cdp": print "Processing CDP Information..." cdps = [] for node in nodes: node_concrete_cdp = node.get_children(child_type=ConcreteCdp) for node_concrete_cdp_obj in node_concrete_cdp: cdps.append(node_concrete_cdp_obj) tables = ConcreteCdp.get_table(cdps) cdp_list = [] for table in tables: for table_data in table.data: #print table_data if table_data not in cdp_list: cdp_list.append(table_data) cdp_count += 1 print ("=" * 100) print ("CDP: Total Entries [" + str(cdp_count) + "]") print ("=" * 100) print tabulate(cdp_list, headers=["Node-ID", "Local Interface", "Neighbour Device", "Neighbour Platform", "Neighbour Interface"]) if args.protocol == "both" or args.protocol == "lldp": print "Processing LLDP Information..." lldps = [] for node in nodes: node_concrete_lldp = node.get_children(child_type=ConcreteLLdp) for node_concrete_lldp_obj in node_concrete_lldp: lldps.append(node_concrete_lldp_obj) tables = ConcreteLLdp.get_table(lldps) lldp_list = [] for table in tables: for table_data in table.data: #print table_data if table_data not in lldp_list: lldp_list.append(table_data) lldp_count += 1 print ("=" * 100) print ("LLDP: Total Entries [" + str(lldp_count) + "]") print ("=" * 100) print(tabulate(lldp_list, headers=["Node-ID", "Ip", "Name", "Chassis_id_t", "Neighbour Platform", "Neighbour Interface"])) print ("#" * 80) finish_time = time.time() print ("Started @ {}".format(time.asctime(time.localtime(start_time)))) print ("Ended @ {}".format(time.asctime(time.localtime(finish_time)))) print("--- Total Execution Time: %s seconds ---" % (finish_time - start_time)) print ("#" * 80)