From f58cbab2b35de105d10c80c21e9251f1e543a51b Mon Sep 17 00:00:00 2001
From: Neda Moeini <neda.moeini@geant.org>
Date: Wed, 20 Nov 2024 09:31:07 +0100
Subject: [PATCH] Update create NrenL3CoreServic WF after BFD Settings change.

---
 .../create_nren_l3_core_service.py                 |  1 +
 test/fixtures/nren_l3_core_service_fixtures.py     | 13 +++++++------
 .../test_create_nren_l3_core_service.py            | 14 +++++++-------
 3 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/gso/workflows/nren_l3_core_service/create_nren_l3_core_service.py b/gso/workflows/nren_l3_core_service/create_nren_l3_core_service.py
index c92c63b1..80034d05 100644
--- a/gso/workflows/nren_l3_core_service/create_nren_l3_core_service.py
+++ b/gso/workflows/nren_l3_core_service/create_nren_l3_core_service.py
@@ -145,6 +145,7 @@ def initialize_subscription(
             subscription_id=uuid4(),
             rtbh_enabled=True,
             is_multi_hop=True,
+            **session,
         )
         for session in binding_port_input["bgp_peers"]
     ]
diff --git a/test/fixtures/nren_l3_core_service_fixtures.py b/test/fixtures/nren_l3_core_service_fixtures.py
index 58754e59..15306c1a 100644
--- a/test/fixtures/nren_l3_core_service_fixtures.py
+++ b/test/fixtures/nren_l3_core_service_fixtures.py
@@ -7,9 +7,9 @@ from orchestrator.domain import SubscriptionModel
 from orchestrator.types import SubscriptionLifecycle, UUIDstr
 
 from gso.products import ProductName
-from gso.products.product_blocks.bgp_session import BFDSettings, BGPSession, IPFamily
+from gso.products.product_blocks.bgp_session import BGPSession, IPFamily
 from gso.products.product_blocks.nren_l3_core_service import NRENAccessPort
-from gso.products.product_blocks.service_binding_port import ServiceBindingPort
+from gso.products.product_blocks.service_binding_port import BFDSettings, ServiceBindingPort
 from gso.products.product_types.edge_port import EdgePort
 from gso.products.product_types.nren_l3_core_service import (
     ImportedNRENL3CoreService,
@@ -34,19 +34,19 @@ def bfd_settings_factory(faker):
             subscription_id=uuid4(),
             bfd_enabled=bfd_enabled,
             bfd_multiplier=bfd_multiplier or (faker.pyint() if bfd_enabled else None),
-            bfd_interval=bfd_interval or (faker.pyint() if bfd_enabled else None),
+            bfd_interval_rx=bfd_interval or (faker.pyint() if bfd_enabled else None),
+            bfd_interval_tx=bfd_interval or (faker.pyint() if bfd_enabled else None),
         )
 
     return create_bfd_settings
 
 
 @pytest.fixture()
-def bgp_session_subscription_factory(faker, bfd_settings_factory):
+def bgp_session_subscription_factory(faker):
     def create_bgp_session(
         peer_address: IPAddress | None = None,
         families: list[IPFamily] | None = None,
         authentication_key: str | None = None,
-        bfd_settings: BFDSettings | None = None,
         *,
         is_multi_hop: bool = False,
         has_custom_policies: bool = False,
@@ -54,11 +54,12 @@ def bgp_session_subscription_factory(faker, bfd_settings_factory):
         send_default_route: bool | None = True,
         is_passive: bool | None = False,
         rtbh_enabled: bool | None = False,
+        bfd_enabled: bool | None = False,
     ):
         return BGPSession.new(
             subscription_id=uuid4(),
             peer_address=peer_address or faker.ipv4(),
-            bfd_settings=bfd_settings or bfd_settings_factory(),
+            bfd_enabled=bfd_enabled if bfd_enabled else faker.boolean(),
             families=families or [IPFamily.V4UNICAST],
             has_custom_policies=has_custom_policies,
             authentication_key=authentication_key or faker.password(),
diff --git a/test/workflows/nren_l3_core_service/test_create_nren_l3_core_service.py b/test/workflows/nren_l3_core_service/test_create_nren_l3_core_service.py
index c2b582f4..01d7f8f0 100644
--- a/test/workflows/nren_l3_core_service/test_create_nren_l3_core_service.py
+++ b/test/workflows/nren_l3_core_service/test_create_nren_l3_core_service.py
@@ -4,6 +4,7 @@ import pytest
 from orchestrator.types import SubscriptionLifecycle
 
 from gso.products import ProductName
+from gso.products.product_blocks.bgp_session import IPTypes
 from gso.products.product_types.nren_l3_core_service import NRENL3CoreService
 from gso.services.subscriptions import get_product_id_by_name
 from gso.utils.shared_enums import APType
@@ -15,16 +16,13 @@ def base_bgp_peer_input(faker):
     def _base_bgp_peer_input():
         bfd_enabled = faker.boolean()
         return {
-            "bfd_settings": {
-                "bfd_enabled": bfd_enabled,
-                "bfd_interval": faker.pyint() if bfd_enabled else None,
-                "bfd_multiplier": faker.pyint() if bfd_enabled else None,
-            },
+            "bfd_enabled": bfd_enabled,
             "has_custom_policies": faker.boolean(),
             "authentication_key": faker.password(),
             "multipath_enabled": faker.boolean(),
             "send_default_route": faker.boolean(),
             "is_passive": faker.boolean(),
+            "ip_type": faker.random_element(elements=[IPTypes.IPV4, IPTypes.IPV6]),
         }
 
     return _base_bgp_peer_input
@@ -61,12 +59,14 @@ def test_create_nren_l3_core_service_success(
             "custom_firewall_filters": faker.boolean(),
             "v4_bfd_settings": {
                 "bfd_enabled": True,
-                "bfd_interval": faker.pyint(),
+                "bfd_interval_rx": faker.pyint(),
+                "bfd_interval_tx": faker.pyint(),
                 "bfd_multiplier": faker.pyint(),
             },
             "v6_bfd_settings": {
                 "bfd_enabled": True,
-                "bfd_interval": faker.pyint(),
+                "bfd_interval_rx": faker.pyint(),
+                "bfd_interval_tx": faker.pyint(),
                 "bfd_multiplier": faker.pyint(),
             },
             "v4_bgp_peer": base_bgp_peer_input() | {"add_v4_multicast": faker.boolean(), "peer_address": faker.ipv4()},
-- 
GitLab