This allows clients to define files that will persist through an update, useful if the client has some sort of static configuration.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Fix issue where apt-get update is called on startup. This should only be done by the "auto updater" or by a specific request to refresh.
Always set an Updater's init event to true when refresh() is called, regardless of the result.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Decrease the frequency of auto updates roughly every 24 hours. The manager will attempt to update once between 12am and 4am.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This is a workaround for an issue where the http client fails to propogate an exception back to the caller, hanging the update process.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Attach "is_complete" to the response so clients know that the transaction is done, even though it resulted in an error.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
We need to be sure that the entire update_manager is correctly configured prior to queueing the callbacks for the initial refresh. Rather than have each updater spawn a "refesh" callback, move them all into a single init method spawned after the module has been fully configured.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
The slower system package update will now only executed by the auto-refresh routine. Moonraker will check for updates roughly every 2 hours, however system packages updates will only occur between 1am and 4am local time.
If a print is in progress any attempt to refresh or update will be aborted.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This should reduce the load on low perfomance devices. This also makes it possible to queue update requests.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Calls to "refresh" should not be allowed to occur while a client a current refresh is in progress. Updates will wait for a pending refresh to complete before beginning the update procedure.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This provides the update manager flexibility, such as the ability to define disto specific dependencies. This also fixes an issue where two updates are necessary to install additional dependencies.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
After a repo has been updated fetching the remote is not needed, as it was just done in the prior update step.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Track rate limit attributes and reject requests when the user IP has reached their limit. Use conditional API requests to reduce the number of requests that count against the limit.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
It shouldn't be necessary to use gen.with_timeout during the fetch with tornado 6.1. Also fix some potential issues with unbound timeouts variables.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
The remote version info can be retrieved by simply doing a git fetch, then running "git rev-parse" and "git describe" on the desired remote branch.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Allow developers to update a detached git repo. Note that this option should not be used on production machines.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This allows for the installation of python "dist-packages" without enabling "system-site-packages" in the virtualenv. As of the moment moonraker only requires the gpiod dist package.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Before the service is restarted, check the local version. This should make sure that the local repo state is reported correctly after an update, regardless of the timing of a status request.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
It is possible that a status request can occur while an updater is checking intial state. Use an event to wait on initializing before returning the status request.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This implementation adds a delay that allows for pip to function correclty after the venv is built.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
The current method for rebuilding the virtualenv fails. A potential workaround is to do the rebuild and subsequent update with a script. For now, disable the rebuild.
Signed-off-by: Eric Callahan <arskine.code@gmail.com>
This manager can perform updates on moonraker and klipper, assuming that the source is located in a valid git repo, the origin points to the official repo, and the currently selected branch is "master".
Signed-off-by: Eric Callahan <arksine.code@gmail.com>