Source code for insights.parsers.rhui_release

"""
RHUI release commands or files
==============================

RHUISetRelease - command ``rhui_set_release``
---------------------------------------------
RHUIReleaseVer - file ``/etc/yum/vars/releasever`` or ``/etc/yum/vars/releasever``
----------------------------------------------------------------------------------
"""
import os

from insights.core import Parser, CommandParser
from insights.core.exceptions import SkipComponent
from insights.core.plugins import parser
from insights.specs import Specs
from insights.util import deprecated


[docs] @parser(Specs.rhui_releasever) class RHUIReleaseVer(Parser): """ Class for parsing the file `/etc/yum/vars/releasever` or `/etc/dnf/vars/releasever`. It will output the rhel minor release when a minor release is set, or emtpy when it isn't set. This file may not exist when there is no minor release is set. Sample input data:: 8.6 Attributes: set (str): the set release. major (int): the major version of the set release. minor (int): the minor version of the set release. Raises: SkipComponent: When the content is not in expected format. Examples: >>> type(rhui_releasever) <class 'insights.parsers.rhui_release.RHUIReleaseVer'> >>> rhui_releasever.set '8.6' >>> rhui_releasever.major 8 >>> rhui_releasever.minor 6 """
[docs] def parse_content(self, content): self.set = self.major = self.minor = None if len(content) == 0: # Release not set return if len(content) != 1: raise SkipComponent("Unexpected content: {0}".format(os.linesep.join(content))) rhel_version = content[0].strip() line_splits = rhel_version.split('.') if len(line_splits) == 2 and line_splits[0].isdigit() and line_splits[-1].isdigit(): self.set = rhel_version self.major = int(line_splits[0]) self.minor = int(line_splits[-1]) elif rhel_version and rhel_version[0].isdigit(): self.set = rhel_version self.major = int(rhel_version[0]) # leave self.minor as None else: self.set = rhel_version
[docs] @parser(Specs.rhui_set_release) class RHUISetRelease(CommandParser): """ .. warning:: This class is deprecated and will be removed from 3.6.0. Please use the :class:`insights.parsers.rhui_release.RHUIReleaseVer` instead. Class for parsing the output of `rhui_set_release` command. It will output the rhel minor release when a minor release is set, or emtpy when it isn't set. Typical output of the command is:: 8.6 Attributes: set (str): the set release. major (int): the major version of the set release. minor (int): the minor version of the set release. Examples: >>> type(rhui_rel) <class 'insights.parsers.rhui_release.RHUISetRelease'> >>> rhui_rel.set '8.6' >>> rhui_rel.major 8 >>> rhui_rel.minor 6 """ def __init__(self, context, extra_bad_lines=None): deprecated(RHUISetRelease, "Please use the :class:`insights.parsers.rhui_release.RHUIReleaseVer` instead.", "3.6.0") super(RHUISetRelease, self).__init__(context, extra_bad_lines)
[docs] def parse_content(self, content): self.set = self.major = self.minor = None if len(content) == 0: # Release not set return if len(content) == 1: rhel_version = content[0].strip() line_splits = rhel_version.split('.') if len(line_splits) == 2 and line_splits[0].isdigit() and line_splits[-1].isdigit(): self.set = rhel_version self.major = int(line_splits[0]) self.minor = int(line_splits[-1]) return raise SkipComponent("Unexpected content: {0}".format(os.linesep.join(content)))