Skip to content
Snippets Groups Projects
Commit 787b729a authored by geant-release-service's avatar geant-release-service
Browse files

Finished release 3.9.

parents 1c6dc080 41768eb5
No related branches found
No related tags found
No related merge requests found
Pipeline #94641 passed
# Changelog # Changelog
# [3.9] - 2025-06-05
- Add threshold input for BGP routes in L3 Core migration workflows and forward the value to Moodi.
# [3.8] - 2025-05-28 # [3.8] - 2025-05-28
- Add backfill service version for IP Trunks - Add backfill service version for IP Trunks
......
...@@ -24,6 +24,7 @@ from gso.utils.shared_enums import Vendor ...@@ -24,6 +24,7 @@ from gso.utils.shared_enums import Vendor
SKIP_MOODI_KEY = "__skip_moodi" SKIP_MOODI_KEY = "__skip_moodi"
IS_HUMAN_INITIATED_WF_KEY = "__is_human_initiated_wf" IS_HUMAN_INITIATED_WF_KEY = "__is_human_initiated_wf"
MOODI_EXTRA_KWARGS_KEY = "__moodi_extra_kwargs"
def _deploy_base_config( def _deploy_base_config(
...@@ -419,7 +420,10 @@ def start_moodi() -> StepList: ...@@ -419,7 +420,10 @@ def start_moodi() -> StepList:
return { return {
"playbook_name": "moodi_telemetry/playbooks/start_moodi.yaml", "playbook_name": "moodi_telemetry/playbooks/start_moodi.yaml",
"inventory": {"all": {"hosts": {host: None}}}, "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)) return _is_moodi_enabled(indifferent_lso_interaction(_start_moodi))
......
...@@ -26,7 +26,7 @@ from gso.services.lso_client import LSOState ...@@ -26,7 +26,7 @@ from gso.services.lso_client import LSOState
from gso.services.partners import get_partner_by_id from gso.services.partners import get_partner_by_id
from gso.services.subscriptions import get_active_edge_port_subscriptions from gso.services.subscriptions import get_active_edge_port_subscriptions
from gso.utils.types.tt_number import TTNumber 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 from gso.workflows.shared import create_summary_form
...@@ -55,8 +55,12 @@ def initial_input_form(subscription_id: UUIDstr) -> FormGenerator: ...@@ -55,8 +55,12 @@ def initial_input_form(subscription_id: UUIDstr) -> FormGenerator:
skip_moodi: bool = False skip_moodi: bool = False
is_human_initiated_wf: bool = True is_human_initiated_wf: bool = True
source_edge_port: source_edge_port_selector | str # type: ignore[valid-type] 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: def _destination_edge_port_selector(pid: UUIDstr) -> Choice:
existing_ep_list = [ap.sbp.edge_port.owner_subscription_id for ap in ap_list] 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: ...@@ -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_edge_port: _destination_edge_port_selector(partner_id) | str # type: ignore[valid-type]
destination_ep_user_input = yield L3CoreServiceEdgePortSelectionForm 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 = { 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_edge_port": EdgePort.from_subscription(
destination_ep_user_input.destination_edge_port destination_ep_user_input.destination_edge_port
).description, ).description,
...@@ -88,11 +92,19 @@ def initial_input_form(subscription_id: UUIDstr) -> FormGenerator: ...@@ -88,11 +92,19 @@ def initial_input_form(subscription_id: UUIDstr) -> FormGenerator:
return ( return (
{"subscription_id": subscription.subscription_id, "subscription": subscription} {"subscription_id": subscription.subscription_id, "subscription": subscription}
| source_ep_user_input.model_dump() | source_ep_input.model_dump()
| destination_ep_user_input.model_dump() | destination_ep_user_input.model_dump()
| { | {
IS_HUMAN_INITIATED_WF_KEY: source_ep_user_input.is_human_initiated_wf, IS_HUMAN_INITIATED_WF_KEY: source_ep_input.is_human_initiated_wf,
SKIP_MOODI_KEY: source_ep_user_input.skip_moodi, 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,
}
} }
) )
......
...@@ -4,7 +4,7 @@ from setuptools import find_packages, setup ...@@ -4,7 +4,7 @@ from setuptools import find_packages, setup
setup( setup(
name="geant-service-orchestrator", name="geant-service-orchestrator",
version="3.8", version="3.9",
author="GÉANT Orchestration and Automation Team", author="GÉANT Orchestration and Automation Team",
author_email="goat@geant.org", author_email="goat@geant.org",
description="GÉANT Service Orchestrator", description="GÉANT Service Orchestrator",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment