From b248b3a12729e0bbf30226202e7cd31f4ecbadb6 Mon Sep 17 00:00:00 2001 From: Karel van Klink <karel.vanklink@geant.org> Date: Wed, 10 Jan 2024 11:39:20 +0100 Subject: [PATCH] convert scheduled router validation to celery task --- gso/schedules/__init__.py | 8 ------- gso/schedules/validate_routers_nightly.py | 21 ------------------- gso/workflows/__init__.py | 1 + .../{tasks => router}/validate_router.py | 2 +- 4 files changed, 2 insertions(+), 30 deletions(-) delete mode 100644 gso/schedules/validate_routers_nightly.py rename gso/workflows/{tasks => router}/validate_router.py (94%) diff --git a/gso/schedules/__init__.py b/gso/schedules/__init__.py index f3100cf8..8257a874 100644 --- a/gso/schedules/__init__.py +++ b/gso/schedules/__init__.py @@ -1,9 +1 @@ """Tasks that are scheduled to run periodically in :term:`GSO`.""" - -from orchestrator.schedules import SchedulingFunction # type:ignore[attr-defined] - -from gso.schedules.validate_routers_nightly import run_validate_routers - -# TODO: This list overwrites the default, and therefore leaves all default schedules unused. -# TODO: Consider using the default schedules. -ALL_SCHEDULERS: list[SchedulingFunction] = [run_validate_routers] diff --git a/gso/schedules/validate_routers_nightly.py b/gso/schedules/validate_routers_nightly.py deleted file mode 100644 index 9b60df42..00000000 --- a/gso/schedules/validate_routers_nightly.py +++ /dev/null @@ -1,21 +0,0 @@ -"""Nightly schedule for validating all active Routers' configuration.""" - -import logging - -from orchestrator.schedules.scheduling import scheduler -from orchestrator.services.processes import start_process - -from gso.services.subscriptions import get_active_router_subscriptions - -logger = logging.getLogger(__name__) - - -@scheduler(name="Validate routers", time_unit="day", at="03:00") -def run_validate_routers() -> None: - """Validate configuration on all active Routers, every night at 3AM.""" - routers = get_active_router_subscriptions(includes=["subscription_id"]) - - for router in routers: - msg = f"Validating configuration of router subscription {router['subscription_id']}" - logger.info(msg) - start_process("validate_router", [{"subscription_id": router["subscription_id"]}]) diff --git a/gso/workflows/__init__.py b/gso/workflows/__init__.py index 54d6a8a1..7e81eafc 100644 --- a/gso/workflows/__init__.py +++ b/gso/workflows/__init__.py @@ -42,6 +42,7 @@ LazyWorkflowInstance("gso.workflows.router.update_ibgp_mesh", "update_ibgp_mesh" LazyWorkflowInstance("gso.workflows.router.modify_connection_strategy", "modify_connection_strategy") LazyWorkflowInstance("gso.workflows.router.import_router", "import_router") LazyWorkflowInstance("gso.workflows.router.create_imported_router", "create_imported_router") +LazyWorkflowInstance("gso.workflows.router.validate_router", "validate_router") # Site workflows LazyWorkflowInstance("gso.workflows.site.create_site", "create_site") diff --git a/gso/workflows/tasks/validate_router.py b/gso/workflows/router/validate_router.py similarity index 94% rename from gso/workflows/tasks/validate_router.py rename to gso/workflows/router/validate_router.py index 465e4c33..6a1390d2 100644 --- a/gso/workflows/tasks/validate_router.py +++ b/gso/workflows/router/validate_router.py @@ -16,7 +16,7 @@ from gso.workflows.router.create_router import verify_ipam_loopback @step("Validate router configuration") def validate_router_config(subscription: Router, callback_route: str) -> None: """Run an Ansible playbook that validates the configuration that is present on an active Router.""" - extra_vars = {"wfo_router_json": json.loads(json_dumps(subscription)), "verb": "validate"} + extra_vars = {"wfo_router": json.loads(json_dumps(subscription)), "verb": "validate"} execute_playbook( playbook_name="base_config.yaml", -- GitLab