From 4e12f70aec950cb193a08e77a40c9fe3f285c7ee Mon Sep 17 00:00:00 2001 From: Karel van Klink <karel.vanklink@geant.org> Date: Mon, 3 Jun 2024 15:53:42 +0200 Subject: [PATCH] Only run validation workflows on subscriptions that are both ACTIVE and in sync --- gso/schedules/validate_subscriptions.py | 4 ++-- gso/services/subscriptions.py | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/gso/schedules/validate_subscriptions.py b/gso/schedules/validate_subscriptions.py index 9e79ec91..4a68b6f0 100644 --- a/gso/schedules/validate_subscriptions.py +++ b/gso/schedules/validate_subscriptions.py @@ -6,7 +6,7 @@ from orchestrator.services.subscriptions import TARGET_DEFAULT_USABLE_MAP, WF_US from orchestrator.targets import Target from gso.schedules.scheduling import CronScheduleConfig, scheduler -from gso.services.subscriptions import get_insync_subscriptions +from gso.services.subscriptions import get_active_insync_subscriptions from gso.worker import celery logger = structlog.get_logger(__name__) @@ -16,7 +16,7 @@ logger = structlog.get_logger(__name__) @scheduler(CronScheduleConfig(name="Subscriptions Validator", minute="10", hour="0")) def validate_subscriptions() -> None: """Validate all subscriptions using their corresponding validation workflow.""" - subscriptions = get_insync_subscriptions() + subscriptions = get_active_insync_subscriptions() if not subscriptions: logger.info("No subscriptions to validate") return diff --git a/gso/services/subscriptions.py b/gso/services/subscriptions.py index 03e4f108..0c402963 100644 --- a/gso/services/subscriptions.py +++ b/gso/services/subscriptions.py @@ -210,6 +210,15 @@ def get_insync_subscriptions() -> list[SubscriptionTable]: return SubscriptionTable.query.join(ProductTable).filter(SubscriptionTable.insync.is_(True)).all() +def get_active_insync_subscriptions() -> list[SubscriptionTable]: + """Retrieve all subscriptions that are currently active and in sync.""" + return ( + SubscriptionTable.query.join(ProductTable) + .filter(SubscriptionTable.insync.is_(True), SubscriptionTable.status.is_(SubscriptionLifecycle.ACTIVE)) + .all() + ) + + def get_site_by_name(site_name: str) -> Site: """Get a site by its name. -- GitLab