Esempio n. 1
0
class CurrentSensorElementInfo(Buffer):
    byte_size = 3
    crit_over = be_int_field(where=bytes_ref[0].bits[1])
    warn_over = be_int_field(where=bytes_ref[0].bits[3])
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    current = be_int_field(where=bytes_ref[1:])
Esempio n. 2
0
class ConfigurationDiagnosticPage(Buffer):
    def _calc_num_type_descriptor_headers(self):
        return sum(desc.type_descriptor_headers_num for desc in self.enclosure_descriptor_list)

    def _unpack_type_descriptor_text(self, buffer, index, **kwargs):
        l = self.type_descriptor_header_list[index].type_descriptor_text_length
        return buffer[0:l].to_bytes(), l

    page_code = be_int_field(where=bytes_ref[0])
    secondary_subenclosures_num = be_int_field(where=bytes_ref[1])
    page_length = be_int_field(where=bytes_ref[2:4], set_before_pack=total_size - 4)
    generation_code = be_int_field(where=bytes_ref[4:8])
    enclosure_descriptor_list = list_field(type=EnclosureDescriptor,
                                           where=bytes_ref[8:],
                                           n=secondary_subenclosures_num + 1)
    type_descriptor_header_list = list_field(where=bytes_ref[after_ref(enclosure_descriptor_list):],
                                             type=TypeDescriptorHeader,
                                             n=member_func_ref(_calc_num_type_descriptor_headers))
    type_descriptor_text_list = list_field(where=bytes_ref[after_ref(type_descriptor_header_list):],
                                           type=str_type,
                                           unpack_selector=_unpack_type_descriptor_text,
                                           n=member_func_ref(_calc_num_type_descriptor_headers))

    def _calc_num_type_descriptor_headers(self):
        return sum(o.type_descriptor_headers_num for o in self.enclosure_descriptor_list)
Esempio n. 3
0
class EnclosureDescriptor(Buffer):
    enclosure_services_processes_num = be_int_field(where=bytes_ref[0].bits[0:3])
    relative_enclosure_services_process_identifier = be_int_field(where=bytes_ref[0].bits[4:7])
    subenclosure_identifier = be_int_field(where=bytes_ref[1])
    type_descriptor_headers_num = be_int_field(where=bytes_ref[2])
    enclosure_descriptor_length = be_int_field(where=bytes_ref[3])
    enclosure_logical_identifier = bytearray_field(where=bytes_ref[4:12])  # FIXME use NAA stuff
    enclosure_vendor_identification = str_field(where=bytes_ref[12:20])
    product_identification = str_field(where=bytes_ref[20:36])
    product_revision_level = str_field(where=bytes_ref[36:40])  # FIXME use INQUIRY stuff
    vendor_specific_enclosure_information = bytearray_field(where_when_pack=bytes_ref[40:],
                                                            where_when_unpack=bytes_ref[40:enclosure_descriptor_length + 4])
Esempio n. 4
0
class AudibleAlarmElementInfo(Buffer):
    byte_size = 3
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    tui_unrecov = be_int_field(where=bytes_ref[2].bits[0])
    tui_crit = be_int_field(where=bytes_ref[2].bits[1])
    tui_non_crit = be_int_field(where=bytes_ref[2].bits[2])
    tui_info = be_int_field(where=bytes_ref[2].bits[3])
    remind = be_int_field(where=bytes_ref[2].bits[4])
    muted = be_int_field(where=bytes_ref[2].bits[6])
    rqst_mute = be_int_field(where=bytes_ref[2].bits[7])
Esempio n. 5
0
class ElementDescriptorDiagnosticPagesData(DiagnosticDataBuffer):
    def _unpack_status_descriptor(self, buffer, index, **kwargs):
        descriptor = ElementDescriptor()
        bytes = descriptor.unpack(buffer, self.conf_page.type_descriptor_header_list[index])
        return descriptor, bytes

    def _possible_elements_num(self):
        return len(self.conf_page.type_descriptor_header_list)

    page_code = be_int_field(where=bytes_ref[0])
    page_length = be_int_field(where=bytes_ref[2:4])
    generation_code = be_int_field(where=bytes_ref[4:8])
    element_descriptors = list_field(where=bytes_ref[8:], type=ElementDescriptor,
                                     unpack_selector=_unpack_status_descriptor,
                                     n=member_func_ref(_possible_elements_num))
Esempio n. 6
0
class AtaInformationVPDPageBuffer(Buffer):
    byte_size = 572
    peripheral_device = buffer_field(where=bytes_ref[0:],
                                     type=PeripheralDeviceDataBuffer)
    page_code = be_int_field(where=bytes_ref[1:2])
    page_length = be_int_field(where=bytes_ref[2:4])
    sat_vendor_identification = str_field(where=bytes_ref[8:16])  # bytes 8-15
    sat_product_identification = str_field(
        where=bytes_ref[16:32])  # bytes 16-31
    sat_product_revision_level = str_field(
        where=bytes_ref[32:36])  # bytes 32-35
    device_signature = buffer_field(where=bytes_ref[36:56],
                                    type=DeviceSignature)  # bytes 36-55
    command_code = be_int_field(where=bytes_ref[56:57])
    # ATA IDENTIFY DEVICE: bytes 60-571
    identify_device = buffer_field(where=bytes_ref[60:572],
                                   type=AtaIdentifyDevice)
Esempio n. 7
0
class ReceiveDiagnosticResultCommand(CDBBuffer):
    opcode = be_int_field(where=bytes_ref[0], set_before_pack=CDB_RECEIVE_DIAGNOSTIC_RESULTS)
    pcv = be_int_field(where=bytes_ref[1].bits[0])
    page_code = be_uint_field(where=bytes_ref[2])
    allocation_length = be_int_field(where=bytes_ref[3:5], sign='unsigned')
    control = buffer_field(type=ControlBuffer, where=bytes_ref[5], set_before_pack=DEFAULT_CONTROL_BUFFER)

    def __init__(self, result_class, conf_page, *args, **kwargs):
        super(ReceiveDiagnosticResultCommand, self).__init__(*args, **kwargs)
        self.result_class = result_class
        self.conf_page = conf_page

    def execute(self, executer):
        datagram = self.create_datagram()
        result_datagram = yield executer.call(SCSIReadCommand(bytes(datagram), self.allocation_length))
        result = self.result_class(conf_page=self.conf_page)
        result.unpack(result_datagram)
        yield result
Esempio n. 8
0
class TempSensorElementInfo(Buffer):
    byte_size = 3
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    temperature = be_int_field(where=bytes_ref[1])
    ut_warn = be_int_field(where=bytes_ref[2].bits[0])
    ut_fail = be_int_field(where=bytes_ref[2].bits[1])
    ot_warn = be_int_field(where=bytes_ref[2].bits[2])
    ot_fail = be_int_field(where=bytes_ref[2].bits[3])
Esempio n. 9
0
class EnclosureElementInfo(Buffer):
    byte_size = 3
    ident = be_int_field(where=bytes_ref[0].bits[7])
    warn_indication = be_int_field(where=bytes_ref[1].bits[0])
    failure_indication = be_int_field(where=bytes_ref[1].bits[1])
    time_until_power_cycle = be_int_field(where=bytes_ref[1].bits[2:8])
    warn_requested = be_int_field(where=bytes_ref[1].bits[0])
    failure_requested = be_int_field(where=bytes_ref[1].bits[1])
    requested_power_off_duration = be_int_field(where=bytes_ref[1].bits[2:8])
Esempio n. 10
0
class VoltageSensorElementInfo(Buffer):
    byte_size = 3
    crit_under = be_int_field(where=bytes_ref[0].bits[0])
    crit_over = be_int_field(where=bytes_ref[0].bits[1])
    warn_under = be_int_field(where=bytes_ref[0].bits[2])
    warn_over = be_int_field(where=bytes_ref[0].bits[3])
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    voltage = be_int_field(where=bytes_ref[1:])
Esempio n. 11
0
class CoolingElementInfo(Buffer):
    byte_size = 3
    # for real fan speed the fan speed value should be multiplied by a factor of 10
    fan_speed = be_int_field(where=(bytes_ref[0].bits[0:3] + bytes_ref[1]))
    ident = be_int_field(where=bytes_ref[0].bits[7])
    speed_code = be_int_field(where=bytes_ref[2].bits[0:3])
    off = be_int_field(where=bytes_ref[2].bits[4])
    reqstd_on = be_int_field(where=bytes_ref[2].bits[5])
    fail = be_int_field(where=bytes_ref[2].bits[6])
    hot_swap = be_int_field(where=bytes_ref[2].bits[7])
Esempio n. 12
0
class DeviceSignature(Buffer):
    byte_size = 20
    transport_id = be_int_field(where=bytes_ref[0])
    pm_port = be_int_field(where=bytes_ref[1].bits[0:4])
    interrupt = be_int_field(where=bytes_ref[1].bits[6])
    status = be_int_field(where=bytes_ref[2])
    error = be_int_field(where=bytes_ref[3])
    lba = str_field(where=(bytes_ref[4] + bytes_ref[5] + bytes_ref[6] +
                           bytes_ref[8] + bytes_ref[9] + bytes_ref[10]))
    device = be_int_field(where=bytes_ref[7])
    sector_count = be_int_field(where=bytes_ref[12:14])
Esempio n. 13
0
class ScsiPortTransceiverElementInfo(Buffer):
    byte_size = 3
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    report = be_int_field(where=bytes_ref[1].bits[0])
    xmit_fail = be_int_field(where=bytes_ref[2].bits[0])
    lol = be_int_field(where=bytes_ref[2].bits[1])
    disabled = be_int_field(where=bytes_ref[2].bits[4])
Esempio n. 14
0
class EnclosureStatusDiagnosticPagesData(DiagnosticDataBuffer):
    def _unpack_status_descriptor(self, buffer, index, **kwargs):
        descriptor = StatusDescriptor()
        bytes = descriptor.unpack(
            buffer, self.conf_page.type_descriptor_header_list[index])
        return descriptor, bytes

    def _possible_elements_num(self):
        return len(self.conf_page.type_descriptor_header_list)

    page_code = be_int_field(where=bytes_ref[0])
    unrecov = be_int_field(where=bytes_ref[1].bits[0])
    crit = be_int_field(where=bytes_ref[1].bits[1])
    non_crit = be_int_field(where=bytes_ref[1].bits[2])
    info = be_int_field(where=bytes_ref[1].bits[3])
    invop = be_int_field(where=bytes_ref[1].bits[4])
    page_length = be_int_field(where=bytes_ref[2:4])
    generation_code = be_int_field(where=bytes_ref[4:8])
    status_descriptors = list_field(where=bytes_ref[8:],
                                    type=StatusDescriptor,
                                    unpack_selector=_unpack_status_descriptor,
                                    n=member_func_ref(_possible_elements_num))
Esempio n. 15
0
class ArrayDeviceSlotElementInfo(Buffer):
    byte_size = 3
    rr_abort = be_int_field(where=bytes_ref[0].bits[0])
    rebuild_remap = be_int_field(where=bytes_ref[0].bits[1])
    in_failed_array = be_int_field(where=bytes_ref[0].bits[2])
    in_crit_array = be_int_field(where=bytes_ref[0].bits[3])
    cons_chk = be_int_field(where=bytes_ref[0].bits[4])
    hot_spare = be_int_field(where=bytes_ref[0].bits[5])
    rsvd_device = be_int_field(where=bytes_ref[0].bits[6])
    ok = be_int_field(where=bytes_ref[0].bits[7])
    report = be_int_field(where=bytes_ref[1].bits[0])
    ident = be_int_field(where=bytes_ref[1].bits[1])
    rmv = be_int_field(where=bytes_ref[1].bits[2])
    ready_insert = be_int_field(where=bytes_ref[1].bits[3])
    encl_bypassed_b = be_int_field(where=bytes_ref[1].bits[4])
    encl_bypassed_a = be_int_field(where=bytes_ref[1].bits[5])
    do_not_remove = be_int_field(where=bytes_ref[1].bits[6])
    app_client_bypassed_a = be_int_field(where=bytes_ref[1].bits[7])
    device_bypassed_b = be_int_field(where=bytes_ref[2].bits[0])
    device_bypassed_a = be_int_field(where=bytes_ref[2].bits[1])
    bypassed_b = be_int_field(where=bytes_ref[2].bits[2])
    bypassed_a = be_int_field(where=bytes_ref[2].bits[3])
    device_off = be_int_field(where=bytes_ref[2].bits[4])
    fault_reqstd = be_int_field(where=bytes_ref[2].bits[5])
    fault_sensed = be_int_field(where=bytes_ref[2].bits[6])
    app_client_bypassed_b = be_int_field(where=bytes_ref[2].bits[7])
Esempio n. 16
0
class SasConnectorElementInfo(Buffer):
    byte_size = 3
    connector_type = be_int_field(where=bytes_ref[0].bits[0:7])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    connector_phys_link = be_int_field(where=bytes_ref[1])
    fail = be_int_field(where=bytes_ref[2].bits[6])
Esempio n. 17
0
class SasExpanderElementInfo(Buffer):
    byte_size = 3
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
Esempio n. 18
0
class SimpleSubenclosureElementInfo(Buffer):
    byte_size = 3
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    short_enclosure_status = be_int_field(where=bytes_ref[2])
Esempio n. 19
0
class ScsiInitiatorPortElementInfo(Buffer):
    byte_size = 3
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    report = be_int_field(where=bytes_ref[1].bits[0])
    enabled = be_int_field(where=bytes_ref[2].bits[0])
Esempio n. 20
0
class InvalidOpReasonElementInfo(Buffer):
    byte_size = 3
    invop_type = be_int_field(where=bytes_ref[0].bits[6:8])
    invop_bytes = be_int_field(where=bytes_ref[1:])
Esempio n. 21
0
class PowerSupplyElementInfo(Buffer):
    byte_size = 3
    ident = be_int_field(where=bytes_ref[0].bits[7])
    dc_over_current = be_int_field(where=bytes_ref[1].bits[1])
    dc_under_voltage = be_int_field(where=bytes_ref[1].bits[2])
    dc_over_voltage = be_int_field(where=bytes_ref[1].bits[3])
    dc_fail = be_int_field(where=bytes_ref[2].bits[0])
    ac_fail = be_int_field(where=bytes_ref[2].bits[1])
    temp_warn = be_int_field(where=bytes_ref[2].bits[2])
    overtmp_fail = be_int_field(where=bytes_ref[2].bits[3])
    off = be_int_field(where=bytes_ref[2].bits[4])
    reqstd_on = be_int_field(where=bytes_ref[2].bits[5])
    fail = be_int_field(where=bytes_ref[2].bits[6])
    hot_swap = be_int_field(where=bytes_ref[2].bits[7])
Esempio n. 22
0
class CommunicationPortElementInfo(Buffer):
    byte_size = 3
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    disabled = be_int_field(where=bytes_ref[2].bits[0])
Esempio n. 23
0
class LanguageElementInfo(Buffer):
    byte_size = 3
    ident = be_int_field(where=bytes_ref[0].bits[7])
    language_code = be_int_field(where=bytes_ref[1:])
Esempio n. 24
0
class DisplayElementInfo(Buffer):
    byte_size = 3
    display_mode_status = be_int_field(where=bytes_ref[0].bits[0:2])
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    display_char_status = be_int_field(where=bytes_ref[1:])
Esempio n. 25
0
class UninterruptiblePowerSupplyElementInfo(Buffer):
    byte_size = 3
    battery_status = be_int_field(where=bytes_ref[0])
    intf_fail = be_int_field(where=bytes_ref[1].bits[0])
    warn = be_int_field(where=bytes_ref[1].bits[1])
    ups_fail = be_int_field(where=bytes_ref[1].bits[2])
    dc_fail = be_int_field(where=bytes_ref[1].bits[3])
    ac_fail = be_int_field(where=bytes_ref[1].bits[4])
    ac_qual = be_int_field(where=bytes_ref[1].bits[5])
    ac_hi = be_int_field(where=bytes_ref[1].bits[6])
    ac_low = be_int_field(where=bytes_ref[1].bits[7])
    bpf = be_int_field(where=bytes_ref[2].bits[0])
    batt_fail = be_int_field(where=bytes_ref[2].bits[1])
    fail = be_int_field(where=bytes_ref[2].bits[6])
    ident = be_int_field(where=bytes_ref[2].bits[7])
Esempio n. 26
0
class BaseStatusElement(Buffer):
    byte_size = 4
    element_status_code = be_int_field(where=bytes_ref[0].bits[0:4])
    swap = be_int_field(where=bytes_ref[0].bits[4])
    disabled = be_int_field(where=bytes_ref[0].bits[5])
    prdfail = be_int_field(where=bytes_ref[0].bits[6])
Esempio n. 27
0
class SccControllerElementInfo(Buffer):
    byte_size = 3
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    report = be_int_field(where=bytes_ref[1].bits[0])
Esempio n. 28
0
class DoorElementInfo(Buffer):
    byte_size = 3
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    unlocked = be_int_field(where=bytes_ref[2].bits[0])
    door_open = be_int_field(where=bytes_ref[2].bits[1])
Esempio n. 29
0
class EnclosureServiceControllerElementInfo(Buffer):
    byte_size = 3
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    report = be_int_field(where=bytes_ref[1].bits[0])
    hot_swap = be_int_field(where=bytes_ref[2].bits[7])
Esempio n. 30
0
class NonVolotileCacheElementInfo(Buffer):
    byte_size = 3
    size_mult = be_int_field(where=bytes_ref[0].bits[0:2])
    fail = be_int_field(where=bytes_ref[0].bits[6])
    ident = be_int_field(where=bytes_ref[0].bits[7])
    cache_size = be_int_field(where=bytes_ref[1:])