def get_vendor_id(sysobjectid): """Looks up the most likely vendorid based on a sysObjectID""" enterprise = get_enterprise_id(sysobjectid) cx = connection.cursor() cx.execute("SELECT vendorid FROM enterprise_number " "WHERE enterprise = %s LIMIT 1", (enterprise,)) vendorid = cx.fetchone() return vendorid[0] if vendorid else make_new_vendor_id(sysobjectid)
def make_new_vendor_id(sysobjectid): """Makes up a new vendorid based on a sysObjectID""" enterprise = get_enterprise_id(sysobjectid) if enterprise in _enterprise_map: name = _enterprise_map[enterprise] name = name.replace(CONSTANT_PREFIX, '').replace('_', '').lower()[:15] return name else: return u'unknown'
def _get_vendor(cls, sysobjectid): """Looks up the most likely vendor based on a sysObjectID""" enterprise_id = get_enterprise_id(sysobjectid) query = ( "vendorid IN (SELECT vendorid FROM enterprise_number WHERE enterprise=%s)" ) try: return manage.Vendor.objects.extra(where=[query], params=[enterprise_id])[0] except IndexError: return cls._make_new_vendor(sysobjectid)
def _make_new_vendor(cls, sysobjectid): """Makes up a new Vendor based on a sysObjectID""" enterprise_id = get_enterprise_id(sysobjectid) if enterprise_id in _enterprise_map: name = _enterprise_map[enterprise_id] name = name.replace(CONSTANT_PREFIX, "").replace("_", "").lower()[:15] else: name = UNKNOWN_VENDOR_ID cls._logger.debug("Making new vendor %r from %r", name, sysobjectid) vendor, _created = manage.Vendor.objects.get_or_create(id=name) return vendor
def mibfactory(self): """ Returns a list of MibRetriever instances, as configured in ipdevpoll.conf, to use for retrieving sensors from this netbox. """ vendor_id = None snmpv2_mib = Snmpv2Mib(self.agent) sysobjectid = yield snmpv2_mib.get_sysObjectID() if sysobjectid: vendor_id = get_enterprise_id(sysobjectid) elif self.netbox.type: vendor_id = self.netbox.type.get_enterprise_id() classes = self.mib_map.get(vendor_id, ()) or self.mib_map.get('*', ()) mibs = [cls(self.agent) for cls in classes] defer.returnValue(mibs)