예제 #1
0
파일: main.py 프로젝트: t-feng/dnf
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
예제 #2
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
예제 #3
0
파일: main.py 프로젝트: mscherer/dnf
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
예제 #4
0
파일: main.py 프로젝트: kudlav/dnf
def main(args):
    conf_fn = dnf.const.CONF_AUTOMATIC_FILENAME
    if len(args) == 1:
        conf_fn = args[0]
    elif len(args) > 1:
        return synopsis()

    try:
        conf = AutomaticConfig(conf_fn)
        with dnf.Base() as base:
            cli = dnf.cli.Cli(base)
            cli.read_conf_file(conf.commands.base_config_file,
                               overrides=conf.base_overrides)
            base_conf = base.conf
            base_conf.cachedir, _alt_dir = dnf.cli.cli.cachedir_fit(base_conf)
            logger.debug('Started dnf-automatic.')
            base.read_all_repos()
            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
	
            sleep(random.randint(random_sleep(conf.command.random_sleep)))
		

            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
예제 #5
0
파일: main.py 프로젝트: IMFTC/dnf
def main(args):
    conf_fn = dnf.const.CONF_AUTOMATIC_FILENAME
    if len(args) == 1:
        conf_fn = args[0]
    elif len(args) > 1:
        return synopsis()

    try:
        conf = AutomaticConfig(conf_fn)
        with dnf.Base() as base:
            cli = dnf.cli.Cli(base)
            cli.read_conf_file(conf.commands.base_config_file,
                               overrides=conf.base_overrides)
            base_conf = base.conf
            base_conf.cachedir, _alt_dir = dnf.cli.cli.cachedir_fit(base_conf)
            logger.debug('Started dnf-automatic.')
            base.read_all_repos()
            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