Skip to content

Commit 936679e

Browse files
jcaiMRqiluo-msft
authored andcommitted
Set 'origin' and 'AS Path' for T1 SLB routes (#13613)
* set origin and as-path prepend for routes from SLB
1 parent 4e70a2b commit 936679e

File tree

2 files changed

+39
-6
lines changed

2 files changed

+39
-6
lines changed

src/sonic-bgpcfgd/bgpcfgd/managers_rm.py

+25-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
from .manager import Manager
2+
from swsscommon import swsscommon
23
from .log import log_err, log_debug
34

45
ROUTE_MAPS = ["FROM_SDN_SLB_ROUTES"]
5-
6+
FROM_SDN_SLB_DEPLOYMENT_ID = '2'
67

78
class RouteMapMgr(Manager):
89
"""This class add route-map when BGP_PROFILE_TABLE in APPL_DB is updated"""
@@ -71,8 +72,28 @@ def __del_handler_validate(self, key):
7172
return False
7273
return True
7374

75+
def __read_asn(self):
76+
if not 'deployment_id_asn_map' in self.constants:
77+
log_err("BGPRouteMapMgr:: 'deployment_id_asn_map' key is not found in constants")
78+
return None
79+
if FROM_SDN_SLB_DEPLOYMENT_ID in self.constants['deployment_id_asn_map']:
80+
return self.constants['deployment_id_asn_map'][FROM_SDN_SLB_DEPLOYMENT_ID]
81+
log_err("BGPRouteMapMgr:: deployment id %s is not found in constants" % (FROM_SDN_SLB_DEPLOYMENT_ID))
82+
return None
83+
7484
def __update_rm(self, rm, data):
75-
cmds = ["route-map %s permit 100" % ("%s_RM" % rm), " set community %s" % data["community_id"]]
76-
log_debug("BGPRouteMapMgr:: update route-map %s community %s" % ("%s_RM" % rm, data["community_id"]))
77-
self.cfg_mgr.push_list(cmds)
85+
cmds = []
86+
if rm == "FROM_SDN_SLB_ROUTES":
87+
cmds.append("route-map %s permit 100" % ("%s_RM" % rm))
88+
bgp_asn = self.__read_asn()
89+
if bgp_asn is None or bgp_asn is '':
90+
log_debug("BGPRouteMapMgr:: update route-map %s, but asn is not found in constants" % ("%s_RM" % rm))
91+
return
92+
cmds.append(" set as-path prepend %s %s" % (bgp_asn, bgp_asn))
93+
cmds.append(" set community %s" % data["community_id"])
94+
cmds.append(" set origin incomplete")
95+
log_debug("BGPRouteMapMgr:: update route-map %s community %s origin incomplete as-path prepend %s %s" % \
96+
("%s_RM" % rm, data["community_id"], bgp_asn, bgp_asn))
97+
if cmds:
98+
self.cfg_mgr.push_list(cmds)
7899
log_debug("BGPRouteMapMgr::Done")

src/sonic-bgpcfgd/tests/test_rm.py

+14-2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,23 @@
33
from bgpcfgd.managers_rm import RouteMapMgr
44
from swsscommon import swsscommon
55

6+
7+
test_rm_constants = {
8+
"deployment_id_asn_map": {
9+
"1": 12345,
10+
"2": 12346,
11+
"3": 12347,
12+
"4": 12348,
13+
}
14+
}
15+
616
def constructor():
717
cfg_mgr = MagicMock()
818

919
common_objs = {
1020
'directory': Directory(),
1121
'cfg_mgr': cfg_mgr,
12-
'constants': {},
22+
'constants': test_rm_constants,
1323
}
1424

1525
mgr = RouteMapMgr(common_objs, "APPL_DB", "BGP_PROFILE_TABLE")
@@ -47,7 +57,9 @@ def test_set_del():
4757
True,
4858
[
4959
["route-map FROM_SDN_SLB_ROUTES_RM permit 100",
50-
" set community 1234:1234"]
60+
" set as-path prepend 12346 12346",
61+
" set community 1234:1234",
62+
" set origin incomplete"]
5163
]
5264
)
5365

0 commit comments

Comments
 (0)