diff --git a/gso/schedules/validate_subscriptions.py b/gso/schedules/validate_subscriptions.py index 9e79ec91cabda776762147bd0b86226fe8256879..4a68b6f00810cd9f2c8f46ef811068b7534af3d9 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 03e4f1085663f981424a6b39526b6113accbd3b6..0c4029633b1334b05f540a4ab10ca6eb730eed84 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.