Source code for insights.parsers.corosync_cmapctl

"""
CorosyncCmapctl - Command ``corosync-cmapctl [params]``
=======================================================

This module parses the output of the ``corosync-cmapctl [params]`` command.
"""

from insights import parser, CommandParser
from insights.parsers import SkipException, ParseException
from insights.specs import Specs


[docs]@parser(Specs.corosync_cmapctl) class CorosyncCmapctl(CommandParser, dict): """ Class for parsing the `/usr/sbin/corosync-cmapctl [params]` command. All lines are stored in the dictionary with the left part of the equal sign witout parenthese info as the key and the right part of equal sign as the value. Typical output of the command is:: config.totemconfig_reload_in_progress (u8) = 0 internal_configuration.service.0.name (str) = corosync_cmap internal_configuration.service.0.ver (u32) = 0 internal_configuration.service.1.name (str) = corosync_cfg internal_configuration.service.1.ver (u32) = 0 internal_configuration.service.2.name (str) = corosync_cpg internal_configuration.service.2.ver (u32) = 0 Examples: >>> type(corosync) <class 'insights.parsers.corosync_cmapctl.CorosyncCmapctl'> >>> 'internal_configuration.service.0.name' in corosync True >>> corosync['internal_configuration.service.0.name'] 'corosync_cmap' Raises: SkipException: When there is no content ParseException: When there is no "=" in the content """ def __init__(self, context): super(CorosyncCmapctl, self).__init__(context, extra_bad_lines=['corosync-cmapctl: invalid option'])
[docs] def parse_content(self, content): if not content: raise SkipException for line in content: if '=' not in line: raise ParseException("Can not parse line %s" % line) key, value = [item.strip() for item in line.split('=')] key_without_parenthese = key.split()[0] self[key_without_parenthese] = value