def setUp(self): self.table = QualiMibTable("entPhysicalTable") self.table[0] = {} self.table[1] = {} self.table[2] = {} self.table[3] = {} self.table[0]["entPhysicalClass"] = "port" self.table[1]["entPhysicalClass"] = "port" self.table[2]["entPhysicalClass"] = "port" self.table[3]["entPhysicalClass"] = "port" self.table[0]["entPhysicalParentRelPos"] = 1 self.table[1]["entPhysicalParentRelPos"] = 2 self.table[2]["entPhysicalParentRelPos"] = 3 self.table[3]["entPhysicalParentRelPos"] = 4
class TestQualiMibTableInit(TestCase): def setUp(self): self.table = QualiMibTable("entPhysicalTable") self.table[0] = {} self.table[1] = {} self.table[2] = {} self.table[3] = {} self.table[0]["entPhysicalClass"] = "port" self.table[1]["entPhysicalClass"] = "port" self.table[2]["entPhysicalClass"] = "port" self.table[3]["entPhysicalClass"] = "port" self.table[0]["entPhysicalParentRelPos"] = 1 self.table[1]["entPhysicalParentRelPos"] = 2 self.table[2]["entPhysicalParentRelPos"] = 3 self.table[3]["entPhysicalParentRelPos"] = 4 def test_filter_by_column(self): self.assertIsNotNone(self.table.filter_by_column("Class", "port")) self.assertIsInstance(self.table.filter_by_column("Class", "port"), QualiMibTable) def test_sort_by_column(self): self.assertIsNotNone(self.table.sort_by_column("ParentRelPos")) self.assertIsInstance(self.table.sort_by_column("ParentRelPos"), QualiMibTable) def test_get_rows(self): self.assertIsNotNone(self.table.get_rows(1)) self.assertIsInstance(self.table.get_rows(1), QualiMibTable) def test_get_columns(self): self.assertIsNotNone(self.table.get_columns("Class")) self.assertIsInstance(self.table.get_columns("Class"), QualiMibTable)
def _get_entity_table(self): """Read Entity-MIB and filter out device's structure and all it's elements, like ports, modules, chassis, etc. :rtype: QualiMibTable :return: structured and filtered EntityPhysical table. """ result_dict = QualiMibTable('entPhysicalTable') # entity_table_critical_port_attr = {'entPhysicalContainedIn': 'str', 'entPhysicalClass': 'str', # 'entPhysicalVendorType': 'str'} entity_table_optional_port_attr = {'entPhysicalDescr': 'str', 'entPhysicalName': 'str'} physical_indexes = self._snmp.get_table('ENTITY-MIB', 'entPhysicalParentRelPos') vendor_type_match_pattern = r"|".join(self.ENTITY_VENDOR_TYPE_TO_CLASS_MAP.keys()) for index in physical_indexes.keys(): if physical_indexes[index]['entPhysicalParentRelPos'] == '': self.exclusion_list.append(index) continue temp_entity_table = physical_indexes[index].copy() temp_entity_table.update(self._snmp.get_properties('ENTITY-MIB', index, {"entPhysicalClass": "str"}) [index]) if re.search(r"cpu|fan|sensor", temp_entity_table['entPhysicalClass'].lower()): self._logger.debug("Loaded {}, skipping.".format(temp_entity_table['entPhysicalClass'])) continue temp_entity_table.update(self._snmp.get_properties('ENTITY-MIB', index, {"entPhysicalContainedIn": "str"}) [index]) if temp_entity_table['entPhysicalContainedIn'] == '': self.exclusion_list.append(index) continue temp_entity_table.update(self._snmp.get_properties('ENTITY-MIB', index, {"entPhysicalVendorType": "str"}) [index]) ent_physical_class = temp_entity_table.get("entPhysicalClass") if not ent_physical_class or ent_physical_class == "''" or "other" in ent_physical_class: vendor_type = temp_entity_table['entPhysicalVendorType'] if not vendor_type: continue vendor_type_match = re.search(vendor_type_match_pattern, vendor_type.lower()) index_entity_class = None if vendor_type_match: index_entity_class = self.ENTITY_VENDOR_TYPE_TO_CLASS_MAP[vendor_type_match.group()] if index_entity_class: temp_entity_table['entPhysicalClass'] = index_entity_class elif not ent_physical_class or ent_physical_class == "''": self.exclusion_list.append(index) continue if "module" in temp_entity_table['entPhysicalClass'].lower() \ and re.search(self.entity_to_container_pattern, temp_entity_table['entPhysicalVendorType'].lower(), re.IGNORECASE): temp_entity_table['entPhysicalClass'] = 'container' else: temp_entity_table['entPhysicalClass'] = temp_entity_table['entPhysicalClass'].replace("'", "") temp_entity_table.update(self._snmp.get_properties('ENTITY-MIB', index, entity_table_optional_port_attr) [index]) if re.search(r'stack|chassis|module|port|powerSupply|container|backplane', temp_entity_table['entPhysicalClass']): result_dict[index] = temp_entity_table self._logger.debug("Successfully loaded '{0}'".format(temp_entity_table["entPhysicalDescr"])) else: continue if temp_entity_table['entPhysicalClass'] == 'chassis': self._chassis_list.append(index) chassis_id = temp_entity_table['entPhysicalParentRelPos'] if chassis_id == '-1': chassis_id = '0' self.relative_address[index] = chassis_id elif temp_entity_table['entPhysicalClass'] == 'port': if not re.search(self.port_exclude_pattern, temp_entity_table['entPhysicalName'], re.IGNORECASE) \ and not re.search(self.port_exclude_pattern, temp_entity_table['entPhysicalDescr'], re.IGNORECASE): port_entity = self._get_mapping(index, temp_entity_table[self.ENTITY_PHYSICAL]) if not port_entity: port_entity = self._get_mapping(index, temp_entity_table["entPhysicalName"]) if port_entity and port_entity not in self.port_mapping.values(): self.port_mapping[index] = port_entity self._port_list.append(index) elif temp_entity_table['entPhysicalClass'] == 'powerSupply': self._power_supply_list.append(index) self._filter_entity_table(result_dict) return result_dict
def _get_entity_table(self): """Read Entity-MIB and filter out device's structure and all it's elements, like ports, modules, chassis, etc. :rtype: QualiMibTable :return: structured and filtered EntityPhysical table. """ result_dict = QualiMibTable("entPhysicalTable") entity_table_critical_port_attr = { "entPhysicalContainedIn": "str", "entPhysicalClass": "str", "entPhysicalVendorType": "str" } entity_table_optional_port_attr = { "entPhysicalDescr": "str", "entPhysicalName": "str" } physical_indexes = self.snmp_handler.get_table( "ENTITY-MIB", "entPhysicalParentRelPos") for index in physical_indexes.keys(): is_excluded = False if physical_indexes[index]["entPhysicalParentRelPos"] == "": self.exclusion_list.append(index) continue temp_entity_table = physical_indexes[index].copy() temp_entity_table.update( self.snmp_handler.get_properties( "ENTITY-MIB", index, entity_table_critical_port_attr)[index]) if temp_entity_table["entPhysicalContainedIn"] == "": is_excluded = True self.exclusion_list.append(index) for item in self.entity_table_black_list: if item in temp_entity_table["entPhysicalVendorType"].lower(): is_excluded = True break if is_excluded is True: continue temp_entity_table.update( self.snmp_handler.get_properties( "ENTITY-MIB", index, entity_table_optional_port_attr)[index]) if temp_entity_table["entPhysicalClass"] == "": vendor_type = self.snmp_handler.get_property( "ENTITY-MIB", "entPhysicalVendorType", index) index_entity_class = None if vendor_type == "": continue if "cevcontainer" in vendor_type.lower(): index_entity_class = "container" elif "cevchassis" in vendor_type.lower(): index_entity_class = "chassis" elif "cevmodule" in vendor_type.lower(): index_entity_class = "module" elif "cevport" in vendor_type.lower(): index_entity_class = "port" elif "cevpowersupply" in vendor_type.lower(): index_entity_class = "powerSupply" if index_entity_class: temp_entity_table["entPhysicalClass"] = index_entity_class elif "powershelf" in temp_entity_table[ "entPhysicalVendorType"].lower(): temp_entity_table["entPhysicalClass"] = "container" else: temp_entity_table["entPhysicalClass"] = temp_entity_table[ "entPhysicalClass"].replace("'", "") if re.search( r"stack|chassis|module|port|powerSupply|container|backplane", temp_entity_table["entPhysicalClass"]): result_dict[index] = temp_entity_table if temp_entity_table["entPhysicalClass"] == "chassis": self.chassis_list.append(index) elif temp_entity_table["entPhysicalClass"] == "port": if not re.search(self.port_exclude_pattern, temp_entity_table["entPhysicalName"], re.IGNORECASE) \ and not re.search(self.port_exclude_pattern, temp_entity_table["entPhysicalDescr"], re.IGNORECASE): port_id = self._get_mapping( index, temp_entity_table[self.ENTITY_PHYSICAL]) if port_id and port_id in self.if_table and port_id not in self.port_mapping.values( ): self.port_mapping[index] = port_id self.port_list.append(index) elif temp_entity_table["entPhysicalClass"] == "powerSupply": self.power_supply_list.append(index) self._filter_entity_table(result_dict) return result_dict
def _get_entity_table(self): """Read Entity-MIB and filter out device's structure and all it's elements, like ports, modules, chassis, etc. :rtype: QualiMibTable :return: structured and filtered EntityPhysical table. """ result_dict = QualiMibTable('entPhysicalTable') entity_table_critical_port_attr = { 'entPhysicalContainedIn': 'str', 'entPhysicalVendorType': 'str' } entity_table_optional_port_attr = { 'entPhysicalDescr': 'str', 'entPhysicalSerialNum': 'str' } physical_indexes = self.snmp.get_table('ENTITY-MIB', 'entPhysicalClass') for index in physical_indexes.keys(): is_excluded = False #if physical_indexes[index]['entPhysicalParentRelPos'] == '': # self.exclusion_list.append(index) # continue temp_entity_table = physical_indexes[index].copy() #temp_entity_table.update(self.snmp.get_properties('ENTITY-MIB', index, entity_table_critical_port_attr) # [index]) #if temp_entity_table['entPhysicalContainedIn'] == '': # is_excluded = True # self.exclusion_list.append(index) for item in self.entity_table_black_list: if item in temp_entity_table['entPhysicalVendorType'].lower(): is_excluded = True break if is_excluded is True: continue temp_entity_table.update( self.snmp.get_properties( 'ENTITY-MIB', index, entity_table_optional_port_attr)[index]) '''if temp_entity_table['entPhysicalClass'] == '': vendor_type = self.snmp.get_property('ENTITY-MIB', 'entPhysicalVendorType', index) index_entity_class = None if vendor_type == '': continue if 'cevcontainer' in vendor_type.lower(): index_entity_class = 'container' elif 'cevchassis' in vendor_type.lower(): index_entity_class = 'chassis' elif 'cevmodule' in vendor_type.lower(): index_entity_class = 'module' elif 'cevport' in vendor_type.lower(): index_entity_class = 'port' elif 'cevpowersupply' in vendor_type.lower(): index_entity_class = 'powerSupply' if index_entity_class: temp_entity_table['entPhysicalClass'] = index_entity_class else:''' temp_entity_table['entPhysicalClass'] = temp_entity_table[ 'entPhysicalClass'].replace("'", "") if re.search( r'stack|chassis|module|port|powerSupply|container|backplane', temp_entity_table['entPhysicalClass']): result_dict[index] = temp_entity_table if temp_entity_table['entPhysicalClass'] == 'chassis': self.chassis_list.append(index) break #elif temp_entity_table['entPhysicalClass'] == 'port': # if not re.search(self.port_exclude_pattern, temp_entity_table['entPhysicalName'], re.IGNORECASE) \ # and not re.search(self.port_exclude_pattern, temp_entity_table['entPhysicalDescr'], # re.IGNORECASE): # port_id = self._get_mapping(index, temp_entity_table['entPhysicalDescr']) # if port_id and port_id in self.if_table and port_id not in self.port_mapping.values(): # self.port_mapping[index] = port_id # self.port_list.append(index) #elif temp_entity_table['entPhysicalClass'] == 'powerSupply': # self.power_supply_list.append(index) #self._filter_entity_table(result_dict) return result_dict
def test_autoload(self, snmp_mock): self._setUp({ 'Enable SNMP': 'False', }) property_map = { ('SNMPv2-MIB', 'sysDescr', '0'): 'TiMOS-B-8.0.R4 both/mpc ALCATEL SAS-M 7210 Copyright (c) 2000-2016 ' 'Alcatel-Lucent.\r\nAll rights reserved. All use subject to applicable license ' 'agreements.\r\nBuilt on Thu Mar 3 13:32:09 IST 2016 by builder in /home/builder' '/8.0B1/R4/panos/main', ('SNMPv2-MIB', 'sysContact', '0'): 'admin', ('SNMPv2-MIB', 'sysName', '0'): 'alu', ('SNMPv2-MIB', 'sysLocation', '0'): 'somewhere', ('SNMPv2-MIB', 'sysObjectID', '0'): 'TIMETRA-GLOBAL-MIB::tmnxBasedProducts.2.1.2.2.1', ('TIMETRA-CHASSIS-MIB', 'tmnxChassisType', '1.50331649'): '20', ('TIMETRA-CHASSIS-MIB', 'tmnxChassisTypeDescription', '20'): 'Single Slot', ('TIMETRA-CHASSIS-MIB', 'tmnxCardEquippedType', '1.1'): '15', ('TIMETRA-CHASSIS-MIB', 'tmnxCardTypeDescription', '15'): 'No Such Instance currently exists at this OID', ('TIMETRA-CHASSIS-MIB', 'tmnxCardEquippedType', '1.1.1'): '15', ('TIMETRA-CHASSIS-MIB', 'tmnxMdaTypeDescription', '15'): 'No Such Instance currently exists at this OID', ('TIMETRA-CHASSIS-MIB', 'tmnxCardEquippedType', '1.1.2'): '15', ('TIMETRA-CHASSIS-MIB', 'tmnxMdaTypeDescription', '15'): 'No Such Instance currently exists at this OID', ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36339712'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '36339712'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36339712'): '00:25:ba:0b:9c:86', ('IF-MIB', 'ifMtu', '36339712'): '9212', ('IF-MIB', 'ifHighSpeed', '36339712'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36339712'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36339712'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36405248'): 'DISABLED DO NOT USE', ('IF-MIB', 'ifType', '36405248'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36405248'): '00:25:ba:0b:9c:88', ('IF-MIB', 'ifMtu', '36405248'): '9192', ('IF-MIB', 'ifHighSpeed', '36405248'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36405248'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36405248'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36175872'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '36175872'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36175872'): '00:25:ba:0b:9c:81', ('IF-MIB', 'ifMtu', '36175872'): '9212', ('IF-MIB', 'ifHighSpeed', '36175872'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36175872'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36175872'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36438016'): 'DISABLED DO NOT USE', ('IF-MIB', 'ifType', '36438016'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36438016'): '00:25:ba:0b:9c:89', ('IF-MIB', 'ifMtu', '36438016'): '9192', ('IF-MIB', 'ifHighSpeed', '36438016'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36438016'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36438016'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.35848192'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '35848192'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '35848192'): '00:25:ba:0b:9c:77', ('IF-MIB', 'ifMtu', '35848192'): '9212', ('IF-MIB', 'ifHighSpeed', '35848192'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.35848192'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.35848192'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.35749888'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '35749888'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '35749888'): '00:25:ba:0b:9c:74', ('IF-MIB', 'ifMtu', '35749888'): '1514', ('IF-MIB', 'ifHighSpeed', '35749888'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.35749888'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.35749888'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36306944'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '36306944'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36306944'): '00:25:ba:0b:9c:85', ('IF-MIB', 'ifMtu', '36306944'): '9212', ('IF-MIB', 'ifHighSpeed', '36306944'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36306944'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36306944'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.37781504'): 'To aar01awsccc-Te0/0/2/1-CableID', ('IF-MIB', 'ifType', '37781504'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '37781504'): '00:25:ba:0d:57:f4', ('IF-MIB', 'ifMtu', '37781504'): '9212', ('IF-MIB', 'ifHighSpeed', '37781504'): '10000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.37781504'): "'notApplicable'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherOperDuplex', '1.37781504'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.37781504'): "'notApplicable'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.35979264'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '35979264'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '35979264'): '00:25:ba:0b:9c:7b', ('IF-MIB', 'ifMtu', '35979264'): '9212', ('IF-MIB', 'ifHighSpeed', '35979264'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.35979264'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.35979264'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36241408'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '36241408'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36241408'): '00:25:ba:0b:9c:83', ('IF-MIB', 'ifMtu', '36241408'): '1518', ('IF-MIB', 'ifHighSpeed', '36241408'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36241408'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36241408'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.37814272'): 'MAcsec testing', ('IF-MIB', 'ifType', '37814272'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '37814272'): '00:25:ba:0d:57:f5', ('IF-MIB', 'ifMtu', '37814272'): '9212', ('IF-MIB', 'ifHighSpeed', '37814272'): '10000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.37814272'): "'notApplicable'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherOperDuplex', '1.37814272'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.37814272'): "'notApplicable'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.35717120'): 'OAM Interop', ('IF-MIB', 'ifType', '35717120'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '35717120'): '00:25:ba:0b:9c:73', ('IF-MIB', 'ifMtu', '35717120'): '9212', ('IF-MIB', 'ifHighSpeed', '35717120'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.35717120'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.35717120'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.35880960'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '35880960'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '35880960'): '00:25:ba:0b:9c:78', ('IF-MIB', 'ifMtu', '35880960'): '9212', ('IF-MIB', 'ifHighSpeed', '35880960'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.35880960'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.35880960'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36077568'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '36077568'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36077568'): '00:25:ba:0b:9c:7e', ('IF-MIB', 'ifMtu', '36077568'): '1518', ('IF-MIB', 'ifHighSpeed', '36077568'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36077568'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36077568'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36372480'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '36372480'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36372480'): '00:25:ba:0b:9c:87', ('IF-MIB', 'ifMtu', '36372480'): '9212', ('IF-MIB', 'ifHighSpeed', '36372480'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36372480'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36372480'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.35946496'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '35946496'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '35946496'): '00:25:ba:0b:9c:7a', ('IF-MIB', 'ifMtu', '35946496'): '9212', ('IF-MIB', 'ifHighSpeed', '35946496'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.35946496'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.35946496'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36208640'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '36208640'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36208640'): '00:25:ba:0b:9c:82', ('IF-MIB', 'ifMtu', '36208640'): '9212', ('IF-MIB', 'ifHighSpeed', '36208640'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36208640'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36208640'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.35913728'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '35913728'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '35913728'): '00:25:ba:0b:9c:79', ('IF-MIB', 'ifMtu', '35913728'): '9212', ('IF-MIB', 'ifHighSpeed', '35913728'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.35913728'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.35913728'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36110336'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '36110336'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36110336'): '00:25:ba:0b:9c:7f', ('IF-MIB', 'ifMtu', '36110336'): '9212', ('IF-MIB', 'ifHighSpeed', '36110336'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36110336'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36110336'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.35684352'): 'Calient 5.3.2', ('IF-MIB', 'ifType', '35684352'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '35684352'): '00:25:ba:0b:9c:72', ('IF-MIB', 'ifMtu', '35684352'): '9212', ('IF-MIB', 'ifHighSpeed', '35684352'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.35684352'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.35684352'): "'false'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36044800'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '36044800'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36044800'): '00:25:ba:0b:9c:7d', ('IF-MIB', 'ifMtu', '36044800'): '9212', ('IF-MIB', 'ifHighSpeed', '36044800'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36044800'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36044800'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36143104'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '36143104'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36143104'): '00:25:ba:0b:9c:80', ('IF-MIB', 'ifMtu', '36143104'): '1518', ('IF-MIB', 'ifHighSpeed', '36143104'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36143104'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36143104'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36012032'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '36012032'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36012032'): '00:25:ba:0b:9c:7c', ('IF-MIB', 'ifMtu', '36012032'): '9212', ('IF-MIB', 'ifHighSpeed', '36012032'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36012032'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36012032'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.35782656'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '35782656'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '35782656'): '00:25:ba:0b:9c:75', ('IF-MIB', 'ifMtu', '35782656'): '9212', ('IF-MIB', 'ifHighSpeed', '35782656'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.35782656'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.35782656'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.36274176'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '36274176'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '36274176'): '00:25:ba:0b:9c:84', ('IF-MIB', 'ifMtu', '36274176'): '9212', ('IF-MIB', 'ifHighSpeed', '36274176'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.36274176'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.36274176'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.35815424'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '35815424'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '35815424'): '00:25:ba:0b:9c:76', ('IF-MIB', 'ifMtu', '35815424'): '9212', ('IF-MIB', 'ifHighSpeed', '35815424'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.35815424'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.35815424'): "'true'", ('TIMETRA-PORT-MIB', 'tmnxPortDescription', '1.35363536'): '10/100/Gig Ethernet SFP', ('IF-MIB', 'ifType', '35363536'): "'ethernetCsmacd'", ('IF-MIB', 'ifPhysAddress', '35363536'): '00:25:ba:0b:9c:76', ('IF-MIB', 'ifMtu', '35363536'): '9212', ('IF-MIB', 'ifHighSpeed', '35363536'): '1000', ('TIMETRA-PORT-MIB', 'tmnxPortEtherDuplex', '1.35363536'): "'fullDuplex'", ('TIMETRA-PORT-MIB', 'tmnxPortEtherAutoNegotiate', '1.35363536'): "'true'", } properties_map = { ('TIMETRA-CHASSIS-MIB', '1.184549634'): { '1.184549634': { 'tmnxHwAdminState': "'inService'", 'tmnxHwContainedIn': '134217729', 'tmnxHwClass': "'mdaModule'", 'tmnxHwOperState': "'inService'", 'tmnxHwParentRelPos': '2', 'tmnxHwSerialNumber': 'NS1128C2297', } }, ('TIMETRA-CHASSIS-MIB', '1.50331649'): { '1.50331649': { 'tmnxHwAdminState': "'inService'", 'tmnxHwContainedIn': '0', 'tmnxHwClass': "'physChassis'", 'tmnxHwOperState': "'inService'", 'tmnxHwParentRelPos': '-1', 'tmnxHwSerialNumber': 'NS1123C3277', } }, ('TIMETRA-CHASSIS-MIB', '1.150994977'): { '1.150994977': { 'tmnxHwAdminState': "'inService'", 'tmnxHwContainedIn': '50331649', 'tmnxHwClass': "'cpmModule'", 'tmnxHwOperState': "'inService'", 'tmnxHwParentRelPos': '2', } }, ('TIMETRA-CHASSIS-MIB', '1.184549633'): { '1.184549633': { 'tmnxHwAdminState': "'inService'", 'tmnxHwContainedIn': '134217729', 'tmnxHwClass': "'mdaModule'", 'tmnxHwOperState': "'inService'", 'tmnxHwParentRelPos': '1', 'tmnxHwSerialNumber': 'NS1123C3277', } }, ('TIMETRA-CHASSIS-MIB', '1.134217729'): { '1.134217729': { 'tmnxHwAdminState': "'inService'", 'tmnxHwContainedIn': '50331649', 'tmnxHwClass': "'ioModule'", 'tmnxHwOperState': "'inService'", 'tmnxHwParentRelPos': '1', 'tmnxHwSerialNumber': 'NS1123C3277', } }, ('TIMETRA-CHASSIS-MIB', '1.100663297'): { '1.100663297': { 'tmnxHwAdminState': "'inService'", 'tmnxHwContainedIn': '50331649', 'tmnxHwClass': "'fan'", 'tmnxHwOperState': "'inService'", 'tmnxHwParentRelPos': '1', } }, ('TIMETRA-CHASSIS-MIB', '1.201327105'): { '1.201327105': { 'tmnxHwAdminState': "'inService'", 'tmnxHwContainedIn': '150994977', 'tmnxHwClass': "'flashDiskModule'", 'tmnxHwOperState': "'inService'", 'tmnxHwParentRelPos': '1', } }, ('TIMETRA-CHASSIS-MIB', '1.201327106'): { '1.201327106': { 'tmnxHwAdminState': "'inService'", 'tmnxHwContainedIn': '150994977', 'tmnxHwClass': "'flashDiskModule'", 'tmnxHwOperState': "'outOfService'", 'tmnxHwParentRelPos': '2', } }, ('TIMETRA-CHASSIS-MIB', '1.83886082'): { '1.83886082': { 'tmnxHwAdminState': "'inService'", 'tmnxHwContainedIn': '50331649', 'tmnxHwClass': "'powerSupply'", 'tmnxHwOperState': "'outOfService'", 'tmnxHwParentRelPos': '2', } }, ('TIMETRA-CHASSIS-MIB', '1.167772162'): { '1.167772162': { 'tmnxHwAdminState': "'inService'", 'tmnxHwContainedIn': '50331649', 'tmnxHwClass': "'fabricModule'", 'tmnxHwOperState': "'inService'", 'tmnxHwParentRelPos': '2', } }, ('TIMETRA-CHASSIS-MIB', '1.83886081'): { '1.83886081': { 'tmnxHwAdminState': "'inService'", 'tmnxHwContainedIn': '50331649', 'tmnxHwClass': "'powerSupply'", 'tmnxHwOperState': "'inService'", 'tmnxHwParentRelPos': '1', 'tmnxHwSerialNumber': '', } }, } table_map = { ('LLDP-MIB', 'lldpLocPortDesc'): QualiMibTable('lldpLocPortDesc', **{}), ('LLDP-MIB', 'lldpRemTable'): QualiMibTable('lldpRemTable', **{}), ('IP-MIB', 'ipAddrTable'): QualiMibTable( 'ipAddrTable', **{ '172.168.1.2': { 'ipAdEntAddr': '172.168.1.2', 'ipAdEntIfIndex': '2', 'suffix': '172.168.1.2', 'ipAdEntNetMask': '255.255.255.255', 'ipAdEntBcastAddr': '0', 'ipAdEntReasmMaxSize': '65535' } }), ('IPV6-MIB', 'ipv6AddrEntry'): QualiMibTable('ipv6AddrEntry', **{}), ('IEEE8023-LAG-MIB', 'dot3adAggPortAttachedAggID'): QualiMibTable('dot3adAggPortAttachedAggID', **{}), ('TIMETRA-CHASSIS-MIB', 'tmnxHwName'): QualiMibTable( 'tmnxHwName', **{ '1.184549634': { 'tmnxHwName': 'MDA 1/2', 'suffix': '1.184549634' }, '1.50331649': { 'tmnxHwName': 'chassis', 'suffix': '1.50331649' }, '1.150994977': { 'tmnxHwName': 'Slot A', 'suffix': '1.150994977' }, '1.184549633': { 'tmnxHwName': 'MDA 1/1', 'suffix': '1.184549633' }, '1.134217729': { 'tmnxHwName': 'Slot 1', 'suffix': '1.134217729' }, '1.100663297': { 'tmnxHwName': 'Fan 1', 'suffix': '1.100663297' }, '1.201327105': { 'tmnxHwName': 'cf1:', 'suffix': '1.201327105' }, '1.201327106': { 'tmnxHwName': 'uf1:', 'suffix': '1.201327106' }, '1.83886082': { 'tmnxHwName': 'Power Supply 2', 'suffix': '1.83886082' }, '1.167772162': { 'tmnxHwName': 'Slot A', 'suffix': '1.167772162' }, '1.83886081': { 'tmnxHwName': 'Power Supply 1', 'suffix': '1.83886081' } }), ('TIMETRA-PORT-MIB', 'tmnxPortName'): QualiMibTable( 'tmnxPortName', **{ '1.36339712': { 'tmnxPortName': '1/1/21', 'suffix': '1.36339712' }, '1.36405248': { 'tmnxPortName': '1/1/23', 'suffix': '1.36405248' }, '1.36175872': { 'tmnxPortName': '1/1/16', 'suffix': '1.36175872' }, '1.36438016': { 'tmnxPortName': '1/1/24', 'suffix': '1.36438016' }, '1.35848192': { 'tmnxPortName': '1/1/6', 'suffix': '1.35848192' }, '1.35749888': { 'tmnxPortName': '1/1/3', 'suffix': '1.35749888' }, '1.36306944': { 'tmnxPortName': '1/1/20', 'suffix': '1.36306944' }, '1.37781504': { 'tmnxPortName': '1/2/1', 'suffix': '1.37781504' }, '1.35979264': { 'tmnxPortName': '1/1/10', 'suffix': '1.35979264' }, '1.36241408': { 'tmnxPortName': '1/1/18', 'suffix': '1.36241408' }, '1.37814272': { 'tmnxPortName': '1/2/2', 'suffix': '1.37814272' }, '1.35717120': { 'tmnxPortName': '1/1/2', 'suffix': '1.35717120' }, '1.67141632': { 'tmnxPortName': 'A/1', 'suffix': '1.67141632' }, '1.35880960': { 'tmnxPortName': '1/1/7', 'suffix': '1.35880960' }, '1.36077568': { 'tmnxPortName': '1/1/13', 'suffix': '1.36077568' }, '1.36372480': { 'tmnxPortName': '1/1/22', 'suffix': '1.36372480' }, '1.35946496': { 'tmnxPortName': '1/1/9', 'suffix': '1.35946496' }, '1.36208640': { 'tmnxPortName': '1/1/17', 'suffix': '1.36208640' }, '1.35913728': { 'tmnxPortName': '1/1/8', 'suffix': '1.35913728' }, '1.36110336': { 'tmnxPortName': '1/1/14', 'suffix': '1.36110336' }, '1.35684352': { 'tmnxPortName': '1/1/1', 'suffix': '1.35684352' }, '1.36044800': { 'tmnxPortName': '1/1/12', 'suffix': '1.36044800' }, '1.36143104': { 'tmnxPortName': '1/1/15', 'suffix': '1.36143104' }, '1.36012032': { 'tmnxPortName': '1/1/11', 'suffix': '1.36012032' }, '1.35782656': { 'tmnxPortName': '1/1/4', 'suffix': '1.35782656' }, '1.36274176': { 'tmnxPortName': '1/1/19', 'suffix': '1.36274176' }, '1.35815424': { 'tmnxPortName': '1/1/5', 'suffix': '1.35815424' }, '1.35363536': { 'tmnxPortName': '1/1/c2/1', 'suffix': '1.35363536' }, '1.35363535': { 'tmnxPortName': '1/1/c2', 'suffix': '1.35363535' }, }), } snmp_mock().get_property.side_effect = lambda *args: property_map[args] snmp_mock( ).get_properties.side_effect = lambda mib, i, _: properties_map[ (mib, i)] snmp_mock().get_table.side_effect = lambda *args: table_map[args] details = self.runner.discover() contact_name = sys_name = location = model = os_version = None for attr in details.attributes: if attr.relative_address == '': if attr.attribute_name == 'Contact Name': contact_name = attr.attribute_value elif attr.attribute_name == 'System Name': sys_name = attr.attribute_value elif attr.attribute_name == 'Location': location = attr.attribute_value elif attr.attribute_name == 'Model': model = attr.attribute_value elif attr.attribute_name == 'OS Version': os_version = attr.attribute_value self.assertEqual(contact_name, 'admin') self.assertEqual(sys_name, 'alu') self.assertEqual(location, 'somewhere') self.assertEqual(model, 'tmnxBasedProducts.2.1.2.2.1') self.assertEqual(os_version, '8.0.R4') ports = [ resource.name for resource in details.resources if resource.name.startswith('Port ') ] expected_ports = [ 'Port {}'.format(port) for port in [ '1-1-21', '1-1-23', '1-1-16', '1-1-24', '1-1-6', '1-1-3', '1-1-20', '1-2-1', '1-1-10', '1-1-18', '1-2-2', '1-1-2', '1-1-7', '1-1-13', '1-1-22', '1-1-9', '1-1-17', '1-1-8', '1-1-14', '1-1-1', '1-1-12', '1-1-15', '1-1-11', '1-1-4', '1-1-19', '1-1-5', '1-1-c2-1' ] ] self.assertListEqual(sorted(ports), sorted(expected_ports))
def build_mib_dict(data, name): mib_dict = QualiMibTable(name) for key, val in data: mib_dict[key] = val return mib_dict
def test_load_snmp_tables(self, snmp_ent_tbl_mock, snmp_if_tbl_mock): snmp_ent_tbl_mock.get_entity_table.return_value = QualiMibTable("EntPhysicalTable", {1: {"entPhysicalClass": "chassis"}}) self.cisco_snmp_autoload._load_snmp_tables() snmp_if_tbl_mock.return_value.called_once_with(self._snmp_handler, self._logger) snmp_ent_tbl_mock.return_value.called_once_with(self._snmp_handler, self._logger, snmp_if_tbl_mock) snmp_ent_tbl_mock.return_value.get_entity_table.called_once()