Source code for insights.parsers.nova_user_ids
"""
Get ``uid`` of user ``nova`` and ``nova_migration``
===================================================
The parser class in this module uses base parser class
``CommandParser`` to get uids of the user ``nova`` and
``nova_migration``.
Parsers included in this module are:
NovaUID - command ``id -u nova``
--------------------------------
NovaMigrationUID - command ``id -u nova_migration``
---------------------------------------------------
"""
from insights.core import CommandParser
from insights.core.exceptions import ParseException, SkipComponent
from insights.core.plugins import parser
from insights.specs import Specs
[docs]@parser(Specs.nova_uid)
class NovaUID(CommandParser):
'''Parse output of ``id -u nova`` and get the ``uid`` (int).
Typical output of the ``id -u nova`` command is::
162
However the id number may vary.
Examples:
>>> nova_uid.data
162
Attributes:
data: ``int`` if 'nova' user exist.
Raises:
SkipComponent: If 'nova' user not found or output is empty.
ParseException: For any other output which is not a number or multi-line.
Outputs of such kind are not yet expected from the command `id`.
'''
[docs] def parse_content(self, content):
if not content:
raise SkipComponent("Empty output.")
if "no such user" in content[0].lower():
raise SkipComponent("No such user.")
if len(content) > 1 or not content[0].isdigit():
raise ParseException("Unable to parse user ID: {0}".format(content))
self.data = int(content[0])
[docs]@parser(Specs.nova_migration_uid)
class NovaMigrationUID(NovaUID):
'''Parse output of ``id -u nova_migration`` and get the ``uid`` (int).
Typical output of the ``id -u nova_migration`` command is::
153
However the id number may vary.
Examples:
>>> nova_migration_uid.data
153
Attributes:
data: ``int`` if 'nova_migration' user exist.
Raises:
SkipComponent: If 'nova_migration' user not found or output is empty.
ParseException: For any other output which is not a number or multi-line.
Output of such kind are not yet expected from the command `id`.
'''
pass