def __init__(self, volumeData, newSize, callbackFunction=None): if (not 'poolID' in volumeData) or \ (not 'domainID' in volumeData) or \ (not 'volumeID' 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'])
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'])