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
3433except 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