diff --git a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/sonic_platform/chassis.py index 99fb3b569a..feb1fbdb56 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as7326-56x/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7326-56x/sonic_platform/chassis.py @@ -7,6 +7,7 @@ ############################################################################# try: + import sys import time from sonic_platform_pddf_base.pddf_chassis import PddfChassis except ImportError as e: @@ -38,7 +39,7 @@ class Chassis(PddfChassis): bitmap = 0 for i in range(58): - modpres = self.get_sfp(i).get_presence() + modpres = self.get_sfp(i+1).get_presence() if modpres: bitmap = bitmap | (1 << i) @@ -59,3 +60,26 @@ class Chassis(PddfChassis): return True, change_dict else: return True, change_dict + + def get_sfp(self, index): + """ + Retrieves sfp represented by (1-based) index + + Args: + index: An integer, the index (1-based) of the sfp to retrieve. + The index should be the sequence of a physical port in a chassis, + starting from 1. + For example, 1 for Ethernet0, 2 for Ethernet4 and so on. + + Returns: + An object derived from SfpBase representing the specified sfp + """ + sfp = None + + try: + # The index will start from 1 + sfp = self._sfp_list[index-1] + except IndexError: + sys.stderr.write("SFP index {} out of range (1-{})\n".format( + index, len(self._sfp_list))) + return sfp diff --git a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/sonic_platform/chassis.py index 713cf6831a..8ff20a7605 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as7726-32x/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7726-32x/sonic_platform/chassis.py @@ -7,6 +7,7 @@ ############################################################################# try: + import sys import time from sonic_platform_pddf_base.pddf_chassis import PddfChassis except ImportError as e: @@ -38,7 +39,7 @@ class Chassis(PddfChassis): bitmap = 0 for i in range(34): - modpres = self.get_sfp(i).get_presence() + modpres = self.get_sfp(i+1).get_presence() if modpres: bitmap = bitmap | (1 << i) @@ -59,3 +60,27 @@ class Chassis(PddfChassis): return True, change_dict else: return True, change_dict + + + def get_sfp(self, index): + """ + Retrieves sfp represented by (1-based) index + + Args: + index: An integer, the index (1-based) of the sfp to retrieve. + The index should be the sequence of a physical port in a chassis, + starting from 1. + For example, 1 for Ethernet0, 2 for Ethernet4 and so on. + + Returns: + An object derived from SfpBase representing the specified sfp + """ + sfp = None + + try: + # The index will start from 1 + sfp = self._sfp_list[index-1] + except IndexError: + sys.stderr.write("SFP index {} out of range (1-{})\n".format( + index, len(self._sfp_list))) + return sfp diff --git a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/sonic_platform/chassis.py index 12c7dbacb1..c597c0d8bb 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as7816-64x/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-accton/as7816-64x/sonic_platform/chassis.py @@ -7,6 +7,7 @@ ############################################################################# try: + import sys import time from sonic_platform_pddf_base.pddf_chassis import PddfChassis except ImportError as e: @@ -38,7 +39,7 @@ class Chassis(PddfChassis): bitmap = 0 for i in range(64): - modpres = self.get_sfp(i).get_presence() + modpres = self.get_sfp(i+1).get_presence() if modpres: bitmap = bitmap | (1 << i) @@ -59,3 +60,27 @@ class Chassis(PddfChassis): return True, change_dict else: return True, change_dict + + + def get_sfp(self, index): + """ + Retrieves sfp represented by (1-based) index + + Args: + index: An integer, the index (1-based) of the sfp to retrieve. + The index should be the sequence of a physical port in a chassis, + starting from 1. + For example, 1 for Ethernet0, 2 for Ethernet4 and so on. + + Returns: + An object derived from SfpBase representing the specified sfp + """ + sfp = None + + try: + # The index will start from 1 + sfp = self._sfp_list[index-1] + except IndexError: + sys.stderr.write("SFP index {} out of range (1-{})\n".format( + index, len(self._sfp_list))) + return sfp diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/sonic_platform/chassis.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/sonic_platform/chassis.py index 713cf6831a..8ff20a7605 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/sonic_platform/chassis.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/sonic_platform/chassis.py @@ -7,6 +7,7 @@ ############################################################################# try: + import sys import time from sonic_platform_pddf_base.pddf_chassis import PddfChassis except ImportError as e: @@ -38,7 +39,7 @@ class Chassis(PddfChassis): bitmap = 0 for i in range(34): - modpres = self.get_sfp(i).get_presence() + modpres = self.get_sfp(i+1).get_presence() if modpres: bitmap = bitmap | (1 << i) @@ -59,3 +60,27 @@ class Chassis(PddfChassis): return True, change_dict else: return True, change_dict + + + def get_sfp(self, index): + """ + Retrieves sfp represented by (1-based) index + + Args: + index: An integer, the index (1-based) of the sfp to retrieve. + The index should be the sequence of a physical port in a chassis, + starting from 1. + For example, 1 for Ethernet0, 2 for Ethernet4 and so on. + + Returns: + An object derived from SfpBase representing the specified sfp + """ + sfp = None + + try: + # The index will start from 1 + sfp = self._sfp_list[index-1] + except IndexError: + sys.stderr.write("SFP index {} out of range (1-{})\n".format( + index, len(self._sfp_list))) + return sfp