示例#1
0
 def get_tx_disable(self):
     """
     Retrieves the tx_disable status of this SFP
     """
     tx_disable = False
     try:
         if self.media_type.startswith('QSFP'):
             tx_disable_data = self._get_eeprom_data('tx_disable')
             for tx_disable_id in ('Tx1Disable', 'Tx2Disable', 'Tx3Disable',
                                   'Tx4Disable'):
                 tx_disable |= (
                     tx_disable_data['data'][tx_disable_id]['value'] is
                     'On')
         else:
             tx_disable_data = self._read_eeprom_bytes(
                 self.eeprom_path, SFP_STATUS_CONTROL_OFFSET,
                 SFP_STATUS_CONTROL_WIDTH)
             data = int(tx_disable_data[0], 16)
             tx_disable_hard = (sffbase().test_bit(
                 data, SFP_TX_DISABLE_HARD_BIT) != 0)
             tx_disable_soft = (sffbase().test_bit(
                 data, SFP_TX_DISABLE_SOFT_BIT) != 0)
             tx_disable = tx_disable_hard | tx_disable_soft
     except (TypeError, ValueError):
         return 'N/A'
     return tx_disable
示例#2
0
    def get_tx_disable(self):
        """
        Retrieves the tx_disable status of this SFP
        """
        tx_disable = None
        tx_disable_list = []
        if (self.sfp_type == 'QSFP'):
            tx_disable_data = self._get_eeprom_data('tx_disable')
            if (tx_disable_data is not None):
                tx_disable = tx_disable_data['data']['Tx1Disable']['value']
                if (tx_disable is 'On'):
                    tx_disable_list.append(True)
                else:
                    tx_disable_list.append(False)
                tx_disable = tx_disable_data['data']['Tx2Disable']['value']
                if (tx_disable is 'On'):
                    tx_disable_list.append(True)
                else:
                    tx_disable_list.append(False)
                tx_disable = tx_disable_data['data']['Tx3Disable']['value']
                if (tx_disable is 'On'):
                    tx_disable_list.append(True)
                else:
                    tx_disable_list.append(False)
                tx_disable = tx_disable_data['data']['Tx4Disable']['value']
                if (tx_disable is 'On'):
                    tx_disable_list.append(True)
                else:
                    tx_disable_list.append(False)

                if (tx_disable_list[0] and tx_disable_list[1]
                        and tx_disable_list[2] and tx_disable_list[3]):
                    tx_disable = True
                else:
                    tx_disable = False

        else:
            tx_disable_data = self._read_eeprom_bytes(
                self.eeprom_path, SFP_STATUS_CONTROL_OFFSET,
                SFP_STATUS_CONTROL_WIDTH)
            if (tx_disable_data is not None):
                data = int(tx_disable_data[0], 16)
                tx_disable_hard = (sffbase().test_bit(
                    data, SFP_TX_DISABLE_HARD_BIT) != 0)
                tx_disable_soft = (sffbase().test_bit(
                    data, SFP_TX_DISABLE_SOFT_BIT) != 0)
                tx_disable = tx_disable_hard | tx_disable_soft

        return tx_disable
示例#3
0
    def get_tx_fault(self):
        """
        Retrieves the TX fault status of SFP

        Returns:
            A Boolean, True if SFP has TX fault, False if not
            Note : TX fault status is lached until a call to get_tx_fault or a reset.
        """
        tx_fault = None
        if not self.get_presence():
            return tx_fault

        # read the values from EEPROM
        if self.is_osfp_port:
            pass
        elif self.is_qsfp_port:
            dom_channel_monitor_raw = self.__read_eeprom_specific_bytes(
                QSFP_CHANNL_TX_FAULT_STATUS_OFFSET,
                QSFP_CHANNL_TX_FAULT_STATUS_WIDTH) if self.get_presence(
                ) else None
            if dom_channel_monitor_raw is not None:
                tx_fault_data = int(dom_channel_monitor_raw[0], 16)
                tx_fault = True if ((tx_fault_data & 0xF) == 0xF) else False
        else:
            # SFP
            status_control_raw = self.__read_eeprom_specific_bytes(
                SFP_STATUS_CONTROL_OFFSET, SFP_STATUS_CONTROL_WIDTH)
            if status_control_raw:
                data = int(status_control_raw[0], 16)
                tx_fault = (sffbase().test_bit(data, 2) != 0)

        return tx_fault
示例#4
0
    def get_rx_los(self):
        """
        Retrieves the RX LOS (lost-of-signal) status of SFP

        Returns:
            A Boolean, True if SFP has RX LOS, False if not.
            Note : RX LOS status is latched until a call to get_rx_los or a reset.
        """
        rx_los = None
        if not self.get_presence():
            return rx_los

        # read the values from EEPROM
        if self.is_osfp_port:
            pass
        elif self.is_qsfp_port:
            dom_channel_monitor_raw = self.__read_eeprom_specific_bytes(
                QSFP_CHANNL_RX_LOS_STATUS_OFFSET,
                QSFP_CHANNL_RX_LOS_STATUS_WIDTH) if self.get_presence(
                ) else None
            if dom_channel_monitor_raw is not None:
                rx_los_data = int(dom_channel_monitor_raw[0], 16)
                rx_los = True if ((rx_los_data & 0xF) == 0xF) else False
        else:
            # SFP ports
            status_control_raw = self.__read_eeprom_specific_bytes(
                SFP_STATUS_CONTROL_OFFSET, SFP_STATUS_CONTROL_WIDTH)
            if status_control_raw:
                data = int(status_control_raw[0], 16)
                rx_los = (sffbase().test_bit(data, 1) != 0)

        return rx_los
示例#5
0
    def get_tx_disable(self):
        """
        Retrieves the tx_disable status of this SFP

        Returns:
            A Boolean, True if tx_disable is enabled, False if disabled
        """
        tx_disable = False
        tx_fault = False
        status_control_raw = self.__read_eeprom_specific_bytes(SFP_STATUS_CONTROL_OFFSET, SFP_STATUS_CONTROL_WIDTH)
        if status_control_raw:
            data = int(status_control_raw[0], 16)
            tx_disable_hard = (sffbase().test_bit(data, SFP_TX_DISABLE_HARD_BIT) != 0)
            tx_disable_soft = (sffbase().test_bit(data, SFP_TX_DISABLE_SOFT_BIT) != 0)
            tx_disable = tx_disable_hard | tx_disable_soft

        return tx_disable
示例#6
0
    def get_tx_fault(self):
        """
        Retrieves the TX fault status of SFP
        Returns:
            A Boolean, True if SFP has TX fault, False if not
            Note : TX fault status is lached until a call to get_tx_fault or a reset.
        """
        tx_fault = False
        status_control_raw = self.__read_eeprom_specific_bytes(
            SFP_STATUS_CONTROL_OFFSET, SFP_STATUS_CONTROL_WIDTH)
        if status_control_raw:
            data = int(status_control_raw[0], 16)
            tx_fault = (sffbase().test_bit(data, 2) != 0)

        return tx_fault
示例#7
0
    def get_rx_los(self):
        """
        Retrieves the RX LOS (lost-of-signal) status of SFP
        Returns:
            A Boolean, True if SFP has RX LOS, False if not.
            Note : RX LOS status is latched until a call to get_rx_los or a reset.
        """
        rx_los = False
        status_control_raw = self.__read_eeprom_specific_bytes(
            SFP_STATUS_CONTROL_OFFSET, SFP_STATUS_CONTROL_WIDTH)
        if status_control_raw:
            data = int(status_control_raw[0], 16)
            rx_los = (sffbase().test_bit(data, 1) != 0)

        return rx_los
示例#8
0
 def get_tx_fault(self):
     """
     Retrieves the TX fault status of SFP
     """
     tx_fault = False
     try:
         if (self.sfp_type == 'QSFP'):
             tx_fault_data = self._get_eeprom_data('tx_fault')
             for tx_fault_id in ('Tx1Fault', 'Tx2Fault', 'Tx3Fault', 'Tx4Fault') : 
                 tx_fault |= (tx_fault_data['data'][tx_fault_id]['value'] is 'On')
         else:
             tx_fault_data = self._read_eeprom_bytes(self.eeprom_path, SFP_STATUS_CONTROL_OFFSET, SFP_STATUS_CONTROL_WIDTH)
             data = int(tx_fault_data[0], 16)
             tx_fault = (sffbase().test_bit(data, 2) != 0)
     except (TypeError, ValueError):
         return 'N/A'
     return tx_fault
示例#9
0
    def get_tx_fault(self):
        """
        Retrieves the TX fault status of SFP
        """
        tx_fault = None
        tx_fault_list = []
        if (self.sfp_type == 'QSFP'):
            tx_fault_data = self._get_eeprom_data('tx_fault')
            if (tx_fault_data is not None):
                tx_fault = tx_fault_data['data']['Tx1Fault']['value']
                if (tx_fault is 'On'):
                    tx_fault_list.append(True)
                else:
                    tx_fault_list.append(False)
                tx_fault = tx_fault_data['data']['Tx2Fault']['value']
                if (tx_fault is 'On'):
                    tx_fault_list.append(True)
                else:
                    tx_fault_list.append(False)
                tx_fault = tx_fault_data['data']['Tx3Fault']['value']
                if (tx_fault is 'On'):
                    tx_fault_list.append(True)
                else:
                    tx_fault_list.append(False)
                tx_fault = tx_fault_data['data']['Tx4Fault']['value']
                if (tx_fault is 'On'):
                    tx_fault_list.append(True)
                else:
                    tx_fault_list.append(False)

                if (tx_fault_list[0] and tx_fault_list[1] and tx_fault_list[2]
                        and tx_fault_list[3]):
                    tx_fault = True
                else:
                    tx_fault = False

        else:
            tx_fault_data = self._read_eeprom_bytes(self.eeprom_path,
                                                    SFP_STATUS_CONTROL_OFFSET,
                                                    SFP_STATUS_CONTROL_WIDTH)
            if (tx_fault_data is not None):
                data = int(tx_fault_data[0], 16)
                tx_fault = (sffbase().test_bit(data, 2) != 0)

        return tx_fault
示例#10
0
    def get_rx_los(self):
        """
        Retrieves the RX LOS (lost-of-signal) status of SFP
        """
        rx_los = None
        rx_los_list = []
        if (self.sfp_type == 'QSFP'):
            rx_los_data = self._get_eeprom_data('rx_los')
            if (rx_los_data is not None):
                rx_los = rx_los_data['data']['Rx1LOS']['value']
                if (rx_los is 'On'):
                    rx_los_list.append(True)
                else:
                    rx_los_list.append(False)
                rx_los = rx_los_data['data']['Rx2LOS']['value']
                if (rx_los is 'On'):
                    rx_los_list.append(True)
                else:
                    rx_los_list.append(False)
                rx_los = rx_los_data['data']['Rx3LOS']['value']
                if (rx_los is 'On'):
                    rx_los_list.append(True)
                else:
                    rx_los_list.append(False)
                rx_los = rx_los_data['data']['Rx4LOS']['value']
                if (rx_los is 'On'):
                    rx_los_list.append(True)
                else:
                    rx_los_list.append(False)

                if (rx_los_list[0] and rx_los_list[1] and rx_los_list[2]
                        and rx_los_list[3]):
                    rx_los = True
                else:
                    rx_los = False
        else:
            rx_los_data = self._read_eeprom_bytes(self.eeprom_path,
                                                  SFP_STATUS_CONTROL_OFFSET,
                                                  SFP_STATUS_CONTROL_WIDTH)
            if (rx_los_data is not None):
                data = int(rx_los_data[0], 16)
                rx_los = (sffbase().test_bit(data, 1) != 0)

        return rx_los
示例#11
0
 def get_rx_los(self):
     """
     Retrieves the RX LOS (lost-of-signal) status of SFP
     """
     rx_los = False
     try:
         if (self.sfp_type == 'QSFP'):
             rx_los_data = self._get_eeprom_data('rx_los')
             # As the function expects a single boolean, if any one channel experience LOS,
             # is considered LOS for QSFP 
             for rx_los_id in ('Rx1LOS', 'Rx2LOS', 'Rx3LOS', 'Rx4LOS') :
                 rx_los |= (rx_los_data['data'][rx_los_id]['value'] is 'On')
         else:
             rx_los_data = self._read_eeprom_bytes(self.eeprom_path, SFP_STATUS_CONTROL_OFFSET, SFP_STATUS_CONTROL_WIDTH)
             data = int(rx_los_data[0], 16)
             rx_los = sffbase().test_bit(data, 1) != 0
     except (TypeError, ValueError):
         return 'N/A'
     return rx_los