)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"646c8956bbe8ceba28961bc6cd6c14a6766866c7","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Check for service existance in capabilities API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We have to return 404 error code if requested backend"},{"line_number":10,"context_line":"is not faoun and 502 if request failed with timeout."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"APIImpact"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a68dd71_2801796a","line":10,"range":{"start_line":10,"start_character":7,"end_line":10,"end_character":12},"updated":"2016-01-23 14:00:20.000000000","message":"s/faoun/found","commit_id":"c3784f5cbed851850c7b6db19dcf2be8746a2f53"}],"cinder/api/contrib/capabilities.py":[{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"646c8956bbe8ceba28961bc6cd6c14a6766866c7","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        \"\"\"Return capabilities list of given backend.\"\"\""},{"line_number":46,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":47,"context_line":"        authorize(context, \u0027capabilities\u0027)"},{"line_number":48,"context_line":"        service \u003d objects.ServiceList.get_all(context, id, \u0027cinder-volume\u0027)"},{"line_number":49,"context_line":"        if not service:"},{"line_number":50,"context_line":"            msg \u003d (_(\"Can\u0027t find service: %s\") % id)"},{"line_number":51,"context_line":"            raise exception.NotFound(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a68dd71_a88ec9cd","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":75},"updated":"2016-01-23 14:00:20.000000000","message":"Code says \"ServiceList.get_all\" will be invoked every time show() function is called irrespective of whether backend is available or not.\nTo me this seems extra call in normal case, I think optimization is possible.\n\nIs it possible to check service availability only in case \"listening capability\" fails, may be for sake of reporting actual reason?","commit_id":"c3784f5cbed851850c7b6db19dcf2be8746a2f53"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"b5dd9ccfe3d656852f2023cfade56de0690491cb","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            raise exception.NotFound(msg)"},{"line_number":52,"context_line":"        try:"},{"line_number":53,"context_line":"            capabilities \u003d self.volume_api.get_capabilities(context, id, False)"},{"line_number":54,"context_line":"        except oslo_messaging.MessagingTimeout:"},{"line_number":55,"context_line":"            raise exception.RPCTimeout(service\u003did)"},{"line_number":56,"context_line":"        return self._view_builder.summary(req, capabilities, id)"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a68dd71_ddb2a205","line":54,"range":{"start_line":54,"start_character":15,"end_line":54,"end_character":29},"updated":"2016-01-25 18:14:26.000000000","message":"Yeah you could add lines 48 - 51 in this except and it will only check if the service exists if you get a timeout. However, that may mean that if the service doesn\u0027t exist you must wait to find out. Trade off is slower happy path vs slower doesn\u0027t exist path.","commit_id":"c3784f5cbed851850c7b6db19dcf2be8746a2f53"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"72854a972cbb12f23cce6a15140373043e7bb279","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        \"\"\"Return capabilities list of given backend.\"\"\""},{"line_number":46,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":47,"context_line":"        authorize(context, \u0027capabilities\u0027)"},{"line_number":48,"context_line":"        service \u003d objects.ServiceList.get_all(context, id, \u0027cinder-volume\u0027)"},{"line_number":49,"context_line":"        if not service:"},{"line_number":50,"context_line":"            msg \u003d (_(\"Can\u0027t find service: %s\") % id)"},{"line_number":51,"context_line":"            raise exception.NotFound(msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_cc26e067","line":48,"updated":"2016-02-26 13:18:21.000000000","message":"-1: This call is wrong, get_all doesn\u0027t accept those arguments.\n\n def get_all(cls, context, filters\u003dNone):","commit_id":"a19d8e5efc053fe684596df6c64645de9a8cd5da"}],"cinder/exception.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"1b60c845bf3ddeffb1ccde43658e9f832874e744","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"class RPCTimeout(CinderException):"},{"line_number":260,"context_line":"    message \u003d _(\"Timeout while requesting %(service)s via RPC.\")"},{"line_number":261,"context_line":"    code \u003d 502"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_3cf05f90","line":260,"range":{"start_line":260,"start_character":4,"end_line":260,"end_character":64},"updated":"2016-02-26 12:13:03.000000000","message":"This will be something like:\n\n Timeout while requesting lvmdriver via RPC.\n\n?\n\nIf so this isn\u0027t exactly helpful for the enduser. I see an example above, but that exception is supposed to get \"Nova\", \"Cinder\", \"Glance\", etc (and exc is unused BTW).\n\nWhy not something like:\n\n Timeout while requesting capabilities from backend %(service)s.\n\n?","commit_id":"a19d8e5efc053fe684596df6c64645de9a8cd5da"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"72854a972cbb12f23cce6a15140373043e7bb279","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"class RPCTimeout(CinderException):"},{"line_number":260,"context_line":"    message \u003d _(\"Timeout while requesting %(service)s via RPC.\")"},{"line_number":261,"context_line":"    code \u003d 502"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_ec3c8431","line":260,"range":{"start_line":260,"start_character":4,"end_line":260,"end_character":64},"in_reply_to":"9aed3d3a_3cf05f90","updated":"2016-02-26 13:18:21.000000000","message":"I agree, a more generic message would be better.","commit_id":"a19d8e5efc053fe684596df6c64645de9a8cd5da"}],"cinder/tests/unit/api/contrib/test_capabilities.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"72854a972cbb12f23cce6a15140373043e7bb279","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.controller \u003d capabilities.CapabilitiesController()"},{"line_number":65,"context_line":"        self.ctxt \u003d context.RequestContext(\u0027admin\u0027, \u0027fake\u0027, True)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @mock.patch(\u0027cinder.objects.ServiceList.get_all\u0027)"},{"line_number":68,"context_line":"    @mock.patch(\u0027cinder.volume.rpcapi.VolumeAPI.get_capabilities\u0027,"},{"line_number":69,"context_line":"                rpcapi_get_capabilities)"},{"line_number":70,"context_line":"    def test_capabilities_summary(self, mock_services):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aed3d3a_6c6874f6","line":67,"updated":"2016-02-26 13:18:21.000000000","message":"-1: Either mock at DB level or use autospec\u003dTrue in the mock, because otherwise you won\u0027t detect errors on the call like the one you have.","commit_id":"a19d8e5efc053fe684596df6c64645de9a8cd5da"}]}
