-
Karel van Klink authoredKarel van Klink authored
validate_router.py 1.63 KiB
"""Router validation workflow. Used in a nightly schedule."""
import json
from orchestrator.targets import Target
from orchestrator.utils.json import json_dumps
from orchestrator.workflow import StepList, done, init, step, workflow
from orchestrator.workflows.steps import resync, store_process_subscription, unsync
from orchestrator.workflows.utils import wrap_modify_initial_input_form
from products import Router
from gso.services.provisioning_proxy import execute_playbook, pp_interaction
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.loads(json_dumps(subscription)), "verb": "validate"}
execute_playbook(
playbook_name="base_config.yaml",
callback_route=callback_route,
inventory=subscription.router.router_fqdn,
extra_vars=extra_vars,
)
@workflow(
"Validate router configuration",
target=Target.SYSTEM,
initial_input_form=wrap_modify_initial_input_form(None),
)
def validate_router() -> StepList:
"""Validate an existing, active Router subscription.
* Run an Ansible playbook to verify the configuration is intact.
* Verify that the loopback interface is correctly configured in IPAM.
"""
return (
init
>> store_process_subscription(Target.SYSTEM)
>> unsync
>> pp_interaction(validate_router_config)
>> verify_ipam_loopback
>> resync
>> done
)