From aad42ecafdd3e153a954545f05a33117200ab444 Mon Sep 17 00:00:00 2001
From: Karel van Klink <karel.vanklink@geant.org>
Date: Mon, 15 Apr 2024 17:00:03 +0200
Subject: [PATCH] re-order steps in router validation workflow

---
 gso/workflows/router/validate_router.py | 28 ++++++++++++-------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/gso/workflows/router/validate_router.py b/gso/workflows/router/validate_router.py
index abc23133..ab12ffd8 100644
--- a/gso/workflows/router/validate_router.py
+++ b/gso/workflows/router/validate_router.py
@@ -14,6 +14,18 @@ from gso.services import infoblox
 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")
 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."""
@@ -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(
     "Validate router configuration",
     target=Target.SYSTEM,
@@ -47,15 +47,15 @@ def verify_ipam_loopback(subscription: Router) -> 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 :term:`IPAM`.
+    * Redeploy base config to verify the configuration is intact.
     """
     return (
         init
         >> store_process_subscription(Target.SYSTEM)
         >> unsync
-        >> lso_interaction(validate_router_config)
         >> verify_ipam_loopback
+        >> lso_interaction(validate_router_config)
         >> resync
         >> done
     )
-- 
GitLab