Source code for insights.parsers.qemu_conf

"""
QemuConf - file ``/etc/libvirt/qemu.conf``
==========================================

The ``/etc/libvirt/qemu.conf`` file is in a key-value format, but there are several lines for one value.

Given a file containing the following test data::

   vnc_listen = "0.0.0.0"
   vnc_auto_unix_socket = 1
   vnc_tls = 1
   vnc_tls_x509_cert_dir = "/etc/pki/libvirt-vnc"
   security_driver = "selinux"
   cgroup_device_acl = [
    "/dev/null", "/dev/full", "/dev/zero",
    "/dev/random", "/dev/urandom",
    "/dev/ptmx", "/dev/kvm", "/dev/kqemu",
    "/dev/rtc","/dev/hpet", "/dev/vfio/vfio"
    ]

Example:
    >>> config = shared[QemuConf]
    >>> config.get('vnc_listen')
    '0.0.0.0'
    >>> config.get('vnc_tls')
    '1'
    >>> "/dev/random" in config.get('cgroup_device_acl')
    True
"""
import json
from .. import parser, Parser, get_active_lines, LegacyItemAccess
from insights.specs import Specs


[docs] @parser(Specs.qemu_conf) class QemuConf(LegacyItemAccess, Parser): """ A dict of the content of the ``qemu.conf`` configuration file. Attributes: data (dict): Dictionary of parsed data that splits by '=' """
[docs] def parse_content(self, content): """Parse file content of qemu.conf""" _lines = get_active_lines(content, comment_char="#") self.data = {} current_key = "" for line in _lines: if "=" in line: k, v = line.split('=') current_key = k.strip() self.data[current_key] = v.strip("\"' ") else: self.data[current_key] = self.data[current_key] + line # if the value like "[ , ,]", convert to list if self.data[current_key].endswith("]"): self.data[current_key] = json.loads(self.data[current_key])