diff --git a/gso/utils/workflow_steps.py b/gso/utils/workflow_steps.py index 0b6071fd982d658a08d87552758b045b86167dc5..c9b28ec735a2caca2c1f1a9b61e45e4699414b1b 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 3ae59b1fd6a9b608d3011fd6c42d798ecac6ba5c..de2cae8950883b8c43affa8631339902cf09bc0e 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,8 +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_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] @@ -77,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, @@ -88,11 +92,19 @@ 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_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, + } } )