)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"a6b741514aef27185e322362a32222edc5ca593b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Salvatore Orlando \u003csalv.orlando@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-04-24 08:46:54 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Send 400 error id device specification contains unexpected attributes"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Bug #1171926"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAOn%2F%2FwQk%3D","line":7,"updated":"2013-04-24 18:47:33.000000000","message":"id-\u003eif?","commit_id":"b358e5613fb7ee9bbce26858af02f84a301b01c1"}],"quantum/plugins/nicira/extensions/nvp_networkgw.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"78f03beec872232fe52201f8a4ebd883f4884b41","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from quantum.api.v2 import base"},{"line_number":26,"context_line":"from quantum import manager"},{"line_number":27,"context_line":"from quantum import quota"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FxL0%3D","line":28,"updated":"2013-04-24 00:46:29.000000000","message":"nit extra \\n","commit_id":"194ee1373ff6530001cd90c6ff71673abc4bd954"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":"from quantum.api.v2 import base"},{"line_number":26,"context_line":"from quantum import manager"},{"line_number":27,"context_line":"from quantum import quota"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2Fw8s%3D","line":28,"in_reply_to":"AAAAOn%2F%2FxL0%3D","updated":"2013-04-24 06:43:07.000000000","message":"Done","commit_id":"194ee1373ff6530001cd90c6ff71673abc4bd954"},{"author":{"_account_id":704,"name":"Edgar Magana","email":"emagana@gmail.com","username":"emagana"},"unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"RESOURCE_NAME \u003d \"network-gateway\""},{"line_number":33,"context_line":"COLLECTION_NAME \u003d \"%ss\" % RESOURCE_NAME"},{"line_number":34,"context_line":"EXT_ALIAS \u003d RESOURCE_NAME"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FxAw%3D","line":31,"updated":"2013-04-24 05:17:15.000000000","message":"and we need two lines between 29 and 30 (nit)","commit_id":"194ee1373ff6530001cd90c6ff71673abc4bd954"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"RESOURCE_NAME \u003d \"network-gateway\""},{"line_number":33,"context_line":"COLLECTION_NAME \u003d \"%ss\" % RESOURCE_NAME"},{"line_number":34,"context_line":"EXT_ALIAS \u003d RESOURCE_NAME"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2Fw8o%3D","line":31,"in_reply_to":"AAAAOn%2F%2FxAw%3D","updated":"2013-04-24 06:43:07.000000000","message":"Done","commit_id":"194ee1373ff6530001cd90c6ff71673abc4bd954"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"78f03beec872232fe52201f8a4ebd883f4884b41","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            device_copy \u003d device.copy()"},{"line_number":80,"context_line":"            for key in key_specs:"},{"line_number":81,"context_line":"                device_copy.pop(key, None)"},{"line_number":82,"context_line":"            if len(device_copy) \u003e 0:"},{"line_number":83,"context_line":"                err_msg \u003d (\"Unexpected keys found in device description:%s\","},{"line_number":84,"context_line":"                           reduce(lambda x, y: \"%s, %s\" % (x, y),"},{"line_number":85,"context_line":"                                  device_copy.keys()))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FxLw%3D","line":82,"updated":"2013-04-24 00:46:29.000000000","message":"nit: if len(device_copy):","commit_id":"194ee1373ff6530001cd90c6ff71673abc4bd954"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":79,"context_line":"            device_copy \u003d device.copy()"},{"line_number":80,"context_line":"            for key in key_specs:"},{"line_number":81,"context_line":"                device_copy.pop(key, None)"},{"line_number":82,"context_line":"            if len(device_copy) \u003e 0:"},{"line_number":83,"context_line":"                err_msg \u003d (\"Unexpected keys found in device description:%s\","},{"line_number":84,"context_line":"                           reduce(lambda x, y: \"%s, %s\" % (x, y),"},{"line_number":85,"context_line":"                                  device_copy.keys()))"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2Fw8k%3D","line":82,"in_reply_to":"AAAAOn%2F%2FxLw%3D","updated":"2013-04-24 06:43:07.000000000","message":"Done","commit_id":"194ee1373ff6530001cd90c6ff71673abc4bd954"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":81,"context_line":"                device_copy.pop(key, None)"},{"line_number":82,"context_line":"            if len(device_copy) \u003e 0:"},{"line_number":83,"context_line":"                err_msg \u003d (\"Unexpected keys found in device description:%s\","},{"line_number":84,"context_line":"                           reduce(lambda x, y: \"%s, %s\" % (x, y),"},{"line_number":85,"context_line":"                                  device_copy.keys()))"},{"line_number":86,"context_line":"                return err_msg"},{"line_number":87,"context_line":"    except TypeError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2FxKg%3D","line":84,"updated":"2013-04-24 01:26:49.000000000","message":"(Suggestion only) Simplify: \u0027, \u0027.join(device_copy)","commit_id":"194ee1373ff6530001cd90c6ff71673abc4bd954"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":81,"context_line":"                device_copy.pop(key, None)"},{"line_number":82,"context_line":"            if len(device_copy) \u003e 0:"},{"line_number":83,"context_line":"                err_msg \u003d (\"Unexpected keys found in device description:%s\","},{"line_number":84,"context_line":"                           reduce(lambda x, y: \"%s, %s\" % (x, y),"},{"line_number":85,"context_line":"                                  device_copy.keys()))"},{"line_number":86,"context_line":"                return err_msg"},{"line_number":87,"context_line":"    except TypeError:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOn%2F%2Fw8g%3D","line":84,"in_reply_to":"AAAAOn%2F%2FxKg%3D","updated":"2013-04-24 06:43:07.000000000","message":"Done","commit_id":"194ee1373ff6530001cd90c6ff71673abc4bd954"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":73,"context_line":"                device, key_specs\u003dkey_specs)"},{"line_number":74,"context_line":"            if err_msg:"},{"line_number":75,"context_line":"                return err_msg"},{"line_number":76,"context_line":"            # Verify device does not contain any unexpected key"},{"line_number":77,"context_line":"            device_copy \u003d device.copy()"},{"line_number":78,"context_line":"            for key in key_specs:"},{"line_number":79,"context_line":"                device_copy.pop(key, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2Fw7w%3D","line":76,"updated":"2013-04-24 07:11:14.000000000","message":"(Suggestion only) I apologize for not pointing this out earlier, but this block could be simplified to the point of not needing a comment at all:\n\nunexpected_keys \u003d [key for key in device if key not in key_specs]\nif unexpected_keys:\n   ...\n\nNote that bool(len(mylist)) simplifies to bool(list), and that the variable name \u0027unexpected_keys\u0027 is self-documenting.","commit_id":"b358e5613fb7ee9bbce26858af02f84a301b01c1"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":73,"context_line":"                device, key_specs\u003dkey_specs)"},{"line_number":74,"context_line":"            if err_msg:"},{"line_number":75,"context_line":"                return err_msg"},{"line_number":76,"context_line":"            # Verify device does not contain any unexpected key"},{"line_number":77,"context_line":"            device_copy \u003d device.copy()"},{"line_number":78,"context_line":"            for key in key_specs:"},{"line_number":79,"context_line":"                device_copy.pop(key, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FwmY%3D","line":76,"in_reply_to":"AAAAOn%2F%2Fw7w%3D","updated":"2013-04-24 14:49:59.000000000","message":"+1 to maru\u0027s suggestion","commit_id":"b358e5613fb7ee9bbce26858af02f84a301b01c1"},{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"unresolved":false,"context_lines":[{"line_number":73,"context_line":"                device, key_specs\u003dkey_specs)"},{"line_number":74,"context_line":"            if err_msg:"},{"line_number":75,"context_line":"                return err_msg"},{"line_number":76,"context_line":"            # Verify device does not contain any unexpected key"},{"line_number":77,"context_line":"            device_copy \u003d device.copy()"},{"line_number":78,"context_line":"            for key in key_specs:"},{"line_number":79,"context_line":"                device_copy.pop(key, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FwWw%3D","line":76,"in_reply_to":"AAAAOn%2F%2FwX4%3D","updated":"2013-04-24 18:10:50.000000000","message":"Amazing","commit_id":"b358e5613fb7ee9bbce26858af02f84a301b01c1"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":73,"context_line":"                device, key_specs\u003dkey_specs)"},{"line_number":74,"context_line":"            if err_msg:"},{"line_number":75,"context_line":"                return err_msg"},{"line_number":76,"context_line":"            # Verify device does not contain any unexpected key"},{"line_number":77,"context_line":"            device_copy \u003d device.copy()"},{"line_number":78,"context_line":"            for key in key_specs:"},{"line_number":79,"context_line":"                device_copy.pop(key, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOn%2F%2FwX4%3D","line":76,"in_reply_to":"AAAAOn%2F%2FwmY%3D","updated":"2013-04-24 18:02:47.000000000","message":"cool.\nI had half a bottle of wine before writing this patch, so that was the best thing I could come up with.","commit_id":"b358e5613fb7ee9bbce26858af02f84a301b01c1"}]}
