def process(self, device, results, log):
     """collect WBEM information from this device"""
     log.info('processing %s for device %s', self.name(), device.id)
     try:
         bb = results['Linux_BaseBoard'][0]
         if not bb: return
         cs = results['Linux_ComputerSystem'][0]
         if not cs: return
         os = results['Linux_OperatingSystem'][0]
         if not os: return
         maps = []
         om = self.objectMap(cs)
         om.snmpLocation = ''
         om.snmpOid = ''
         if bb['_manuf'] not in EnterpriseOIDs.values():
             bb['_manuf'] = 'Unknown'
         om.setHWProductKey = MultiArgs(bb['_model'], bb['_manuf'])
         osmanuf = os['version'].split()[0]
         if osmanuf not in EnterpriseOIDs.values():
             osmanuf = 'Unknown'
         om.setOSProductKey = MultiArgs(os['version'], osmanuf)
         maps.append(om)
         maps.append(ObjectMap({ "serialNumber": bb['serialNumber'],
                                 "tag": bb['tag'],
                                 "totalMemory": (os['totalMemory'] * 1024)},
                                                             compname="hw"))
         maps.append(ObjectMap({"totalSwap": (os['totalSwap'] * 1024)},
                                                             compname="os"))
     except:
         log.warning('processing error')
         return
     return maps
    def process(self, device, results, log):
        """collect snmp information from this device"""
        log.info('processing %s for device %s', self.name(), device.id)
        getdata, tabledata = results
        #if getdata['setHWProductKey'] is None: return None
        om = self.objectMap(getdata)
        #Attempt to determine the registered manufacturer from snmp oid
        #If we cant find a registered name, assign it an identifiable default
        if om.sysObjectID:
            match = re.match(r'(.\d+){7}', om.sysObjectID)
            if match:
                manufacturer = EnterpriseOIDs.get(match.group(0), 
                                                  'F5 Labs, Inc.')
            else:
                manufacturer = None
            
        device_model = self._determine_device_model(om)
            

        # Build a product build and version string to populate the OSModel field
        # Also set the manufacturer_name
        os_model = " ".join([om.sysProductName, om.sysProductVersion, 
                             om.sysProductBuild, om.sysProductEdition])
        om.setOSProductKey = MultiArgs(os_model, manufacturer)
        
            
        # Now set it. I'm not entirely up to speed on this method, 
        # But in testing the multiargs stuff will populate two fields in the GUI
      
        om.setHWProductKey = MultiArgs(device_model, manufacturer)
        return om
 def process(self, device, results, log):
     """collect WMI information from this device"""
     log.info('processing %s for device %s', self.name(), device.id)
     rm = self.relMap()
     perfnames = {}
     instances = results.get("Win32_PerfRawData_PerfDisk_PhysicalDisk", None)
     if instances:
         for instance in instances:
             perfnames[instance['name'].split()[0]] = instance['snmpindex']
     instances = results.get("Win32_DiskDrive", None)
     if not instances: return
     for instance in instances:
         om = self.objectMap(instance)
         om.id = self.prepId('PHYSICALDRIVE%s'%om.id)
         try:
             if not om._mediatype or not om._mediatype.startswith('Fixed'):
                 continue
             om.perfindex = perfnames.get(str(instance['id']), None)
             if not om.perfindex: continue
             if om._model and not om._manuf: om._manuf = om._model.split()[0]
             if om._manuf not in EnterpriseOIDs.values(): om._manuf='Unknown'
             if om._model: om.setProductKey = MultiArgs(om._model, om._manuf)
         except AttributeError:
             raise
         rm.append(om)
     return rm
 def process(self, device, results, log):
     """collect WMI information from this device"""
     log.info('processing %s for device %s', self.name(), device.id)
     instances = results.get("Win32_Product", None)
     if not instances: return
     rm = self.relMap()
     for instance in instances:
         try:
             if instance['setInstallDate']:
                 instance['setInstallDate'] = str(instance['setInstallDate'])
             elif instance['_setInstallDate']:
                 instance['setInstallDate'] = '%s/%s/%s 00:00:00' % (
                                             instance['_setInstallDate'][:4],
                                             instance['_setInstallDate'][4:6],
                                             instance['_setInstallDate'][6:8])
             else: instance['setInstallDate'] = '1968/01/08 00:00:00'
             om = self.objectMap(instance)
             om.id = self.prepId(om.setProductKey)
             if om._vendor: om._vendor = om._vendor.split()[0]
             if om._vendor not in EnterpriseOIDs.values():
                 om._vendor = 'Unknown'
             om.setProductKey = MultiArgs(om.setProductKey, om._vendor)
             rm.append(om)
         except AttributeError:
             continue
     return rm
Beispiel #5
0
 def process(self, device, results, log):
     """collect WBEM information from this device"""
     log.info('processing %s for device %s', self.name(), device.id)
     try:
         cs = results['Linux_BaseBoard'][0]
         if not cs: return
         os = results['Linux_OperatingSystem'][0]
         if not os: return
         om = self.objectMap()
         if cs['_manuf'] not in EnterpriseOIDs.values():
             cs['_manuf'] = 'Unknown'
         om.setHWProductKey = MultiArgs(cs['_model'], cs['_manuf'])
         osmanuf = os['version'].split()[0]
         if osmanuf not in EnterpriseOIDs.values():
             osmanuf = 'Unknown'
         om.setOSProductKey = MultiArgs(os['version'], osmanuf)
     except:
         return
     return om
 def process(self, device, results, log):
     """collect WBEM information from this device"""
     log.info("processing %s for device %s", self.name(), device.id)
     try:
         cs = results["Linux_BaseBoard"][0]
         if not cs:
             return
         os = results["Linux_OperatingSystem"][0]
         if not os:
             return
         om = self.objectMap()
         if cs["_manuf"] not in EnterpriseOIDs.values():
             cs["_manuf"] = "Unknown"
         om.setHWProductKey = MultiArgs(cs["_model"], cs["_manuf"])
         osmanuf = os["version"].split()[0]
         if osmanuf not in EnterpriseOIDs.values():
             osmanuf = "Unknown"
         om.setOSProductKey = MultiArgs(os["version"], osmanuf)
     except:
         return
     return om
Beispiel #7
0
 def process(self, device, results, log):
     """collect WBEM information from this device"""
     log.info('processing %s for device %s', self.name(), device.id)
     try:
         bb = results['Linux_BaseBoard'][0]
         if not bb: return
         cs = results['Linux_ComputerSystem'][0]
         if not cs: return
         os = results['Linux_OperatingSystem'][0]
         if not os: return
         maps = []
         om = self.objectMap(cs)
         om.snmpLocation = ''
         om.snmpOid = ''
         if bb['_manuf'] not in EnterpriseOIDs.values():
             bb['_manuf'] = 'Unknown'
         om.setHWProductKey = MultiArgs(bb['_model'], bb['_manuf'])
         osmanuf = os['version'].split()[0]
         if osmanuf not in EnterpriseOIDs.values():
             osmanuf = 'Unknown'
         om.setOSProductKey = MultiArgs(os['version'], osmanuf)
         maps.append(om)
         maps.append(
             ObjectMap(
                 {
                     "serialNumber": bb['serialNumber'],
                     "tag": bb['tag'],
                     "totalMemory": (os['totalMemory'] * 1024)
                 },
                 compname="hw"))
         maps.append(
             ObjectMap({"totalSwap": (os['totalSwap'] * 1024)},
                       compname="os"))
     except:
         log.warning('processing error')
         return
     return maps
Beispiel #8
0
 def process(self, device, results, log):
     """collect WBEM information from this device"""
     log.info('processing %s for device %s', self.name(), device.id)
     rm = self.relMap()
     instances = results["Linux_Processor"]
     if not instances: return
     for instance in instances:
         om = self.objectMap(instance)
         try:
             om.socket = om.id
             om.id = prepId(om.id)
             manuf = om._name.split()[0]
             if manuf not in EnterpriseOIDs.values():
                 manuf = 'Unknown'
             om.setProductKey = MultiArgs(om._name, manuf)
         except AttributeError:
             continue
         rm.append(om)
     return rm
    def process(self, device, results, log):
        getData, tabledata = results
        om = self.objectMap()
        if not getData.has_key('setHWSerialNumber') or not getData['setHWSerialNumber']:
          om.setHWSerialNumber='N/A'
        else:
          om.setHWSerialNumber=getData['setHWSerialNumber']

        if getData['snmpOid']:
            match = re.match(r'(.\d+){7}',getData['snmpOid'])
            if match:
                manufacturer = EnterpriseOIDs.get(match.group(0), None)
            else:
                manufacturer = None
            if getData.has_key('modelName'):
              om.setHWProductKey = MultiArgs(getData['modelName'], manufacturer)
            else:
              om.setHWProductKey = MultiArgs(getData['snmpOid'], manufacturer)
            log.debug("HWProductKey=%s", om.setHWProductKey)
        return om
Beispiel #10
0
    def process(self, device, results, log):
        """
        Collect SNMP information from this device
        """
        log.info('Processing %s for device %s', self.name(), device.id)
        getdata, tabledata = results
        if not getdata:
            log.warn("Unable to retrieve getdata from %s", device.id)
            log.warn("Does snmpwalk -v1 -c community %s 1.3.6.1.2.1.1 work?",
                     device.id)
            return
        log.debug("%s getdata = %s", device.id, getdata)
        om = self.objectMap(getdata)

        # Set the manufacturer according the IANA enterprise OID assignments.
        if om.snmpOid:
            match = re.match(r'(.\d+){7}', om.snmpOid)
            if match:
                manufacturer = EnterpriseOIDs.get(match.group(0), None)
            else:
                manufacturer = None

            om.setHWProductKey = MultiArgs(om.snmpOid, manufacturer)
            log.debug("HWProductKey=%s", om.setHWProductKey)

        if om.snmpDescr:
            descr = re.sub("\s", " ", om.snmpDescr)
            for regex in self.osregex:
                m = regex.search(descr)
                if m:
                    groups = m.groups()
                    if groups[0] == 'SunOS':
                        om.setOSProductKey = MultiArgs(" ".join(groups[0:3]),
                                                       'Sun')
                    else:
                        om.setOSProductKey = " ".join(groups)
                    log.debug("OSProductKey=%s", om.setOSProductKey)
                    break
        return om
    def process(self, device, results, log):
        """
        Collect SNMP information from this device
        """
        log.info('Processing %s for device %s', self.name(), device.id)
        getdata, tabledata = results
        if not getdata:
            log.warn("Unable to retrieve getdata from %s", device.id)
            log.warn("Does snmpwalk -v1 -c community %s 1.3.6.1.2.1.1 work?", 
                     device.id)
            return
        log.debug("%s getdata = %s", device.id, getdata)
        om = self.objectMap(getdata)
        
        # Set the manufacturer according the IANA enterprise OID assignments.
        if om.snmpOid:
            match = re.match(r'(.\d+){7}', om.snmpOid)
            if match:
                manufacturer = EnterpriseOIDs.get(match.group(0), None)
            else:
                manufacturer = None

            om.setHWProductKey = MultiArgs(om.snmpOid, manufacturer)
            log.debug("HWProductKey=%s", om.setHWProductKey)
        
        if om.snmpDescr:
            descr = re.sub("\s", " ", om.snmpDescr)
            for regex in self.osregex:
                m = regex.search(descr)
                if m: 
                    groups = m.groups()
                    if groups[0] == 'SunOS':
                        om.setOSProductKey = MultiArgs(" ".join(groups[0:3])
                                                     , 'Sun')
                    else:
                        om.setOSProductKey = " ".join(groups)
                    log.debug("OSProductKey=%s", om.setOSProductKey)
                    break
        return om