From 7c7095835f41bd3ca79e6d866bfe9ef5abb4d725 Mon Sep 17 00:00:00 2001 From: ravil-nexthop Date: Thu, 3 Jul 2025 08:13:39 -0700 Subject: [PATCH] Adding is_copper api to cmis (#547) (#573) (cherry picked from commit 45b10beaabd9bd62c06b4cccdc7a497fc7c30fa2) Co-authored-by: Bobby McGonigle --- sonic_platform_base/sonic_xcvr/api/public/cmis.py | 7 +++++++ tests/sonic_xcvr/test_cmis.py | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/sonic_platform_base/sonic_xcvr/api/public/cmis.py b/sonic_platform_base/sonic_xcvr/api/public/cmis.py index 429c3ab..8fd4c03 100644 --- a/sonic_platform_base/sonic_xcvr/api/public/cmis.py +++ b/sonic_platform_base/sonic_xcvr/api/public/cmis.py @@ -524,6 +524,13 @@ def get_voltage(self): return None return float("{:.3f}".format(voltage)) + def is_copper(self): + ''' + Returns True if the module is copper, False otherwise + ''' + media_intf = self.get_module_media_type() + return media_intf == "passive_copper_media_interface" if media_intf else None + def is_flat_memory(self): return self.xcvr_eeprom.read(consts.FLAT_MEM_FIELD) is not False diff --git a/tests/sonic_xcvr/test_cmis.py b/tests/sonic_xcvr/test_cmis.py index 8a43568..ee13f8b 100644 --- a/tests/sonic_xcvr/test_cmis.py +++ b/tests/sonic_xcvr/test_cmis.py @@ -169,6 +169,19 @@ def test_get_voltage(self, mock_response, expected): result = self.api.get_voltage() assert result == expected + def test_is_copper(self): + with patch.object(self.api, 'xcvr_eeprom') as mock_eeprom: + mock_eeprom.read = MagicMock() + mock_eeprom.read.return_value = None + assert self.api.is_copper() is None + self.api.get_module_media_type = MagicMock() + self.api.get_module_media_type.return_value = "passive_copper_media_interface" + assert self.api.is_copper() + self.api.get_module_media_type.return_value = "active_cable_media_interface" + assert not self.api.is_copper() + self.api.get_module_media_type.return_value = "sm_media_interface" + assert not self.api.is_copper() + @pytest.mark.parametrize("mock_response, expected", [ (False, False) ])