Source code for insights.parsers.rhsm_releasever
"""
RHSM Release Version - ``file /var/lib/rhsm/cache/releasever.json``
===================================================================
Parser Red Hat Subscription manager release info.
"""
from insights.core import JSONParser
from insights.core.exceptions import SkipComponent
from insights.core.plugins import parser
from insights.specs import Specs
[docs]
@parser(Specs.rhsm_releasever)
class RhsmReleaseVer(JSONParser):
"""
Class for parsing the file: ``/var/lib/rhsm/cache/releasever.json``.
This information mirror the information provided by the
``subscription-manager release --show`` command.
.. note::
Please refer to the super-class :class:`insights.core.JSONParser`
for additional information on attributes and methods.
Sample input data::
{"releaseVer": "6.10"}
Raises:
SkipComponent: When the json content of the file is empty.(i.e release version is empty. eg. {})
Examples:
>>> type(rhsm_releasever)
<class 'insights.parsers.rhsm_releasever.RhsmReleaseVer'>
>>> rhsm_releasever['releaseVer'] == '6.10'
True
>>> rhsm_releasever.set == '6.10'
True
>>> rhsm_releasever.major
6
>>> rhsm_releasever.minor
10
"""
[docs]
def parse_content(self, content):
"""
Parse the contents of file ``/var/lib/rhsm/cache/releasever.json``.
"""
super(RhsmReleaseVer, self).parse_content(content)
self.set = self.major = self.minor = None
if 'releaseVer' not in self.data:
raise SkipComponent('releaseVer is not in data')
rel = self.data.get('releaseVer') or ''
rel_splits = rel.split('.')
# Release: 6.7
if len(rel_splits) == 2:
if rel_splits[0].isdigit() and rel_splits[-1].isdigit():
self.set = rel
self.major = int(rel_splits[0])
self.minor = int(rel_splits[-1])
# Release: 7Server or 8
elif rel and rel[0].isdigit():
self.set = rel
self.major = int(rel[0])
# leave self.minor as None