)]}'
{"nova/virt/xenapi/vm_utils.py":[{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"ed8bbe631d66d33cff45a26b80cad439bb0d83f0","unresolved":false,"context_lines":[{"line_number":125,"context_line":"               default\u003d1,"},{"line_number":126,"context_line":"               help\u003d\u0027Maximum number of seeder processes to run concurrently\u0027"},{"line_number":127,"context_line":"                    \u0027 within a given dom0. (-1 \u003d no limit)\u0027),"},{"line_number":128,"context_line":"    cfg.StrOpt(\u0027xenapi_torrent_url_fetcher_fn\u0027,"},{"line_number":129,"context_line":"               default\u003d\"nova.virt.xenapi.vm_utils.get_torrent_url\","},{"line_number":130,"context_line":"               help\u003d\u0027Function that returns the torrent URL for a given image.\u0027)"},{"line_number":131,"context_line":"     ]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F1js%3D","line":128,"updated":"2013-06-20 04:00:23.000000000","message":"We\u0027re trying to get away from specifying classes and functions in configs... vs specifying modules w/ entrypoints.  Can you look into the latter?","commit_id":"b68a90588f276683c21bbc392c2042aa3e0e5b03"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"fa82f4c91d659eab8f59f7ccc1c1086533a3512e","unresolved":false,"context_lines":[{"line_number":125,"context_line":"               default\u003d1,"},{"line_number":126,"context_line":"               help\u003d\u0027Maximum number of seeder processes to run concurrently\u0027"},{"line_number":127,"context_line":"                    \u0027 within a given dom0. (-1 \u003d no limit)\u0027),"},{"line_number":128,"context_line":"    cfg.StrOpt(\u0027xenapi_torrent_url_fetcher_fn\u0027,"},{"line_number":129,"context_line":"               default\u003d\"nova.virt.xenapi.vm_utils.get_torrent_url\","},{"line_number":130,"context_line":"               help\u003d\u0027Function that returns the torrent URL for a given image.\u0027)"},{"line_number":131,"context_line":"     ]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2Fn5c%3D","line":128,"in_reply_to":"AAAAPn%2F%2F1js%3D","updated":"2013-06-26 14:44:54.000000000","message":"Will do.","commit_id":"b68a90588f276683c21bbc392c2042aa3e0e5b03"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"0f8aa7acc49323db90a821eac2cf909fc60e0d6f","unresolved":false,"context_lines":[{"line_number":1124,"context_line":"              \u0027sr_path\u0027: get_sr_path(session)}"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"    if (_image_uses_bittorrent(context, instance) and"},{"line_number":1127,"context_line":"        _add_torrent_url(image_id, params)):"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"        plugin_name \u003d \u0027bittorrent\u0027"},{"line_number":1130,"context_line":"        callback \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F0K4%3D","line":1127,"updated":"2013-06-20 15:28:47.000000000","message":"It\u0027d be nice to indent this second line of the conditional a little further, to distinguish it from the code that follows.","commit_id":"b68a90588f276683c21bbc392c2042aa3e0e5b03"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"fa82f4c91d659eab8f59f7ccc1c1086533a3512e","unresolved":false,"context_lines":[{"line_number":1124,"context_line":"              \u0027sr_path\u0027: get_sr_path(session)}"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"    if (_image_uses_bittorrent(context, instance) and"},{"line_number":1127,"context_line":"        _add_torrent_url(image_id, params)):"},{"line_number":1128,"context_line":""},{"line_number":1129,"context_line":"        plugin_name \u003d \u0027bittorrent\u0027"},{"line_number":1130,"context_line":"        callback \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2Fn5g%3D","line":1127,"in_reply_to":"AAAAPn%2F%2F0K4%3D","updated":"2013-06-26 14:44:54.000000000","message":"Done","commit_id":"b68a90588f276683c21bbc392c2042aa3e0e5b03"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"38abc1817d258513e90382b9bb0d837cf5ccd909","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"_TORRENT_URL_FETCHER_FN \u003d None"},{"line_number":1170,"context_line":""},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"def _add_torrent_url(image_id, params):"},{"line_number":1173,"context_line":"    \"\"\"Add the torrent URL associated with the given image."},{"line_number":1174,"context_line":""},{"line_number":1175,"context_line":"    :param image_id: unique id of image"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F04g%3D","line":1172,"updated":"2013-06-20 10:14:30.000000000","message":"Maybe you should pass the image_id and the instance, to cover the most general case?","commit_id":"b68a90588f276683c21bbc392c2042aa3e0e5b03"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"fa82f4c91d659eab8f59f7ccc1c1086533a3512e","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"_TORRENT_URL_FETCHER_FN \u003d None"},{"line_number":1170,"context_line":""},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"def _add_torrent_url(image_id, params):"},{"line_number":1173,"context_line":"    \"\"\"Add the torrent URL associated with the given image."},{"line_number":1174,"context_line":""},{"line_number":1175,"context_line":"    :param image_id: unique id of image"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2Fn5k%3D","line":1172,"in_reply_to":"AAAAPn%2F%2F04g%3D","updated":"2013-06-26 14:44:54.000000000","message":"Done","commit_id":"b68a90588f276683c21bbc392c2042aa3e0e5b03"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"235f9d6adf9c3be5e4d8dacd724de6bd2bde3204","unresolved":false,"context_lines":[{"line_number":1211,"context_line":"        params[\u0027torrent_url\u0027] \u003d url"},{"line_number":1212,"context_line":"        return True"},{"line_number":1213,"context_line":"    except Exception:"},{"line_number":1214,"context_line":"        LOG.exception(\"Failed to get torrent URL for image %s\" % image_id)"},{"line_number":1215,"context_line":"        return False  # fall back to using glance"},{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2FnX4%3D","line":1214,"updated":"2013-06-26 17:37:13.000000000","message":"missing i18n","commit_id":"9a5e240b924add4dc553ed88e8fadc879a79fb3f"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"dc9287debe3ac03ba41341737233404ddcb05c1d","unresolved":false,"context_lines":[{"line_number":1211,"context_line":"        params[\u0027torrent_url\u0027] \u003d url"},{"line_number":1212,"context_line":"        return True"},{"line_number":1213,"context_line":"    except Exception:"},{"line_number":1214,"context_line":"        LOG.exception(\"Failed to get torrent URL for image %s\" % image_id)"},{"line_number":1215,"context_line":"        return False  # fall back to using glance"},{"line_number":1216,"context_line":""},{"line_number":1217,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2Fk8g%3D","line":1214,"in_reply_to":"AAAAPn%2F%2FnX4%3D","updated":"2013-06-27 13:44:40.000000000","message":"Done","commit_id":"9a5e240b924add4dc553ed88e8fadc879a79fb3f"},{"author":{"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},"change_message_id":"bd728bf22432e87c260ca3ad2ca84ee6c8d655f7","unresolved":false,"context_lines":[{"line_number":1210,"context_line":"        url \u003d _TORRENT_URL_FN(instance, image_id)"},{"line_number":1211,"context_line":"        params[\u0027torrent_url\u0027] \u003d url"},{"line_number":1212,"context_line":"        return True"},{"line_number":1213,"context_line":"    except Exception:"},{"line_number":1214,"context_line":"        LOG.exception(_(\"Failed to get torrent URL for image %s\") % image_id)"},{"line_number":1215,"context_line":"        return False  # fall back to using glance"},{"line_number":1216,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2FkdY%3D","line":1213,"updated":"2013-06-27 16:11:40.000000000","message":"I sort of feel like we are using an exception block as the happy path here (for glance... which for most people will be the case).\n\nPerhaps if we check for the existence of the URL instead of just trying to use it.","commit_id":"833799d72eed2c13ad23dab8b504e7faff904df4"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"4a45604d2f79f77c4c413f75909d320353e7ffa9","unresolved":false,"context_lines":[{"line_number":1210,"context_line":"        url \u003d _TORRENT_URL_FN(instance, image_id)"},{"line_number":1211,"context_line":"        params[\u0027torrent_url\u0027] \u003d url"},{"line_number":1212,"context_line":"        return True"},{"line_number":1213,"context_line":"    except Exception:"},{"line_number":1214,"context_line":"        LOG.exception(_(\"Failed to get torrent URL for image %s\") % image_id)"},{"line_number":1215,"context_line":"        return False  # fall back to using glance"},{"line_number":1216,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAPn%2F%2Fg48%3D","line":1213,"in_reply_to":"AAAAPn%2F%2FkdY%3D","updated":"2013-06-28 19:03:41.000000000","message":"This logic will not get executed unless the _image_uses_bittorrent returns True, so I wouldn\u0027t describe it as the happy path.  It\u0027s intended to be more of a last resort rather than just failing...","commit_id":"833799d72eed2c13ad23dab8b504e7faff904df4"}]}
