Skip to content

Commit 808f1c0

Browse files
Adding is_copper api to cmis
1 parent cb5564c commit 808f1c0

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

sonic_platform_base/sonic_xcvr/api/public/cmis.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,13 @@ def get_voltage(self):
524524
return None
525525
return float("{:.3f}".format(voltage))
526526

527+
def is_copper(self):
528+
'''
529+
Returns True if the module is copper, False otherwise
530+
'''
531+
media_intf = self.get_module_media_type()
532+
return media_intf == "passive_copper_media_interface" if media_intf else None
533+
527534
def is_flat_memory(self):
528535
return self.xcvr_eeprom.read(consts.FLAT_MEM_FIELD) is not False
529536

tests/sonic_xcvr/test_cmis.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,19 @@ def test_get_voltage(self, mock_response, expected):
169169
result = self.api.get_voltage()
170170
assert result == expected
171171

172+
def test_is_copper(self):
173+
with patch.object(self.api, 'xcvr_eeprom') as mock_eeprom:
174+
mock_eeprom.read = MagicMock()
175+
mock_eeprom.read.return_value = None
176+
assert self.api.is_copper() is None
177+
self.api.get_module_media_type = MagicMock()
178+
self.api.get_module_media_type.return_value = "passive_copper_media_interface"
179+
assert self.api.is_copper()
180+
self.api.get_module_media_type.return_value = "active_cable_media_interface"
181+
assert not self.api.is_copper()
182+
self.api.get_module_media_type.return_value = "sm_media_interface"
183+
assert not self.api.is_copper()
184+
172185
@pytest.mark.parametrize("mock_response, expected", [
173186
(False, False)
174187
])

0 commit comments

Comments
 (0)