From 06e88d662ecfbe83b21a0f610e6f5dc6d79e4920 Mon Sep 17 00:00:00 2001
From: Aleksandr Kurbatov <aleksandr.kurbatov@GL1342.local>
Date: Tue, 16 Apr 2024 13:09:10 +0100
Subject: [PATCH] deploy_twamp: additional check step

An additional step for checking TWAMP status
---
 gso/workflows/iptrunk/deploy_twamp.py       | 20 ++++++++++++++++++++
 test/workflows/iptrunk/test_deploy_twamp.py |  4 ++--
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/gso/workflows/iptrunk/deploy_twamp.py b/gso/workflows/iptrunk/deploy_twamp.py
index c02e229c..73071c62 100644
--- a/gso/workflows/iptrunk/deploy_twamp.py
+++ b/gso/workflows/iptrunk/deploy_twamp.py
@@ -77,6 +77,25 @@ def deploy_twamp_real(subscription: Iptrunk, process_id: UUIDstr, callback_route
     return {"subscription": subscription}
 
 
+@step("Check TWAMP status on both sides")
+def check_twamp_status(subscription: Iptrunk, process_id: UUIDstr, callback_route: str, tt_number: str) -> State:
+    """Check TWAMP session."""
+    extra_vars = {
+        "subscription": json.loads(json_dumps(subscription)),
+        "process_id": process_id,
+        "verb": "check_twamp",
+    }
+
+    inventory = (
+        f"{subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.router_fqdn}"
+        f"\n{subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.router_fqdn}"
+    )
+
+    execute_playbook("deploy_twamp.yaml", callback_route, inventory, extra_vars)
+
+    return {"subscription": subscription}
+
+
 @workflow(
     "Deploy TWAMP",
     initial_input_form=wrap_modify_initial_input_form(_initial_input_form_generator),
@@ -93,6 +112,7 @@ def deploy_twamp() -> StepList:
         >> unsync
         >> lso_interaction(deploy_twamp_dry)
         >> lso_interaction(deploy_twamp_real)
+        >> lso_interaction(check_twamp_status)
         >> resync
         >> done
     )
diff --git a/test/workflows/iptrunk/test_deploy_twamp.py b/test/workflows/iptrunk/test_deploy_twamp.py
index c5592738..8584cd99 100644
--- a/test/workflows/iptrunk/test_deploy_twamp.py
+++ b/test/workflows/iptrunk/test_deploy_twamp.py
@@ -25,7 +25,7 @@ def test_iptrunk_deploy_twamp_success(
     initial_input_data = [{"subscription_id": product_id}, {"tt_number": faker.tt_number()}]
     result, process_stat, step_log = run_workflow("deploy_twamp", initial_input_data)
 
-    for _ in range(2):
+    for _ in range(3):
         result, step_log = assert_lso_interaction_success(result, process_stat, step_log)
 
     assert_complete(result)
@@ -35,4 +35,4 @@ def test_iptrunk_deploy_twamp_success(
     subscription = Iptrunk.from_subscription(subscription_id)
 
     assert subscription.status == "active"
-    assert mock_execute_playbook.call_count == 2
+    assert mock_execute_playbook.call_count == 3
-- 
GitLab