|
1 | 1 | from .manager import Manager
|
| 2 | +from swsscommon import swsscommon |
2 | 3 | from .log import log_err, log_debug
|
3 | 4 |
|
4 | 5 | ROUTE_MAPS = ["FROM_SDN_SLB_ROUTES"]
|
5 |
| - |
| 6 | +FROM_SDN_SLB_DEPLOYMENT_ID = '2' |
6 | 7 |
|
7 | 8 | class RouteMapMgr(Manager):
|
8 | 9 | """This class add route-map when BGP_PROFILE_TABLE in APPL_DB is updated"""
|
@@ -71,8 +72,28 @@ def __del_handler_validate(self, key):
|
71 | 72 | return False
|
72 | 73 | return True
|
73 | 74 |
|
| 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 | + |
74 | 84 | 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) |
78 | 99 | log_debug("BGPRouteMapMgr::Done")
|
0 commit comments