Skip to content
Snippets Groups Projects
Commit aad42eca authored by Karel van Klink's avatar Karel van Klink :smiley_cat: Committed by Neda Moeini
Browse files

re-order steps in router validation workflow

parent a6c0fc1c
No related branches found
No related tags found
1 merge request!139Feature/add validation workflows
...@@ -14,6 +14,18 @@ from gso.services import infoblox ...@@ -14,6 +14,18 @@ from gso.services import infoblox
from gso.services.lso_client import execute_playbook, lso_interaction from gso.services.lso_client import execute_playbook, lso_interaction
@step("Verify IPAM resources for loopback interface")
def verify_ipam_loopback(subscription: Router) -> None:
"""Validate the :term:`IPAM` resources for the loopback interface.
Raises an :class:`orchestrator.utils.errors.ProcessFailureError` if :term:`IPAM` is configured incorrectly.
"""
host_record = infoblox.find_host_by_fqdn(f"lo0.{subscription.router.router_fqdn}")
if not host_record or str(subscription.subscription_id) not in host_record.comment:
msg = "Loopback record is incorrectly configured in IPAM, please investigate this manually!"
raise ProcessFailureError(msg)
@step("Validate router configuration") @step("Validate router configuration")
def validate_router_config(subscription: Router, callback_route: str) -> None: 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.""" """Run an Ansible playbook that validates the configuration that is present on an active Router."""
...@@ -27,18 +39,6 @@ def validate_router_config(subscription: Router, callback_route: str) -> None: ...@@ -27,18 +39,6 @@ def validate_router_config(subscription: Router, callback_route: str) -> None:
) )
@step("Verify IPAM resources for loopback interface")
def verify_ipam_loopback(subscription: Router) -> None:
"""Validate the :term:`IPAM` resources for the loopback interface.
Raises an :class:`orchestrator.utils.errors.ProcessFailureError` if :term:`IPAM` is configured incorrectly.
"""
host_record = infoblox.find_host_by_fqdn(f"lo0.{subscription.router.router_fqdn}")
if not host_record or str(subscription.subscription_id) not in host_record.comment:
msg = "Loopback record is incorrectly configured in IPAM, please investigate this manually!"
raise ProcessFailureError(msg)
@workflow( @workflow(
"Validate router configuration", "Validate router configuration",
target=Target.SYSTEM, target=Target.SYSTEM,
...@@ -47,15 +47,15 @@ def verify_ipam_loopback(subscription: Router) -> None: ...@@ -47,15 +47,15 @@ def verify_ipam_loopback(subscription: Router) -> None:
def validate_router() -> StepList: def validate_router() -> StepList:
"""Validate an existing, active Router subscription. """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 :term:`IPAM`. * Verify that the loopback interface is correctly configured in :term:`IPAM`.
* Redeploy base config to verify the configuration is intact.
""" """
return ( return (
init init
>> store_process_subscription(Target.SYSTEM) >> store_process_subscription(Target.SYSTEM)
>> unsync >> unsync
>> lso_interaction(validate_router_config)
>> verify_ipam_loopback >> verify_ipam_loopback
>> lso_interaction(validate_router_config)
>> resync >> resync
>> done >> done
) )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment