)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"a6f548a5e25d4d71b7dba9ea876cb445d10527bb","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        try:"},{"line_number":178,"context_line":"            instance_uuid \u003d kwargs[\u0027instance_uuid\u0027]"},{"line_number":179,"context_line":"        except KeyError:"},{"line_number":180,"context_line":"            instance_uuid \u003d kwargs[\u0027instance\u0027][\u0027uuid\u0027]"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        locked \u003d self._get_lock(context, instance_uuid)"},{"line_number":183,"context_line":"        admin \u003d context.is_admin"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAKX%2F%2F1hM%3D","line":180,"updated":"2012-07-23 23:37:10.000000000","message":"instance_uuid is already pulled out in decorated_function, why not do the same in decorated_function_new and pass it as an argument?","commit_id":"7cbb3de4db3bd7fcd8f422783c425fc13644e992"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"48fad8afd8bce7bcf502aa9eae63c5e6b48d5359","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        try:"},{"line_number":178,"context_line":"            instance_uuid \u003d kwargs[\u0027instance_uuid\u0027]"},{"line_number":179,"context_line":"        except KeyError:"},{"line_number":180,"context_line":"            instance_uuid \u003d kwargs[\u0027instance\u0027][\u0027uuid\u0027]"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        locked \u003d self._get_lock(context, instance_uuid)"},{"line_number":183,"context_line":"        admin \u003d context.is_admin"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAKX%2F%2F1Hw%3D","line":180,"in_reply_to":"AAAAKX%2F%2F1hM%3D","updated":"2012-07-24 17:08:36.000000000","message":"Sounds good, will do","commit_id":"7cbb3de4db3bd7fcd8f422783c425fc13644e992"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"a6f548a5e25d4d71b7dba9ea876cb445d10527bb","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        # if admin or unlocked call function otherwise log error"},{"line_number":191,"context_line":"        if admin or not locked:"},{"line_number":192,"context_line":"            cb(self, context, *args, **kwargs)"},{"line_number":193,"context_line":"        else:"},{"line_number":194,"context_line":"            return False"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAKX%2F%2F1hQ%3D","line":192,"updated":"2012-07-23 23:37:10.000000000","message":"This can always be implemented as a context manager as well. It might be easier to follow the flow without callbacks (but this isn\u0027t all that complicated and it\u0027s temporary anyway).","commit_id":"7cbb3de4db3bd7fcd8f422783c425fc13644e992"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"48fad8afd8bce7bcf502aa9eae63c5e6b48d5359","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":"        # if admin or unlocked call function otherwise log error"},{"line_number":191,"context_line":"        if admin or not locked:"},{"line_number":192,"context_line":"            cb(self, context, *args, **kwargs)"},{"line_number":193,"context_line":"        else:"},{"line_number":194,"context_line":"            return False"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAKX%2F%2F1FI%3D","line":192,"in_reply_to":"AAAAKX%2F%2F1hQ%3D","updated":"2012-07-24 17:08:36.000000000","message":"Yeah, if it bothers you I can change it, but hopefully this stuff won\u0027t be around long.  It\u0027s just around until I finish this patch series, which ideally I can do before folsom-3.","commit_id":"7cbb3de4db3bd7fcd8f422783c425fc13644e992"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"a6f548a5e25d4d71b7dba9ea876cb445d10527bb","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    def decorated_function(self, context, instance_uuid, *args, **kwargs):"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        def _cb(self, context, *args, **_kwargs):"},{"line_number":200,"context_line":"            kwargs \u003d copy.copy(_kwargs)"},{"line_number":201,"context_line":"            instance_uuid \u003d kwargs.pop(\u0027instance_uuid\u0027)"},{"line_number":202,"context_line":"            function(self, context, instance_uuid, *args, **kwargs)"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAKX%2F%2F1hU%3D","line":200,"updated":"2012-07-23 23:37:10.000000000","message":"Why the copy here? _kwargs isn\u0027t shared here\n\nIf it truly is necessary, then you just use _kwargs.copy() instead of using copy.copy() which is identical (see the documentation).","commit_id":"7cbb3de4db3bd7fcd8f422783c425fc13644e992"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"48fad8afd8bce7bcf502aa9eae63c5e6b48d5359","unresolved":false,"context_lines":[{"line_number":197,"context_line":"    def decorated_function(self, context, instance_uuid, *args, **kwargs):"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        def _cb(self, context, *args, **_kwargs):"},{"line_number":200,"context_line":"            kwargs \u003d copy.copy(_kwargs)"},{"line_number":201,"context_line":"            instance_uuid \u003d kwargs.pop(\u0027instance_uuid\u0027)"},{"line_number":202,"context_line":"            function(self, context, instance_uuid, *args, **kwargs)"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAKX%2F%2F1C4%3D","line":200,"in_reply_to":"AAAAKX%2F%2F1hU%3D","updated":"2012-07-24 17:08:36.000000000","message":"I\u0027m sure I had a really good reason at one point ......... or maybe not, but it\u0027s gone in the next rev.","commit_id":"7cbb3de4db3bd7fcd8f422783c425fc13644e992"},{"author":{"_account_id":100,"name":"Johannes Erdfelt","email":"johannes@erdfelt.com","username":"johannes.erdfelt"},"change_message_id":"c205d09616a0dda3dcdbd7d2d82ee6be02ebc0e9","unresolved":false,"context_lines":[{"line_number":35,"context_line":"\"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"import contextlib"},{"line_number":38,"context_line":"import copy"},{"line_number":39,"context_line":"import functools"},{"line_number":40,"context_line":"import inspect"},{"line_number":41,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAKX%2F%2F1CE%3D","line":38,"updated":"2012-07-24 17:11:29.000000000","message":"Unused now","commit_id":"04d4e2427d56d0214406f76162ba780c9022d258"}]}
