Skip to content

Commit 8e5ff74

Browse files
authored
Revert "Revert "route_check: Skip route checks if bgp feature is not enabled"" (#3270)
* Revert "Revert "route_check: Skip route checks if bgp feature is not enabled"…" This reverts commit 01ee98e.
1 parent eb165f3 commit 8e5ff74

File tree

3 files changed

+177
-5
lines changed

3 files changed

+177
-5
lines changed

scripts/route_check.py

+16
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,18 @@ def filter_out_standalone_tunnel_routes(namespace, routes):
533533

534534
return updated_routes
535535

536+
def is_feature_bgp_enabled(namespace):
537+
"""
538+
Check if bgp feature is enabled or disabled.
539+
Return True if enabled else False.
540+
"""
541+
cfg_db = multi_asic.connect_config_db_for_ns(namespace)
542+
feature_table = cfg_db.get_table("FEATURE")
543+
bgp_enabled = False
544+
if 'bgp' in feature_table:
545+
if feature_table['bgp']["state"] == "enabled":
546+
bgp_enabled = True
547+
return bgp_enabled
536548

537549
def check_frr_pending_routes(namespace):
538550
"""
@@ -831,6 +843,10 @@ def main():
831843
signal.signal(signal.SIGALRM, handler)
832844
load_db_config()
833845

846+
if not is_feature_bgp_enabled(namespace):
847+
print_message(syslog.LOG_INFO, "BGP feature is disabled, exiting without checking routes!!")
848+
return 0, None
849+
834850
while True:
835851
signal.alarm(TIMEOUT_SECONDS)
836852
ret, res= check_routes(namespace)

tests/route_check_test.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -271,11 +271,14 @@ def test_timeout(self, mock_dbs, force_hang):
271271
# Test timeout
272272
ex_raised = False
273273
# Use an expected failing test case to trigger the select
274-
set_test_case_data(TEST_DATA['2'])
275-
274+
ct_data = TEST_DATA['2']
275+
set_test_case_data(ct_data)
276276
try:
277-
with patch('sys.argv', [route_check.__file__.split('/')[-1]]):
277+
with patch('sys.argv', [route_check.__file__.split('/')[-1]]), \
278+
patch('route_check.load_db_config', side_effect=lambda: init_db_conns(ct_data[NAMESPACE])):
279+
278280
ret, res = route_check.main()
281+
279282
except Exception as err:
280283
ex_raised = True
281284
expect = "timeout occurred"

tests/route_check_test_data.py

+155-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
VNET_ROUTE_TABLE = 'VNET_ROUTE_TABLE'
2424
INTF_TABLE = 'INTF_TABLE'
2525
RT_ENTRY_TABLE = 'ASIC_STATE'
26+
FEATURE_TABLE = 'FEATURE'
2627
SEPARATOR = ":"
2728
DEVICE_METADATA = "DEVICE_METADATA"
2829
MUX_CABLE = "MUX_CABLE"
@@ -32,7 +33,17 @@
3233
RT_ENTRY_KEY_PREFIX = 'SAI_OBJECT_TYPE_ROUTE_ENTRY:{\"dest":\"'
3334
RT_ENTRY_KEY_SUFFIX = '\",\"switch_id\":\"oid:0x21000000000000\",\"vr\":\"oid:0x3000000000023\"}'
3435

35-
DEFAULT_CONFIG_DB = {DEVICE_METADATA: {LOCALHOST: {}}}
36+
DEFAULT_CONFIG_DB = {
37+
DEVICE_METADATA: {
38+
LOCALHOST: {
39+
}
40+
},
41+
FEATURE_TABLE: {
42+
"bgp": {
43+
"state": "enabled"
44+
}
45+
}
46+
}
3647

3748
TEST_DATA = {
3849
"0": {
@@ -330,6 +341,11 @@
330341
CONFIG_DB: {
331342
DEVICE_METADATA: {
332343
LOCALHOST: {"subtype": "DualToR"}
344+
},
345+
FEATURE_TABLE: {
346+
"bgp": {
347+
"state": "enabled"
348+
}
333349
}
334350
},
335351
APPL_DB: {
@@ -396,6 +412,11 @@
396412
"soc_ipv6": "fc02:1000::3/128",
397413
"state": "auto"
398414
},
415+
},
416+
FEATURE_TABLE: {
417+
"bgp": {
418+
"state": "enabled"
419+
}
399420
}
400421
},
401422
APPL_DB: {
@@ -633,6 +654,11 @@
633654
CONFIG_DB: {
634655
DEVICE_METADATA: {
635656
LOCALHOST: {"subtype": "DualToR"}
657+
},
658+
FEATURE_TABLE: {
659+
"bgp": {
660+
"state": "enabled"
661+
}
636662
}
637663
},
638664
APPL_DB: {
@@ -954,5 +980,132 @@
954980
},
955981
RET: -1,
956982
},
957-
983+
"22": {
984+
DESCR: "basic good one on single asic, bgp disabled",
985+
MULTI_ASIC: False,
986+
NAMESPACE: [''],
987+
ARGS: "route_check -m INFO -i 1000",
988+
PRE: {
989+
DEFAULTNS: {
990+
CONFIG_DB: {
991+
DEVICE_METADATA: {
992+
LOCALHOST: {
993+
}
994+
},
995+
FEATURE_TABLE: {
996+
"bgp": {
997+
"state": "disabled"
998+
}
999+
}
1000+
},
1001+
APPL_DB: {
1002+
ROUTE_TABLE: {
1003+
"0.0.0.0/0" : { "ifname": "portchannel0" },
1004+
"10.10.196.12/31" : { "ifname": "portchannel0" },
1005+
},
1006+
INTF_TABLE: {
1007+
"PortChannel1013:10.10.196.24/31": {},
1008+
"PortChannel1023:2603:10b0:503:df4::5d/126": {},
1009+
"PortChannel1024": {}
1010+
}
1011+
},
1012+
ASIC_DB: {
1013+
RT_ENTRY_TABLE: {
1014+
RT_ENTRY_KEY_PREFIX + "10.10.196.12/31" + RT_ENTRY_KEY_SUFFIX: {},
1015+
RT_ENTRY_KEY_PREFIX + "10.10.196.24/32" + RT_ENTRY_KEY_SUFFIX: {},
1016+
RT_ENTRY_KEY_PREFIX + "2603:10b0:503:df4::5d/128" + RT_ENTRY_KEY_SUFFIX: {},
1017+
RT_ENTRY_KEY_PREFIX + "0.0.0.0/0" + RT_ENTRY_KEY_SUFFIX: {}
1018+
}
1019+
},
1020+
},
1021+
},
1022+
FRR_ROUTES: {
1023+
DEFAULTNS: {
1024+
"0.0.0.0/0": [
1025+
{
1026+
"prefix": "0.0.0.0/0",
1027+
"vrfName": "default",
1028+
"protocol": "bgp",
1029+
"offloaded": "true",
1030+
},
1031+
],
1032+
"10.10.196.12/31": [
1033+
{
1034+
"prefix": "10.10.196.12/31",
1035+
"vrfName": "default",
1036+
"protocol": "bgp",
1037+
},
1038+
],
1039+
"10.10.196.24/31": [
1040+
{
1041+
"protocol": "connected",
1042+
},
1043+
],
1044+
},
1045+
},
1046+
},
1047+
"23": {
1048+
DESCR: "basic good one on multi-asic, bgp disabled",
1049+
MULTI_ASIC: True,
1050+
NAMESPACE: ['asic0'],
1051+
ARGS: "route_check -m INFO -i 1000",
1052+
PRE: {
1053+
ASIC0: {
1054+
CONFIG_DB: {
1055+
DEVICE_METADATA: {
1056+
LOCALHOST: {
1057+
}
1058+
},
1059+
FEATURE_TABLE: {
1060+
"bgp": {
1061+
"state": "disabled"
1062+
}
1063+
}
1064+
},
1065+
APPL_DB: {
1066+
ROUTE_TABLE: {
1067+
"0.0.0.0/0" : { "ifname": "portchannel0" },
1068+
"10.10.196.12/31" : { "ifname": "portchannel0" },
1069+
},
1070+
INTF_TABLE: {
1071+
"PortChannel1013:10.10.196.24/31": {},
1072+
"PortChannel1023:2603:10b0:503:df4::5d/126": {},
1073+
"PortChannel1024": {}
1074+
}
1075+
},
1076+
ASIC_DB: {
1077+
RT_ENTRY_TABLE: {
1078+
RT_ENTRY_KEY_PREFIX + "10.10.196.12/31" + RT_ENTRY_KEY_SUFFIX: {},
1079+
RT_ENTRY_KEY_PREFIX + "10.10.196.24/32" + RT_ENTRY_KEY_SUFFIX: {},
1080+
RT_ENTRY_KEY_PREFIX + "2603:10b0:503:df4::5d/128" + RT_ENTRY_KEY_SUFFIX: {},
1081+
RT_ENTRY_KEY_PREFIX + "0.0.0.0/0" + RT_ENTRY_KEY_SUFFIX: {}
1082+
}
1083+
},
1084+
},
1085+
},
1086+
FRR_ROUTES: {
1087+
ASIC0: {
1088+
"0.0.0.0/0": [
1089+
{
1090+
"prefix": "0.0.0.0/0",
1091+
"vrfName": "default",
1092+
"protocol": "bgp",
1093+
"offloaded": "true",
1094+
},
1095+
],
1096+
"10.10.196.12/31": [
1097+
{
1098+
"prefix": "10.10.196.12/31",
1099+
"vrfName": "default",
1100+
"protocol": "bgp",
1101+
},
1102+
],
1103+
"10.10.196.24/31": [
1104+
{
1105+
"protocol": "connected",
1106+
},
1107+
],
1108+
},
1109+
},
1110+
},
9581111
}

0 commit comments

Comments
 (0)