Source code for insights.parsers.subscription_manager_release
"""
Subscription manager release commands
=====================================
Shared parser for parsing output of the ``subscription-manager release``
commands.
SubscriptionManagerReleaseShow - command ``subscription-manager release --show``
--------------------------------------------------------------------------------
"""
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.subscription_manager_release_show)
class SubscriptionManagerReleaseShow(CommandParser):
"""
Class for parsing the output of `subscription-manager release --show` command.
Typical output of the command is::
Release: 7.2
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(rhsm_rel)
<class 'insights.parsers.subscription_manager_release.SubscriptionManagerReleaseShow'>
>>> rhsm_rel.set
'7.2'
>>> rhsm_rel.major
7
>>> rhsm_rel.minor
2
"""
[docs] def parse_content(self, content):
self.set = self.major = self.minor = None
l = len(content)
if l != 1:
raise SkipComponent("Content takes at most 1 line ({0} given).".format(l))
line = content[0].strip()
if line != 'Release not set':
line_splits = line.split()
# Release: 6.7 or Release 7Server
if len(line_splits) == 2:
rel = line_splits[-1]
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])
return
# Release: 7Server
elif rel.endswith('Server') and rel[0].isdigit():
self.set = rel
self.major = int(rel[0])
# leave self.minor as None
return
# Release: 8
elif rel[0].isdigit() and len(rel) == 1:
self.set = rel
self.major = int(rel[0])
# leave self.minor as None
return
raise SkipComponent("Incorrect content: {0}".format(line))
# Release not set