From 678ae94520e3602b07e6d55821e66b7dc266c3dd Mon Sep 17 00:00:00 2001 From: Adrian Edwards Date: Wed, 18 Mar 2026 09:17:45 -0400 Subject: [PATCH 1/4] move get_db_version to cli utils Signed-off-by: Adrian Edwards --- augur/application/cli/_cli_util.py | 20 +++++++++++++++++++- augur/application/cli/db.py | 17 ++--------------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/augur/application/cli/_cli_util.py b/augur/application/cli/_cli_util.py index 6ab969c6f5..f1376a0e79 100644 --- a/augur/application/cli/_cli_util.py +++ b/augur/application/cli/_cli_util.py @@ -4,6 +4,7 @@ import psutil import signal from urllib.parse import urlparse +import sqlalchemy as s from augur.tasks.init.redis_connection import get_redis_connection @@ -69,4 +70,21 @@ def raise_open_file_limit(num_files): resource.setrlimit(resource.RLIMIT_NOFILE, (num_files, current_hard)) - return \ No newline at end of file + return + +def get_db_version(engine): + """ a helper function to return the database version + used in print_db_version and upgrade_db_version in the db cli module + """ + + db_version_sql = s.sql.text( + """ + SELECT * FROM augur_operations.augur_settings WHERE setting = 'augur_data_version' + """ + ) + + with engine.connect() as connection: + result = int(connection.execute(db_version_sql).fetchone()[2]) + + engine.dispose() + return result \ No newline at end of file diff --git a/augur/application/cli/db.py b/augur/application/cli/db.py index a989050518..f50945c27f 100644 --- a/augur/application/cli/db.py +++ b/augur/application/cli/db.py @@ -29,6 +29,8 @@ process_repo_group_csv, ) +from ._cli_util import get_db_version + logger = logging.getLogger(__name__) @@ -258,21 +260,6 @@ def add_github_org(ctx, organization_name): controller.add_cli_org(organization_name) -# get_db_version is a helper function to print_db_version and upgrade_db_version -def get_db_version(engine): - db_version_sql = s.sql.text( - """ - SELECT * FROM augur_operations.augur_settings WHERE setting = 'augur_data_version' - """ - ) - - with engine.connect() as connection: - result = int(connection.execute(db_version_sql).fetchone()[2]) - - engine.dispose() - return result - - @cli.command("print-db-version") @test_connection @test_db_connection From 0c3b16f1a37a48c2ff42e9859eafb43b030a4480 Mon Sep 17 00:00:00 2001 From: Adrian Edwards Date: Wed, 18 Mar 2026 09:18:20 -0400 Subject: [PATCH 2/4] first pass new selfcheck CLI command file Signed-off-by: Adrian Edwards --- augur/application/cli/selftest.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 augur/application/cli/selftest.py diff --git a/augur/application/cli/selftest.py b/augur/application/cli/selftest.py new file mode 100644 index 0000000000..0cb4928d6d --- /dev/null +++ b/augur/application/cli/selftest.py @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: MIT +import logging +import click +import sqlalchemy as s + +from augur.application.cli import ( + test_connection, + test_db_connection, + with_database, + DatabaseContext, +) + +# from augur.application.db.session import DatabaseSession +from datetime import datetime +from augur.application.db.models import Repo + +from ._cli_util import get_db_version + + +logger = logging.getLogger(__name__) + + +@click.group("selftest", short_help="Augur self-testing utilities") +@click.pass_context +def cli(ctx): + ctx.obj = DatabaseContext() + From 37fa3996320954c9b14b4ff4483a24f7bed35f3c Mon Sep 17 00:00:00 2001 From: Adrian Edwards Date: Wed, 18 Mar 2026 12:19:43 -0400 Subject: [PATCH 3/4] add selfcheck report command and the first query Signed-off-by: Adrian Edwards --- augur/application/cli/selftest.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/augur/application/cli/selftest.py b/augur/application/cli/selftest.py index 0cb4928d6d..8f0e128d6f 100644 --- a/augur/application/cli/selftest.py +++ b/augur/application/cli/selftest.py @@ -9,6 +9,7 @@ with_database, DatabaseContext, ) +from augur.application.db.models.augur_data import Commit # from augur.application.db.session import DatabaseSession from datetime import datetime @@ -25,3 +26,23 @@ def cli(ctx): ctx.obj = DatabaseContext() + +@cli.command("report") +@test_connection +@test_db_connection +@with_database +@click.pass_context +def run_selftest_report(ctx): + """ + Run queries to evaluate various aspects of the augur system's functioning and produce a report + """ + cmt_author_name_issue_3740_query = ( + select(func.count()) + .select_from(Commit) + .where(Commit.cmt_author_name.is_('')) + ) + cmt_author_name_issue_3740_count = None + + with ctx.obj.engine.begin() as connection: + cmt_author_name_issue_3740_count = connection.execute(cmt_author_name_issue_3740_query).one() + click.echo(f'Issue 3740 count: {cmt_author_name_issue_3740_count}') From e927f9e97e4222ea721025211eca957595eda44e Mon Sep 17 00:00:00 2001 From: Adrian Edwards Date: Wed, 18 Mar 2026 14:39:28 -0400 Subject: [PATCH 4/4] fixups Signed-off-by: Adrian Edwards --- augur/application/cli/selftest.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/augur/application/cli/selftest.py b/augur/application/cli/selftest.py index 8f0e128d6f..0304d818ad 100644 --- a/augur/application/cli/selftest.py +++ b/augur/application/cli/selftest.py @@ -2,6 +2,7 @@ import logging import click import sqlalchemy as s +from sqlalchemy import select, func from augur.application.cli import ( test_connection, @@ -36,13 +37,15 @@ def run_selftest_report(ctx): """ Run queries to evaluate various aspects of the augur system's functioning and produce a report """ + click.echo('Generating Augur selftest report....') + cmt_author_name_issue_3740_query = ( select(func.count()) .select_from(Commit) - .where(Commit.cmt_author_name.is_('')) + .where(Commit.cmt_author_name == '') ) cmt_author_name_issue_3740_count = None with ctx.obj.engine.begin() as connection: - cmt_author_name_issue_3740_count = connection.execute(cmt_author_name_issue_3740_query).one() - click.echo(f'Issue 3740 count: {cmt_author_name_issue_3740_count}') + cmt_author_name_issue_3740_count = connection.execute(cmt_author_name_issue_3740_query).scalar_one() + click.echo(f'Issue 3740 count: {cmt_author_name_issue_3740_count} commit files in the `commits` table contain authors with an empty string as their name')