From bc3ab09e02505cc7a243e7671087aa79a18b8c45 Mon Sep 17 00:00:00 2001 From: Taras Keryk Date: Tue, 15 Mar 2022 04:41:13 -0700 Subject: [PATCH 1/9] [BFN] Fix for run fwutil without sudo SONiC has a concept of "platform components" this may include - CPLD, FPGA, BIOS, BMC, etc. These changes are needed to read the version of the BIOS and BMC component. What I did The previous implementaion of component.py expect fwutil run with sudo. When fwutil run without sudo, there are an exception: ``` Traceback (most recent call last): File "/usr/local/bin/fwutil", line 5, in from fwutil.main import cli File "/usr/local/lib/python3.9/dist-packages/fwutil/__init__.py", line 3, in from . import main File "/usr/local/lib/python3.9/dist-packages/fwutil/main.py", line 40, in pdp = PlatformDataProvider() File "/usr/local/lib/python3.9/dist-packages/fwutil/lib.py", line 159, in __init__ self.__platform = Platform() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/platform.py", line 21, in __init__ self._chassis = Chassis() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/chassis.py", line 48, in __init__ self.__initialize_components() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/chassis.py", line 136, in __initialize_components component = Components(index) File "/usr/local/lib/python3.9/dist-packages/sonic_platform/component.py", line 184, in __init__ self.version = get_bios_version() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/component.py", line 19, in get_bios_version return subprocess.check_output(['dmidecode', '-s', 'bios-version']).strip().decode() File "/usr/lib/python3.9/subprocess.py", line 424, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "/usr/lib/python3.9/subprocess.py", line 505, in run with Popen(*popenargs, **kwargs) as process: File "/usr/lib/python3.9/subprocess.py", line 951, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/lib/python3.9/subprocess.py", line 1823, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'dmidecode' ``` How I did it Modification of dmidecode command How to verify it Run manually 'fwutil' (without sudo) Previous command output had exception New command output: Root privileges are required Signed-off-by: Taras Keryk --- .../sonic_platform/component.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/component.py b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/component.py index 5e72bb63e34..c9c4b713053 100644 --- a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/component.py +++ b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/component.py @@ -16,9 +16,9 @@ def get_bios_version(): A string containing the firmware version of the BIOS """ try: - return subprocess.check_output(['dmidecode', '-s', 'bios-version']).strip().decode() + return subprocess.check_output(['sudo', 'dmidecode', '-s', 'bios-version']).strip().decode() except subprocess.CalledProcessError as e: - raise RuntimeError("Failed to getget BIOS version") + raise RuntimeError("Failed to get BIOS version") def get_bmc_version(): """ From 992cc936ea7e932ad50e9583c37c38cc8f2e37ed Mon Sep 17 00:00:00 2001 From: Taras Keryk Date: Tue, 22 Mar 2022 00:43:21 -0700 Subject: [PATCH 2/9] Why I did it The previous implementaion of component.py expect fwutil run with sudo. When fwutil run without sudo, there are an exception: Traceback (most recent call last): File "/usr/local/bin/fwutil", line 5, in from fwutil.main import cli File "/usr/local/lib/python3.9/dist-packages/fwutil/__init__.py", line 3, in from . import main File "/usr/local/lib/python3.9/dist-packages/fwutil/main.py", line 40, in pdp = PlatformDataProvider() File "/usr/local/lib/python3.9/dist-packages/fwutil/lib.py", line 159, in __init__ self.__platform = Platform() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/platform.py", line 21, in __init__ self._chassis = Chassis() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/chassis.py", line 48, in __init__ self.__initialize_components() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/chassis.py", line 136, in __initialize_components component = Components(index) File "/usr/local/lib/python3.9/dist-packages/sonic_platform/component.py", line 184, in __init__ self.version = get_bios_version() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/component.py", line 19, in get_bios_version return subprocess.check_output(['dmidecode', '-s', 'bios-version']).strip().decode() File "/usr/lib/python3.9/subprocess.py", line 424, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "/usr/lib/python3.9/subprocess.py", line 505, in run with Popen(*popenargs, **kwargs) as process: File "/usr/lib/python3.9/subprocess.py", line 951, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/lib/python3.9/subprocess.py", line 1823, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'dmidecode' How I did it Modification of dmidecode command How to verify it Run manually 'fwutil' (without sudo) Previous command output had exception New command output: Root privileges are required Signed-off-by: Taras Keryk tarasx.keryk@intel.com Signed-off-by: Taras Keryk --- .../sonic_platform/component.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/component.py b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/component.py index c9c4b713053..f41849d4d0f 100644 --- a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/component.py +++ b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/component.py @@ -1,4 +1,5 @@ try: + import os import subprocess from sonic_platform_base.component_base import ComponentBase from platform_thrift_client import thrift_try @@ -16,7 +17,10 @@ def get_bios_version(): A string containing the firmware version of the BIOS """ try: - return subprocess.check_output(['sudo', 'dmidecode', '-s', 'bios-version']).strip().decode() + if os.geteuid() != 0: + return subprocess.check_output(['sudo', 'dmidecode', '-s', 'bios-version']).strip().decode() + else: + return subprocess.check_output(['dmidecode', '-s', 'bios-version']).strip().decode() except subprocess.CalledProcessError as e: raise RuntimeError("Failed to get BIOS version") From 6192530d62ba2ccf6b41a6887388a3ab54214d6d Mon Sep 17 00:00:00 2001 From: Taras Keryk Date: Tue, 22 Mar 2022 02:43:32 -0700 Subject: [PATCH 3/9] rewrite a call of dmidecode, when run without sudo Signed-off-by: Taras Keryk --- .../sonic_platform/component.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/component.py b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/component.py index f41849d4d0f..47a0993bf3e 100644 --- a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/component.py +++ b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/component.py @@ -17,10 +17,10 @@ def get_bios_version(): A string containing the firmware version of the BIOS """ try: + cmd = ['dmidecode', '-s', 'bios-version'] if os.geteuid() != 0: - return subprocess.check_output(['sudo', 'dmidecode', '-s', 'bios-version']).strip().decode() - else: - return subprocess.check_output(['dmidecode', '-s', 'bios-version']).strip().decode() + cmd.insert(0, 'sudo') + return subprocess.check_output(cmd).strip().decode() except subprocess.CalledProcessError as e: raise RuntimeError("Failed to get BIOS version") From d64a0219aad1e6edc3387199d9d3870d5d20543a Mon Sep 17 00:00:00 2001 From: Taras Keryk Date: Tue, 22 Mar 2022 03:58:01 -0700 Subject: [PATCH 4/9] Why I did it The previous implementaion of component.py expect fwutil run with sudo. When fwutil run without sudo, there are an exception: Traceback (most recent call last): File "/usr/local/bin/fwutil", line 5, in from fwutil.main import cli File "/usr/local/lib/python3.9/dist-packages/fwutil/__init__.py", line 3, in from . import main File "/usr/local/lib/python3.9/dist-packages/fwutil/main.py", line 40, in pdp = PlatformDataProvider() File "/usr/local/lib/python3.9/dist-packages/fwutil/lib.py", line 159, in __init__ self.__platform = Platform() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/platform.py", line 21, in __init__ self._chassis = Chassis() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/chassis.py", line 48, in __init__ self.__initialize_components() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/chassis.py", line 136, in __initialize_components component = Components(index) File "/usr/local/lib/python3.9/dist-packages/sonic_platform/component.py", line 184, in __init__ self.version = get_bios_version() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/component.py", line 19, in get_bios_version return subprocess.check_output(['dmidecode', '-s', 'bios-version']).strip().decode() File "/usr/lib/python3.9/subprocess.py", line 424, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "/usr/lib/python3.9/subprocess.py", line 505, in run with Popen(*popenargs, **kwargs) as process: File "/usr/lib/python3.9/subprocess.py", line 951, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/lib/python3.9/subprocess.py", line 1823, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'dmidecode' The previous implementaion of eeprom.py expect fwutil run with sudo. When fwutil run without sudo, there are an exception: Traceback (most recent call last): File "/usr/lib/python3.9/logging/config.py", line 564, in configure handler = self.configure_handler(handlers[name]) File "/usr/lib/python3.9/logging/config.py", line 745, in configure_handler result = factory(**kwargs) File "/usr/lib/python3.9/logging/handlers.py", line 153, in init BaseRotatingHandler.init(self, filename, mode, encoding=encoding, File "/usr/lib/python3.9/logging/handlers.py", line 58, in init logging.FileHandler.init(self, filename, mode=mode, File "/usr/lib/python3.9/logging/init.py", line 1142, in init StreamHandler.init(self, self._open()) File "/usr/lib/python3.9/logging/init.py", line 1171, in _open return open(self.baseFilename, self.mode, encoding=self.encoding, PermissionError: [Errno 13] Permission denied: '/var/log/platform.log' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/local/bin/fwutil", line 5, in from fwutil.main import cli File "/usr/local/lib/python3.9/dist-packages/fwutil/init.py", line 3, in from . import main File "/usr/local/lib/python3.9/dist-packages/fwutil/main.py", line 41, in pdp = PlatformDataProvider() File "/usr/local/lib/python3.9/dist-packages/fwutil/lib.py", line 162, in init self.chassis_component_map = self.__get_chassis_component_map() File "/usr/local/lib/python3.9/dist-packages/fwutil/lib.py", line 168, in __get_chassis_component_map chassis_name = self.__chassis.get_name() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/chassis.py", line 146, in get_name return self._eeprom.modelstr() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/chassis.py", line 54, in _eeprom self.__eeprom = Eeprom() File "/usr/local/lib/python3.9/dist-packages/sonic_platform/eeprom.py", line 50, in init logging.config.dictConfig(config_dict) File "/usr/lib/python3.9/logging/config.py", line 809, in dictConfig dictConfigClass(config).configure() File "/usr/lib/python3.9/logging/config.py", line 571, in configure raise ValueError('Unable to configure handler ' ValueError: Unable to configure handler 'file' How I did it Modification call of dmidecode command. Added modification of log files access attributes before file open operations. How to verify it Run manually 'fwutil' (without sudo) New command output have no exception. Signed-off-by: Taras Keryk --- .../sonic_platform/eeprom.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py index ec7112b3c09..8f44bf82fef 100644 --- a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py +++ b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py @@ -7,6 +7,7 @@ import logging.config import yaml import re + import subprocess sys.path.append(os.path.dirname(__file__)) @@ -45,6 +46,11 @@ class Eeprom(eeprom_tlvinfo.TlvInfoDecoder): def __init__(self): + if os.geteuid() != 0: + subprocess.check_output(['sudo', 'chmod', '646', '/var/log/platform.log']) + subprocess.check_output(['sudo', 'chmod', '646', '/var/run/platform/eeprom/syseeprom']) + subprocess.check_output(['sudo', 'chmod', '646', '/var/run/platform/eeprom/status']) + with open(os.path.dirname(__file__) + "/logging.conf", 'r') as f: config_dict = yaml.load(f, yaml.SafeLoader) logging.config.dictConfig(config_dict) From 6f88dc021663b1c5aef13929e7e98facaee9dce5 Mon Sep 17 00:00:00 2001 From: Taras Keryk Date: Wed, 23 Mar 2022 11:34:08 -0700 Subject: [PATCH 5/9] Added file_check for checking access to log files for eeprom.py Signed-off-by: Taras Keryk --- .../sonic_platform/eeprom.py | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py index 8f44bf82fef..129b57a71b1 100644 --- a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py +++ b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py @@ -43,24 +43,19 @@ _EEPROM_SYMLINK = "/var/run/platform/eeprom/syseeprom" _EEPROM_STATUS = "/var/run/platform/eeprom/status" +_EEPROM_EEPROM_PATH = "/var/run/platform/eeprom" class Eeprom(eeprom_tlvinfo.TlvInfoDecoder): def __init__(self): - if os.geteuid() != 0: - subprocess.check_output(['sudo', 'chmod', '646', '/var/log/platform.log']) - subprocess.check_output(['sudo', 'chmod', '646', '/var/run/platform/eeprom/syseeprom']) - subprocess.check_output(['sudo', 'chmod', '646', '/var/run/platform/eeprom/status']) - with open(os.path.dirname(__file__) + "/logging.conf", 'r') as f: config_dict = yaml.load(f, yaml.SafeLoader) + log_file = config_dict['handlers']['file']['filename'] + self.file_check(log_file) logging.config.dictConfig(config_dict) - if not os.path.exists(os.path.dirname(_EEPROM_SYMLINK)): - try: - os.makedirs(os.path.dirname(_EEPROM_SYMLINK)) - except OSError as e: - if e.errno != errno.EEXIST: - raise + self.path_check(_EEPROM_EEPROM_PATH) + self.file_check(_EEPROM_SYMLINK) + self.file_check(_EEPROM_STATUS) open(_EEPROM_SYMLINK, 'a').close() with open(_EEPROM_STATUS, 'w') as f: @@ -158,3 +153,22 @@ def modelstr(self): def revision_str(self): return self.__tlv_get(self._TLV_CODE_LABEL_REVISION) + + def file_check(self, file_name): + cmd_touch = ['touch', file_name] + cmd_chmod = ['chmod', '646', file_name] + if os.geteuid() != 0: + cmd_touch.insert(0, 'sudo') + cmd_chmod.insert(0, 'sudo') + + if not os.path.isfile(file_name): + subprocess.check_output(cmd_touch) + + if not os.access(file_name, os.W_OK): + subprocess.check_output(cmd_chmod) + + def path_check(self, path): + cmd = ['mkdir', '-p', path] + if os.geteuid() != 0: + cmd.insert(0, 'sudo') + subprocess.check_output(cmd) From dc5d19cfb6ebb3bd955881e2370d9850f3783701 Mon Sep 17 00:00:00 2001 From: Taras Keryk Date: Wed, 23 Mar 2022 12:10:49 -0700 Subject: [PATCH 6/9] Removed unused import --- .../sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py | 1 - 1 file changed, 1 deletion(-) diff --git a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py index 129b57a71b1..e6cdf518c93 100644 --- a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py +++ b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py @@ -1,7 +1,6 @@ try: import os import sys - import errno import datetime import logging import logging.config From 1fcf5ab0517efe3fe5ee0058c6b09c5223b35bc0 Mon Sep 17 00:00:00 2001 From: Taras Keryk Date: Thu, 24 Mar 2022 13:45:32 -0700 Subject: [PATCH 7/9] Added logfile_create to eeprom.py and chassis.py Signed-off-by: Taras Keryk --- .../sonic_platform/chassis.py | 11 ++++- .../sonic_platform/eeprom.py | 41 +++++-------------- 2 files changed, 21 insertions(+), 31 deletions(-) diff --git a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/chassis.py b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/chassis.py index 64536abbb53..3ac2ccf2149 100644 --- a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/chassis.py +++ b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/chassis.py @@ -1,15 +1,19 @@ #!/usr/bin/env python try: + import os import time import syslog + import logging + import logging.config + import yaml from sonic_platform_base.chassis_base import ChassisBase from sonic_platform.sfp import Sfp from sonic_platform.psu import psu_list_get from sonic_platform.fan_drawer import fan_drawer_list_get from sonic_platform.thermal import thermal_list_get - from eeprom import Eeprom + from eeprom import Eeprom, logfile_create from sonic_platform.platform_thrift_client import pltfm_mgr_ready from sonic_platform.platform_thrift_client import thrift_try @@ -47,6 +51,11 @@ def __init__(self): self.qsfp_interval = self.QSFP_CHECK_INTERVAL self.__initialize_components() + with open(os.path.dirname(__file__) + "/logging.conf", 'r') as f: + config_dict = yaml.load(f, yaml.SafeLoader) + logfile_create(config_dict['handlers']['file']['filename']) + logging.config.dictConfig(config_dict) + @property def _eeprom(self): if self.__eeprom is None: diff --git a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py index e6cdf518c93..fd44db6b23d 100644 --- a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py +++ b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py @@ -2,9 +2,6 @@ import os import sys import datetime - import logging - import logging.config - import yaml import re import subprocess @@ -42,21 +39,11 @@ _EEPROM_SYMLINK = "/var/run/platform/eeprom/syseeprom" _EEPROM_STATUS = "/var/run/platform/eeprom/status" -_EEPROM_EEPROM_PATH = "/var/run/platform/eeprom" class Eeprom(eeprom_tlvinfo.TlvInfoDecoder): def __init__(self): - with open(os.path.dirname(__file__) + "/logging.conf", 'r') as f: - config_dict = yaml.load(f, yaml.SafeLoader) - log_file = config_dict['handlers']['file']['filename'] - self.file_check(log_file) - logging.config.dictConfig(config_dict) - - self.path_check(_EEPROM_EEPROM_PATH) - self.file_check(_EEPROM_SYMLINK) - self.file_check(_EEPROM_STATUS) - - open(_EEPROM_SYMLINK, 'a').close() + logfile_create(_EEPROM_SYMLINK) + logfile_create(_EEPROM_STATUS) with open(_EEPROM_STATUS, 'w') as f: f.write("initializing..") @@ -153,21 +140,15 @@ def modelstr(self): def revision_str(self): return self.__tlv_get(self._TLV_CODE_LABEL_REVISION) - def file_check(self, file_name): - cmd_touch = ['touch', file_name] - cmd_chmod = ['chmod', '646', file_name] - if os.geteuid() != 0: - cmd_touch.insert(0, 'sudo') - cmd_chmod.insert(0, 'sudo') - - if not os.path.isfile(file_name): - subprocess.check_output(cmd_touch) - - if not os.access(file_name, os.W_OK): - subprocess.check_output(cmd_chmod) - - def path_check(self, path): - cmd = ['mkdir', '-p', path] +def logfile_create(path): + def run_cmd(cmd): if os.geteuid() != 0: cmd.insert(0, 'sudo') subprocess.check_output(cmd) + + file_path = os.path.dirname(path) + if not os.path.exists(file_path): + run_cmd(['mkdir', '-p', file_path]) + if not os.path.isfile(path): + run_cmd(['touch', path]) + run_cmd(['chmod', '646', path]) From 300d7ef6094c0de4c9c18a082fd0c683f8222584 Mon Sep 17 00:00:00 2001 From: Taras Keryk Date: Fri, 25 Mar 2022 03:54:39 -0700 Subject: [PATCH 8/9] Created platform_utils.py Signed-off-by: Taras Keryk --- .../sonic_platform/chassis.py | 5 +++-- .../sonic_platform/eeprom.py | 18 +++------------- .../sonic_platform/platform_utils.py | 21 +++++++++++++++++++ 3 files changed, 27 insertions(+), 17 deletions(-) create mode 100644 platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/platform_utils.py diff --git a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/chassis.py b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/chassis.py index 3ac2ccf2149..6d0e8b8c120 100644 --- a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/chassis.py +++ b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/chassis.py @@ -13,7 +13,8 @@ from sonic_platform.psu import psu_list_get from sonic_platform.fan_drawer import fan_drawer_list_get from sonic_platform.thermal import thermal_list_get - from eeprom import Eeprom, logfile_create + from eeprom import Eeprom + from platform_utils import file_create from sonic_platform.platform_thrift_client import pltfm_mgr_ready from sonic_platform.platform_thrift_client import thrift_try @@ -53,7 +54,7 @@ def __init__(self): with open(os.path.dirname(__file__) + "/logging.conf", 'r') as f: config_dict = yaml.load(f, yaml.SafeLoader) - logfile_create(config_dict['handlers']['file']['filename']) + file_create(config_dict['handlers']['file']['filename'], '646') logging.config.dictConfig(config_dict) @property diff --git a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py index fd44db6b23d..2335c02863d 100644 --- a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py +++ b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/eeprom.py @@ -3,7 +3,6 @@ import sys import datetime import re - import subprocess sys.path.append(os.path.dirname(__file__)) @@ -14,6 +13,7 @@ from sonic_platform_base.sonic_eeprom import eeprom_base from sonic_platform_base.sonic_eeprom import eeprom_tlvinfo + from platform_utils import file_create from platform_thrift_client import thrift_try except ImportError as e: @@ -42,8 +42,8 @@ class Eeprom(eeprom_tlvinfo.TlvInfoDecoder): def __init__(self): - logfile_create(_EEPROM_SYMLINK) - logfile_create(_EEPROM_STATUS) + file_create(_EEPROM_SYMLINK, '646') + file_create(_EEPROM_STATUS, '646') with open(_EEPROM_STATUS, 'w') as f: f.write("initializing..") @@ -140,15 +140,3 @@ def modelstr(self): def revision_str(self): return self.__tlv_get(self._TLV_CODE_LABEL_REVISION) -def logfile_create(path): - def run_cmd(cmd): - if os.geteuid() != 0: - cmd.insert(0, 'sudo') - subprocess.check_output(cmd) - - file_path = os.path.dirname(path) - if not os.path.exists(file_path): - run_cmd(['mkdir', '-p', file_path]) - if not os.path.isfile(path): - run_cmd(['touch', path]) - run_cmd(['chmod', '646', path]) diff --git a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/platform_utils.py b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/platform_utils.py new file mode 100644 index 00000000000..1f8e397d0df --- /dev/null +++ b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/platform_utils.py @@ -0,0 +1,21 @@ + +try: + import os + import subprocess + +except ImportError as e: + raise ImportError(str(e) + "- required module not found") + +def file_create(path, mode=None): + def run_cmd(cmd): + if os.geteuid() != 0: + cmd.insert(0, 'sudo') + subprocess.check_output(cmd) + + file_path = os.path.dirname(path) + if not os.path.exists(file_path): + run_cmd(['mkdir', '-p', file_path]) + if not os.path.isfile(path): + run_cmd(['touch', path]) + if (mode is not None): + run_cmd(['chmod', mode, path]) From a418aa03f2310dbdd338b94d99d854f95986dcb4 Mon Sep 17 00:00:00 2001 From: Taras Keryk Date: Fri, 25 Mar 2022 04:30:26 -0700 Subject: [PATCH 9/9] Added interpreter string to platform_utils.py Signed-off-by: Taras Keryk --- .../sonic_platform/platform_utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/platform_utils.py b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/platform_utils.py index 1f8e397d0df..81e78ee0104 100644 --- a/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/platform_utils.py +++ b/platform/barefoot/sonic-platform-modules-bfn-montara/sonic_platform/platform_utils.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python try: import os