Source code for insights.parsers.kpatch_list

"""
KpatchList - command ``/usr/sbin/kpatch list``
==============================================

The ``/usr/sbin/kpatch list`` command provides information about
the installed patch modules.

Sample content from command ``/usr/sbin/kpatch list`` is::
    Loaded patch modules:
    kpatch_3_10_0_1062_1_1_1_4 [enabled]

    Installed patch modules:
    kpatch_3_10_0_1062_1_1_1_4 (3.10.0-1062.1.1.el7.x86_64)

Examples:
    >>> 'kpatch_3_10_0_1062_1_1_1_4' in kpatchs.loaded
    True
    >>> kpatchs.loaded.get('kpatch_3_10_0_1062_1_1_1_4')
    'enabled'
    >>> 'kpatch_3_10_0_1062_1_1_1_4' in kpatchs.installed
    True
    >>> kpatchs.installed.get('kpatch_3_10_0_1062_1_1_1_4')
    '3.10.0-1062.1.1.el7.x86_64'
"""
from insights.core import CommandParser
from insights.core.exceptions import SkipComponent
from insights.core.plugins import parser
from insights.specs import Specs


[docs] @parser(Specs.kpatch_list) class KpatchList(CommandParser): """Class for command: /usr/sbin/kpatch list"""
[docs] def parse_content(self, content): if not content: raise SkipComponent("No Data from command: /usr/sbin/kpatch list") self._loaded = {} self._installed = {} cur_dict = {} for line in content: if not line.strip(): continue if 'Loaded patch modules' in line: cur_dict = self._loaded continue if 'Installed patch modules' in line: cur_dict = self._installed continue fields = [k.strip('()[]') for k in line.split()] if len(fields) == 1: if cur_dict == self._loaded: # In the early version: # # kpatch list # Loaded patch modules: # kpatch_7_0_1_el7 # cur_dict[fields[0].strip()] = '' elif len(fields) == 2: cur_dict[fields[0]] = fields[1]
@property def loaded(self): """ (dict): This will return the loaded kpath modules """ return self._loaded @property def installed(self): """ (dict): This will return the installed kpath modules """ return self._installed