def run_push(self): t = Template(self.args.template, user=self.args.username) # grab the template we're pushing to try: t = self.cs.template_get(t) except ServiceException as e: logging.exception(e) return 1 if self.args.push_clean: t.clear() if self.args.kickstart is not None: logging.info('Parsing kickstart ...') t.from_kickstart(self.args.kickstart) else: # prepare dnf logging.info('Analysing system ...') db = dnf.Base() db.read_all_repos() db.read_comps() try: db.fill_sack() except OSError as e: pass db_list = db.iter_userinstalled() if self.args.push_all: db_list = db.sack.query().installed() # add our user installed packages for p in db_list: # no need to store versions t.add_package(Package(p, evr=False)) # add only enabled repos for r in db.repos.enabled(): t.add_repo(Repository(r)) objects = list(t.objects_delta) objects.sort(key=lambda x: x.name) packages = list(t.packages_delta) packages.sort(key=lambda x: x.name) repos = list(t.repos_delta) repos.sort(key=lambda x: x.name) # describe process for dry runs if self.args.dry_run: if len(packages) or len(repos): print( 'The following would be added to the template: {0}'.format( t.name)) for r in repos: print(' - ' + str(r)) for p in packages: print(' - ' + str(p)) for o in objects: print(' - ' + str(o)) print() print('Summary:') print(' - Repo(s): %d' % (len(repos))) print(' - Package(s): %d' % (len(packages))) print(' - Object(s): %d' % (len(objects))) print() else: print('No template changes required.') logging.info('No action peformed during this dry-run.') return 0 if self.args.kickstart is None and not len(packages) and not len( repos): logging.info('No changes detected, template up to date.') return 0 # push our updated template try: res = self.cs.template_update(t) except ServiceException as e: logging.exception(e) return 1 logging.info('Template pushed.') return 0
def run_push(self): t = Template(self.args.template, user=self.args.username) # grab the template we're pushing to try: t = self.cs.template_get(t) except ServiceException as e: logging.exception(e) return 1 if self.args.push_clean: t.clear() if self.args.kickstart is not None: logging.info('Parsing kickstart ...') t.from_kickstart(self.args.kickstart) else: # prepare dnf logging.info('Analysing system ...') db = dnf.Base() db.read_all_repos() db.read_comps() try: db.fill_sack() except OSError as e: pass db_list = db.iter_userinstalled() if self.args.push_all: db_list = db.sack.query().installed() # add our user installed packages for p in db_list: # no need to store versions t.add_package(Package(p, evr=False)) # add only enabled repos for r in db.repos.enabled(): t.add_repo(Repository(r)) objects = list(t.objects_delta) objects.sort(key=lambda x: x.name) packages = list(t.packages_delta) packages.sort(key=lambda x: x.name) repos = list(t.repos_delta) repos.sort(key=lambda x: x.name) # describe process for dry runs if self.args.dry_run: if len(packages) or len(repos): print('The following would be added to the template: {0}'.format(t.name)) for r in repos: print(' - ' + str(r)) for p in packages: print(' - ' + str(p)) for o in objects: print(' - ' + str(o)) print() print('Summary:') print(' - Repo(s): %d' % (len(repos))) print(' - Package(s): %d' % (len(packages))) print(' - Object(s): %d' % (len(objects))) print() else: print('No template changes required.') logging.info('No action peformed during this dry-run.') return 0 if self.args.kickstart is None and not len(packages) and not len(repos): logging.info('No changes detected, template up to date.') return 0 # push our updated template try: res = self.cs.template_update(t) except ServiceException as e: logging.exception(e) return 1 logging.info('Template pushed.') return 0