Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added route-advertise to bgp_af module #63

Merged
merged 27 commits into from Mar 15, 2022
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
44 changes: 22 additions & 22 deletions plugins/module_utils/network/sonic/config/bgp_af/bgp_af.py
Expand Up @@ -247,28 +247,26 @@ def get_modify_advertise_request(self, vrf_name, conf_afi, conf_safi, conf_addr_

return request

def get_modify_route_advertise_list_request(self, vrf_name, conf_afi, conf_safi, conf_addr_fam):
def get_modify_route_advertise_list_request(self, vrf_name, conf_afi, conf_safi, conf_addr_fam, route_advertise_list):
request = []
route_advertise = []
afi_safi = ('%s_%s' % (conf_afi, conf_safi)).upper()
route_advertise_list = conf_addr_fam.get('route_advertise_list', [])
if route_advertise_list:
for rt_adv in route_advertise_list:
advertise_afi = rt_adv.get('advertise_afi', None)
route_map = rt_adv.get('route_map', None)
if advertise_afi:
advertise_afi_safi = '%s_UNICAST' % advertise_afi.upper()
url = '%s=%s/%s' % (self.network_instance_path, vrf_name, self.protocol_bgp_path)
url += '/%s=%s/%s' % (self.afi_safi_path, afi_safi, self.l2vpn_evpn_route_advertise_path)
cfg = None
if route_map:
route_map_list = [route_map]
cfg = {'advertise-afi-safi': advertise_afi_safi, 'route-map': route_map_list}
else:
cfg = {'advertise-afi-safi': advertise_afi_safi}
route_advertise.append({'advertise-afi-safi': advertise_afi_safi, 'config': cfg})
pay_load = {'openconfig-bgp-evpn-ext:route-advertise': {'route-advertise-list': route_advertise}}
request = {"path": url, "method": PATCH, "data": pay_load}
for rt_adv in route_advertise_list:
advertise_afi = rt_adv.get('advertise_afi', None)
route_map = rt_adv.get('route_map', None)
if advertise_afi:
advertise_afi_safi = '%s_UNICAST' % advertise_afi.upper()
url = '%s=%s/%s' % (self.network_instance_path, vrf_name, self.protocol_bgp_path)
url += '/%s=%s/%s' % (self.afi_safi_path, afi_safi, self.l2vpn_evpn_route_advertise_path)
cfg = None
if route_map:
route_map_list = [route_map]
cfg = {'advertise-afi-safi': advertise_afi_safi, 'route-map': route_map_list}
else:
cfg = {'advertise-afi-safi': advertise_afi_safi}
route_advertise.append({'advertise-afi-safi': advertise_afi_safi, 'config': cfg})
pay_load = {'openconfig-bgp-evpn-ext:route-advertise': {'route-advertise-list': route_advertise}}
request = {"path": url, "method": PATCH, "data": pay_load}
return request

def get_modify_redistribute_requests(self, vrf_name, conf_afi, conf_safi, conf_redis_arr):
Expand Down Expand Up @@ -424,12 +422,14 @@ def get_modify_requests(self, conf, match, vrf_name):
requests.append(request)

if conf_afi == "l2vpn" and conf_safi == "evpn":
conf_route_advertise_list = conf_addr_fam.get('conf_route_advertise_list', [])
stalabi1 marked this conversation as resolved.
Show resolved Hide resolved
adv_req = self.get_modify_advertise_request(vrf_name, conf_afi, conf_safi, conf_addr_fam)
rt_adv_req = self.get_modify_route_advertise_list_request(vrf_name, conf_afi, conf_safi, conf_addr_fam)
if adv_req:
requests.append(adv_req)
if rt_adv_req:
requests.append(rt_adv_req)
if conf_route_advertise_list:
rt_adv_req = self.get_modify_route_advertise_list_request(vrf_name, conf_afi, conf_safi, conf_addr_fam, conf_route_advertise_list)
if rt_adv_req:
requests.append(rt_adv_req)
elif conf_afi in ["ipv4", "ipv6"] and conf_safi == "unicast":
conf_redis_arr = conf_addr_fam.get('redistribute', [])
conf_max_path = conf_addr_fam.get('max_path', None)
Expand Down