def read(self, istream, kmip_version=enums.KMIPVersion.KMIP_1_0): super(ResponseBatchItem, self).read( istream, kmip_version=kmip_version ) tstream = BytearrayStream(istream.read(self.length)) # Read the batch item operation if it is present if self.is_tag_next(Tags.OPERATION, tstream): self.operation = contents.Operation() self.operation.read(tstream, kmip_version=kmip_version) # Read the unique batch item ID if it is present if self.is_tag_next(Tags.UNIQUE_BATCH_ITEM_ID, tstream): self.unique_batch_item_id = contents.UniqueBatchItemID() self.unique_batch_item_id.read(tstream, kmip_version=kmip_version) # Read the batch item result status self.result_status = contents.ResultStatus() self.result_status.read(tstream, kmip_version=kmip_version) # Read the batch item result reason if it is present if self.is_tag_next(Tags.RESULT_REASON, tstream): self.result_reason = contents.ResultReason() self.result_reason.read(tstream, kmip_version=kmip_version) # Read the batch item result message if it is present if self.is_tag_next(Tags.RESULT_MESSAGE, tstream): self.result_message = contents.ResultMessage() self.result_message.read(tstream, kmip_version=kmip_version) # Read the batch item asynchronous correlation value if it is present if self.is_tag_next(Tags.ASYNCHRONOUS_CORRELATION_VALUE, tstream): self.async_correlation_value = AsynchronousCorrelationValue() self.async_correlation_value.read( tstream, kmip_version=kmip_version ) if (self.operation is not None): # Dynamically create the response payload class that belongs to the # operation expected = self.payload_factory.create(self.operation.value) if self.is_tag_next(expected.tag, tstream): self.response_payload = expected self.response_payload.read(tstream, kmip_version=kmip_version) # Read the message extension if it is present if self.is_tag_next(Tags.MESSAGE_EXTENSION, tstream): self.message_extension = contents.MessageExtension() self.message_extension.read(tstream, kmip_version=kmip_version) self.is_oversized(tstream) self.validate()
def read(self, istream): super(ResponseBatchItem, self).read(istream) tstream = BytearrayStream(istream.read(self.length)) # Read the batch item operation if it is present if self.is_tag_next(Tags.OPERATION, tstream): self.operation = contents.Operation() self.operation.read(tstream) # Read the unique batch item ID if it is present if self.is_tag_next(Tags.UNIQUE_BATCH_ITEM_ID, tstream): self.unique_batch_item_id = contents.UniqueBatchItemID() self.unique_batch_item_id.read(tstream) # Read the batch item result status self.result_status = contents.ResultStatus() self.result_status.read(tstream) # Read the batch item result reason if it is present if self.is_tag_next(Tags.RESULT_REASON, tstream): self.result_reason = contents.ResultReason() self.result_reason.read(tstream) # Read the batch item result message if it is present if self.is_tag_next(Tags.RESULT_MESSAGE, tstream): self.result_message = contents.ResultMessage() self.result_message.read(tstream) # Read the batch item asynchronous correlation value if it is present if self.is_tag_next(Tags.ASYNCHRONOUS_CORRELATION_VALUE, tstream): self.async_correlation_value = AsynchronousCorrelationValue() self.async_correlation_value.read(tstream) if self.operation is not None: # Dynamically create the response payload class that belongs to the # operation expected = self.payload_factory.create(self.operation.value) if self.is_tag_next(expected.tag, tstream): self.response_payload = expected self.response_payload.read(tstream) # Read the message extension if it is present if self.is_tag_next(Tags.MESSAGE_EXTENSION, tstream): self.message_extension = contents.MessageExtension() self.message_extension.read(tstream) self.is_oversized(tstream) self.validate()
class ResponseBatchItem(Struct): def __init__(self, operation=None, unique_batch_item_id=None, result_status=None, result_reason=None, result_message=None, async_correlation_value=None, response_payload=None, message_extension=None): super(ResponseBatchItem, self).__init__(tag=Tags.RESPONSE_BATCH_ITEM) self.payload_factory = ResponsePayloadFactory() self.operation = operation self.unique_batch_item_id = unique_batch_item_id self.result_status = result_status self.result_reason = result_reason self.result_message = result_message self.async_correlation_value = async_correlation_value self.response_payload = response_payload self.message_extension = message_extension self.validate() def read(self, istream, kmip_version=enums.KMIPVersion.KMIP_1_0): super(ResponseBatchItem, self).read( istream, kmip_version=kmip_version ) tstream = BytearrayStream(istream.read(self.length)) # Read the batch item operation if it is present if self.is_tag_next(Tags.OPERATION, tstream): self.operation = contents.Operation() self.operation.read(tstream, kmip_version=kmip_version) # Read the unique batch item ID if it is present if self.is_tag_next(Tags.UNIQUE_BATCH_ITEM_ID, tstream): self.unique_batch_item_id = contents.UniqueBatchItemID() self.unique_batch_item_id.read(tstream, kmip_version=kmip_version) # Read the batch item result status self.result_status = contents.ResultStatus() self.result_status.read(tstream, kmip_version=kmip_version) # Read the batch item result reason if it is present if self.is_tag_next(Tags.RESULT_REASON, tstream): self.result_reason = contents.ResultReason() self.result_reason.read(tstream, kmip_version=kmip_version) # Read the batch item result message if it is present if self.is_tag_next(Tags.RESULT_MESSAGE, tstream): self.result_message = contents.ResultMessage() self.result_message.read(tstream, kmip_version=kmip_version) # Read the batch item asynchronous correlation value if it is present if self.is_tag_next(Tags.ASYNCHRONOUS_CORRELATION_VALUE, tstream): self.async_correlation_value = AsynchronousCorrelationValue() self.async_correlation_value.read( tstream, kmip_version=kmip_version ) if (self.operation is not None): # Dynamically create the response payload class that belongs to the # operation expected = self.payload_factory.create(self.operation.value) if self.is_tag_next(expected.tag, tstream): self.response_payload = expected self.response_payload.read(tstream, kmip_version=kmip_version) # Read the message extension if it is present if self.is_tag_next(Tags.MESSAGE_EXTENSION, tstream): self.message_extension = contents.MessageExtension() self.message_extension.read(tstream, kmip_version=kmip_version) self.is_oversized(tstream) self.validate() def write(self, ostream, kmip_version=enums.KMIPVersion.KMIP_1_0): tstream = BytearrayStream() # Write the contents of the batch item to the stream if self.operation is not None: self.operation.write(tstream, kmip_version=kmip_version) if self.unique_batch_item_id is not None: self.unique_batch_item_id.write(tstream, kmip_version=kmip_version) self.result_status.write(tstream, kmip_version=kmip_version) if self.result_reason is not None: self.result_reason.write(tstream, kmip_version=kmip_version) if self.result_message is not None: self.result_message.write(tstream, kmip_version=kmip_version) if self.async_correlation_value is not None: self.async_correlation_value.write( tstream, kmip_version=kmip_version ) if self.response_payload is not None: self.response_payload.write(tstream, kmip_version=kmip_version) if self.message_extension is not None: self.message_extension.write(tstream, kmip_version=kmip_version) # Write the length and value of the batch item self.length = tstream.length() super(ResponseBatchItem, self).write( ostream, kmip_version=kmip_version ) ostream.write(tstream.buffer) def validate(self): pass
class ResponseBatchItem(Struct): def __init__(self, operation=None, unique_batch_item_id=None, result_status=None, result_reason=None, result_message=None, async_correlation_value=None, response_payload=None, message_extension=None): super(self.__class__, self).__init__(tag=Tags.RESPONSE_BATCH_ITEM) self.payload_factory = ResponsePayloadFactory() self.operation = operation self.unique_batch_item_id = unique_batch_item_id self.result_status = result_status self.result_reason = result_reason self.result_message = result_message self.async_correlation_value = async_correlation_value self.response_payload = response_payload self.message_extension = message_extension self.validate() def read(self, istream): super(self.__class__, self).read(istream) tstream = BytearrayStream(istream.read(self.length)) # Read the batch item operation if it is present if self.is_tag_next(Tags.OPERATION, tstream): self.operation = contents.Operation() self.operation.read(tstream) # Read the unique batch item ID if it is present if self.is_tag_next(Tags.UNIQUE_BATCH_ITEM_ID, tstream): self.unique_batch_item_id = contents.UniqueBatchItemID() self.unique_batch_item_id.read(tstream) # Read the batch item result status self.result_status = contents.ResultStatus() self.result_status.read(tstream) # Read the batch item result reason if it is present if self.is_tag_next(Tags.RESULT_REASON, tstream): self.result_reason = contents.ResultReason() self.result_reason.read(tstream) # Read the batch item result message if it is present if self.is_tag_next(Tags.RESULT_MESSAGE, tstream): self.result_message = contents.ResultMessage() self.result_message.read(tstream) # Read the batch item asynchronous correlation value if it is present if self.is_tag_next(Tags.ASYNCHRONOUS_CORRELATION_VALUE, tstream): self.async_correlation_value = AsynchronousCorrelationValue() self.async_correlation_value.read(tstream) # Dynamically create the response payload class that belongs to the # operation expected = self.payload_factory.create(self.operation.enum) if self.is_tag_next(expected.tag, tstream): self.response_payload = expected self.response_payload.read(tstream) # Read the message extension if it is present if self.is_tag_next(Tags.MESSAGE_EXTENSION, tstream): self.message_extension = contents.MessageExtension() self.message_extension.read(tstream) self.is_oversized(tstream) self.validate() def write(self, ostream): tstream = BytearrayStream() # Write the contents of the batch item to the stream if self.operation is not None: self.operation.write(tstream) if self.unique_batch_item_id is not None: self.unique_batch_item_id.write(tstream) self.result_status.write(tstream) if self.result_reason is not None: self.result_reason.write(tstream) if self.result_message is not None: self.result_message.write(tstream) if self.async_correlation_value is not None: self.async_correlation_value.write(tstream) if self.response_payload is not None: self.response_payload.write(tstream) if self.message_extension is not None: self.message_extension.write(tstream) # Write the length and value of the batch item self.length = tstream.length() super(self.__class__, self).write(ostream) ostream.write(tstream.buffer) def validate(self): pass