From b084c0fc976fe0b3082692648b8f320e685f29b7 Mon Sep 17 00:00:00 2001 From: Noa Or Date: Tue, 3 Mar 2020 17:05:07 +0200 Subject: [PATCH 1/3] Fix bugs - "show run acl/interfaces" returns traceback when no ACL_RULE/INTERFACE is present in configuration - Change logic in main to take data only if the var_json appears in DB. Signed-off-by: Noa Or --- src/sonic-config-engine/sonic-cfggen | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sonic-config-engine/sonic-cfggen b/src/sonic-config-engine/sonic-cfggen index 34f5a36f0fe3..288a66d3cffc 100755 --- a/src/sonic-config-engine/sonic-cfggen +++ b/src/sonic-config-engine/sonic-cfggen @@ -298,7 +298,7 @@ def main(): if args.var_json != None: if args.key != None: print(json.dumps(FormatConverter.to_serialized(data[args.var_json], args.key), indent=4, cls=minigraph_encoder)) - else: + elif args.var_json in data: print(json.dumps(FormatConverter.to_serialized(data[args.var_json]), indent=4, cls=minigraph_encoder)) if args.write_to_db: From 6a859da56461c2761b93ff7881269bc7b9cd5c3a Mon Sep 17 00:00:00 2001 From: Noa Or Date: Sun, 15 Mar 2020 10:34:08 +0200 Subject: [PATCH 2/3] Add unit testing for bug fix & fix comments --- src/sonic-config-engine/sonic-cfggen | 4 ++-- src/sonic-config-engine/tests/test_cfggen.py | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/sonic-config-engine/sonic-cfggen b/src/sonic-config-engine/sonic-cfggen index 288a66d3cffc..6000aefb4245 100755 --- a/src/sonic-config-engine/sonic-cfggen +++ b/src/sonic-config-engine/sonic-cfggen @@ -295,10 +295,10 @@ def main(): template = jinja2.Template('{{' + args.var + '}}') print(template.render(data)) - if args.var_json != None: + if args.var_json != None and args.var_json in data: if args.key != None: print(json.dumps(FormatConverter.to_serialized(data[args.var_json], args.key), indent=4, cls=minigraph_encoder)) - elif args.var_json in data: + else: print(json.dumps(FormatConverter.to_serialized(data[args.var_json]), indent=4, cls=minigraph_encoder)) if args.write_to_db: diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index 8288b729584c..92780f35ab45 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -330,3 +330,16 @@ def test_minigraph_sub_port_interfaces(self, check_stderr=True): output = subprocess.check_output("sed -i \'s/%s/%s/g\' %s" % (BACKEND_TOR_ROUTER, TOR_ROUTER, self.sample_graph_simple), shell=True) self.test_jinja_expression(self.sample_graph_simple, TOR_ROUTER) + + + def test_show_run_acl(self): + argument = '-a \'{"key1":"value"}\' --var-json ACL_RULE' + output = self.run_script(argument) + self.assertEqual(output, '') + + + def test_show_run_interfaces(self): + argument = '-a \'{"key1":"value"}\' --var-json INTERFACE' + output = self.run_script(argument) + self.assertEqual(output, '') + From f04d8eace80117bd15447046d89972491dea5372 Mon Sep 17 00:00:00 2001 From: noaOrMlnx <58519608+noaOrMlnx@users.noreply.github.com> Date: Sun, 15 Mar 2020 10:36:22 +0200 Subject: [PATCH 3/3] Remove white spaces --- src/sonic-config-engine/tests/test_cfggen.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/sonic-config-engine/tests/test_cfggen.py b/src/sonic-config-engine/tests/test_cfggen.py index 92780f35ab45..22a6294cc234 100644 --- a/src/sonic-config-engine/tests/test_cfggen.py +++ b/src/sonic-config-engine/tests/test_cfggen.py @@ -331,15 +331,12 @@ def test_minigraph_sub_port_interfaces(self, check_stderr=True): self.test_jinja_expression(self.sample_graph_simple, TOR_ROUTER) - def test_show_run_acl(self): argument = '-a \'{"key1":"value"}\' --var-json ACL_RULE' output = self.run_script(argument) self.assertEqual(output, '') - def test_show_run_interfaces(self): argument = '-a \'{"key1":"value"}\' --var-json INTERFACE' output = self.run_script(argument) self.assertEqual(output, '') -