)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"dc8c91ed2f30211cb86c67b246c519dd4739808f","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":" def call(self, __client_context, __client_method, *args, **kwargs):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"I\u0027ve removed entirely the old version argument since all call sites are"},{"line_number":23,"context_line":"hard-coding the number 2 (since we no longer support the Glance v1.0"},{"line_number":24,"context_line":"API. Secondly, just for safety, I renamed the \"method\" and \"context\""},{"line_number":25,"context_line":"arguments to the function to be __client_context and __client_method to"},{"line_number":26,"context_line":"give name conflicts a small change of occurring. It\u0027s hacky, but besides"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f79a3b5_d8b3f108","line":23,"range":{"start_line":22,"start_character":0,"end_line":23,"end_character":24},"updated":"2018-10-31 15:13:36.000000000","message":"This would have been easier to grok had the two changes been separate but I\u0027ve reviewed it now so meh","commit_id":"364724ba6f7442cbaedcb270498cad549a571449"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"09b730ab2c0b842f37e2e0afd7fd39941870dd20","unresolved":false,"context_lines":[{"line_number":20,"context_line":" def call(self, __client_context, __client_method, *args, **kwargs):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"I\u0027ve removed entirely the old version argument since all call sites are"},{"line_number":23,"context_line":"hard-coding the number 2 (since we no longer support the Glance v1.0"},{"line_number":24,"context_line":"API. Secondly, just for safety, I renamed the \"method\" and \"context\""},{"line_number":25,"context_line":"arguments to the function to be __client_context and __client_method to"},{"line_number":26,"context_line":"give name conflicts a small change of occurring. It\u0027s hacky, but besides"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f79a3b5_06435142","line":23,"range":{"start_line":23,"start_character":21,"end_line":23,"end_character":25},"updated":"2018-10-31 12:33:15.000000000","message":"i was going to ask about glance v3 and the i rememeberd it got deprecated and removed in favor of glare.\n\nis glare still a thing?\n\nbut ya if all current usage hard code to 2 this toally makes sense.","commit_id":"364724ba6f7442cbaedcb270498cad549a571449"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a71e80fc32c0d367151a8de95a9c1da81cafd877","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch forces all client positional args to be passed as a named"},{"line_number":15,"context_line":"\"args\" argument to the call() function and all client named args to be"},{"line_number":16,"context_line":"pass as a named \"kwargs\" argument to the call() function. This"},{"line_number":17,"context_line":"eliminates any argument name-shadowing that previously caused issues."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Closes-bug: #1717547"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_ea5541c2","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":4},"updated":"2018-11-06 16:32:37.000000000","message":"passed","commit_id":"5c21a00e89539bbb271ccfa05e4a2ba1cddae58e"}],"nova/image/glance.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"09b730ab2c0b842f37e2e0afd7fd39941870dd20","unresolved":false,"context_lines":[{"line_number":139,"context_line":"class GlanceClientWrapper(object):"},{"line_number":140,"context_line":"    \"\"\"Glance client wrapper class that implements retries.\"\"\""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    IMAGE_API_VERSION \u003d 2"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    def __init__(self, context\u003dNone, endpoint\u003dNone):"},{"line_number":145,"context_line":"        if endpoint is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_065cb118","line":142,"range":{"start_line":142,"start_character":4,"end_line":142,"end_character":25},"updated":"2018-10-31 12:33:15.000000000","message":"thanks for converting to the constant style :)\n\nhowever if you pulled this out to the module scope you cloud use it to default the version param of _glanceclient_from_endpoint on line 74 and then you could remove all the self.IMAGE_API_VERSION useages on lines 156 and 163.\n\nthis is just a nit however.","commit_id":"364724ba6f7442cbaedcb270498cad549a571449"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"09b730ab2c0b842f37e2e0afd7fd39941870dd20","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        \"\"\"Calls out to Glance for a list of detailed image information.\"\"\""},{"line_number":277,"context_line":"        params \u003d _extract_query_params_v2(kwargs)"},{"line_number":278,"context_line":"        try:"},{"line_number":279,"context_line":"            images \u003d self._client.call(context, \u0027list\u0027, **params)"},{"line_number":280,"context_line":"        except Exception:"},{"line_number":281,"context_line":"            _reraise_translated_exception()"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_c6fd59b9","line":279,"range":{"start_line":279,"start_character":49,"end_line":279,"end_character":54},"updated":"2018-10-31 12:33:15.000000000","message":"it feels a little weird to me that we are calling methods by string value instead of just doing\nself._client.list(context,**params)\n\ni guess that would be part of the rewrite the module you were refering to in the commit.\n\nanyway this makes sense its jsut intally i assumed\n_client_method would be a http metod such as GET or POST but the fact its the name of a python method i find strange.\n\nthe change looks correct however based on what was stated in the commit message.","commit_id":"364724ba6f7442cbaedcb270498cad549a571449"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a71e80fc32c0d367151a8de95a9c1da81cafd877","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                                                                version)"},{"line_number":176,"context_line":"            try:"},{"line_number":177,"context_line":"                controller \u003d getattr(client,"},{"line_number":178,"context_line":"                                     kwargs.pop(\u0027controller\u0027, \u0027images\u0027))"},{"line_number":179,"context_line":"                result \u003d getattr(controller, method)(*args, **kwargs)"},{"line_number":180,"context_line":"                if inspect.isgenerator(result):"},{"line_number":181,"context_line":"                    # Convert generator results to a list, so that we can"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_8a64cde7","side":"PARENT","line":178,"range":{"start_line":178,"start_character":37,"end_line":178,"end_character":71},"updated":"2018-11-06 16:32:37.000000000","message":"Just noticed this, if the controller kwarg was specified and this loop runs more than once, this pop() will always get you \u0027images\u0027 after the first time.\n\nYour change fixes this incidentally, so ++","commit_id":"90b96170d3f269165f649e8b61739cf31ffb78b8"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a71e80fc32c0d367151a8de95a9c1da81cafd877","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        self.api_server \u003d next(self.api_servers)"},{"line_number":162,"context_line":"        return _glanceclient_from_endpoint(context, self.api_server, version)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def call(self, context, version, method, controller\u003dNone, args\u003dNone,"},{"line_number":165,"context_line":"             kwargs\u003dNone):"},{"line_number":166,"context_line":"        \"\"\"Call a glance client method.  If we get a connection error,"},{"line_number":167,"context_line":"        retry the request according to CONF.glance.num_retries."}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_cae96518","line":164,"range":{"start_line":164,"start_character":56,"end_line":164,"end_character":60},"updated":"2018-11-06 16:32:37.000000000","message":"any reason not to just make the default here \u0027images\u0027 and kill L186?","commit_id":"5c21a00e89539bbb271ccfa05e4a2ba1cddae58e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"e7e440db4f216d2de6b2529ab7c50bd658f89742","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        self.api_server \u003d next(self.api_servers)"},{"line_number":162,"context_line":"        return _glanceclient_from_endpoint(context, self.api_server, version)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def call(self, context, version, method, controller\u003dNone, args\u003dNone,"},{"line_number":165,"context_line":"             kwargs\u003dNone):"},{"line_number":166,"context_line":"        \"\"\"Call a glance client method.  If we get a connection error,"},{"line_number":167,"context_line":"        retry the request according to CONF.glance.num_retries."}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_8acb6d49","line":164,"range":{"start_line":164,"start_character":56,"end_line":164,"end_character":60},"in_reply_to":"3f79a3b5_cae96518","updated":"2018-11-06 16:38:42.000000000","message":"yeah, maybe if I respin, sure.","commit_id":"5c21a00e89539bbb271ccfa05e4a2ba1cddae58e"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"9bf92c0cf636507c5e2005f3556ae46bf5678e14","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        # \u0027show_multiple_locations\u0027 must be enabled in glance api conf file."},{"line_number":483,"context_line":"        try:"},{"line_number":484,"context_line":"            return self._client.call("},{"line_number":485,"context_line":"                context, 2, \u0027add_location\u0027, args\u003d(image_id, location))"},{"line_number":486,"context_line":"        except glanceclient.exc.HTTPBadRequest:"},{"line_number":487,"context_line":"            _reraise_translated_exception()"},{"line_number":488,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c290bef5","line":485,"updated":"2018-11-16 14:34:36.000000000","message":"Seems that this erroneously drops the third argument, breaking the rbd backend, see https://bugs.launchpad.net/nova/+bug/1803717","commit_id":"5c21a00e89539bbb271ccfa05e4a2ba1cddae58e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"0208f8f7bb0d22f4dedad3192869f66395977442","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        # \u0027show_multiple_locations\u0027 must be enabled in glance api conf file."},{"line_number":483,"context_line":"        try:"},{"line_number":484,"context_line":"            return self._client.call("},{"line_number":485,"context_line":"                context, 2, \u0027add_location\u0027, args\u003d(image_id, location))"},{"line_number":486,"context_line":"        except glanceclient.exc.HTTPBadRequest:"},{"line_number":487,"context_line":"            _reraise_translated_exception()"},{"line_number":488,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c22c3eb3","line":485,"in_reply_to":"3f79a3b5_c290bef5","updated":"2018-11-16 14:45:54.000000000","message":"its hard coded to an empty dictionary/set so im surprised it is required but if it is when you correct this we need to leave an explicit comment stating why this is needed.","commit_id":"5c21a00e89539bbb271ccfa05e4a2ba1cddae58e"}],"nova/tests/unit/image/test_glance.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a7f81b3fc5a626e4e65a72531c06672df724ed78","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        \u0027virtual_size\u0027: None,"},{"line_number":190,"context_line":"        \u0027visibility\u0027: \u0027private\u0027"},{"line_number":191,"context_line":"    },"},{"line_number":192,"context_line":"    \u0027version_property_image\u0027: {"},{"line_number":193,"context_line":"        \u0027checksum\u0027: \u0027e533283e6aac072533d1d091a7d2e413\u0027,"},{"line_number":194,"context_line":"        \u0027container_format\u0027: \u0027bare\u0027,"},{"line_number":195,"context_line":"        \u0027created_at\u0027: \u00272015-09-02T00:31:16Z\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ce153240","line":192,"range":{"start_line":192,"start_character":5,"end_line":192,"end_character":27},"updated":"2018-11-02 19:18:06.000000000","message":"Sorry, where is this used?\n\n[Later] Actually, I don\u0027t see where anything except image_fixtures[\u0027active_image_v2\u0027] is being used. What am I missing?","commit_id":"364724ba6f7442cbaedcb270498cad549a571449"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7a9d7dfd869e40a28c48263e30f68790cada5204","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        \u0027virtual_size\u0027: None,"},{"line_number":190,"context_line":"        \u0027visibility\u0027: \u0027private\u0027"},{"line_number":191,"context_line":"    },"},{"line_number":192,"context_line":"    \u0027version_property_image\u0027: {"},{"line_number":193,"context_line":"        \u0027checksum\u0027: \u0027e533283e6aac072533d1d091a7d2e413\u0027,"},{"line_number":194,"context_line":"        \u0027container_format\u0027: \u0027bare\u0027,"},{"line_number":195,"context_line":"        \u0027created_at\u0027: \u00272015-09-02T00:31:16Z\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ceec52be","line":192,"range":{"start_line":192,"start_character":5,"end_line":192,"end_character":27},"in_reply_to":"3f79a3b5_ce153240","updated":"2018-11-02 19:38:02.000000000","message":"ack, sorry, mistakenly added because I thought these fixtures were used. they aren\u0027t...","commit_id":"364724ba6f7442cbaedcb270498cad549a571449"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fa9cbe7b2d8e80bd14aaadd35361b083ef29e1a8","unresolved":false,"context_lines":[{"line_number":1448,"context_line":"        service \u003d glance.GlanceImageServiceV2(client)"},{"line_number":1449,"context_line":"        images \u003d service.detail(ctx, **params)"},{"line_number":1450,"context_line":""},{"line_number":1451,"context_line":"        client.call.assert_called_once_with(ctx, 2, \u0027list\u0027, kwargs\u003d{})"},{"line_number":1452,"context_line":"        is_avail_mock.assert_called_once_with(ctx, mock.sentinel.images_0)"},{"line_number":1453,"context_line":"        self.assertFalse(trans_from_mock.called)"},{"line_number":1454,"context_line":"        self.assertEqual([], images)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_8a228d01","line":1451,"range":{"start_line":1451,"start_character":58,"end_line":1451,"end_character":69},"updated":"2018-11-06 16:43:57.000000000","message":"Seems unnecessary? Ditto for above and below","commit_id":"5c21a00e89539bbb271ccfa05e4a2ba1cddae58e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"205ac00720f798bbd303b5223450d360a9064514","unresolved":false,"context_lines":[{"line_number":1448,"context_line":"        service \u003d glance.GlanceImageServiceV2(client)"},{"line_number":1449,"context_line":"        images \u003d service.detail(ctx, **params)"},{"line_number":1450,"context_line":""},{"line_number":1451,"context_line":"        client.call.assert_called_once_with(ctx, 2, \u0027list\u0027, kwargs\u003d{})"},{"line_number":1452,"context_line":"        is_avail_mock.assert_called_once_with(ctx, mock.sentinel.images_0)"},{"line_number":1453,"context_line":"        self.assertFalse(trans_from_mock.called)"},{"line_number":1454,"context_line":"        self.assertEqual([], images)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_2abed963","line":1451,"range":{"start_line":1451,"start_character":58,"end_line":1451,"end_character":69},"in_reply_to":"3f79a3b5_8a228d01","updated":"2018-11-06 16:49:51.000000000","message":"It\u0027s needed, because that is exactly how the service.detail() function calls the client.call() method. Yeah, I know, it\u0027s goofy, but it is what it is.","commit_id":"5c21a00e89539bbb271ccfa05e4a2ba1cddae58e"}]}
