@@ -356,80 +356,81 @@ def build_error_response(self, version, reason, message):
356356 def _process_batch (self , request_batch , batch_handling , batch_order ):
357357 response_batch = list ()
358358
359- self ._data_session = self ._data_store_session_factory ()
359+ with self ._data_store_session_factory () as session :
360+ self ._data_session = session
360361
361- for batch_item in request_batch :
362- error_occurred = False
362+ for batch_item in request_batch :
363+ error_occurred = False
363364
364- response_payload = None
365- result_status = None
366- result_reason = None
367- result_message = None
365+ response_payload = None
366+ result_status = None
367+ result_reason = None
368+ result_message = None
368369
369- operation = batch_item .operation
370- request_payload = batch_item .request_payload
370+ operation = batch_item .operation
371+ request_payload = batch_item .request_payload
371372
372- # Process batch item ID.
373- if len (request_batch ) > 1 :
374- if not batch_item .unique_batch_item_id :
375- raise exceptions .InvalidMessage (
376- "Batch item ID is undefined."
373+ # Process batch item ID.
374+ if len (request_batch ) > 1 :
375+ if not batch_item .unique_batch_item_id :
376+ raise exceptions .InvalidMessage (
377+ "Batch item ID is undefined."
378+ )
379+
380+ # Process batch message extension.
381+ # TODO (peterhamilton) Add support for message extension handling.
382+ # 1. Extract the vendor identification and criticality indicator.
383+ # 2. If the indicator is True, raise an error.
384+ # 3. If the indicator is False, ignore the extension.
385+
386+ # Process batch payload.
387+ try :
388+ response_payload = self ._process_operation (
389+ operation .value ,
390+ request_payload
377391 )
378392
379- # Process batch message extension.
380- # TODO (peterhamilton) Add support for message extension handling.
381- # 1. Extract the vendor identification and criticality indicator.
382- # 2. If the indicator is True, raise an error.
383- # 3. If the indicator is False, ignore the extension.
384-
385- # Process batch payload.
386- try :
387- response_payload = self ._process_operation (
388- operation .value ,
389- request_payload
390- )
393+ result_status = enums .ResultStatus .SUCCESS
394+ except exceptions .KmipError as e :
395+ error_occurred = True
396+ result_status = e .status
397+ result_reason = e .reason
398+ result_message = str (e )
399+ except Exception as e :
400+ self ._logger .warning (
401+ "Error occurred while processing operation."
402+ )
403+ self ._logger .exception (e )
391404
392- result_status = enums .ResultStatus .SUCCESS
393- except exceptions .KmipError as e :
394- error_occurred = True
395- result_status = e .status
396- result_reason = e .reason
397- result_message = str (e )
398- except Exception as e :
399- self ._logger .warning (
400- "Error occurred while processing operation."
401- )
402- self ._logger .exception (e )
403-
404- error_occurred = True
405- result_status = enums .ResultStatus .OPERATION_FAILED
406- result_reason = enums .ResultReason .GENERAL_FAILURE
407- result_message = (
408- "Operation failed. See the server logs for more "
409- "information."
405+ error_occurred = True
406+ result_status = enums .ResultStatus .OPERATION_FAILED
407+ result_reason = enums .ResultReason .GENERAL_FAILURE
408+ result_message = (
409+ "Operation failed. See the server logs for more "
410+ "information."
411+ )
412+
413+ # Compose operation result.
414+ result_status = contents .ResultStatus (result_status )
415+ if result_reason :
416+ result_reason = contents .ResultReason (result_reason )
417+ if result_message :
418+ result_message = contents .ResultMessage (result_message )
419+
420+ batch_item = messages .ResponseBatchItem (
421+ operation = batch_item .operation ,
422+ unique_batch_item_id = batch_item .unique_batch_item_id ,
423+ result_status = result_status ,
424+ result_reason = result_reason ,
425+ result_message = result_message ,
426+ response_payload = response_payload
410427 )
428+ response_batch .append (batch_item )
411429
412- # Compose operation result.
413- result_status = contents .ResultStatus (result_status )
414- if result_reason :
415- result_reason = contents .ResultReason (result_reason )
416- if result_message :
417- result_message = contents .ResultMessage (result_message )
418-
419- batch_item = messages .ResponseBatchItem (
420- operation = batch_item .operation ,
421- unique_batch_item_id = batch_item .unique_batch_item_id ,
422- result_status = result_status ,
423- result_reason = result_reason ,
424- result_message = result_message ,
425- response_payload = response_payload
426- )
427- response_batch .append (batch_item )
428-
429- # Handle batch error if necessary.
430- if error_occurred :
431- if batch_handling == enums .BatchErrorContinuationOption .STOP :
432- break
430+ # Handle batch error if necessary.
431+ if error_occurred :
432+ if batch_handling == enums .BatchErrorContinuationOption .STOP :
433+ break
433434
434435 self ._data_session .close ()
435436
0 commit comments