diff --git a/show/sflow.py b/show/sflow.py index cae637260aff..a84a4bdff15f 100644 --- a/show/sflow.py +++ b/show/sflow.py @@ -50,11 +50,12 @@ def show_sflow_interface(config_db): for pname in natsorted(list(port_tbl.keys())): intf_key = 'SFLOW_SESSION_TABLE:' + pname sess_info = sess_db.get_all(sess_db.APPL_DB, intf_key) - if sess_info is None: + if (sess_info is None or sess_info.get('admin_state') is None or + sess_info.get('sample_rate') is None): continue body_info = [pname] - body_info.append(sess_info['admin_state']) - body_info.append(sess_info['sample_rate']) + body_info.append(sess_info.get('admin_state')) + body_info.append(sess_info.get('sample_rate')) body.append(body_info) click.echo(tabulate(body, header, tablefmt='grid')) diff --git a/tests/mock_tables/appl_db.json b/tests/mock_tables/appl_db.json index 9ba4300f9803..5cdb65a180fc 100644 --- a/tests/mock_tables/appl_db.json +++ b/tests/mock_tables/appl_db.json @@ -15,6 +15,15 @@ "admin_state": "up", "sample_rate": "5000" }, + "SFLOW_SESSION_TABLE:Ethernet8": { + "BAD": "BAD" + }, + "SFLOW_SESSION_TABLE:Ethernet12": { + "sample_rate": "5000" + }, + "SFLOW_SESSION_TABLE:Ethernet16": { + "admin_state": "up" + }, "PORT_TABLE:Ethernet0": { "index": "0", "lanes": "0", diff --git a/tests/sflow_test.py b/tests/sflow_test.py index 85c9024162bb..0e15f1e0274e 100644 --- a/tests/sflow_test.py +++ b/tests/sflow_test.py @@ -261,6 +261,35 @@ def test_config_sflow_intf_sample_rate(self): return + def test_config_disable_all_intf(self): + db = Db() + runner = CliRunner() + obj = {'db':db.cfgdb} + + # disable all interfaces + result = runner.invoke(config.config.commands["sflow"]. + commands["interface"].commands["disable"], ["all"], obj=obj) + print(result.exit_code, result.output) + assert result.exit_code == 0 + + # verify in configDb + sflowSession = db.cfgdb.get_table('SFLOW_SESSION') + assert sflowSession["all"]["admin_state"] == "down" + + def test_config_enable_all_intf(self): + db = Db() + runner = CliRunner() + obj = {'db':db.cfgdb} + # enable all interfaces + result = runner.invoke(config.config.commands["sflow"].commands["interface"]. + commands["enable"], ["all"], obj=obj) + print(result.exit_code, result.output) + assert result.exit_code == 0 + + # verify in configDb + sflowSession = db.cfgdb.get_table('SFLOW_SESSION') + assert sflowSession["all"]["admin_state"] == "up" + @classmethod def teardown_class(cls): print("TEARDOWN")