Пример #1
0
    def readelementstatus(self,
                          start,
                          num,
                          **kwargs):
        """
        Returns a ReadElementStatus Instance

        :param start: starting address for first element to return
        :param num: numbver of elements to return
        :param kwargs: a dict with key/value pairs
                       element_type, type of elements to return
                       voltag = 0, whether volume tag data should be returned
                       curdata = 1, check current data
                       dvcid = 0, whether to return device identifiers
                       alloclen=16384, max amount od data to return
        :return: an ReadElementStatus instance
        """
        opcode = self.device.opcodes.READ_ELEMENT_STATUS
        cmd = ReadElementStatus(opcode,
                                start,
                                num,
                                **kwargs)
        self.execute(cmd)
        cmd.unmarshall()
        return cmd
Пример #2
0
    def test_main(self):

        with MockSCSI(MockDevice(smc)) as s:
            # cdb for SMC: ReadElementStatus
            r = s.readelementstatus(
                300,
                700,
                element_type=READELEMENTSTATUS.ELEMENT_TYPE.STORAGE,
                voltag=1,
                curdata=1,
                dvcid=1)
            cdb = r.cdb
            self.assertEqual(cdb[0],
                             s.device.opcodes.READ_ELEMENT_STATUS.value)
            self.assertEqual(cdb[1],
                             0x10 | READELEMENTSTATUS.ELEMENT_TYPE.STORAGE)
            self.assertEqual(scsi_ba_to_int(cdb[2:4]), 300)
            self.assertEqual(scsi_ba_to_int(cdb[4:6]), 700)
            self.assertEqual(cdb[6], 0x03)
            self.assertEqual(scsi_ba_to_int(cdb[7:10]), 16384)
            cdb = r.unmarshall_cdb(cdb)
            self.assertEqual(cdb['opcode'],
                             s.device.opcodes.READ_ELEMENT_STATUS.value)
            self.assertEqual(cdb['voltag'], 1)
            self.assertEqual(cdb['element_type'],
                             READELEMENTSTATUS.ELEMENT_TYPE.STORAGE)
            self.assertEqual(cdb['starting_element_address'], 300)
            self.assertEqual(cdb['num_elements'], 700)
            self.assertEqual(cdb['curdata'], 1)
            self.assertEqual(cdb['dvcid'], 1)
            self.assertEqual(cdb['alloc_len'], 16384)

            d = ReadElementStatus.unmarshall_cdb(
                ReadElementStatus.marshall_cdb(cdb))
            self.assertEqual(d, cdb)
def main():
    dev = MockReadElementStatus()
    dev.opcodes = smc
    s = SCSI(dev)
    s.device.opcodes = smc
    # cdb for SMC: ReadElementStatus
    r = s.readelementstatus(300, 700, element_type=READELEMENTSTATUS.ELEMENT_TYPE.STORAGE, voltag=1, curdata=1, dvcid=1)
    cdb = r.cdb
    assert cdb[0] == s.device.opcodes.READ_ELEMENT_STATUS.value
    assert cdb[1] == 0x10 | READELEMENTSTATUS.ELEMENT_TYPE.STORAGE
    assert scsi_ba_to_int(cdb[2:4]) == 300
    assert scsi_ba_to_int(cdb[4:6]) == 700
    assert cdb[6] == 0x03
    assert scsi_ba_to_int(cdb[7:10]) == 16384
    cdb = r.unmarshall_cdb(cdb)
    assert cdb['opcode'] == s.device.opcodes.READ_ELEMENT_STATUS.value
    assert cdb['voltag'] == 1
    assert cdb['element_type'] == READELEMENTSTATUS.ELEMENT_TYPE.STORAGE
    assert cdb['starting_element_address'] == 300
    assert cdb['num_elements'] == 700
    assert cdb['curdata'] == 1
    assert cdb['dvcid'] == 1
    assert cdb['alloc_len'] == 16384

    d = ReadElementStatus.unmarshall_cdb(ReadElementStatus.marshall_cdb(cdb))
    assert d == cdb
def main():

    with MockSCSI(MockDevice(smc)) as s:
        # cdb for SMC: ReadElementStatus
        r = s.readelementstatus(
            300,
            700,
            element_type=READELEMENTSTATUS.ELEMENT_TYPE.STORAGE,
            voltag=1,
            curdata=1,
            dvcid=1)
        cdb = r.cdb
        assert cdb[0] == s.device.opcodes.READ_ELEMENT_STATUS.value
        assert cdb[1] == 0x10 | READELEMENTSTATUS.ELEMENT_TYPE.STORAGE
        assert scsi_ba_to_int(cdb[2:4]) == 300
        assert scsi_ba_to_int(cdb[4:6]) == 700
        assert cdb[6] == 0x03
        assert scsi_ba_to_int(cdb[7:10]) == 16384
        cdb = r.unmarshall_cdb(cdb)
        assert cdb['opcode'] == s.device.opcodes.READ_ELEMENT_STATUS.value
        assert cdb['voltag'] == 1
        assert cdb['element_type'] == READELEMENTSTATUS.ELEMENT_TYPE.STORAGE
        assert cdb['starting_element_address'] == 300
        assert cdb['num_elements'] == 700
        assert cdb['curdata'] == 1
        assert cdb['dvcid'] == 1
        assert cdb['alloc_len'] == 16384

        d = ReadElementStatus.unmarshall_cdb(
            ReadElementStatus.marshall_cdb(cdb))
        assert d == cdb
Пример #5
0
    def readelementstatus(self,
                          start,
                          num,
                          **kwargs):
        """
        Returns a ReadElementStatus Instance

        :param start: starting address for first element to return
        :param num: numbver of elements to return
        :param kwargs: a dict with key/value pairs
                       element_type, type of elements to return
                       voltag = 0, whether volume tag data should be returned
                       curdata = 1, check current data
                       dvcid = 0, whether to return device identifiers
                       alloclen=16384, max amount od data to return
        :return: an ReadElementStatus instance
        """
        opcode = self.device.opcodes.READ_ELEMENT_STATUS
        cmd = ReadElementStatus(opcode,
                                start,
                                num,
                                **kwargs)
        self.execute(cmd)
        cmd.unmarshall()
        return cmd
Пример #6
0
    def readelementstatus(self, start, num, **kwargs):
        """
        Returns a ReadElementStatus Instance

        :param start: starting address for first element to return
        :param num: numbver of elements to return
        :param element_type=ELEMENT_TYPE.ALL: type of elements to return
        :param voltag = 0: whether volume tag data should be returned
        :param curdata = 1: check current data
        :param dvcid = 0: whether to return device identifiers
        :param alloclen=16384: max amount od data to return
        :return: an ReadElementStatus instance
        """
        return ReadElementStatus(self, start, num, **kwargs)
def main():
    dev = MockReadElementStatus()
    dev.opcodes = smc
    s = SCSI(dev)
    s.device.opcodes = smc

    i = s.readelementstatus(
        300,
        700,
        element_type=READELEMENTSTATUS.ELEMENT_TYPE.STORAGE,
        voltag=1,
        curdata=1,
        dvcid=1).result
    assert i['first_element_address'] == 12
    assert i['num_elements'] == 3

    assert len(i['element_status_pages']) == 2

    page = i['element_status_pages'][0]
    assert page['element_type'] == 2
    assert page['pvoltag'] == 0
    assert page['avoltag'] == 0
    assert len(page['element_descriptors']) == 1
    assert page['element_descriptors'][0]['element_address'] == 12
    assert page['element_descriptors'][0]['access'] == 1
    assert page['element_descriptors'][0]['except'] == 1
    assert page['element_descriptors'][0]['full'] == 1
    assert page['element_descriptors'][0]['additional_sense_code'] == 55
    assert page['element_descriptors'][0][
        'additional_sense_code_qualifier'] == 56
    assert page['element_descriptors'][0]['svalid'] == 1
    assert page['element_descriptors'][0]['invert'] == 1
    assert page['element_descriptors'][0]['ed'] == 1
    assert page['element_descriptors'][0]['medium_type'] == 2
    assert page['element_descriptors'][0][
        'source_storage_element_address'] == 27

    page = i['element_status_pages'][1]
    assert page['element_type'] == 4
    assert page['pvoltag'] == 0
    assert page['avoltag'] == 0
    assert len(page['element_descriptors']) == 2
    assert page['element_descriptors'][0]['element_address'] == 13
    assert page['element_descriptors'][0]['access'] == 1
    assert page['element_descriptors'][0]['except'] == 1
    assert page['element_descriptors'][0]['full'] == 0
    assert page['element_descriptors'][0]['additional_sense_code'] == 55
    assert page['element_descriptors'][0][
        'additional_sense_code_qualifier'] == 56
    assert page['element_descriptors'][0]['svalid'] == 1
    assert page['element_descriptors'][0]['invert'] == 1
    assert page['element_descriptors'][0]['ed'] == 1
    assert page['element_descriptors'][0]['medium_type'] == 7
    assert page['element_descriptors'][0][
        'source_storage_element_address'] == 28

    assert page['element_descriptors'][1]['element_address'] == 14
    assert page['element_descriptors'][1]['access'] == 1
    assert page['element_descriptors'][1]['except'] == 0
    assert page['element_descriptors'][1]['full'] == 0
    assert page['element_descriptors'][1]['additional_sense_code'] == 55
    assert page['element_descriptors'][1][
        'additional_sense_code_qualifier'] == 56
    assert page['element_descriptors'][1]['svalid'] == 1
    assert page['element_descriptors'][1]['invert'] == 0
    assert page['element_descriptors'][1]['ed'] == 0
    assert page['element_descriptors'][1]['medium_type'] == 6
    assert page['element_descriptors'][1][
        'source_storage_element_address'] == 29

    d = ReadElementStatus.unmarshall_datain(
        ReadElementStatus.marshall_datain(i))
    assert d == i
def main():
    dev = MockReadElementStatus()
    dev.opcodes = smc
    s = SCSI(dev)
    s.device.opcodes = smc

    i = s.readelementstatus(300, 700, element_type=READELEMENTSTATUS.ELEMENT_TYPE.STORAGE, voltag=1, curdata=1,
                            dvcid=1).result
    assert i['first_element_address'] == 12
    assert i['num_elements'] == 3

    assert len(i['element_status_pages']) == 2

    page = i['element_status_pages'][0]
    assert page['element_type'] == 2
    assert page['pvoltag'] == 0
    assert page['avoltag'] == 0
    assert len(page['element_descriptors']) == 1
    assert page['element_descriptors'][0]['element_address'] == 12
    assert page['element_descriptors'][0]['access'] == 1
    assert page['element_descriptors'][0]['except'] == 1
    assert page['element_descriptors'][0]['full'] == 1
    assert page['element_descriptors'][0]['additional_sense_code'] == 55
    assert page['element_descriptors'][0]['additional_sense_code_qualifier'] == 56
    assert page['element_descriptors'][0]['svalid'] == 1
    assert page['element_descriptors'][0]['invert'] == 1
    assert page['element_descriptors'][0]['ed'] == 1
    assert page['element_descriptors'][0]['medium_type'] == 2
    assert page['element_descriptors'][0]['source_storage_element_address'] == 27

    page = i['element_status_pages'][1]
    assert page['element_type'] == 4
    assert page['pvoltag'] == 0
    assert page['avoltag'] == 0
    assert len(page['element_descriptors']) == 2
    assert page['element_descriptors'][0]['element_address'] == 13
    assert page['element_descriptors'][0]['access'] == 1
    assert page['element_descriptors'][0]['except'] == 1
    assert page['element_descriptors'][0]['full'] == 0
    assert page['element_descriptors'][0]['additional_sense_code'] == 55
    assert page['element_descriptors'][0]['additional_sense_code_qualifier'] == 56
    assert page['element_descriptors'][0]['svalid'] == 1
    assert page['element_descriptors'][0]['invert'] == 1
    assert page['element_descriptors'][0]['ed'] == 1
    assert page['element_descriptors'][0]['medium_type'] == 7
    assert page['element_descriptors'][0]['source_storage_element_address'] == 28

    assert page['element_descriptors'][1]['element_address'] == 14
    assert page['element_descriptors'][1]['access'] == 1
    assert page['element_descriptors'][1]['except'] == 0
    assert page['element_descriptors'][1]['full'] == 0
    assert page['element_descriptors'][1]['additional_sense_code'] == 55
    assert page['element_descriptors'][1]['additional_sense_code_qualifier'] == 56
    assert page['element_descriptors'][1]['svalid'] == 1
    assert page['element_descriptors'][1]['invert'] == 0
    assert page['element_descriptors'][1]['ed'] == 0
    assert page['element_descriptors'][1]['medium_type'] == 6
    assert page['element_descriptors'][1]['source_storage_element_address'] == 29

    d = ReadElementStatus.unmarshall_datain(ReadElementStatus.marshall_datain(i))
    assert d == i
Пример #9
0
    def test_main(self):
        with MockSCSI(MockReadElementStatus(smc)) as s:
            i = s.readelementstatus(
                300,
                700,
                element_type=READELEMENTSTATUS.ELEMENT_TYPE.STORAGE,
                voltag=1,
                curdata=1,
                dvcid=1).result
            self.assertEqual(i['first_element_address'], 12)
            self.assertEqual(i['num_elements'], 3)

            self.assertEqual(len(i['element_status_pages']), 2)

            page = i['element_status_pages'][0]
            self.assertEqual(page['element_type'], 2)
            self.assertEqual(page['pvoltag'], 0)
            self.assertEqual(page['avoltag'], 0)
            self.assertEqual(len(page['element_descriptors']), 1)
            self.assertEqual(page['element_descriptors'][0]['element_address'],
                             12)
            self.assertEqual(page['element_descriptors'][0]['access'], 1)
            self.assertEqual(page['element_descriptors'][0]['except'], 1)
            self.assertEqual(page['element_descriptors'][0]['full'], 1)
            self.assertEqual(
                page['element_descriptors'][0]['additional_sense_code'], 55)
            self.assertEqual(
                page['element_descriptors'][0]
                ['additional_sense_code_qualifier'], 56)
            self.assertEqual(page['element_descriptors'][0]['svalid'], 1)
            self.assertEqual(page['element_descriptors'][0]['invert'], 1)
            self.assertEqual(page['element_descriptors'][0]['ed'], 1)
            self.assertEqual(page['element_descriptors'][0]['medium_type'], 2)
            self.assertEqual(
                page['element_descriptors'][0]
                ['source_storage_element_address'], 27)

            page = i['element_status_pages'][1]
            self.assertEqual(page['element_type'], 4)
            self.assertEqual(page['pvoltag'], 0)
            self.assertEqual(page['avoltag'], 0)
            self.assertEqual(len(page['element_descriptors']), 2)
            self.assertEqual(page['element_descriptors'][0]['element_address'],
                             13)
            self.assertEqual(page['element_descriptors'][0]['access'], 1)
            self.assertEqual(page['element_descriptors'][0]['except'], 1)
            self.assertEqual(page['element_descriptors'][0]['full'], 0)
            self.assertEqual(
                page['element_descriptors'][0]['additional_sense_code'], 55)
            self.assertEqual(
                page['element_descriptors'][0]
                ['additional_sense_code_qualifier'], 56)
            self.assertEqual(page['element_descriptors'][0]['svalid'], 1)
            self.assertEqual(page['element_descriptors'][0]['invert'], 1)
            self.assertEqual(page['element_descriptors'][0]['ed'], 1)
            self.assertEqual(page['element_descriptors'][0]['medium_type'], 7)
            self.assertEqual(
                page['element_descriptors'][0]
                ['source_storage_element_address'], 28)

            self.assertEqual(page['element_descriptors'][1]['element_address'],
                             14)
            self.assertEqual(page['element_descriptors'][1]['access'], 1)
            self.assertEqual(page['element_descriptors'][1]['except'], 0)
            self.assertEqual(page['element_descriptors'][1]['full'], 0)
            self.assertEqual(
                page['element_descriptors'][1]['additional_sense_code'], 55)
            self.assertEqual(
                page['element_descriptors'][1]
                ['additional_sense_code_qualifier'], 56)
            self.assertEqual(page['element_descriptors'][1]['svalid'], 1)
            self.assertEqual(page['element_descriptors'][1]['invert'], 0)
            self.assertEqual(page['element_descriptors'][1]['ed'], 0)
            self.assertEqual(page['element_descriptors'][1]['medium_type'], 6)
            self.assertEqual(
                page['element_descriptors'][1]
                ['source_storage_element_address'], 29)

            d = ReadElementStatus.unmarshall_datain(
                ReadElementStatus.marshall_datain(i))
            self.assertEqual(d, i)