diff --git a/doc/source/admin/galaxy_options.rst b/doc/source/admin/galaxy_options.rst index 24c23d5055e..0eec244b4c6 100644 --- a/doc/source/admin/galaxy_options.rst +++ b/doc/source/admin/galaxy_options.rst @@ -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 diff --git a/lib/galaxy/config/sample/galaxy.yml.sample b/lib/galaxy/config/sample/galaxy.yml.sample index f2319378c96..ab2f0c51435 100644 --- a/lib/galaxy/config/sample/galaxy.yml.sample +++ b/lib/galaxy/config/sample/galaxy.yml.sample @@ -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 `) 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 ``/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 and with the values from these options): - # - # location // { - # proxy_pass http:///; - # } - # - # If 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 + diff --git a/lib/galaxy/files/templates/models.py b/lib/galaxy/files/templates/models.py index b8d62475f73..9c8ce9ebb2e 100644 --- a/lib/galaxy/files/templates/models.py +++ b/lib/galaxy/files/templates/models.py @@ -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"]