diff --git a/argos/commands.py b/argos/commands.py index ca87647..691edde 100644 --- a/argos/commands.py +++ b/argos/commands.py @@ -87,7 +87,12 @@ def agent(server_url, auth, max_tasks, wait_time, log_level): @server.command() @click.option("--host", default="127.0.0.1", help="Host to bind") @click.option("--port", default=8000, type=int, help="Port to bind") -@click.option("--config", default="config.yaml", help="Path the the configuration file") +@click.option( + "--config", + default="config.yaml", + help="Path the the configuration file", + envvar="ARGOS_YAML_FILE", +) @click.option("--reload", is_flag=True, help="Enable hot reloading") def start(host, port, config, reload): """Starts the server""" @@ -124,8 +129,14 @@ def validate_max_results(ctx, param, value): ), callback=validate_max_lock_seconds, ) +@click.option( + "--config", + default="config.yaml", + help="Path the the configuration file", + envvar="ARGOS_YAML_FILE", +) @coroutine -async def cleandb(max_results, max_lock_seconds): +async def cleandb(max_results, max_lock_seconds, config): """Clean the database (to run routinely) \b @@ -135,6 +146,8 @@ async def cleandb(max_results, max_lock_seconds): # The imports are made here otherwise the agent will need server configuration files. from argos.server import queries + os.environ["ARGOS_YAML_FILE"] = config + db = await get_db() removed = await queries.remove_old_results(db, max_results) updated = await queries.release_old_locks(db, max_lock_seconds) @@ -144,14 +157,22 @@ async def cleandb(max_results, max_lock_seconds): @server.command() +@click.option( + "--config", + default="config.yaml", + help="Path the the configuration file", + envvar="ARGOS_YAML_FILE", +) @coroutine -async def reload_config(): +async def reload_config(config): """Read tasks configuration and add/delete tasks in database if needed""" # The imports are made here otherwise the agent will need server configuration files. from argos.server import queries from argos.server.main import get_application, read_config from argos.server.settings import get_app_settings + os.environ["ARGOS_YAML_FILE"] = config + appli = get_application() settings = get_app_settings() config = read_config(appli, settings) @@ -164,12 +185,20 @@ async def reload_config(): @server.command() +@click.option( + "--config", + default="config.yaml", + help="Path the the configuration file", + envvar="ARGOS_YAML_FILE", +) @coroutine -async def migrate(): +async def migrate(config): """Run database migrations""" # The imports are made here otherwise the agent will need server configuration files. from argos.server.settings import get_app_settings + os.environ["ARGOS_YAML_FILE"] = config + settings = get_app_settings() alembic_cfg = Config("alembic.ini") diff --git a/docs/cli.md b/docs/cli.md index 472f8d6..92f3dc2 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -122,6 +122,7 @@ Usage: argos server migrate [OPTIONS] Run database migrations Options: + --config TEXT Path the the configuration file --help Show this message and exit. ``` @@ -129,7 +130,7 @@ Options: --> -### Server clean +### Server cleandb