)]}'
{"nova/api/openstack/compute/limits.py":[{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"6051d1cf6069317236fa89014ea3b42315606dbf","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        abs_limits \u003d {k: v[\u0027limit\u0027] for k, v in quotas.items()}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        builder \u003d self._get_view_builder(req)"},{"line_number":41,"context_line":"        # NOTE(sdague): rate_limits is vestigial, but their is common"},{"line_number":42,"context_line":"        # code between v2 legacy and v2.1 so we have to pass an empty"},{"line_number":43,"context_line":"        # list."},{"line_number":44,"context_line":"        return builder.build([], abs_limits)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_b1e9ace8","line":41,"range":{"start_line":41,"start_character":54,"end_line":41,"end_character":59},"updated":"2016-05-20 18:53:58.000000000","message":"nit: their -\u003e there","commit_id":"ca4ec762804b6b6e7fd397f1e0c482c3f3af62d9"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"cb3b0cd27194482151e7f9a5acdc210f5a47396f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        builder \u003d self._get_view_builder(req)"},{"line_number":41,"context_line":"        # NOTE(sdague): rate_limits is vestigial, but their is common"},{"line_number":42,"context_line":"        # code between v2 legacy and v2.1 so we have to pass an empty"},{"line_number":43,"context_line":"        # list."},{"line_number":44,"context_line":"        return builder.build([], abs_limits)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _get_view_builder(self, req):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_366bfcf2","line":43,"updated":"2016-05-20 15:12:40.000000000","message":"For the record, the turnstile nova integration I wrote, way back in the day, did advertise its limits by injecting them into nova.limits.  That said, I wouldn\u0027t be heartbroken if this goes away :)","commit_id":"ca4ec762804b6b6e7fd397f1e0c482c3f3af62d9"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"c99615ae0a82a67877c37dc188196deb0337f5c5","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        builder \u003d self._get_view_builder(req)"},{"line_number":41,"context_line":"        # NOTE(sdague): rate_limits is vestigial, but their is common"},{"line_number":42,"context_line":"        # code between v2 legacy and v2.1 so we have to pass an empty"},{"line_number":43,"context_line":"        # list."},{"line_number":44,"context_line":"        return builder.build([], abs_limits)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _get_view_builder(self, req):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_8eae09e4","line":43,"in_reply_to":"bab6814e_366bfcf2","updated":"2016-05-20 18:23:12.000000000","message":"I think we don\u0027t want this being injected by external tools, definitely not at such a deep level.","commit_id":"ca4ec762804b6b6e7fd397f1e0c482c3f3af62d9"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5297149f8d4dd15425945fba7eeb014ac898883f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        builder \u003d self._get_view_builder(req)"},{"line_number":41,"context_line":"        # NOTE(sdague): rate_limits is vestigial, but their is common"},{"line_number":42,"context_line":"        # code between v2 legacy and v2.1 so we have to pass an empty"},{"line_number":43,"context_line":"        # list."},{"line_number":44,"context_line":"        return builder.build([], abs_limits)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def _get_view_builder(self, req):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_119cf80d","line":43,"in_reply_to":"bab6814e_8eae09e4","updated":"2016-05-20 19:03:42.000000000","message":"Well, turnstile is a piece of Python middleware; it was meant to be stuck into the api-paste.ini, so that\u0027s kinda deep.  But again, as I say, I wouldn\u0027t be heartbroken if this goes away :)","commit_id":"ca4ec762804b6b6e7fd397f1e0c482c3f3af62d9"}],"nova/tests/unit/api/openstack/compute/test_limits.py":[{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"0cabcb8d33007b3189f60d2447a4e71e4d4c143d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"NS \u003d {"},{"line_number":53,"context_line":"    \u0027atom\u0027: \u0027http://www.w3.org/2005/Atom\u0027,"},{"line_number":54,"context_line":"    \u0027ns\u0027: \u0027http://docs.openstack.org/common/api/v1.0\u0027"},{"line_number":55,"context_line":"}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class BaseLimitTestSuite(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_a7a22a49","side":"PARENT","line":55,"updated":"2016-05-20 10:45:53.000000000","message":"oh, xml carry over....","commit_id":"813787644bd11ffb8bdf46a547bd25982d995dea"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"0cabcb8d33007b3189f60d2447a4e71e4d4c143d","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        if tenant_id is None:"},{"line_number":140,"context_line":"            tenant_id \u003d context.project_id"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        request \u003d self._populate_limits(request)"},{"line_number":143,"context_line":"        self.absolute_limits \u003d {"},{"line_number":144,"context_line":"            \u0027ram\u0027: 512,"},{"line_number":145,"context_line":"            \u0027instances\u0027: 5,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_47925ef7","side":"PARENT","line":142,"updated":"2016-05-20 10:45:53.000000000","message":"This is really the crux of why v2.1 was wrong, because this path never exists in real v2.1 code","commit_id":"813787644bd11ffb8bdf46a547bd25982d995dea"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"0cabcb8d33007b3189f60d2447a4e71e4d4c143d","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                                                       usages\u003dFalse)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"class LimitsControllerTestV2(LimitsControllerTestV21):"},{"line_number":218,"context_line":"    limits_controller \u003d limits.LimitsController"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def _populate_limits_diff_regex(self, request):"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab6814e_87be0663","side":"PARENT","line":217,"updated":"2016-05-20 10:45:53.000000000","message":"Delete v2 testing now, it\u0027s being deleted in other areas","commit_id":"813787644bd11ffb8bdf46a547bd25982d995dea"}]}
