Skip to content

Commit 17c5bf2

Browse files
committed
Fix issue: can not import the module SFP in destructor
Signed-off-by: Stephen Sun <[email protected]>
1 parent aef9904 commit 17c5bf2

File tree

1 file changed

+20
-16
lines changed
  • platform/mellanox/mlnx-platform-api/sonic_platform

1 file changed

+20
-16
lines changed

platform/mellanox/mlnx-platform-api/sonic_platform/chassis.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
from .utils import extract_RJ45_ports_index
3131
from . import utils
3232
from .device_data import DeviceDataManager
33-
from .sfp import SFP, RJ45Port, deinitialize_sdk_handle
3433
except ImportError as e:
3534
raise ImportError (str(e) + "- required module not found")
3635

@@ -110,6 +109,8 @@ def __init__(self):
110109
self.sfp_event = None
111110
self.reboot_cause_initialized = False
112111

112+
self.sfp_module = None
113+
113114
# Build the RJ45 port list from platform.json and hwsku.json
114115
self.RJ45_port_list = extract_RJ45_ports_index()
115116

@@ -120,11 +121,8 @@ def __del__(self):
120121
self.sfp_event.deinitialize()
121122

122123
if self._sfp_list:
123-
if utils.is_host():
124-
return
125-
from .sfp import SFP, deinitialize_sdk_handle
126-
if SFP.shared_sdk_handle:
127-
deinitialize_sdk_handle(SFP.shared_sdk_handle)
124+
if self.sfp_module.SFP.shared_sdk_handle:
125+
self.sfp_module.deinitialize_sdk_handle(sfp_module.SFP.shared_sdk_handle)
128126

129127
##############################################
130128
# PSU methods
@@ -243,39 +241,45 @@ def get_fan_drawer(self, index):
243241
# SFP methods
244242
##############################################
245243

244+
def _import_sfp_module(self):
245+
if not self.sfp_module:
246+
from . import sfp as sfp_module
247+
self.sfp_module = sfp_module
248+
return self.sfp_module
249+
246250
def initialize_single_sfp(self, index):
247251
sfp_count = self.get_num_sfps()
248252
if index < sfp_count:
249253
if not self._sfp_list:
250254
self._sfp_list = [None] * sfp_count
251255

252256
if not self._sfp_list[index]:
253-
from .sfp import SFP
257+
sfp_module = self._import_sfp_module()
254258
if self.RJ45_port_list and index in self.RJ45_port_list:
255-
self._sfp_list[index] = RJ45Port(index)
259+
self._sfp_list[index] = sfp_module.RJ45Port(index)
256260
else:
257-
self._sfp_list[index] = SFP(index)
261+
self._sfp_list[index] = sfp_module.SFP(index)
258262
self.sfp_initialized_count += 1
259263

260264
def initialize_sfp(self):
261265
if not self._sfp_list:
262-
from .sfp import SFP
266+
sfp_module = self._import_sfp_module()
263267
sfp_count = self.get_num_sfps()
264268
for index in range(sfp_count):
265269
if self.RJ45_port_list and index in self.RJ45_port_list:
266-
sfp_module = RJ45Port(index)
270+
sfp_object = sfp_module.RJ45Port(index)
267271
else:
268-
sfp_module = SFP(index)
269-
self._sfp_list.append(sfp_module)
272+
sfp_object = sfp_module.SFP(index)
273+
self._sfp_list.append(sfp_object)
270274
self.sfp_initialized_count = sfp_count
271275
elif self.sfp_initialized_count != len(self._sfp_list):
272-
from .sfp import SFP
276+
sfp_module = self._import_sfp_module()
273277
for index in range(len(self._sfp_list)):
274278
if self._sfp_list[index] is None:
275279
if self.RJ45_port_list and index in self.RJ45_port_list:
276-
self._sfp_list[index] = RJ45Port(index)
280+
self._sfp_list[index] = sfp_module.RJ45Port(index)
277281
else:
278-
self._sfp_list[index] = SFP(index)
282+
self._sfp_list[index] = sfp_module.SFP(index)
279283
self.sfp_initialized_count = len(self._sfp_list)
280284

281285
def get_num_sfps(self):

0 commit comments

Comments
 (0)