예제 #1
0
def install_ind_package(progress, package):
    status = UpdaterStatus.get_instance()
    # install an independent package.

    previous_state = status.state

    # Allow installing only if the updater is in certain safe states.
    if status.state not in [UpdaterStatus.NO_UPDATES,
                            UpdaterStatus.UPDATES_AVAILABLE,
                            UpdaterStatus.UPDATES_INSTALLED]:
        msg = "The install is already running"
        logger.warn(msg)
        progress.abort(msg)
        return False

    if package not in status.updatable_independent_packages:
        msg = "tried to install non-independent package {} using update_ind_pkg".format(package)
        logger.warn(msg)
        progress.abort(msg)
        return False

    status.state = UpdaterStatus.INSTALLING_INDEPENDENT
    status.save()

    update_sources_phase = 'updating-sources'
    installing_idp_phase = 'installing-idp-package'
    progress.split(
        Phase(
            update_sources_phase,
            _("Updating apt sources"),
            10
        ),
        Phase(
            installing_idp_phase,
            _("Installing independent package"),
            90
        )
    )

    progress.start(update_sources_phase)
    apt_handle.update(progress)

    progress.start(installing_idp_phase)
    apt_handle.upgrade(package, progress)

    status.state = previous_state
    status.last_update = int(time.time())

    # always check independent packages as NONE as urgent updates to
    # these packages are dealt with by the main updater
    status.updatable_independent_packages = get_ind_packages(Priority.NONE)
    status.is_scheduled = False
    status.save()

    progress.finish(_("Update completed"))
    return True
예제 #2
0
def migrate_repository(apt_file, old_repo, new_repo):
    try:
        sed(old_repo, new_repo, apt_file, use_regexp=False)
    except IOError as exc:
        logger.warn("Changing repository URL failed ({})".format(exc))
        return

    # TODO: track progress of this
    apt_handle.clear_cache()
    apt_handle.update(DummyProgress())
예제 #3
0
def migrate_repository(apt_file, old_repo, new_repo):
    try:
        sed(old_repo, new_repo, apt_file, use_regexp=False)
    except IOError as exc:
        logger.warn("Changing repository URL failed ({})".format(exc))
        return

    # TODO: track progress of this
    apt_handle.clear_cache()
    apt_handle.update(DummyProgress())
예제 #4
0
def install_ind_package(progress, package):
    status = UpdaterStatus.get_instance()
    # install an independent package.

    previous_state = status.state

    # Allow installing only if the updater is in certain safe states.
    if status.state not in [
            UpdaterStatus.NO_UPDATES, UpdaterStatus.UPDATES_AVAILABLE,
            UpdaterStatus.UPDATES_INSTALLED
    ]:
        msg = "The install is already running"
        logger.warn(msg)
        progress.abort(msg)
        return False

    if package not in status.updatable_independent_packages:
        msg = "tried to install non-independent package {} using update_ind_pkg".format(
            package)
        logger.warn(msg)
        progress.abort(msg)
        return False

    status.state = UpdaterStatus.INSTALLING_INDEPENDENT
    status.save()

    update_sources_phase = 'updating-sources'
    installing_idp_phase = 'installing-idp-package'
    progress.split(
        Phase(update_sources_phase, _("Updating apt sources"), 10),
        Phase(installing_idp_phase, _("Installing independent package"), 90))

    progress.start(update_sources_phase)
    apt_handle.update(progress)

    progress.start(installing_idp_phase)
    apt_handle.upgrade(package, progress)

    status.state = previous_state
    status.last_update = int(time.time())

    # always check independent packages as NONE as urgent updates to
    # these packages are dealt with by the main updater
    status.updatable_independent_packages = get_ind_packages(Priority.NONE)
    status.is_scheduled = False
    status.save()

    progress.finish(_("Update completed"))
    return True
예제 #5
0
def _do_check(progress, priority=Priority.NONE):
    '''
    Perform checks for all priorities greater than the one provided.
    '''

    apt_handle.update(progress, sources_list=KANO_SOURCES_LIST)
    logger.debug("Checking urgent: {}".format(priority <= Priority.URGENT))
    logger.debug("Checking standard: {}".format(priority <= Priority.STANDARD))

    if (priority <= Priority.URGENT
            and apt_handle.is_update_available(priority=Priority.URGENT)):
        return Priority.URGENT

    if (priority <= Priority.STANDARD and apt_handle.is_update_available()):
        return Priority.STANDARD

    return Priority.NONE
예제 #6
0
def _do_check(progress, priority=Priority.NONE):
    '''
    Perform checks for all priorities greater than the one provided.
    '''

    apt_handle.update(progress, sources_list=KANO_SOURCES_LIST)
    logger.debug('Checking urgent: {}'.format(priority <= Priority.URGENT))
    logger.debug('Checking standard: {}'.format(priority <= Priority.STANDARD))

    if (
            priority <= Priority.URGENT
            and apt_handle.is_update_avaliable(priority=Priority.URGENT)
        ):
        return Priority.URGENT

    if (
            priority <= Priority.STANDARD
            and apt_handle.is_update_avaliable()
        ):
        return Priority.STANDARD

    return Priority.NONE
예제 #7
0
def _cache_deb_packages(progress, priority=Priority.NONE):
    progress.start('updating-sources')
    apt_handle.update(progress=progress)

    progress.start('downloading-apt-packages')
    apt_handle.cache_updates(progress, priority=priority)
예제 #8
0
def _cache_deb_packages(progress, priority=Priority.NONE):
    progress.start('updating-sources')
    apt_handle.update(progress=progress)

    progress.start('downloading-apt-packages')
    apt_handle.cache_updates(progress, priority=priority)
예제 #9
0
def _do_check(progress):
    apt_handle.update(progress, sources_list=KANO_SOURCES_LIST)
    return apt_handle.is_update_avaliable()