From 68a9bb8be13086324c220012489e25810d731602 Mon Sep 17 00:00:00 2001
From: Mohammad Torkashvand <mohammad.torkashvand@geant.org>
Date: Mon, 2 Jun 2025 14:12:29 +0200
Subject: [PATCH 1/2] add threshold vars for BGP to moodi

---
 gso/utils/workflow_steps.py                        |  6 +++++-
 .../base_migrate_l3_core_service.py                | 14 +++++++++++++-
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/gso/utils/workflow_steps.py b/gso/utils/workflow_steps.py
index 0b6071fd9..c9b28ec73 100644
--- a/gso/utils/workflow_steps.py
+++ b/gso/utils/workflow_steps.py
@@ -24,6 +24,7 @@ from gso.utils.shared_enums import Vendor
 
 SKIP_MOODI_KEY = "__skip_moodi"
 IS_HUMAN_INITIATED_WF_KEY = "__is_human_initiated_wf"
+MOODI_EXTRA_KWARGS_KEY = "__moodi_extra_kwargs"
 
 
 def _deploy_base_config(
@@ -419,7 +420,10 @@ def start_moodi() -> StepList:
         return {
             "playbook_name": "moodi_telemetry/playbooks/start_moodi.yaml",
             "inventory": {"all": {"hosts": {host: None}}},
-            "extra_vars": {"subscription": state.get("scoped_subscription", state.get("subscription"))},
+            "extra_vars": {
+                "subscription": state.get("scoped_subscription", state.get("subscription")),
+                "extra_kwargs": state.get(MOODI_EXTRA_KWARGS_KEY, {}),
+            },
         }
 
     return _is_moodi_enabled(indifferent_lso_interaction(_start_moodi))
diff --git a/gso/workflows/l3_core_service/base_migrate_l3_core_service.py b/gso/workflows/l3_core_service/base_migrate_l3_core_service.py
index 3ae59b1fd..7c734d614 100644
--- a/gso/workflows/l3_core_service/base_migrate_l3_core_service.py
+++ b/gso/workflows/l3_core_service/base_migrate_l3_core_service.py
@@ -26,7 +26,7 @@ from gso.services.lso_client import LSOState
 from gso.services.partners import get_partner_by_id
 from gso.services.subscriptions import get_active_edge_port_subscriptions
 from gso.utils.types.tt_number import TTNumber
-from gso.utils.workflow_steps import IS_HUMAN_INITIATED_WF_KEY, SKIP_MOODI_KEY
+from gso.utils.workflow_steps import IS_HUMAN_INITIATED_WF_KEY, MOODI_EXTRA_KWARGS_KEY, SKIP_MOODI_KEY
 from gso.workflows.shared import create_summary_form
 
 
@@ -55,6 +55,10 @@ def initial_input_form(subscription_id: UUIDstr) -> FormGenerator:
         skip_moodi: bool = False
         is_human_initiated_wf: bool = True
         source_edge_port: source_edge_port_selector | str  # type: ignore[valid-type]
+        expected_ipv4_received_routes: int | None = None
+        expected_ipv4_advertised_routes: int | None = None
+        expected_ipv6_received_routes: int | None = None
+        expected_ipv6_advertised_routes: int | None = None
 
     source_ep_user_input = yield L3CoreServiceSourceEdgePortSelectionForm
 
@@ -94,6 +98,14 @@ def initial_input_form(subscription_id: UUIDstr) -> FormGenerator:
             IS_HUMAN_INITIATED_WF_KEY: source_ep_user_input.is_human_initiated_wf,
             SKIP_MOODI_KEY: source_ep_user_input.skip_moodi,
         }
+        | {
+            MOODI_EXTRA_KWARGS_KEY: {
+                "expected_ipv4_received_routes": source_ep_user_input.expected_ipv4_received_routes,
+                "expected_ipv4_advertised_routes": source_ep_user_input.expected_ipv4_advertised_routes,
+                "expected_ipv6_received_routes": source_ep_user_input.expected_ipv6_received_routes,
+                "expected_ipv6_advertised_routes": source_ep_user_input.expected_ipv6_advertised_routes,
+            }
+        }
     )
 
 
-- 
GitLab


From 6870436898671dc5c63d8ec6008e3d17a5db2246 Mon Sep 17 00:00:00 2001
From: Mohammad Torkashvand <mohammad.torkashvand@geant.org>
Date: Mon, 2 Jun 2025 14:33:02 +0200
Subject: [PATCH 2/2] rename bgp vars

---
 .../base_migrate_l3_core_service.py           | 28 +++++++++----------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/gso/workflows/l3_core_service/base_migrate_l3_core_service.py b/gso/workflows/l3_core_service/base_migrate_l3_core_service.py
index 7c734d614..de2cae895 100644
--- a/gso/workflows/l3_core_service/base_migrate_l3_core_service.py
+++ b/gso/workflows/l3_core_service/base_migrate_l3_core_service.py
@@ -55,12 +55,12 @@ def initial_input_form(subscription_id: UUIDstr) -> FormGenerator:
         skip_moodi: bool = False
         is_human_initiated_wf: bool = True
         source_edge_port: source_edge_port_selector | str  # type: ignore[valid-type]
-        expected_ipv4_received_routes: int | None = None
-        expected_ipv4_advertised_routes: int | None = None
-        expected_ipv6_received_routes: int | None = None
-        expected_ipv6_advertised_routes: int | None = None
+        expected_number_of_ipv4_received_routes: int | None = None
+        expected_number_of_ipv4_advertised_routes: int | None = None
+        expected_number_of_ipv6_received_routes: int | None = None
+        expected_number_of_ipv6_advertised_routes: int | None = None
 
-    source_ep_user_input = yield L3CoreServiceSourceEdgePortSelectionForm
+    source_ep_input = yield L3CoreServiceSourceEdgePortSelectionForm
 
     def _destination_edge_port_selector(pid: UUIDstr) -> Choice:
         existing_ep_list = [ap.sbp.edge_port.owner_subscription_id for ap in ap_list]
@@ -81,9 +81,9 @@ def initial_input_form(subscription_id: UUIDstr) -> FormGenerator:
         destination_edge_port: _destination_edge_port_selector(partner_id) | str  # type: ignore[valid-type]
 
     destination_ep_user_input = yield L3CoreServiceEdgePortSelectionForm
-    if source_ep_user_input.is_human_initiated_wf:
+    if source_ep_input.is_human_initiated_wf:
         summary_input = {
-            "source_edge_port": EdgePort.from_subscription(source_ep_user_input.source_edge_port).description,
+            "source_edge_port": EdgePort.from_subscription(source_ep_input.source_edge_port).description,
             "destination_edge_port": EdgePort.from_subscription(
                 destination_ep_user_input.destination_edge_port
             ).description,
@@ -92,18 +92,18 @@ def initial_input_form(subscription_id: UUIDstr) -> FormGenerator:
 
     return (
         {"subscription_id": subscription.subscription_id, "subscription": subscription}
-        | source_ep_user_input.model_dump()
+        | source_ep_input.model_dump()
         | destination_ep_user_input.model_dump()
         | {
-            IS_HUMAN_INITIATED_WF_KEY: source_ep_user_input.is_human_initiated_wf,
-            SKIP_MOODI_KEY: source_ep_user_input.skip_moodi,
+            IS_HUMAN_INITIATED_WF_KEY: source_ep_input.is_human_initiated_wf,
+            SKIP_MOODI_KEY: source_ep_input.skip_moodi,
         }
         | {
             MOODI_EXTRA_KWARGS_KEY: {
-                "expected_ipv4_received_routes": source_ep_user_input.expected_ipv4_received_routes,
-                "expected_ipv4_advertised_routes": source_ep_user_input.expected_ipv4_advertised_routes,
-                "expected_ipv6_received_routes": source_ep_user_input.expected_ipv6_received_routes,
-                "expected_ipv6_advertised_routes": source_ep_user_input.expected_ipv6_advertised_routes,
+                "expected_number_of_ipv4_received_routes": source_ep_input.expected_number_of_ipv4_received_routes,
+                "expected_number_of_ipv4_advertised_routes": source_ep_input.expected_number_of_ipv4_advertised_routes,
+                "expected_number_of_ipv6_received_routes": source_ep_input.expected_number_of_ipv6_received_routes,
+                "expected_number_of_ipv6_advertised_routes": source_ep_input.expected_number_of_ipv6_advertised_routes,
             }
         }
     )
-- 
GitLab