)]}'
{"nova/notifications.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d9388ccbaa0d485203f0e51b68c1a1d5c4faba87","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        notifier \u003d rpc.get_notifier(\u0027api\u0027,"},{"line_number":87,"context_line":"                                    publisher_id\u003d(CONF.default_publisher_id"},{"line_number":88,"context_line":"                                                  or CONF.host))"},{"line_number":89,"context_line":"        method \u003d getattr(notifier, CONF.default_notification_level.lower(),"},{"line_number":90,"context_line":"                                  \u0027info\u0027)"},{"line_number":91,"context_line":"        method(ctxt, name, body)"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_46ab0a8a","line":89,"updated":"2015-07-20 12:43:48.000000000","message":"please add a unit test","commit_id":"a3f298ce5870409ab30f8540bf3f589ecb7cc239"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"a7d4b15984835ec5b828ab13422bf8c956544851","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            body[\u0027args\u0027].append(arg)"},{"line_number":80,"context_line":"        for key in kwarg:"},{"line_number":81,"context_line":"            body[\u0027kwarg\u0027][key] \u003d kwarg[key]"},{"line_number":82,"context_line":"        event \u003d \u0027tracing.%s\u0027 % name"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        ctxt \u003d common_context.get_context_from_function_and_args("},{"line_number":85,"context_line":"            fn, args, kwarg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_4fd084f6","line":82,"updated":"2015-07-28 10:29:09.000000000","message":"I do not understand why name is changed in this patch.","commit_id":"8003304e44eb5d2baa3f32d7b2ac6f0e343aefb8"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"c81e6c388d47b096a9920149fab0b7f52cc56851","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            body[\u0027args\u0027].append(arg)"},{"line_number":80,"context_line":"        for key in kwarg:"},{"line_number":81,"context_line":"            body[\u0027kwarg\u0027][key] \u003d kwarg[key]"},{"line_number":82,"context_line":"        event \u003d \u0027tracing.%s\u0027 % name"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        ctxt \u003d common_context.get_context_from_function_and_args("},{"line_number":85,"context_line":"            fn, args, kwarg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_6a0c4eec","line":82,"in_reply_to":"3a50d1a3_4fd084f6","updated":"2015-07-28 10:38:39.000000000","message":"common prefix make it easy to catch these kind of notifications. e.g. I can write a ceilometer plugin to handle  all \u0027tracing.xxxx\u0027 event.","commit_id":"8003304e44eb5d2baa3f32d7b2ac6f0e343aefb8"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"a2a405b6584aa16b7102ccb288f9028ae29e503f","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        ctxt \u003d (common_context.get_context_from_function_and_args("},{"line_number":84,"context_line":"                    fn, args, kwarg) or"},{"line_number":85,"context_line":"                common_context.get_current() or"},{"line_number":86,"context_line":"                nova.context.get_admin_context())"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        notifier \u003d rpc.get_notifier(\u0027api\u0027,"},{"line_number":89,"context_line":"                                    publisher_id\u003d(CONF.default_publisher_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_ddf05500","line":86,"range":{"start_line":86,"start_character":16,"end_line":86,"end_character":48},"updated":"2015-07-30 10:00:45.000000000","message":"I\u0027d much rather not produce an admin context for no reason. If you are sure you need a context, and we don\u0027t have one, lets not give it admin rights incase we later leak it out.","commit_id":"dea69183a6f1745918bb0e3af3c28ac82882a876"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"2466b84bea109292af9d0510d6c95b8b8c32dd51","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                                    publisher_id\u003d(CONF.default_publisher_id"},{"line_number":90,"context_line":"                                                  or CONF.host))"},{"line_number":91,"context_line":"        method \u003d getattr(notifier, CONF.default_notification_level.lower(),"},{"line_number":92,"context_line":"                                  \u0027info\u0027)"},{"line_number":93,"context_line":"        method(ctxt, name, body)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        return fn(*args, **kwarg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_c27392e6","line":92,"updated":"2015-08-08 14:31:14.000000000","message":"indentation here is odd.","commit_id":"3c8e3f26c1609d469ca53988fff908e412a81393"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"19145f138d35a70edc5030fbb69f2abe8064a29b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        ctxt \u003d (common_context.get_context_from_function_and_args("},{"line_number":84,"context_line":"                    fn, args, kwarg) or"},{"line_number":85,"context_line":"                common_context.get_current() or"},{"line_number":86,"context_line":"                nova.context.RequestContext())"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        notifier \u003d rpc.get_notifier(\u0027api\u0027,"},{"line_number":89,"context_line":"                                    publisher_id\u003d(CONF.default_publisher_id"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa1b9901_47163f56","line":86,"updated":"2015-08-19 14:12:45.000000000","message":"Doesn\u0027t look like the two \"or\" cases are covered in the tests. Am I missing them?","commit_id":"2045b75bea6e570df372ea6bdd2a9c9af1da0a57"},{"author":{"_account_id":11235,"name":"Edwin Zhai","email":"edwin.zhai@intel.com","username":"gzhai"},"change_message_id":"52aaccf0f0a2b429d84bfea8ff4b4b0d41f5666f","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        ctxt \u003d (common_context.get_context_from_function_and_args("},{"line_number":84,"context_line":"                    fn, args, kwarg) or"},{"line_number":85,"context_line":"                common_context.get_current() or"},{"line_number":86,"context_line":"                nova.context.RequestContext())"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        notifier \u003d rpc.get_notifier(\u0027api\u0027,"},{"line_number":89,"context_line":"                                    publisher_id\u003d(CONF.default_publisher_id"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa1b9901_bd7deeb2","line":86,"in_reply_to":"fa1b9901_47163f56","updated":"2015-08-19 14:43:26.000000000","message":"Yes. It should be good if we can cover all 3 cases. Will do it later.","commit_id":"2045b75bea6e570df372ea6bdd2a9c9af1da0a57"}]}
