Source code for insights.combiners.virt_who_conf

"""
virt-who configuration
======================
virt-who can accept configuration from several sources listed below in order
of precedence.

Configuration sources of virt-who::

    1. command line             # Ignored
    2. environment variables    # Ignored
    3. /etc/sysconfig/virt-who  # VirtWhoSysconfig
    4. /etc/virt-who.d/*.conf   # VirtWhoConf
    5. /etc/virt-who.conf       # VirtWhoConf

"""

from insights.core.plugins import combiner
from insights.parsers.sysconfig import VirtWhoSysconfig
from insights.parsers.virt_who_conf import VirtWhoConf


[docs] @combiner(VirtWhoSysconfig, VirtWhoConf) class AllVirtWhoConf(object): """ Combiner for accessing part of valid ``virt-who`` configurations Sample content of ``/etc/sysconfig/virt-who``:: # Start virt-who on background, perform doublefork and monitor for virtual guest # events (if possible). It is NOT recommended to turn off this option for # starting virt-who as service. VIRTWHO_BACKGROUND=1 # Enable debugging output. VIRTWHO_DEBUG=1 # Send the list of guest IDs and exit immediately. VIRTWHO_ONE_SHOT=0 # Acquire and send list of virtual guest each N seconds, 0 means default # configuration. VIRTWHO_INTERVAL=3600 # Virt-who subscription manager backend. Enable only one option from the following: # Report to Subscription Asset Manager (SAM) or the Red Hat Customer Portal # Report to Sattellite version 6 VIRTWHO_SATELLITE6=1 Sample content of ``/etc/virt-who.conf``:: [global] debug=False oneshot=True [defaults] owner=test Sample content of ``/etc/virt-who.d/satellite_esx.conf``:: [esx_satellite] type=esx server=10.0.0.1 owner=Satellite env=Satellite Examples: >>> shared = {VirtWhoSysconfig: vw_sys, VirtWhoConf: [vw_conf, vwd_conf]} >>> all_vw_conf = AllVirtWhoConf(None, shared) >>> all_vw_conf.background True >>> all_vw_conf.oneshot False # `/etc/sysconfig/virt-who` has high priority >>> all_vw_conf.interval 3600 >>> all_vw_conf.sm_type 'sat6' >>> all_vw_conf.hypervisors [{'name': 'esx_satellite', 'server': '10.0.0.1', 'owner': 'Satellite', 'env': 'Satellite', type: 'esx'}] >>> all_vw_conf.hypervisor_types ['esx'] Attributes: background(boolean): is ``virt-who`` running as a service oneshot(boolean): is ``virt-who`` running in ``one-shot`` mode or not interval(int): how often to check connected hypervisors for changes (seconds) sm_type(str): what subscription manager will ``virt-who`` report to hypervisors(list): list of dict of each connected hypervisors hypervisor_types(list): list of the connected hypervisors' type """ def __init__(self, svw, vwc): self.background = False self.oneshot = True self.interval = 3600 self.sm_type = 'cp' # report to Red Hat Customer Portal by default self.hypervisors = [] self.hypervisor_types = [] # Check VirtWhoConf at first types = set() for c in vwc: if c.has_option('global', 'oneshot'): self.oneshot = c.getboolean('global', 'oneshot') if c.has_option('global', 'interval'): self.interval = c.getint('global', 'interval') for section in c.sections(): # Check Hypervisor back-ends if c.has_option(section, 'type'): hyper = {'name': section} hyper.update(c.items(section)) types.add(hyper['type']) self.hypervisors.append(hyper) self.hypervisor_types = list(types) self.background = ('1' == svw.get('VIRTWHO_BACKGROUND')) ost = svw.get('VIRTWHO_ONE_SHOT') self.oneshot = (ost == '1') if ost else self.oneshot itv = svw.get('VIRTWHO_INTERVAL') self.interval = int(itv) if itv and itv.isdigit() else self.interval # Check which subscription manager will report to if svw.get('VIRTWHO_SAM') == '1': self.sm_type = 'sam' # report to SAM elif svw.get('VIRTWHO_SATELLITE6') == '1': self.sm_type = 'sat6' # report to Satellite 6 elif svw.get('VIRTWHO_SATELLITE5') == '1' or svw.get('VIRTWHO_SATELLITE') == '1': self.sm_type = 'sat5' # report to Satellite 5