Exemple #1
0
    def __init__(self, volumeData, newSize, callbackFunction=None):

        if ('poolID' not in volumeData) or \
           ('domainID' not in volumeData) or \
           ('volumeID' not in volumeData):
                self.log.error('create extend msg failed for volume: %s, size:'
                               ' %d', '-'.join(volumeData.values()), newSize)
                raise InvalidParameterException('volumeData dictionary',
                                                volumeData)
        if (newSize < 0) or (newSize > VOLUME_MAX_SIZE):
                raise InvalidParameterException('volumeSize', newSize)
        misc.validateUUID(volumeData['domainID'], 'domainID')
        misc.validateUUID(volumeData['volumeID'], 'volumeID')

        self.pool = volumeData['poolID']
        self.volumeData = volumeData
        self.newSize = str(dec2hex(newSize))
        self.callback = callbackFunction

        # Message structure is rigid (order must be kept and is relied upon):
        # Version (1 byte), OpCode (4 bytes), Domain UUID (16 bytes), Volume
        # UUID (16 bytes), Requested size (16 bytes), Padding to 64 bytes (14
        # bytes)
        domain = misc.packUuid(volumeData['domainID'])
        volume = misc.packUuid(volumeData['volumeID'])
        # Build base payload
        payload = MESSAGE_VERSION + EXTEND_CODE + domain + volume + \
            self.newSize.rjust(SIZE_CHARS, "0")
        # Pad payload with zeros
        self.payload = payload.ljust(MESSAGE_SIZE, "0")

        self.log.debug('new extend msg created: domain: %s, volume: %s',
                       volumeData['domainID'], volumeData['volumeID'])
Exemple #2
0
    def __init__(self, volumeData, newSize, callbackFunction=None):

        if ('poolID' not in volumeData) or \
           ('domainID' not in volumeData) or \
           ('volumeID' not in volumeData):
                self.log.error('create extend msg failed for volume: %s, size:'
                               ' %d', '-'.join(volumeData.values()), newSize)
                raise InvalidParameterException('volumeData dictionary',
                                                volumeData)
        if (newSize < 0) or (newSize > VOLUME_MAX_SIZE):
                raise InvalidParameterException('volumeSize', newSize)
        misc.validateUUID(volumeData['domainID'], 'domainID')
        misc.validateUUID(volumeData['volumeID'], 'volumeID')

        self.pool = volumeData['poolID']
        self.volumeData = volumeData
        self.newSize = str(dec2hex(newSize))
        self.callback = callbackFunction

        # Message structure is rigid (order must be kept and is relied upon):
        # Version (1 byte), OpCode (4 bytes), Domain UUID (16 bytes), Volume
        # UUID (16 bytes), Requested size (16 bytes), Padding to 64 bytes (14
        # bytes)
        domain = misc.packUuid(volumeData['domainID'])
        volume = misc.packUuid(volumeData['volumeID'])
        # Build base payload
        payload = MESSAGE_VERSION + EXTEND_CODE + domain + volume + \
            self.newSize.rjust(SIZE_CHARS, "0")
        # Pad payload with zeros
        self.payload = payload.ljust(MESSAGE_SIZE, "0")

        self.log.debug('new extend msg created: domain: %s, volume: %s',
                       volumeData['domainID'], volumeData['volumeID'])
Exemple #3
0
def test_pack_uuid_random():
    # Use pseudo random numbers for repeatable tests results.
    r = random.Random(42)
    for i in range(1000):
        u = str(uuid.UUID(int=r.randint(0, 2**128), version=4))
        packed = misc.packUuid(u)
        assert misc.unpackUuid(packed) == u
Exemple #4
0
def test_pack_uuid_random():
    # Use pseudo random numbers for repeatable tests results.
    r = random.Random(42)
    for i in range(1000):
        u = str(uuid.UUID(int=r.randint(0, 2**128), version=4))
        packed = misc.packUuid(u)
        assert misc.unpackUuid(packed) == u
Exemple #5
0
 def test(self):
     """
     Test that the uuid that was packed can be unpacked without being
     changed
     """
     for i in range(1000):
         origUuid = str(uuid.uuid4())
         packedUuid = misc.packUuid(origUuid)
         self.assertEqual(misc.unpackUuid(packedUuid), origUuid)
Exemple #6
0
 def test(self):
     """
     Test that the uuid that was packed can be unpacked without being
     changed
     """
     for i in range(1000):
         origUuid = str(uuid.uuid4())
         packedUuid = misc.packUuid(origUuid)
         self.assertEquals(misc.unpackUuid(packedUuid), origUuid)
Exemple #7
0
def test_pack_uuid(bytes, packed):
    # Create uuid version 4 - note that this modifies the bytes so variant and
    # version number set according to RFC 4122.
    u = str(uuid.UUID(bytes=bytes, version=4))
    assert misc.packUuid(u) == packed
    assert misc.unpackUuid(packed) == u
Exemple #8
0
def test_pack_uuid(bytes, packed):
    # Create uuid version 4 - note that this modifies the bytes so variant and
    # version number set according to RFC 4122.
    u = str(uuid.UUID(bytes=bytes, version=4))
    assert misc.packUuid(u) == packed
    assert misc.unpackUuid(packed) == u