Source code for insights.combiners.ansible_info

"""
Ansible Info
============
Provide information about the Ansible packages installed on a system.
"""
from insights.core.plugins import combiner
from insights.parsers.installed_rpms import InstalledRpms

ANSIBLE_TOWER_PKG = "ansible-tower"
ANSIBLE_AUTOMATION_HUB_PKG = "automation-hub"
ANSIBLE_CATALOG_WORKER_PKG = "catalog-worker"
ANSIBLE_AUTOMATION_CONTROLLER_PKG = "automation-controller"
ANSIBLE_PACKAGES = [
    ANSIBLE_TOWER_PKG,
    ANSIBLE_AUTOMATION_HUB_PKG,
    ANSIBLE_CATALOG_WORKER_PKG,
    ANSIBLE_AUTOMATION_CONTROLLER_PKG,
]


[docs] @combiner(InstalledRpms) class AnsibleInfo(dict): """ Provides information related to Ansible based on the RPMs installed. Provides properties to determine the Ansible specific system characteristics. The base class of the combiner is ``dict`` with dictionary keys being the Ansible package names, and data values being :py:class:`insights.parsers.installed_rpms.InstalledRpm` objects. See the :py:class:`insights.parsers.installed_rpms.InstalledRpm` class for more information on object methods and values. Properties are provided to aid in fingerprinting of the system. Examples: >>> type(info) <class 'insights.combiners.ansible_info.AnsibleInfo'> >>> info.is_tower True >>> info.tower_version '1.0.0' >>> info.is_controller True >>> info.controller_version '1.0.0' """ def __init__(self, rpms): pkg_versions = dict([(pkg, rpms.get_max(pkg)) for pkg in ANSIBLE_PACKAGES if rpms.get_max(pkg) is not None]) self.update(pkg_versions) @property def is_tower(self): """ bool: Whether or not this system has ``ansible-tower`` installed """ return ANSIBLE_TOWER_PKG in self @property def tower_version(self): """ str: Version of ansible-tower installed or ``None``""" return self[ANSIBLE_TOWER_PKG].version if ANSIBLE_TOWER_PKG in self else None @property def is_controller(self): """ bool: Whether or not this system has ``ansible-tower`` or ``automation-controller`` installed """ return ANSIBLE_TOWER_PKG in self or ANSIBLE_AUTOMATION_CONTROLLER_PKG in self @property def controller_version(self): """ str: Version of ansible-tower installed, or if it's not installed the version of automation-controller installed or ``None`` """ if ANSIBLE_TOWER_PKG in self: return self[ANSIBLE_TOWER_PKG].version elif ANSIBLE_AUTOMATION_CONTROLLER_PKG in self: return self[ANSIBLE_AUTOMATION_CONTROLLER_PKG].version @property def is_hub(self): """ bool: Whether or not this system has ``automation-hub`` installed """ return ANSIBLE_AUTOMATION_HUB_PKG in self @property def hub_version(self): """ str: Version of automation-hub installed or ``None``""" return self[ANSIBLE_AUTOMATION_HUB_PKG].version if ANSIBLE_AUTOMATION_HUB_PKG in self else None @property def is_catalog_worker(self): """ bool: Whether or not this system has ``catalog-worker`` installed """ return ANSIBLE_CATALOG_WORKER_PKG in self @property def catalog_worker_version(self): """ str: Version of catalog-worker installed or ``None``""" return self[ANSIBLE_CATALOG_WORKER_PKG].version if ANSIBLE_CATALOG_WORKER_PKG in self else None