From 63992583caa7cb893ca863f157ce5a66505f60ff Mon Sep 17 00:00:00 2001 From: Junchao-Mellanox <57339448+Junchao-Mellanox@users.noreply.github.com> Date: Wed, 2 Dec 2020 02:44:44 +0800 Subject: [PATCH] [Mellanox] Remove eeprom cache file when first time init eeprom object (#6071) EEPROM cache file is not refreshed after install a new ONIE version even if the eeprom data is updated. The current Eeprom class always try to read from the cache file when the file exists. The PR is aimed to fix it. --- .../mlnx-platform-api/sonic_platform/eeprom.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/platform/mellanox/mlnx-platform-api/sonic_platform/eeprom.py b/platform/mellanox/mlnx-platform-api/sonic_platform/eeprom.py index 53b8e7173686..b2e588a63557 100644 --- a/platform/mellanox/mlnx-platform-api/sonic_platform/eeprom.py +++ b/platform/mellanox/mlnx-platform-api/sonic_platform/eeprom.py @@ -14,11 +14,15 @@ else: from cStringIO import StringIO +from sonic_py_common.logger import Logger + try: from sonic_platform_base.sonic_eeprom import eeprom_tlvinfo except ImportError as e: raise ImportError (str(e) + "- required module not found") +logger = Logger() + # # CACHE_XXX stuffs are supposted to be moved to the base classes # since they are common for all vendors @@ -60,14 +64,22 @@ def __init__(self): self._eeprom_loaded = True def _load_eeprom(self): + cache_file = os.path.join(CACHE_ROOT, CACHE_FILE) if not os.path.exists(CACHE_ROOT): try: os.makedirs(CACHE_ROOT) except: pass + else: + try: + # Make sure first time always read eeprom data from hardware + if os.path.exists(cache_file): + os.remove(cache_file) + except Exception as e: + logger.log_error('Failed to remove cache file {} - {}'.format(cache_file, repr(e))) try: - self.set_cache_name(os.path.join(CACHE_ROOT, CACHE_FILE)) + self.set_cache_name(cache_file) except: pass