'Get cpuinfo information.
Obtains cpu feature from virConnect.getCapabilities.
:return: see above description'

def _get_cpu_info(self):

    caps = self._host.get_capabilities()
    cpu_info = dict()
    cpu_info['arch'] = caps.host.cpu.arch
    cpu_info['model'] = caps.host.cpu.model
    cpu_info['vendor'] = caps.host.cpu.vendor
    topology = dict()
    topology['cells'] = len(getattr(caps.host.topology, 'cells', [1]))
    topology['sockets'] = caps.host.cpu.sockets
    topology['cores'] = caps.host.cpu.cores
    topology['threads'] = caps.host.cpu.threads
    cpu_info['topology'] = topology
    features = set()
    for f in caps.host.cpu.features:
        features.add(f.name)
    cpu_info['features'] = features
    return cpu_info
