Skip to content

Commit fbf82b9

Browse files
stephenxsyxieca
authored andcommitted
Fix the issue that sonic_platform is not installed on vs image (#2300)
Method is_rj45_port references sonic_platform which has not been implemented on vs platform However, the method is referenced by show interface status which is widely used in kvm test in azure pipeline checkers - What I did - How I did it True is returned in is_rj45_port if sonic_platform can not be imported - How to verify it Run vs tests Signed-off-by: Stephen Sun <[email protected]>
1 parent 19a3540 commit fbf82b9

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

tests/sfp_test.py

+7
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,13 @@ def test_sfp_eeprom_dom_all(self):
495495
assert result.exit_code == 0
496496
assert "\n".join([ l.rstrip() for l in result.output.split('\n')]) == test_sfp_eeprom_dom_all_output
497497

498+
def test_is_rj45_port(self):
499+
import utilities_common.platform_sfputil_helper as platform_sfputil_helper
500+
platform_sfputil_helper.platform_chassis = None
501+
if 'sonic_platform' in sys.modules:
502+
sys.modules.pop('sonic_platform')
503+
assert platform_sfputil_helper.is_rj45_port("Ethernet0") == False
504+
498505
@classmethod
499506
def teardown_class(cls):
500507
print("TEARDOWN")

utilities_common/platform_sfputil_helper.py

+12-6
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,18 @@ def is_rj45_port(port_name):
111111
global platform_sfp_base
112112
global platform_sfputil_loaded
113113

114-
if not platform_chassis:
115-
import sonic_platform
116-
platform_chassis = sonic_platform.platform.Platform().get_chassis()
117-
if not platform_sfp_base:
118-
import sonic_platform_base
119-
platform_sfp_base = sonic_platform_base.sfp_base.SfpBase
114+
try:
115+
if not platform_chassis:
116+
import sonic_platform
117+
platform_chassis = sonic_platform.platform.Platform().get_chassis()
118+
if not platform_sfp_base:
119+
import sonic_platform_base
120+
platform_sfp_base = sonic_platform_base.sfp_base.SfpBase
121+
except ModuleNotFoundError as e:
122+
# This method is referenced by intfutil which is called on vs image
123+
# However, there is no platform API supported on vs image
124+
# So False is returned in such case
125+
return False
120126

121127
if platform_chassis and platform_sfp_base:
122128
if not platform_sfputil:

0 commit comments

Comments
 (0)