From f0fe613a84aa92bdcd2aa5eec5fe413c231c180b Mon Sep 17 00:00:00 2001 From: Neetha John Date: Wed, 6 Jul 2022 12:29:36 -0700 Subject: [PATCH] Add acl table presence to the condition Signed-off-by: Neetha John --- config/main.py | 8 +++++++- tests/config_test.py | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/config/main.py b/config/main.py index 49732379e6..9b3ba84b03 100644 --- a/config/main.py +++ b/config/main.py @@ -1136,6 +1136,12 @@ def _is_storage_device(cfg_db): device_metadata = cfg_db.get_entry("DEVICE_METADATA", "localhost") return device_metadata.get("storage_device", "Unknown") == "true" +def _is_acl_table_present(cfg_db, acl_table_name): + """ + Check if acl table exists + """ + return acl_table_name in cfg_db.get_keys("ACL_TABLE") + def load_backend_acl(cfg_db, device_type): """ Load acl on backend storage device @@ -1144,7 +1150,7 @@ def load_backend_acl(cfg_db, device_type): BACKEND_ACL_TEMPLATE_FILE = os.path.join('/', "usr", "share", "sonic", "templates", "backend_acl.j2") BACKEND_ACL_FILE = os.path.join('/', "etc", "sonic", "backend_acl.json") - if device_type and device_type == "BackEndToRRouter" and _is_storage_device(cfg_db): + if device_type and device_type == "BackEndToRRouter" and _is_storage_device(cfg_db) and _is_acl_table_present(cfg_db, "DATAACL"): if os.path.isfile(BACKEND_ACL_TEMPLATE_FILE): clicommon.run_command( "{} -d -t {},{}".format( diff --git a/tests/config_test.py b/tests/config_test.py index 67ff8a1a1a..7363e5c77b 100644 --- a/tests/config_test.py +++ b/tests/config_test.py @@ -335,6 +335,12 @@ def test_load_backend_acl_storage_leaf(self, get_cmd_module, setup_single_broadc db.cfgdb.set_entry("DEVICE_METADATA", "localhost", {"storage_device": "true"}) self.check_backend_acl(get_cmd_module, db, device_type='BackEndLeafRouter', condition=False) + def test_load_backend_acl_storage_no_dataacl(self, get_cmd_module, setup_single_broadcom_asic): + db = Db() + db.cfgdb.set_entry("DEVICE_METADATA", "localhost", {"storage_device": "true"}) + db.cfgdb.set_entry("ACL_TABLE", "DATAACL", None) + self.check_backend_acl(get_cmd_module, db, device_type='BackEndToRRouter', condition=False) + def check_backend_acl(self, get_cmd_module, db, device_type='BackEndToRRouter', condition=True): def is_file_side_effect(filename): return True if 'backend_acl' in filename else False