avoid duplicate webdav url migration logic

This commit is contained in:
PlushZ
2026-04-23 12:50:06 +10:00
parent 7dd3dcc96b
commit ada2d2b437
3 changed files with 36 additions and 201 deletions
+2 -2
View File
@@ -5902,8 +5902,8 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Description:
Default value for use_temp_files for webdav plugins that don't
explicitly declare this.
Deprecated. This option is ignored by the fsspec-based WebDAV file
source.
:Default: ``true``
:Type: bool
+20 -177
View File
@@ -24,13 +24,11 @@ gravity:
# ``supervisor`` is the default process manager when Gravity is invoked as a non-root user.
# ``systemd`` is the default when Gravity is invoked as root.
# ``multiprocessing`` is the default when Gravity is invoked as the foreground shortcut ``galaxy`` instead of ``galaxyctl``
# Valid options are: supervisor, systemd, multiprocessing
# process_manager:
# process_manager: null
# What command to write to the process manager configs
# `gravity` (`galaxyctl exec <service-name>`) is the default
# `direct` (each service's actual command) is also supported.
# Valid options are: gravity, direct
# service_command_style: gravity
# Use the process manager's *service instance* functionality for services that can run multiple instances.
@@ -45,46 +43,45 @@ gravity:
# Memory limit (in GB), processes exceeding the limit will be killed. Default is no limit. If set, this is default value
# for all services. Setting ``memory_limit`` on an individual service overrides this value. Ignored if ``process_manager``
# is ``supervisor``.
# memory_limit:
# memory_limit: null
# Memory usage throttle limit (in GB), processes exceeding the limit are throttled and put under heavy reclaim pressure.
# If set, this is the default value for all services. Setting ``memory_high`` on an individual service overrides this
# value. Ignored if ``process_manager`` is ``supervisor``.
# memory_high:
# memory_high: null
# Specify Galaxy config file (galaxy.yml), if the Gravity config is separate from the Galaxy config. Assumed to be the
# same file as the Gravity config if a ``galaxy`` key exists at the root level, otherwise, this option is required.
# galaxy_config_file:
# galaxy_config_file: null
# Specify Galaxy's root directory.
# Gravity will attempt to find the root directory, but you can set the directory explicitly with this option.
# galaxy_root:
# galaxy_root: null
# User to run Galaxy as, required when using the systemd process manager as root.
# Ignored if ``process_manager`` is ``supervisor`` or user-mode (non-root) ``systemd``.
# galaxy_user:
# galaxy_user: null
# Group to run Galaxy as, optional when using the systemd process manager as root.
# Ignored if ``process_manager`` is ``supervisor`` or user-mode (non-root) ``systemd``.
# galaxy_group:
# galaxy_group: null
# Set to a directory that should contain log files for the processes controlled by Gravity.
# If not specified defaults to ``<galaxy_data_dir>/gravity/log``.
# log_dir:
# log_dir: null
# Run Galaxy processes in the specified journal namespace (sets the value of ``LogNamespace=`` in the systemd service
# units). This allows you to keep Galaxy log messages separate in the system journal from other log messages. Ignored if
# ``process_manager`` is not ``systemd``. See ``systemd.exec(5)`` for details.
# log_namespace:
# log_namespace: null
# Set to Galaxy's virtualenv directory.
# If not specified, Gravity assumes all processes are on PATH. This option is required in most circumstances when using
# the ``systemd`` process manager.
# virtualenv:
# virtualenv: null
# Select the application server.
# ``gunicorn`` is the default application server.
# Valid options are: gunicorn
# app_server: gunicorn
# Override the default instance name.
@@ -119,7 +116,7 @@ gravity:
# preload: true
# umask under which service should be executed
# umask:
# umask: null
# Value of supervisor startsecs, systemd TimeoutStartSec
# start_timeout: 15
@@ -133,123 +130,22 @@ gravity:
# Memory limit (in GB). If the service exceeds the limit, it will be killed. Default is no limit or the value of the
# ``memory_limit`` setting at the top level of the Gravity configuration, if set. Ignored if ``process_manager`` is
# ``supervisor``.
# memory_limit:
# memory_limit: null
# Memory usage throttle limit (in GB). If the service exceeds the limit, processes are throttled and put under heavy
# reclaim pressure. Default is no limit or the value of the ``memory_high`` setting at the top level of the Gravity
# configuration, if set. Ignored if ``process_manager`` is ``supervisor``.
# memory_high:
# memory_high: null
# Extra environment variables and their values to set when running the service. A dictionary where keys are the variable
# names.
# environment: {}
# Configuration for Celery Processes.
celery:
# Enable Celery distributed task queue.
# enable: true
# Enable Celery Beat periodic task runner.
# enable_beat: true
# Number of Celery Workers to start.
# concurrency: 2
# Log Level to use for Celery Worker.
# Valid options are: DEBUG, INFO, WARNING, ERROR
# loglevel: DEBUG
# Queues to join
# queues: celery,galaxy.internal,galaxy.external
# Pool implementation
# Valid options are: prefork, eventlet, gevent, solo, processes, threads
# pool: threads
# Extra arguments to pass to Celery command line.
# extra_args:
# umask under which service should be executed
# umask:
# Value of supervisor startsecs, systemd TimeoutStartSec
# start_timeout: 10
# Value of supervisor stopwaitsecs, systemd TimeoutStopSec
# stop_timeout: 10
# Memory limit (in GB). If the service exceeds the limit, it will be killed. Default is no limit or the value of the
# ``memory_limit`` setting at the top level of the Gravity configuration, if set. Ignored if ``process_manager`` is
# ``supervisor``.
# memory_limit:
# Memory usage throttle limit (in GB). If the service exceeds the limit, processes are throttled and put under heavy
# reclaim pressure. Default is no limit or the value of the ``memory_high`` setting at the top level of the Gravity
# configuration, if set. Ignored if ``process_manager`` is ``supervisor``.
# memory_high:
# Extra environment variables and their values to set when running the service. A dictionary where keys are the variable
# names.
# environment: {}
# celery: {}
# Configuration for gx-it-proxy.
gx_it_proxy:
# Set to true to start gx-it-proxy
# enable: false
# gx-it-proxy version
# version: '>=0.0.6'
# Public-facing IP of the proxy
# ip: localhost
# Public-facing port of the proxy
# port: 4002
# Database to monitor.
# Should be set to the same value as ``interactivetools_map`` (or ``interactivetoolsproxy_map``) in the ``galaxy:`` section. This is
# ignored if either ``interactivetools_map`` or ``interactivetoolsproxy_map`` are set.
# sessions: database/interactivetools_map.sqlite
# Include verbose messages in gx-it-proxy
# verbose: true
# Forward all requests to IP.
# This is an advanced option that is only needed when proxying to remote interactive tool container that cannot be reached through the local network.
# forward_ip:
# Forward all requests to port.
# This is an advanced option that is only needed when proxying to remote interactive tool container that cannot be reached through the local network.
# forward_port:
# Rewrite location blocks with proxy port.
# This is an advanced option that is only needed when proxying to remote interactive tool container that cannot be reached through the local network.
# reverse_proxy: false
# umask under which service should be executed
# umask:
# Value of supervisor startsecs, systemd TimeoutStartSec
# start_timeout: 10
# Value of supervisor stopwaitsecs, systemd TimeoutStopSec
# stop_timeout: 10
# Memory limit (in GB). If the service exceeds the limit, it will be killed. Default is no limit or the value of the
# ``memory_limit`` setting at the top level of the Gravity configuration, if set. Ignored if ``process_manager`` is
# ``supervisor``.
# memory_limit:
# Memory usage throttle limit (in GB). If the service exceeds the limit, processes are throttled and put under heavy
# reclaim pressure. Default is no limit or the value of the ``memory_high`` setting at the top level of the Gravity
# configuration, if set. Ignored if ``process_manager`` is ``supervisor``.
# memory_high:
# Extra environment variables and their values to set when running the service. A dictionary where keys are the variable
# names.
# environment: {}
# gx_it_proxy: {}
# Configuration for tusd server (https://github.com/tus/tusd).
# The ``tusd`` binary must be installed manually and made available on PATH (e.g in galaxy's .venv/bin directory).
@@ -296,7 +192,7 @@ gravity:
# extra_args:
# umask under which service should be executed
# umask:
# umask: null
# Value of supervisor startsecs, systemd TimeoutStartSec
# start_timeout: 10
@@ -307,73 +203,19 @@ gravity:
# Memory limit (in GB). If the service exceeds the limit, it will be killed. Default is no limit or the value of the
# ``memory_limit`` setting at the top level of the Gravity configuration, if set. Ignored if ``process_manager`` is
# ``supervisor``.
# memory_limit:
# memory_limit: null
# Memory usage throttle limit (in GB). If the service exceeds the limit, processes are throttled and put under heavy
# reclaim pressure. Default is no limit or the value of the ``memory_high`` setting at the top level of the Gravity
# configuration, if set. Ignored if ``process_manager`` is ``supervisor``.
# memory_high:
# memory_high: null
# Extra environment variables and their values to set when running the service. A dictionary where keys are the variable
# names.
# environment: {}
# Configuration for Galaxy Reports.
reports:
# Enable Galaxy Reports server.
# enable: false
# Path to reports.yml, relative to galaxy.yml if not absolute
# config_file: reports.yml
# The socket to bind. A string of the form: ``HOST``, ``HOST:PORT``, ``unix:PATH``, ``fd://FD``. An IP is a valid HOST.
# bind: localhost:9001
# Controls the number of Galaxy Reports application processes Gunicorn will spawn.
# It is not generally necessary to increase this for the low-traffic Reports server.
# workers: 1
# Gunicorn workers silent for more than this many seconds are killed and restarted.
# Value is a positive number or 0. Setting it to 0 has the effect of infinite timeouts by disabling timeouts for all workers entirely.
# timeout: 300
# URL prefix to serve from.
# The corresponding nginx configuration is (replace <url_prefix> and <bind> with the values from these options):
#
# location /<url_prefix>/ {
# proxy_pass http://<bind>/;
# }
#
# If <bind> is a unix socket, you will need a ``:`` after the socket path but before the trailing slash like so:
# proxy_pass http://unix:/run/reports.sock:/;
# url_prefix:
# Extra arguments to pass to Gunicorn command line.
# extra_args:
# umask under which service should be executed
# umask:
# Value of supervisor startsecs, systemd TimeoutStartSec
# start_timeout: 10
# Value of supervisor stopwaitsecs, systemd TimeoutStopSec
# stop_timeout: 10
# Memory limit (in GB). If the service exceeds the limit, it will be killed. Default is no limit or the value of the
# ``memory_limit`` setting at the top level of the Gravity configuration, if set. Ignored if ``process_manager`` is
# ``supervisor``.
# memory_limit:
# Memory usage throttle limit (in GB). If the service exceeds the limit, processes are throttled and put under heavy
# reclaim pressure. Default is no limit or the value of the ``memory_high`` setting at the top level of the Gravity
# configuration, if set. Ignored if ``process_manager`` is ``supervisor``.
# memory_high:
# Extra environment variables and their values to set when running the service. A dictionary where keys are the variable
# names.
# environment: {}
# reports: {}
# Configure dynamic handlers in this section.
# See https://docs.galaxyproject.org/en/latest/admin/scaling.html#dynamically-defined-handlers for details.
@@ -3231,3 +3073,4 @@ galaxy:
# Enable beta tool formats (yaml, cwl, ...) which is a prerequisite
# for user defined tools.
#enable_beta_tool_formats: false
+14 -22
View File
@@ -234,7 +234,19 @@ class OnedataFileSourceConfiguration(StrictModel):
writable: bool = False
class WebdavFileSourceTemplateConfiguration(StrictModel):
class WebdavConfigMixin:
@model_validator(mode="before")
@classmethod
def ensure_base_url(cls, data: Any) -> Any:
# Keep persisted user file sources created before the WebDAV
# url -> base_url rename loadable in the preferences UI.
if isinstance(data, dict) and "base_url" not in data and "url" in data:
data = dict(data)
data["base_url"] = data.pop("url")
return data
class WebdavFileSourceTemplateConfiguration(WebdavConfigMixin, StrictModel):
type: Literal["webdav"]
base_url: Union[str, TemplateExpansion]
root: Union[str, TemplateExpansion]
@@ -244,18 +256,8 @@ class WebdavFileSourceTemplateConfiguration(StrictModel):
template_start: Optional[str] = None
template_end: Optional[str] = None
@model_validator(mode="before")
@classmethod
def ensure_base_url(cls, data: Any) -> Any:
# Keep persisted user file source templates created before the WebDAV
# url -> base_url rename loadable in the preferences UI.
if isinstance(data, dict) and "base_url" not in data and "url" in data:
data = dict(data)
data["base_url"] = data.pop("url")
return data
class WebdavFileSourceConfiguration(StrictModel):
class WebdavFileSourceConfiguration(WebdavConfigMixin, StrictModel):
type: Literal["webdav"]
base_url: str
root: str
@@ -263,16 +265,6 @@ class WebdavFileSourceConfiguration(StrictModel):
password: str
writable: bool = False
@model_validator(mode="before")
@classmethod
def ensure_base_url(cls, data: Any) -> Any:
# Keep persisted user file source configurations created before the WebDAV
# url -> base_url rename loadable in the preferences UI.
if isinstance(data, dict) and "base_url" not in data and "url" in data:
data = dict(data)
data["base_url"] = data.pop("url")
return data
class eLabFTWFileSourceTemplateConfiguration(StrictModel): # noqa
type: Literal["elabftw"]