From 49fd1bb2cc4757639a589082f54cad90b0fddd63 Mon Sep 17 00:00:00 2001
From: gifrerenom <lluis.gifre@cttc.es>
Date: Wed, 16 Oct 2024 07:27:04 +0000
Subject: [PATCH] NBI - IETF L3VPN Connector:

- Fixed parsing of optional site routing protocols
---
 .../rest_server/nbi_plugins/ietf_l3vpn/Handlers.py     | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/Handlers.py b/src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/Handlers.py
index f7329cb35..cb3bd0ba2 100644
--- a/src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/Handlers.py
+++ b/src/nbi/service/rest_server/nbi_plugins/ietf_l3vpn/Handlers.py
@@ -195,11 +195,17 @@ def process_site(site : Dict, errors : List[Dict]) -> None:
 
     # site_static_routing: (lan-range, lan-prefix-len, lan-tag) => next-hop
     site_static_routing : Dict[Tuple[str, str], str] = {}
-    for rt_proto in site['routing-protocols']['routing-protocol']:
+    site_routing_protocols : Dict = site.get('routing-protocols', dict()).get('routing-protocol', list())
+    site_routing_protocol : List = site_routing_protocols.get('routing-protocol', list())
+    for rt_proto in site_routing_protocol:
         if rt_proto['type'] != 'ietf-l3vpn-svc:static':
             MSG = 'Site Routing Protocol Type: {:s}'
             raise NotImplementedError(MSG.format(str(rt_proto['type'])))
-        for ipv4_rt in rt_proto['static']['cascaded-lan-prefixes']['ipv4-lan-prefixes']:
+        
+        rt_proto_static : Dict = rt_proto.get('static', dict())
+        rt_proto_static_clps : Dict = rt_proto_static.get('cascaded-lan-prefixes', dict())
+        rt_proto_static_clps_v4 = rt_proto_static_clps.get('ipv4-lan-prefixes', list())
+        for ipv4_rt in rt_proto_static_clps_v4:
             lan_range, lan_prefix = ipv4_rt['lan'].split('/')
             lan_prefix = int(lan_prefix)
             lan_tag   = int(ipv4_rt['lan-tag'].replace('vlan', ''))
-- 
GitLab