def total_hdd_mb(cls, node): drives = get_field_value(node, 'automatic.filesystem') if drives and isinstance(drives, dict): root_drive = list(drives.values())[0] drive_kb = root_drive.get('kb_size') return AuditUtil.kb_to_mb(drive_kb) return None
def create(cls, node): hardware = { 'name': cls.name(node), 'ip_address': cls.ip_address(node), 'mac_address': cls.mac_address(node), 'hostname': cls.hostname(node), 'fqdn': cls.fqdn(node), 'domain': cls.domain(node), 'platform': cls.platform(node), 'platform_version': cls.platform_version(node), 'serial_number': cls.serial_number(node), 'model': cls.model(node), 'total_memory_mb': cls.total_memory_mb(node), 'total_hdd_mb': cls.total_hdd_mb(node), 'cpu': cls.cpu(node), 'cpu_count': cls.cpu_count(node), 'uptime_seconds': cls.uptime_seconds(node), } # process configured attribute extensions try: for platform in cls.AttributeExtension: if platform in ['__default__', node['automatic']['platform']]: extensions = cls.AttributeExtension[platform] for extension in extensions: hardware[extension] = get_field_value( node, cls.AttributeExtension[platform][extension]) except: logger.exception( 'error: exception processing attribute extensions - %r' % cls.AttributeExtension) return {'hardware': hardware}
def create(node): platform = get_field_value(node, 'automatic.platform') if platform == 'mac_os_x': return MacAudit.create(node) if platform == 'windows': return WindowsAudit.create(node) return BaseAudit.create(node)
def get_field_value(self, field, data, default=None): """ Will return the field value out of data. Field can contain '.', which will be followed. :param field: the field name, can contain '.' :param data: the data as a dict, can contain sub-dicts :param default: the default value to return if field can't be found :return: the field value, or default. """ return get_field_value(data, field, default)
def domain(cls, node): return get_field_value(node, 'automatic.domain')
def name(cls, node): return get_field_value(node, 'name')
def fqdn(cls, node): return get_field_value(node, 'automatic.fqdn')
def total_hdd_mb(cls, node): total_kb = get_field_value( node, 'automatic.filesystem.by_mountpoint./.kb_size') return AuditUtil.kb_to_mb(total_kb)
def uptime_seconds(cls, node): return get_field_value(node, 'automatic.uptime_seconds')
def serial_number(cls, node): return get_field_value(node, 'automatic.kernel.os_info.serial_number')
def cpu_count(cls, node): return get_field_value( node, 'automatic.kernel.cs_info.number_of_processors')
def hostname(cls, node): return get_field_value(node, 'automatic.hostname')
def mac_address(cls, node): return get_field_value(node, 'automatic.macaddress')
def cpu_count(cls, node): return get_field_value(node, 'automatic.hardware.number_processors')
def platform(cls, node): return get_field_value(node, 'automatic.platform')
def cpu(cls, node): return get_field_value(node, 'automatic.cpu.model_name')
def model(cls, node): return get_field_value(node, 'automatic.hardware.machine_model')
def serial_number(cls, node): return get_field_value(node, 'automatic.hardware.serial_number')
def cpu_count(cls, node): return get_field_value(node, 'automatic.cpu.total')
def total_memory_mb(cls, node): total_kb = get_field_value(node, 'automatic.memory.total') return AuditUtil.kb_to_mb(total_kb)
def platform_version(cls, node): return get_field_value(node, 'automatic.platform_version')
def total_memory_mb(cls, node): total_mb = get_field_value(node, 'automatic.memory.total') return AuditUtil.regex_match_digits(total_mb)
def ip_address(cls, node): return get_field_value(node, 'automatic.ipaddress')
def model(cls, node): return get_field_value(node, 'automatic.kernel.cs_info.model')