Source code for insights.parsers.journald_conf

"""
Journald configuration files
============================

The journald.conf file is a key=value file with hash comments. Everything is in the [Journal]
section, so sections are ignored.

Only active settings lines are processed, commented out settings are not processed.

Active settings are provided using the `get_active_settings_value` method or
by using the dictionary `contains` functionality.

Options that are commented out are not returned - a rule using this parser has to be aware of which
default value is assumed by systemd if the particular option is not specified.

Note: Precedence logic is implemented in JournaldConfAll combiner, the parser is called for every
file separately.

Parsers provided by this module are:

EtcJournaldConf - file ``/etc/systemd/journald.conf``
-----------------------------------------------------

EtcJournaldConfD - file ``/etc/systemd/journald.conf.d/*.conf``
---------------------------------------------------------------

UsrJournaldConfD - file ``usr/lib/systemd/journald.conf.d/*.conf``
------------------------------------------------------------------

Example:

    >>> conf = shared[EtcJournaldConf]
    >>> conf.get_active_setting_value('Storage')
    'auto'
    >>> 'Storage' in conf.active_settings
    True
"""

from .. import Parser, parser, get_active_lines
from ..parsers import split_kv_pairs
from insights.specs import Specs


[docs] class JournaldConf(Parser): """ A parser for accessing journald conf files. """ def __init__(self, *args, **kwargs): self.active_lines_unparsed = [] self.active_settings = {} super(JournaldConf, self).__init__(*args, **kwargs)
[docs] def parse_content(self, content): """ Main parsing class method which stores all interesting data from the content. Args: content (context.content): Parser context content """ # note, the Parser class sets: # * self.file_path = context.path and # * self.file_name = os.path.basename(context.path) self.active_lines_unparsed = get_active_lines(content) if content is not None else [] # (man page shows all options with "=") self.active_settings = split_kv_pairs(content, use_partition=False) if content is not None else []
[docs] def get_active_setting_value(self, setting_name): """ Access active setting value by setting name. Args: setting_name (string): Setting name """ return self.active_settings[setting_name]
[docs] @parser(Specs.etc_journald_conf) class EtcJournaldConf(JournaldConf): """ Parser for accessing the ``/etc/systemd/journald.conf`` file. """ pass
[docs] @parser(Specs.etc_journald_conf_d) class EtcJournaldConfD(JournaldConf): """ Parser for accessing the ``/etc/systemd/journald.conf.d/*.conf`` files. """ pass
[docs] @parser(Specs.usr_journald_conf_d) class UsrJournaldConfD(JournaldConf): """ Parser for accessing the ``usr/lib/systemd/journald.conf.d/*.conf`` files. """ pass