class Backend(object): """ Wrapper for sharing UEP connections to Candlepin. Reference to a Backend object will be passed around UI components, so the UEP connection it contains can be modified/recreated and all components will have the updated connection. This also serves as a common wrapper for certifcate directories and methods to monitor those directories for changes. """ def __init__(self): self.create_uep(cert_file=ConsumerIdentity.certpath(), key_file=ConsumerIdentity.keypath()) self.create_content_connection() # we don't know the user/pass yet, so no point in # creating an admin uep till we need it self.admin_uep = None self.product_dir = ProductDirectory() self.entitlement_dir = EntitlementDirectory() self.certlib = CertLib(uep=self.uep) self.product_monitor = file_monitor.Monitor(self.product_dir.path) self.entitlement_monitor = file_monitor.Monitor(self.entitlement_dir.path) self.identity_monitor = file_monitor.Monitor(ConsumerIdentity.PATH) # connect handlers to refresh the cached data when we notice a change. # do this before any other handlers might connect self.product_monitor.connect("changed", lambda monitor: self.product_dir.refresh()) self.entitlement_monitor.connect("changed", lambda monitor: self.entitlement_dir.refresh()) # make a create that does the init # and a update() for a name def update(self): self.create_uep(cert_file=ConsumerIdentity.certpath(), key_file=ConsumerIdentity.keypath()) self.content_connection = self._create_content_connection() def create_uep(self, cert_file=None, key_file=None): # Re-initialize our connection: self.uep = self._create_uep(cert_file=cert_file, key_file=key_file) # Holds a reference to the old uep: self.certlib = CertLib(uep=self.uep) def _create_uep(self, username=None, password=None, cert_file=None, key_file=None): return connection.UEPConnection( host=cfg.get("server", "hostname"), ssl_port=int(cfg.get("server", "port")), handler=cfg.get("server", "prefix"), proxy_hostname=cfg.get("server", "proxy_hostname"), proxy_port=cfg.get("server", "proxy_port"), proxy_user=cfg.get("server", "proxy_user"), proxy_password=cfg.get("server", "proxy_password"), username=username, password=password, cert_file=cert_file, key_file=key_file, ) def create_content_connection(self): self.content_connection = self._create_content_connection() def _create_content_connection(self): return connection.ContentConnection( host=urlparse.urlparse(cfg.get("rhsm", "baseurl"))[1], ssl_port=443, proxy_hostname=cfg.get("server", "proxy_hostname"), proxy_port=cfg.get("server", "proxy_port"), proxy_user=cfg.get("server", "proxy_user"), proxy_password=cfg.get("server", "proxy_password"), ) def is_registered(self): return self.consumer.is_valid() def create_admin_uep(self, username=None, password=None): self.admin_uep = self._create_uep(username=username, password=password) def monitor_certs(self, callback): self.product_monitor.connect("changed", callback) self.entitlement_monitor.connect("changed", callback) def monitor_identity(self, callback): self.identity_monitor.connect("changed", callback)
class Backend(object): """ Wrapper for sharing UEP connections to Candlepin. Reference to a Backend object will be passed around UI components, so the UEP connection it contains can be modified/recreated and all components will have the updated connection. This also serves as a common wrapper for certifcate directories and methods to monitor those directories for changes. """ def __init__(self): self.create_uep(cert_file=ConsumerIdentity.certpath(), key_file=ConsumerIdentity.keypath()) self.create_content_connection() # we don't know the user/pass yet, so no point in # creating an admin uep till we need it self.admin_uep = None self.product_dir = ProductDirectory() self.entitlement_dir = EntitlementDirectory() self.certlib = CertLib(uep=self.uep) self.product_monitor = file_monitor.Monitor(self.product_dir.path) self.entitlement_monitor = file_monitor.Monitor( self.entitlement_dir.path) self.identity_monitor = file_monitor.Monitor(ConsumerIdentity.PATH) # connect handlers to refresh the cached data when we notice a change. # do this before any other handlers might connect self.product_monitor.connect( "changed", lambda monitor: self.product_dir.refresh()) self.entitlement_monitor.connect( "changed", lambda monitor: self.entitlement_dir.refresh()) # make a create that does the init # and a update() for a name def update(self): self.create_uep(cert_file=ConsumerIdentity.certpath(), key_file=ConsumerIdentity.keypath()) self.content_connection = self._create_content_connection() def create_uep(self, cert_file=None, key_file=None): # Re-initialize our connection: self.uep = self._create_uep(cert_file=cert_file, key_file=key_file) # Holds a reference to the old uep: self.certlib = CertLib(uep=self.uep) def _create_uep(self, username=None, password=None, cert_file=None, key_file=None): return connection.UEPConnection( host=cfg.get('server', 'hostname'), ssl_port=int(cfg.get('server', 'port')), handler=cfg.get('server', 'prefix'), proxy_hostname=cfg.get('server', 'proxy_hostname'), proxy_port=cfg.get('server', 'proxy_port'), proxy_user=cfg.get('server', 'proxy_user'), proxy_password=cfg.get('server', 'proxy_password'), username=username, password=password, cert_file=cert_file, key_file=key_file) def create_content_connection(self): self.content_connection = self._create_content_connection() def _create_content_connection(self): return connection.ContentConnection( host=urlparse.urlparse(cfg.get('rhsm', 'baseurl'))[1], ssl_port=443, proxy_hostname=cfg.get('server', 'proxy_hostname'), proxy_port=cfg.get('server', 'proxy_port'), proxy_user=cfg.get('server', 'proxy_user'), proxy_password=cfg.get('server', 'proxy_password')) def is_registered(self): return self.consumer.is_valid() def create_admin_uep(self, username=None, password=None): self.admin_uep = self._create_uep(username=username, password=password) def monitor_certs(self, callback): self.product_monitor.connect('changed', callback) self.entitlement_monitor.connect('changed', callback) def monitor_identity(self, callback): self.identity_monitor.connect('changed', callback)