)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"80f3b8411404cc3b2594912ca3ab2652a9360e95","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The image transfer is unnecessary complicated and buggy. When"},{"line_number":10,"context_line":"transferring streamOptimized images we have to update the progress of"},{"line_number":11,"context_line":"the NFC lease to prevent timeouts."},{"line_number":12,"context_line":"This patch replaces the compex usage of blocking queues and threads with"},{"line_number":13,"context_line":"a simple read+write loop. It has the same performance and the code is"},{"line_number":14,"context_line":"much cleaner. The NFC lease is updated with the loopingcall utility."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dae33548_6cbf4b61","line":12,"updated":"2016-02-18 01:14:37.000000000","message":"typo: s/compex/complex","commit_id":"cf230b3387ff3e97372e2db18f2d53b53ed77e5f"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"e2a5f0cb205cf030aa4baddfa16aa8e75f7d12e7","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The image transfer is unnecessary complicated and buggy. When"},{"line_number":10,"context_line":"transferring streamOptimized images we have to update the progress of"},{"line_number":11,"context_line":"the NFC lease to prevent timeouts."},{"line_number":12,"context_line":"This patch replaces the compex usage of blocking queues and threads with"},{"line_number":13,"context_line":"a simple read+write loop. It has the same performance and the code is"},{"line_number":14,"context_line":"much cleaner. The NFC lease is updated with the loopingcall utility."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bae84128_c80d0339","line":12,"in_reply_to":"dae33548_6cbf4b61","updated":"2016-02-22 10:53:18.000000000","message":"Done","commit_id":"cf230b3387ff3e97372e2db18f2d53b53ed77e5f"},{"author":{"_account_id":19374,"name":"Teruhisa Yuki","email":"hiro.tsuyusaki@linux.com","username":"tyuki"},"change_message_id":"bd1d27a8b0f747716da14dc6e62e51dbba289c73","unresolved":false,"context_lines":[{"line_number":13,"context_line":"a simple read+write loop. It has the same performance and the code is"},{"line_number":14,"context_line":"much cleaner. The NFC lease is updated with the loopingcall utility."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1546454"},{"line_number":17,"context_line":"Change-Id: I96e8e0682bcc642a2a5c4b7d2851812bef60d2ff"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bae84128_76134d5d","line":16,"updated":"2016-02-19 13:10:06.000000000","message":"Please add description. This patch closes this bug: https://bugs.launchpad.net/nova/+bug/1278690 too.\n\nThen, I think that this patch relates to this bug: https://bugs.launchpad.net/nova/+bug/1495429, because this patch fixes a issue that \"export OVF timeout\" occurs.","commit_id":"cf230b3387ff3e97372e2db18f2d53b53ed77e5f"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"e2a5f0cb205cf030aa4baddfa16aa8e75f7d12e7","unresolved":false,"context_lines":[{"line_number":13,"context_line":"a simple read+write loop. It has the same performance and the code is"},{"line_number":14,"context_line":"much cleaner. The NFC lease is updated with the loopingcall utility."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes-Bug: #1546454"},{"line_number":17,"context_line":"Change-Id: I96e8e0682bcc642a2a5c4b7d2851812bef60d2ff"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bae84128_28158f3f","line":16,"in_reply_to":"bae84128_76134d5d","updated":"2016-02-22 10:53:18.000000000","message":"Done","commit_id":"cf230b3387ff3e97372e2db18f2d53b53ed77e5f"}],"nova/tests/unit/virt/vmwareapi/test_images.py":[{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"80f3b8411404cc3b2594912ca3ab2652a9360e95","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                return_value\u003dimage_data),"},{"line_number":74,"context_line":"             mock.patch.object(images.IMAGE_API, \u0027download\u0027,"},{"line_number":75,"context_line":"                     return_value\u003dread_iter),"},{"line_number":76,"context_line":"        ) as (glance_read, http_write, image_transfer, image_show,"},{"line_number":77,"context_line":"                image_download):"},{"line_number":78,"context_line":"            images.fetch_image(context, instance,"},{"line_number":79,"context_line":"                               host, port, dc_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_6c662b2b","line":76,"updated":"2016-02-18 01:14:37.000000000","message":"prefix mock_ just for consistency","commit_id":"cf230b3387ff3e97372e2db18f2d53b53ed77e5f"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"9758bcdc9eea10c869f18e9e9c96ba3f4ce681a8","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                return_value\u003dimage_data),"},{"line_number":75,"context_line":"             mock.patch.object(images.IMAGE_API, \u0027download\u0027,"},{"line_number":76,"context_line":"                     return_value\u003dread_iter),"},{"line_number":77,"context_line":"        ) as (glance_read, http_write, image_transfer, image_show,"},{"line_number":78,"context_line":"                image_download):"},{"line_number":79,"context_line":"            images.fetch_image(context, instance,"},{"line_number":80,"context_line":"                               host, port, dc_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_f52dec46","line":77,"updated":"2016-05-31 18:51:41.000000000","message":"nit: prefix variables with mock_","commit_id":"6b163b9824c988ed9ad50010332f5833fde7e7a6"}],"nova/virt/vmwareapi/images.py":[{"author":{"_account_id":19374,"name":"Teruhisa Yuki","email":"hiro.tsuyusaki@linux.com","username":"tyuki"},"change_message_id":"bd1d27a8b0f747716da14dc6e62e51dbba289c73","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"QUEUE_BUFFER_SIZE \u003d 10"},{"line_number":50,"context_line":"NFC_LEASE_UPDATE_PERIOD \u003d 60  # update NFC lease every 60sec."},{"line_number":51,"context_line":"CHUNK_SIZE \u003d 64 * 1024  # default chunk size for image transfer"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class VMwareImage(object):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_2637e2e4","line":51,"updated":"2016-02-19 13:10:06.000000000","message":"Please use a constant from https://github.com/openstack/oslo.utils/blob/master/oslo_utils/units.py#L21 here.","commit_id":"cf230b3387ff3e97372e2db18f2d53b53ed77e5f"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"e2a5f0cb205cf030aa4baddfa16aa8e75f7d12e7","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"QUEUE_BUFFER_SIZE \u003d 10"},{"line_number":50,"context_line":"NFC_LEASE_UPDATE_PERIOD \u003d 60  # update NFC lease every 60sec."},{"line_number":51,"context_line":"CHUNK_SIZE \u003d 64 * 1024  # default chunk size for image transfer"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"class VMwareImage(object):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_889f7bb3","line":51,"in_reply_to":"bae84128_2637e2e4","updated":"2016-02-22 10:53:18.000000000","message":"Done","commit_id":"cf230b3387ff3e97372e2db18f2d53b53ed77e5f"},{"author":{"_account_id":19374,"name":"Teruhisa Yuki","email":"hiro.tsuyusaki@linux.com","username":"tyuki"},"change_message_id":"bd1d27a8b0f747716da14dc6e62e51dbba289c73","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        return cls(**props)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"def _update_progress(handle):"},{"line_number":178,"context_line":"    if hasattr(handle, \u0027update_progress\u0027):"},{"line_number":179,"context_line":"        handle.update_progress()"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_34c70847","line":177,"updated":"2016-02-19 13:10:06.000000000","message":"It is useless to create a function that only call update_progress(), because the function is only neede by image_transfer().\n\nupload_image_stream_optimized() has no particular reason for calling the function, because it always calls update_progress().\n\nTherefore, if you create the function, you should include creating a loopingcall object.\n\ne.g.\n    update_progress \u003d getattr(handle, \u0027update_progress\u0027, lambda: None)\n    return loopingcall.FixedIntervalLoopingCall(update_progress)","commit_id":"cf230b3387ff3e97372e2db18f2d53b53ed77e5f"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"e2a5f0cb205cf030aa4baddfa16aa8e75f7d12e7","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        return cls(**props)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"def _update_progress(handle):"},{"line_number":178,"context_line":"    if hasattr(handle, \u0027update_progress\u0027):"},{"line_number":179,"context_line":"        handle.update_progress()"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_ce718be2","line":177,"in_reply_to":"bae84128_34c70847","updated":"2016-02-22 10:53:18.000000000","message":"Done","commit_id":"cf230b3387ff3e97372e2db18f2d53b53ed77e5f"},{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"6c62efbf6e4daef43c011386c8e32f0cfb617bd9","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        handle.update_progress()"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"def image_transfer(read_handle, write_handle):"},{"line_number":183,"context_line":"    updater \u003d loopingcall.FixedIntervalLoopingCall(_update_progress,"},{"line_number":184,"context_line":"                                                   write_handle)"},{"line_number":185,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_580b2a2a","line":182,"updated":"2016-02-17 22:39:33.000000000","message":"Nit: My only concern is the function is a bit asymmetric as it only updates the progress for write_handle.  I know we don\u0027t need read_handle to update progress so far.\n\nCan we put a doc string or a note for this behavior?","commit_id":"cf230b3387ff3e97372e2db18f2d53b53ed77e5f"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"e2a5f0cb205cf030aa4baddfa16aa8e75f7d12e7","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        handle.update_progress()"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"def image_transfer(read_handle, write_handle):"},{"line_number":183,"context_line":"    updater \u003d loopingcall.FixedIntervalLoopingCall(_update_progress,"},{"line_number":184,"context_line":"                                                   write_handle)"},{"line_number":185,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_2e7917c9","line":182,"in_reply_to":"dae33548_580b2a2a","updated":"2016-02-22 10:53:18.000000000","message":"Done","commit_id":"cf230b3387ff3e97372e2db18f2d53b53ed77e5f"},{"author":{"_account_id":19374,"name":"Teruhisa Yuki","email":"hiro.tsuyusaki@linux.com","username":"tyuki"},"change_message_id":"bd1d27a8b0f747716da14dc6e62e51dbba289c73","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                    vm_import_spec,"},{"line_number":404,"context_line":"                    file_size)"},{"line_number":405,"context_line":"                image_transfer(extracted, write_handle)"},{"line_number":406,"context_line":"                extracted.close()"},{"line_number":407,"context_line":"                LOG.info(_LI(\"Downloaded OVA image file %(image_ref)s\"),"},{"line_number":408,"context_line":"                    {\u0027image_ref\u0027: instance.image_ref}, instance\u003dinstance)"},{"line_number":409,"context_line":"                imported_vm_ref \u003d write_handle.get_imported_vm()"}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_c6871611","line":406,"updated":"2016-02-19 13:10:06.000000000","message":"Please remove this close, because discriptor is already closed in image_transfer().","commit_id":"cf230b3387ff3e97372e2db18f2d53b53ed77e5f"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"e2a5f0cb205cf030aa4baddfa16aa8e75f7d12e7","unresolved":false,"context_lines":[{"line_number":403,"context_line":"                    vm_import_spec,"},{"line_number":404,"context_line":"                    file_size)"},{"line_number":405,"context_line":"                image_transfer(extracted, write_handle)"},{"line_number":406,"context_line":"                extracted.close()"},{"line_number":407,"context_line":"                LOG.info(_LI(\"Downloaded OVA image file %(image_ref)s\"),"},{"line_number":408,"context_line":"                    {\u0027image_ref\u0027: instance.image_ref}, instance\u003dinstance)"},{"line_number":409,"context_line":"                imported_vm_ref \u003d write_handle.get_imported_vm()"}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_e87d676f","line":406,"in_reply_to":"bae84128_c6871611","updated":"2016-02-22 10:53:18.000000000","message":"Done","commit_id":"cf230b3387ff3e97372e2db18f2d53b53ed77e5f"}]}
