Source code for insights.parsers.hostname

"""
Hostname - command ``hostname``
===============================

Parsers contained in this module are:

Hostname - command ``hostname -f``
----------------------------------

HostnameDefault - command ``hostname``
--------------------------------------

HostnameShort - command ``hostname -s``
---------------------------------------
"""
from insights.core import CommandParser
from insights.core.exceptions import ParseException
from insights.core.plugins import parser
from insights.specs import Specs


[docs] class HostnameBase(CommandParser): """ The base parser class for command ``hostname``. Raises: ParseException: When the output contains multiple non-empty lines. """
[docs] def parse_content(self, content): content = list(filter(None, content)) if len(content) != 1: msg = "hostname data contains multiple non-empty lines" raise ParseException(msg) self.raw = content[0].strip() self.hostname = self.raw.split(".")[0] if self.raw else None
[docs] @parser(Specs.hostname) class Hostname(HostnameBase): """ This parser simply reads the output of ``hostname -f``, which is the configured fully qualified domain name of the client system. It then splits it into ``hostname`` and ``domain`` and stores these as attributes, along with the unmodified name in the ``fqdn`` attribute. Examples: >>> hostname.raw 'rhel7.example.com' >>> hostname.fqdn 'rhel7.example.com' >>> hostname.hostname 'rhel7' >>> hostname.domain 'example.com' Attributes: raw: The raw output of the ``hostname -f`` command. fqdn: The fully qualified domain name of the host. The same to ``hostname`` when domain part is not set. hostname: The hostname. domain: The domain get from the ``fqdn``. """
[docs] def parse_content(self, content): super(Hostname, self).parse_content(content) self.fqdn = self.raw self.domain = ".".join(self.raw.split(".")[1:]) if self.raw else None
def __repr__(self): return "<raw: {r}, hostname: {h}, domain: {d}>".format(r=self.raw, h=self.hostname, d=self.domain)
[docs] @parser(Specs.hostname_default) class HostnameDefault(HostnameBase): """ This parser simply reads the output of ``hostname``. Examples: >>> hostname_def.raw 'rhel7' >>> hostname_def.hostname 'rhel7' Attributes: raw: The raw output of the ``hostname`` command. hostname: The hostname. """ def __repr__(self): return "<raw: {r}, hostname: {h}>".format(r=self.raw, h=self.hostname)
[docs] @parser(Specs.hostname_short) class HostnameShort(HostnameBase): """ This parser simply reads the output of ``hostname -s``, which is the configured short hostname of the client system. Examples: >>> hostname_s.raw 'rhel7' >>> hostname_s.hostname 'rhel7' Attributes: raw: The raw output of the ``hostname -s`` command. hostname: The hostname. """ def __repr__(self): return "<raw: {r}, hostname: {h}>".format(r=self.raw, h=self.hostname)