def _find_suitable_service_levels(self, consumer, facts): consumer_json = self.backend.cp_provider.get_consumer_auth_cp( ).getConsumer(consumer.getConsumerId()) if 'serviceLevel' not in consumer_json: raise ServiceLevelNotSupportedException() owner_key = consumer_json['owner']['key'] # This is often "", set to None in that case: current_sla = consumer_json['serviceLevel'] or None if len(self.backend.cs.installed_products) == 0: raise NoProductsException() if len(self.backend.cs.valid_products) == len(self.backend.cs.installed_products) and \ len(self.backend.cs.partial_stacks) == 0: raise AllProductsCoveredException() if current_sla: available_slas = [current_sla] log.debug("Using system's current service level: %s" % current_sla) else: available_slas = self.backend.cp_provider.get_consumer_auth_cp( ).getServiceLevelList(owner_key) log.debug("Available service levels: %s" % available_slas) # Will map service level (string) to the results of the dry-run # autobind results for each SLA that covers all installed products: suitable_slas = {} # eek, in a thread action_client = ActionClient(facts=facts) action_client.update() for sla in available_slas: dry_run_json = self.backend.cp_provider.get_consumer_auth_cp( ).dryRunBind(consumer.uuid, sla) dry_run = DryRunResult(sla, dry_run_json, self.backend.cs) # If we have a current SLA for this system, we do not need # all products to be covered by the SLA to proceed through # this wizard: if current_sla or dry_run.covers_required_products(): suitable_slas[sla] = dry_run return (current_sla, self.backend.cs.unentitled_products.values(), suitable_slas)
def _find_suitable_service_levels(self, consumer, facts): consumer_json = self.backend.uep.getConsumer( consumer.getConsumerId()) if 'serviceLevel' not in consumer_json: raise ServiceLevelNotSupportedException() owner_key = consumer_json['owner']['key'] # This is often "", set to None in that case: current_sla = consumer_json['serviceLevel'] or None # Using the current date time, we may need to expand this to work # with arbitrary dates for future entitling someday: sorter = CertSorter(self.backend.product_dir, self.backend.entitlement_dir, facts.get_facts()) if len(sorter.installed_products) == 0: raise NoProductsException() if len(sorter.unentitled_products) == 0: raise AllProductsCoveredException() if current_sla: available_slas = [current_sla] log.debug("Using system's current service level: %s" % current_sla) else: available_slas = self.backend.uep.getServiceLevelList(owner_key) log.debug("Available service levels: %s" % available_slas) # Will map service level (string) to the results of the dry-run # autobind results for each SLA that covers all installed products: suitable_slas = {} certmgr = CertManager(uep=self.backend.uep) certmgr.update() for sla in available_slas: dry_run_json = self.backend.uep.dryRunBind(consumer.uuid, sla) dry_run = DryRunResult(sla, dry_run_json, sorter) # If we have a current SLA for this system, we do not need # all products to be covered by the SLA to proceed through # this wizard: if current_sla or dry_run.covers_required_products(): suitable_slas[sla] = dry_run return (current_sla, sorter.unentitled_products.values(), suitable_slas)
def _find_suitable_service_levels(self, consumer, facts): consumer_json = self.backend.cp_provider.get_consumer_auth_cp().getConsumer( consumer.getConsumerId()) if 'serviceLevel' not in consumer_json: raise ServiceLevelNotSupportedException() owner_key = consumer_json['owner']['key'] # This is often "", set to None in that case: current_sla = consumer_json['serviceLevel'] or None if len(self.backend.cs.installed_products) == 0: raise NoProductsException() if len(self.backend.cs.valid_products) == len(self.backend.cs.installed_products) and \ len(self.backend.cs.partial_stacks) == 0: raise AllProductsCoveredException() if current_sla: available_slas = [current_sla] log.debug("Using system's current service level: %s" % current_sla) else: available_slas = self.backend.cp_provider.get_consumer_auth_cp().getServiceLevelList(owner_key) log.debug("Available service levels: %s" % available_slas) # Will map service level (string) to the results of the dry-run # autobind results for each SLA that covers all installed products: suitable_slas = {} # eek, in a thread action_client = ActionClient(facts=facts) action_client.update() for sla in available_slas: dry_run_json = self.backend.cp_provider.get_consumer_auth_cp().dryRunBind(consumer.uuid, sla) dry_run = DryRunResult(sla, dry_run_json, self.backend.cs) # If we have a current SLA for this system, we do not need # all products to be covered by the SLA to proceed through # this wizard: if current_sla or dry_run.covers_required_products(): suitable_slas[sla] = dry_run return (current_sla, self.backend.cs.unentitled_products.values(), suitable_slas)
def _find_suitable_service_levels(self, consumer, facts): consumer_json = self.backend.uep.getConsumer(consumer.getConsumerId()) if 'serviceLevel' not in consumer_json: raise ServiceLevelNotSupportedException() owner_key = consumer_json['owner']['key'] # This is often "", set to None in that case: current_sla = consumer_json['serviceLevel'] or None # Using the current date time, we may need to expand this to work # with arbitrary dates for future entitling someday: sorter = CertSorter(self.backend.product_dir, self.backend.entitlement_dir, facts.get_facts()) if len(sorter.installed_products) == 0: raise NoProductsException() if len(sorter.unentitled_products) == 0: raise AllProductsCoveredException() if current_sla: available_slas = [current_sla] log.debug("Using system's current service level: %s" % current_sla) else: available_slas = self.backend.uep.getServiceLevelList(owner_key) log.debug("Available service levels: %s" % available_slas) # Will map service level (string) to the results of the dry-run # autobind results for each SLA that covers all installed products: suitable_slas = {} certmgr = CertManager(uep=self.backend.uep) certmgr.update() for sla in available_slas: dry_run_json = self.backend.uep.dryRunBind(consumer.uuid, sla) dry_run = DryRunResult(sla, dry_run_json, sorter) # If we have a current SLA for this system, we do not need # all products to be covered by the SLA to proceed through # this wizard: if current_sla or dry_run.covers_required_products(): suitable_slas[sla] = dry_run return (current_sla, sorter.unentitled_products.values(), suitable_slas)