def setup_dnf_base(config={}): ''' setup the dnf base configuration, pass a dictionary containing attributes under the 'conf' attribute :param config: dictionary containing valid dnf.Base conf :type config: dict :return: configured dnf base object :rtype: dnf.Base object ''' dnf_config = { 'conf': { 'debuglevel': 0, 'errorlevel': 0, 'assumeyes': True } } dnf_config.update(config) dnf_base = dnf.Base() cli = dnf.cli.Cli(dnf_base) cli._read_conf_file() dnf_base.init_plugins(cli=cli) for k in dnf_config.get('conf', {}): logging.debug('setting conf.{0} = {1}'.format(k, dnf_config['conf'][k])) setattr(dnf_base.conf, k, dnf_config['conf'][k]) dnf_base.pre_configure_plugins() return dnf_base
def main(args): (opts, parser) = parse_arguments(args) try: conf = AutomaticConfig(opts.conf_path, opts.downloadupdates, opts.installupdates) with dnf.Base() as base: cli = dnf.cli.Cli(base) cli._read_conf_file() # Although dnf-automatic does not use demands, the versionlock # plugin uses this demand do decide whether it's rules should # be applied. # https://bugzilla.redhat.com/show_bug.cgi?id=1746562 cli.demands.resolving = True conf.update_baseconf(base.conf) base.init_plugins(cli=cli) logger.debug(_('Started dnf-automatic.')) if opts.timer: sleeper = random.randint(0, conf.commands.random_sleep) logger.debug(_('Sleep for %s seconds'), sleeper) time.sleep(sleeper) base.pre_configure_plugins() base.read_all_repos() if not wait_for_network(base.repos, conf.commands.network_online_timeout): logger.warning(_('System is off-line.')) base.configure_plugins() base.fill_sack() upgrade(base, conf.commands.upgrade_type) base.resolve() output = dnf.cli.output.Output(base, base.conf) trans = base.transaction if not trans: return 0 lst = output.list_transaction(trans, total_width=80) emitters = build_emitters(conf) emitters.notify_available(lst) if not conf.commands.download_updates: emitters.commit() return 0 base.download_packages(trans.install_set) emitters.notify_downloaded() if not conf.commands.apply_updates: emitters.commit() return 0 gpgsigcheck(base, trans.install_set) base.do_transaction() emitters.notify_applied() emitters.commit() except dnf.exceptions.Error as exc: logger.error(_('Error: %s'), ucd(exc)) return 1 return 0
def main(args): (opts, parser) = parse_arguments(args) try: conf = AutomaticConfig(opts.conf_path, opts.downloadupdates, opts.installupdates) with dnf.Base() as base: cli = dnf.cli.Cli(base) cli._read_conf_file() conf.update_baseconf(base.conf) base.init_plugins(cli=cli) logger.debug(_('Started dnf-automatic.')) if opts.timer: sleeper = random.randint(0, conf.commands.random_sleep) logger.debug(_('Sleep for %s seconds'), sleeper) time.sleep(sleeper) base.pre_configure_plugins() base.read_all_repos() base.configure_plugins() base.fill_sack() upgrade(base, conf.commands.upgrade_type) base.resolve() output = dnf.cli.output.Output(base, base.conf) trans = base.transaction if not trans: return 0 lst = output.list_transaction(trans) emitters = build_emitters(conf) emitters.notify_available(lst) if not conf.commands.download_updates: emitters.commit() return 0 base.download_packages(trans.install_set) emitters.notify_downloaded() if not conf.commands.apply_updates: emitters.commit() return 0 base.do_transaction() emitters.notify_applied() emitters.commit() except dnf.exceptions.Error as exc: logger.error(_('Error: %s'), ucd(exc)) return 1 return 0
def main(args): (opts, parser) = parse_arguments(args) try: conf = AutomaticConfig(opts.conf_path, opts.downloadupdates, opts.installupdates) with dnf.Base() as base: cli = dnf.cli.Cli(base) cli._read_conf_file() conf.update_baseconf(base.conf) base.init_plugins(cli=cli) logger.debug('Started dnf-automatic.') if opts.timer: sleeper = random.randint(0, conf.commands.random_sleep) logger.debug('Sleep for %s seconds', sleeper) time.sleep(sleeper) base.pre_configure_plugins() base.read_all_repos() base.configure_plugins() base.fill_sack() upgrade(base, conf.commands.upgrade_type) base.resolve() output = dnf.cli.output.Output(base, base.conf) trans = base.transaction if not trans: return 0 lst = output.list_transaction(trans) emitters = build_emitters(conf) emitters.notify_available(lst) if not conf.commands.download_updates: emitters.commit() return 0 base.download_packages(trans.install_set) emitters.notify_downloaded() if not conf.commands.apply_updates: emitters.commit() return 0 base.do_transaction() emitters.notify_applied() emitters.commit() except dnf.exceptions.Error as exc: logger.error(_('Error: %s'), ucd(exc)) return 1 return 0