This change refactors zip_deploy.py, renaming it net_deploy.py.
Net hosted executables that currently exist on the system
with a valid `release_info.json` file can now be updated.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Initial support for pip-like requirement specifiers applicable
to system packages. This allows for a package dependencies
specific to distribution version.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This is consistent with the http_client. The argument "attempts" is more
accurate than retries, as the first attempt is not a retry.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Previously the Klipper repo location can be changed outside of
the lock. If the location of the Klipper path is moved while an autorefresh is occurring it is possible for Moonraker to call refresh
and/or notify_update_refreshed before the repo has been initialized.
This commit moves the re-assignment of the "klipper" updated inside
the lock. In addition AppDeploy._is_valid is now defined in the
__init__() method.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Add a debug logging helper to the base class. Use unique
logging prefixes for subclasses of AppDeploy.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Move specific configuration out of __init__ into several methods
that may be called by subclasses. This allows child implementations
to define and share specific sets of configuration that they require
without forcing all implementations to do so.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This functionality was intended to allow for an automated
reinstallation between "git_repo" and "zip" types. The
"zip" type remains unused, and attempting to automate
this would likely be unreliable.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
If the exectuable in the virtualenv is not "python" attempt to
detect the python executable. Use the pip entry point for the
pip command.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
On machines running instances of Moonraker and Klipper without
the default service names it is necessary to look up their unit names
using systemd.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Re-implement pip updates using a pinned version. A version
check is now always done prior to installing python requirements,
updating when necessary.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Allow components to register reserved paths, then perform reserved
path validation it upon request. Reserved paths may be registered as
read-only or no access. Any request to modify an file/folder that is
either reserved or a child of a reserved path is rejected.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
If the supplied python executable is a symbolic link attempt
to read the location at which it points. If this is a virtualenv
this should give us the correct pip location.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
Don't require the `app_params` argument, instead dynamically
generate the configuration from a dict. This simiplifies AppDeploy
initialization as the internally generated configurations can be
read in the same way as those supplied in moonraker.conf.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
While use of "unofficial" klippy extras an moonraker components
is not officially supported, there is no harm in facilitating
updates for these extensions in the update manager. This adds
configuration which will restart either moonraker or klipper
after an extension is updated.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
When creating a virtualenv, some operating systems provide
symbolic links back to /usr/bin/python3 rather than copy
the python exectuable over. Previously Moonraker resolved
this symbolic link, resulting in a failure to locate pip.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
This ignores an attempt to update packages if system updates are disabled and opens the possibility for supporting updates for other linux distributions.
Signed-off-by: Eric Callahan <arksine.code@gmail.com>