class VirtWho(object): def __init__(self, logger, options): """ VirtWho class provides bridge between virtualization supervisor and Subscription Manager. logger - logger instance options - options for virt-who, parsed from command line arguments """ self.logger = logger self.options = options self.virt = None self.subscriptionManager = None self.unableToRecoverStr = "Unable to recover" if not options.oneshot: self.unableToRecoverStr += ", retry in %d seconds." % RetryInterval # True if reload is queued self.doReload = False def initVirt(self): """ Connect to the virtualization supervisor (libvirt or VDSM) """ if self.options.virtType == "vdsm": self.virt = VDSM(self.logger) elif self.options.virtType == "libvirt": self.virt = Virt(self.logger, registerEvents=self.options.background) # We can listen for libvirt events self.tryRegisterEventCallback() elif self.options.virtType == "rhevm": self.virt = RHEVM(self.logger, self.options.server, self.options.username, self.options.password) elif self.options.virtType == "hyperv": self.virt = HyperV(self.logger, self.options.server, self.options.username, self.options.password) else: # ESX self.virt = VSphere(self.logger, self.options.server, self.options.username, self.options.password) def initSM(self): """ Connect to the subscription manager (candlepin). """ try: if self.options.smType == "sam": self.subscriptionManager = SubscriptionManager(self.logger) self.subscriptionManager.connect() elif self.options.smType == "satellite": self.subscriptionManager = Satellite(self.logger) self.subscriptionManager.connect(self.options.sat_server, self.options.sat_username, self.options.sat_password) except NoOptionError, e: self.logger.exception("Error in reading configuration file (/etc/rhsm/rhsm.conf):") raise except SubscriptionManagerError, e: self.logger.exception("Unable to obtain status from server, UEPConnection is likely not usable:") raise