diff --git a/gso/schedules/__init__.py b/gso/schedules/__init__.py index f3100cf84e60ed34dff2fdf16362b834fe171e33..8257a874c6c090c1d284966d2ff4f9064d04e831 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 9b60df42dd67c8d7b6a14e0004eb36a5b5a2e456..0000000000000000000000000000000000000000 --- 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 3b1c12a1640a72af844fc59e76b9bac3738534f7..2e186fe14335634bb1ff3f81fc8c45abd4f5fc3d 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 465e4c33ec0ee75606b2b887823845a4fed26b6c..6a1390d231ccfdb1d6159bc3f2f5aec83ac1fd75 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",