)]}'
{"oslo_vmware/image_transfer.py":[{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"59561e1e25e36183fee36630b260b0ee70cb0d3c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"NFC_LEASE_UPDATE_PERIOD \u003d 60  # update NFC lease every 60sec."},{"line_number":38,"context_line":"CHUNK_SIZE \u003d 64 * 1024  # default chunk size for image transfer"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def _start_transfer(read_handle, write_handle, timeout_secs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_f496853c","line":38,"updated":"2016-07-20 20:51:12.000000000","message":"Nit: units.Ki","commit_id":"6a139ce7dbdd3f7491f329212efb67ccfb8f1020"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"9110d687fd7e4c4ffffce83edb7275e2172703b1","unresolved":false,"context_lines":[{"line_number":35,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"NFC_LEASE_UPDATE_PERIOD \u003d 60  # update NFC lease every 60sec."},{"line_number":38,"context_line":"CHUNK_SIZE \u003d 64 * 1024  # default chunk size for image transfer"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def _start_transfer(read_handle, write_handle, timeout_secs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_6a6453b8","line":38,"in_reply_to":"dada55a8_f496853c","updated":"2016-07-21 08:04:45.000000000","message":"Done","commit_id":"6a139ce7dbdd3f7491f329212efb67ccfb8f1020"},{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"59561e1e25e36183fee36630b260b0ee70cb0d3c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                break"},{"line_number":53,"context_line":"            write_handle.write(data)"},{"line_number":54,"context_line":"    except timeout.Timeout as excep:"},{"line_number":55,"context_line":"        excep_msg \u003d _(\u0027Timeout occurred during image transfer\u0027)"},{"line_number":56,"context_line":"        raise exceptions.ImageTransferException(excep_msg, excep)"},{"line_number":57,"context_line":"    except Exception as excep:"},{"line_number":58,"context_line":"        excep_msg \u003d _(\u0027Error occurred during image transfer\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_c6ed8eb8","line":55,"updated":"2016-07-20 20:51:12.000000000","message":"Can we add the read_handle/write_handle to the log message ? Their str representation could be useful e.g. for VmdkReadHandle/VmdkWriteHandle object\u0027s the string representation includes NFC URL.","commit_id":"6a139ce7dbdd3f7491f329212efb67ccfb8f1020"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"9110d687fd7e4c4ffffce83edb7275e2172703b1","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                break"},{"line_number":53,"context_line":"            write_handle.write(data)"},{"line_number":54,"context_line":"    except timeout.Timeout as excep:"},{"line_number":55,"context_line":"        excep_msg \u003d _(\u0027Timeout occurred during image transfer\u0027)"},{"line_number":56,"context_line":"        raise exceptions.ImageTransferException(excep_msg, excep)"},{"line_number":57,"context_line":"    except Exception as excep:"},{"line_number":58,"context_line":"        excep_msg \u003d _(\u0027Error occurred during image transfer\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_359ac06e","line":55,"in_reply_to":"dada55a8_c6ed8eb8","updated":"2016-07-21 08:04:45.000000000","message":"Done","commit_id":"6a139ce7dbdd3f7491f329212efb67ccfb8f1020"},{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"59561e1e25e36183fee36630b260b0ee70cb0d3c","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                                              kwargs.get(\u0027vm_folder\u0027),"},{"line_number":154,"context_line":"                                              kwargs.get(\u0027vm_import_spec\u0027),"},{"line_number":155,"context_line":"                                              file_size)"},{"line_number":156,"context_line":"    _start_transfer(context,"},{"line_number":157,"context_line":"                    timeout_secs,"},{"line_number":158,"context_line":"                    read_handle,"},{"line_number":159,"context_line":"                    file_size,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_63c814a9","line":156,"updated":"2016-07-20 20:51:12.000000000","message":"This should be _start_transfer(read_handle, write_handle, timeout_secs)","commit_id":"6a139ce7dbdd3f7491f329212efb67ccfb8f1020"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"9110d687fd7e4c4ffffce83edb7275e2172703b1","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                                              kwargs.get(\u0027vm_folder\u0027),"},{"line_number":154,"context_line":"                                              kwargs.get(\u0027vm_import_spec\u0027),"},{"line_number":155,"context_line":"                                              file_size)"},{"line_number":156,"context_line":"    _start_transfer(context,"},{"line_number":157,"context_line":"                    timeout_secs,"},{"line_number":158,"context_line":"                    read_handle,"},{"line_number":159,"context_line":"                    file_size,"}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_f57ae822","line":156,"in_reply_to":"dada55a8_63c814a9","updated":"2016-07-21 08:04:45.000000000","message":"Thanks :)","commit_id":"6a139ce7dbdd3f7491f329212efb67ccfb8f1020"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"34c7a4526f5ca612f3eb0ef25b1dc349fabdd9b6","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    # write_handle could be an NFC lease, so we need to periodically"},{"line_number":44,"context_line":"    # update its progress"},{"line_number":45,"context_line":"    update_cb \u003d getattr(write_handle, \u0027update_progress\u0027, lambda: None)"},{"line_number":46,"context_line":"    updater \u003d loopingcall.FixedIntervalLoopingCall(update_cb)"},{"line_number":47,"context_line":"    timer \u003d timeout.Timeout(timeout_secs)"},{"line_number":48,"context_line":"    try:"},{"line_number":49,"context_line":"        updater.start(interval\u003dNFC_LEASE_UPDATE_PERIOD)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_13046f7c","line":46,"updated":"2016-07-25 05:50:46.000000000","message":"nit: better to initialize this only if update_progress attribute exists.","commit_id":"32399619f9ed82a8f16a74b5cd947444cb4b1fab"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"5ba2d20ef58dad197e92439516ae4a148b14dd6d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    # write_handle could be an NFC lease, so we need to periodically"},{"line_number":44,"context_line":"    # update its progress"},{"line_number":45,"context_line":"    update_cb \u003d getattr(write_handle, \u0027update_progress\u0027, lambda: None)"},{"line_number":46,"context_line":"    updater \u003d loopingcall.FixedIntervalLoopingCall(update_cb)"},{"line_number":47,"context_line":"    timer \u003d timeout.Timeout(timeout_secs)"},{"line_number":48,"context_line":"    try:"},{"line_number":49,"context_line":"        updater.start(interval\u003dNFC_LEASE_UPDATE_PERIOD)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_9fe7be11","line":46,"in_reply_to":"dada55a8_13046f7c","updated":"2016-07-25 07:43:47.000000000","message":"I prefer to keep it that way because the code is linear","commit_id":"32399619f9ed82a8f16a74b5cd947444cb4b1fab"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"34c7a4526f5ca612f3eb0ef25b1dc349fabdd9b6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            write_handle.write(data)"},{"line_number":55,"context_line":"    except timeout.Timeout as excep:"},{"line_number":56,"context_line":"        msg \u003d (_(\u0027Timeout, read_handle: \"%(src)s\", write_handle: \"%(dest)s\"\u0027) %"},{"line_number":57,"context_line":"               {\u0027src\u0027: str(read_handle),"},{"line_number":58,"context_line":"                \u0027dest\u0027: str(write_handle)})"},{"line_number":59,"context_line":"        raise exceptions.ImageTransferException(msg, excep)"},{"line_number":60,"context_line":"    except Exception as excep:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_f3971be9","line":57,"range":{"start_line":57,"start_character":23,"end_line":57,"end_character":26},"updated":"2016-07-25 05:50:46.000000000","message":"nit: not needed","commit_id":"32399619f9ed82a8f16a74b5cd947444cb4b1fab"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"5ba2d20ef58dad197e92439516ae4a148b14dd6d","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            write_handle.write(data)"},{"line_number":55,"context_line":"    except timeout.Timeout as excep:"},{"line_number":56,"context_line":"        msg \u003d (_(\u0027Timeout, read_handle: \"%(src)s\", write_handle: \"%(dest)s\"\u0027) %"},{"line_number":57,"context_line":"               {\u0027src\u0027: str(read_handle),"},{"line_number":58,"context_line":"                \u0027dest\u0027: str(write_handle)})"},{"line_number":59,"context_line":"        raise exceptions.ImageTransferException(msg, excep)"},{"line_number":60,"context_line":"    except Exception as excep:"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_1f058ec1","line":57,"range":{"start_line":57,"start_character":23,"end_line":57,"end_character":26},"in_reply_to":"dada55a8_f3971be9","updated":"2016-07-25 07:43:47.000000000","message":"Done","commit_id":"32399619f9ed82a8f16a74b5cd947444cb4b1fab"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"34c7a4526f5ca612f3eb0ef25b1dc349fabdd9b6","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        msg \u003d (_(\u0027Error, read_handle: \"%(src)s\", write_handle: \"%(dest)s\"\u0027) %"},{"line_number":62,"context_line":"               {\u0027src\u0027: str(read_handle),"},{"line_number":63,"context_line":"                \u0027dest\u0027: str(write_handle)})"},{"line_number":64,"context_line":"        raise exceptions.ImageTransferException(msg, excep)"},{"line_number":65,"context_line":"    finally:"},{"line_number":66,"context_line":"        timer.cancel()"},{"line_number":67,"context_line":"        updater.stop()"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_b37c83b6","line":64,"updated":"2016-07-25 05:50:46.000000000","message":"We will lose the original traceback (may be triggered by some error in read/write handles). I think the current code to reraise is ok, but if you want to do this, at least log the traceback using LOG.exception.","commit_id":"32399619f9ed82a8f16a74b5cd947444cb4b1fab"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"5ba2d20ef58dad197e92439516ae4a148b14dd6d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        msg \u003d (_(\u0027Error, read_handle: \"%(src)s\", write_handle: \"%(dest)s\"\u0027) %"},{"line_number":62,"context_line":"               {\u0027src\u0027: str(read_handle),"},{"line_number":63,"context_line":"                \u0027dest\u0027: str(write_handle)})"},{"line_number":64,"context_line":"        raise exceptions.ImageTransferException(msg, excep)"},{"line_number":65,"context_line":"    finally:"},{"line_number":66,"context_line":"        timer.cancel()"},{"line_number":67,"context_line":"        updater.stop()"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_bf6722b6","line":64,"in_reply_to":"dada55a8_b37c83b6","updated":"2016-07-25 07:43:47.000000000","message":"Done","commit_id":"32399619f9ed82a8f16a74b5cd947444cb4b1fab"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"34c7a4526f5ca612f3eb0ef25b1dc349fabdd9b6","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    updater \u003d loopingcall.FixedIntervalLoopingCall(read_handle.update_progress)"},{"line_number":290,"context_line":"    try:"},{"line_number":291,"context_line":"        updater.start(interval\u003dNFC_LEASE_UPDATE_PERIOD)"},{"line_number":292,"context_line":"        image_service.update(context, image_id, image_metadata,"},{"line_number":293,"context_line":"                             data\u003dread_handle)"},{"line_number":294,"context_line":"    finally:"},{"line_number":295,"context_line":"        updater.stop()"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_2e4dc672","line":292,"updated":"2016-07-25 05:50:46.000000000","message":"Looking at the current code, this doesn\u0027t look like a blocking call. It returns immediately and we need to poll the image status. The caller of upload_image expects it to return only after upload to glance is completed.\n\nI think we can use ImageWriter and pass the read_hadle instead of a blocking queue.","commit_id":"32399619f9ed82a8f16a74b5cd947444cb4b1fab"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"ccd35aef6876f534eab8e5104ebe6fe30f74c10b","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    updater \u003d loopingcall.FixedIntervalLoopingCall(read_handle.update_progress)"},{"line_number":290,"context_line":"    try:"},{"line_number":291,"context_line":"        updater.start(interval\u003dNFC_LEASE_UPDATE_PERIOD)"},{"line_number":292,"context_line":"        image_service.update(context, image_id, image_metadata,"},{"line_number":293,"context_line":"                             data\u003dread_handle)"},{"line_number":294,"context_line":"    finally:"},{"line_number":295,"context_line":"        updater.stop()"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_a42557c3","line":292,"in_reply_to":"dada55a8_2e4dc672","updated":"2016-07-25 07:31:34.000000000","message":"Where are you looking at? The update call is blocking, see https://bugs.launchpad.net/oslo.vmware/+bug/1384840. Also the Python API sample for the glance client: http://docs.openstack.org/developer/python-glanceclient/","commit_id":"32399619f9ed82a8f16a74b5cd947444cb4b1fab"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"401cbd4e0a399ff1a86054a86e5667c89b6b5d0a","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    updater \u003d loopingcall.FixedIntervalLoopingCall(read_handle.update_progress)"},{"line_number":290,"context_line":"    try:"},{"line_number":291,"context_line":"        updater.start(interval\u003dNFC_LEASE_UPDATE_PERIOD)"},{"line_number":292,"context_line":"        image_service.update(context, image_id, image_metadata,"},{"line_number":293,"context_line":"                             data\u003dread_handle)"},{"line_number":294,"context_line":"    finally:"},{"line_number":295,"context_line":"        updater.stop()"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_9f3a1ecc","line":292,"in_reply_to":"dada55a8_a42557c3","updated":"2016-07-25 07:40:11.000000000","message":"I\u0027m looking at the current oslo.vmware code.\n\nSee the doc comment in ImageWriter and the code to poll the image status.\n\nMy bad, I didn\u0027t check the bug.","commit_id":"32399619f9ed82a8f16a74b5cd947444cb4b1fab"}],"oslo_vmware/tests/test_image_transfer.py":[{"author":{"_account_id":7575,"name":"Sabari","email":"smurugesan@vmware.com","username":"sabari"},"change_message_id":"ec781093b99ae60ef71c6cfc1c99478cf6d9d2e8","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":"try:"},{"line_number":22,"context_line":"    from StringIO import StringIO"},{"line_number":23,"context_line":"except ImportError:"},{"line_number":24,"context_line":"    from io import StringIO"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_52cc86ba","line":22,"updated":"2016-07-21 17:28:57.000000000","message":"import six.StringIO instead of try/except ?","commit_id":"d3145b020026388a4d83fe42484de40ef739de28"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"fdecbe265a6128988061e52c708d589aebf6afdb","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":"try:"},{"line_number":22,"context_line":"    from StringIO import StringIO"},{"line_number":23,"context_line":"except ImportError:"},{"line_number":24,"context_line":"    from io import StringIO"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_e19301ff","line":22,"in_reply_to":"dada55a8_52cc86ba","updated":"2016-07-22 11:02:46.000000000","message":"Done","commit_id":"d3145b020026388a4d83fe42484de40ef739de28"}]}
