)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"92b7950fb9fc78353f48d8f9695f66d6d1b49b2e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    explanation if the length of availability_zone above 255."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    Closes-Bug: #1219693"},{"line_number":14,"context_line":"    Change-Id: I397a172aa3a54035d4e89a96f58315e22f7099ee"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I350447f6a1538b322d25f71f414da3df105c10f5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAATn%2F%2F63g%3D","line":14,"updated":"2013-10-25 08:12:20.000000000","message":"Why have you added all this bogus whitespace at the start of lines? Remove it.","commit_id":"6b9208e887811363d703edec149c30b9b392dd00"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"9c00cacea69d5a13d95a8ad11e5562d578a57709","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Check the length of availability_zone when create aggregate."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"PostgreSQL gives an error if you try to shove 256+ characters"},{"line_number":10,"context_line":"into a 255-character field.So we need raise a HTTPBadRequest"},{"line_number":11,"context_line":"explanation if the length of availability_zone above 255."},{"line_number":12,"context_line":"Also add checking when update aggregate."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAATn%2F%2F2i4%3D","line":10,"updated":"2013-10-27 10:17:13.000000000","message":"Add a blank space between \"field.So\"","commit_id":"65a2a31141470e76d43621a11b6a34818bcb3377"},{"author":{"_account_id":8651,"name":"Chen Xiao","email":"chenxiao@cn.ibm.com","username":"chenxiao"},"change_message_id":"d5d1a699986f4da9cd1201353b691acf4bd95625","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"PostgreSQL gives an error if you try to shove 256+ characters"},{"line_number":10,"context_line":"into a 255-character field.So we need raise a HTTPBadRequest"},{"line_number":11,"context_line":"explanation if the length of availability_zone above 255."},{"line_number":12,"context_line":"Also add checking when update aggregate."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1219693"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAATn%2F%2FW54%3D","line":11,"updated":"2013-11-08 10:03:33.000000000","message":"Little changes, change \"field.So\" to \"field. So\", and change \u0027above\" to \"is above\"","commit_id":"a173f2928c2791e8037835dcc57002e26430a837"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"72b2bcad08306cb29d499785c887e050d9d00e14","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     wanghong \u003cw.wanghong@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-12-19 14:53:25 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Check the length of availability_zone when create aggregate."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"PostgreSQL gives an error if you try to shove 256+ characters"},{"line_number":10,"context_line":"into a 255-character field. So we need raise a HTTPBadRequest"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAATn%2F81aI%3D","line":7,"updated":"2013-12-19 18:45:35.000000000","message":"can you update this line to fit the patch a little better.\n\nSomething along the lines of check the length of aggregate metadata or something.","commit_id":"774b7a9c05fdedc1e50d4ded2fa47ae7db990f15"}],"nova/api/openstack/compute/contrib/aggregates.py":[{"author":{"_account_id":7808,"name":"Xavier Queralt","email":"xqueralt@gmail.com","username":"xqueralt"},"change_message_id":"cb6198796de5f38446e1e2aeb00dec9be46bde9a","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        if \u0027availability_zone\u0027 in updates:"},{"line_number":138,"context_line":"            if updates[\"availability_zone\"] is not None:"},{"line_number":139,"context_line":"                try:"},{"line_number":140,"context_line":"                    utils.check_string_length(updates[\"availability_zone\"],"},{"line_number":141,"context_line":"                                              \"Availability_zone\", 0, 255)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FW1k%3D","line":138,"updated":"2013-11-08 10:51:51.000000000","message":"These two conditions could be merged into one (and avoid extra indentation).\n\ne.g. \"updates.get(\u0027availability_zone\u0027) is not None\"","commit_id":"a173f2928c2791e8037835dcc57002e26430a837"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"da089690ae074437c97f7393444a7587a2503cf1","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        except exception.InvalidInput as e:"},{"line_number":78,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        if avail_zone is not None:"},{"line_number":81,"context_line":"            try:"},{"line_number":82,"context_line":"                utils.check_string_length(avail_zone, \"Availability_zone\", 0,"},{"line_number":83,"context_line":"                                          255)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9h88%3D","line":80,"updated":"2013-12-10 14:56:58.000000000","message":"why do we need a second try block here? It seems like we could  put this check inside the try block above, it would be more compact, and be the same function.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"b6011b69aa404254d5af24670c70c9fd15d8c318","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        except exception.InvalidInput as e:"},{"line_number":78,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        if avail_zone is not None:"},{"line_number":81,"context_line":"            try:"},{"line_number":82,"context_line":"                utils.check_string_length(avail_zone, \"Availability_zone\", 0,"},{"line_number":83,"context_line":"                                          255)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9gDo%3D","line":80,"in_reply_to":"AAAATn%2F9h88%3D","updated":"2013-12-10 21:42:01.000000000","message":"+1, but the reason might be that availability_zone is not  a MUST when create aggregation, so we may need some check to see if it is None or not.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"7aade640b20aa73c44600211d798be4686751b91","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        except exception.InvalidInput as e:"},{"line_number":78,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        if avail_zone is not None:"},{"line_number":81,"context_line":"            try:"},{"line_number":82,"context_line":"                utils.check_string_length(avail_zone, \"Availability_zone\", 0,"},{"line_number":83,"context_line":"                                          255)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9eHs%3D","line":80,"in_reply_to":"AAAATn%2F9h88%3D","updated":"2013-12-11 06:53:07.000000000","message":"yes, I will move this check to the try block above.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"b6011b69aa404254d5af24670c70c9fd15d8c318","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        if avail_zone is not None:"},{"line_number":81,"context_line":"            try:"},{"line_number":82,"context_line":"                utils.check_string_length(avail_zone, \"Availability_zone\", 0,"},{"line_number":83,"context_line":"                                          255)"},{"line_number":84,"context_line":"            except exception.InvalidInput as e:"},{"line_number":85,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9gDk%3D","line":82,"updated":"2013-12-10 21:42:01.000000000","message":"Curious, why check min value as 0 but not 1?","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"7aade640b20aa73c44600211d798be4686751b91","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        if avail_zone is not None:"},{"line_number":81,"context_line":"            try:"},{"line_number":82,"context_line":"                utils.check_string_length(avail_zone, \"Availability_zone\", 0,"},{"line_number":83,"context_line":"                                          255)"},{"line_number":84,"context_line":"            except exception.InvalidInput as e:"},{"line_number":85,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9eHE%3D","line":82,"in_reply_to":"AAAATn%2F9gDk%3D","updated":"2013-12-11 06:53:07.000000000","message":"The \"availability_zone\" could be an empty string when create aggregate.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"a002534cd5b93105650d421e99de8eab57610239","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            except exception.InvalidInput as e:"},{"line_number":135,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        if updates.get(\"availability_zone\") is not None:"},{"line_number":138,"context_line":"            try:"},{"line_number":139,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":140,"context_line":"                                          \"Availability_zone\", 0, 255)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9gts%3D","line":137,"updated":"2013-12-10 19:07:03.000000000","message":"Same comment as Sean\u0027s above, which I agree with.\n\nAlso, this one could be shortened by doing updates.get(\u0027availability_zone\u0027, \u0027\u0027) in the length check method args, and leaving out the initial if.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"ba25244175ffd6ba396ef04c8f3583e0ffafe384","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            except exception.InvalidInput as e:"},{"line_number":135,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        if updates.get(\"availability_zone\") is not None:"},{"line_number":138,"context_line":"            try:"},{"line_number":139,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":140,"context_line":"                                          \"Availability_zone\", 0, 255)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9b%2B8%3D","line":137,"in_reply_to":"AAAATn%2F9eFE%3D","updated":"2013-12-11 14:39:51.000000000","message":"Fair point, I didn\u0027t think that through all the way.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"7aade640b20aa73c44600211d798be4686751b91","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            except exception.InvalidInput as e:"},{"line_number":135,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        if updates.get(\"availability_zone\") is not None:"},{"line_number":138,"context_line":"            try:"},{"line_number":139,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":140,"context_line":"                                          \"Availability_zone\", 0, 255)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9eFE%3D","line":137,"in_reply_to":"AAAATn%2F9gts%3D","updated":"2013-12-11 06:53:07.000000000","message":"I have done a test as follow:\n\n\u003e\u003e\u003e test_dict \u003d {\"1\":None}\n\n\u003e\u003e\u003e print test_dict.get(\"1\",\u0027\u0027)\n\nNone\n\n\u003e\u003e\u003e \n\nSo, if this one shortened by doing updates.get(\u0027availability_zone\u0027, \u0027\u0027) int the length check method args I will get an exception from the check method when I update a aggregate with updates\u003d{\"availability_zone\":None}.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"22052023e1a0e6ca20414c217da423b2d9c51a7e","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            except exception.InvalidInput as e:"},{"line_number":131,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        if updates.get(\"availability_zone\") is not None:"},{"line_number":134,"context_line":"            try:"},{"line_number":135,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":136,"context_line":"                                          \"Availability_zone\", 0, 255)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F9nc%3D","line":133,"updated":"2013-12-26 08:07:54.000000000","message":"We can use \"if updates.get(\"availability_zone\"):\" directly","commit_id":"771183bfc012318319178232b76a27191bcf4be9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9fb38896b16a72d5d59237b2dc0805de5c3d8282","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        try:"},{"line_number":216,"context_line":"            metadata \u003d body[\"metadata\"]"},{"line_number":217,"context_line":"        except KeyError:"},{"line_number":218,"context_line":"            raise exc.HTTPBadRequest()"},{"line_number":219,"context_line":"        for key, value in metadata.items():"},{"line_number":220,"context_line":"            try:"},{"line_number":221,"context_line":"                if key is not None:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F9to%3D","line":218,"updated":"2013-12-26 07:22:26.000000000","message":"If passing non-dict(ex. string) parameter as \"metadata\", the following metadata.items() fails and an internal error happens.\n\nso isinstance() check seems necessary here.","commit_id":"771183bfc012318319178232b76a27191bcf4be9"}],"nova/api/openstack/compute/plugins/v3/aggregates.py":[{"author":{"_account_id":7808,"name":"Xavier Queralt","email":"xqueralt@gmail.com","username":"xqueralt"},"change_message_id":"cb6198796de5f38446e1e2aeb00dec9be46bde9a","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        if \u0027availability_zone\u0027 in updates:"},{"line_number":143,"context_line":"            if updates[\"availability_zone\"] is not None:"},{"line_number":144,"context_line":"                try:"},{"line_number":145,"context_line":"                    utils.check_string_length(updates[\"availability_zone\"],"},{"line_number":146,"context_line":"                                              \"Availability_zone\", 0, 255)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2FW1Y%3D","line":143,"updated":"2013-11-08 10:51:51.000000000","message":"Same as in v2","commit_id":"a173f2928c2791e8037835dcc57002e26430a837"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"bf40ee9b34d352b788a09fe552084a0c89a1a7ab","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        except KeyError as e:"},{"line_number":85,"context_line":"            msg \u003d _(\"Could not find %s parameter in the request\") % e.args[0]"},{"line_number":86,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            utils.check_string_length(name, \"Aggregate name\", 1, 255)"},{"line_number":90,"context_line":"        except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BZts%3D","line":87,"updated":"2013-11-26 14:19:08.000000000","message":"Please remove this change.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"da089690ae074437c97f7393444a7587a2503cf1","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        except KeyError as e:"},{"line_number":85,"context_line":"            msg \u003d _(\"Could not find %s parameter in the request\") % e.args[0]"},{"line_number":86,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            utils.check_string_length(name, \"Aggregate name\", 1, 255)"},{"line_number":90,"context_line":"        except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9h%2BE%3D","line":87,"in_reply_to":"AAAATn%2F%2BVp8%3D","updated":"2013-12-10 14:56:58.000000000","message":"this would be considered an unrelated change, and it\u0027s totally fair to -1 on it.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":7808,"name":"Xavier Queralt","email":"xqueralt@gmail.com","username":"xqueralt"},"change_message_id":"9bb585801236e9a86ad82d5017331404026caed9","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        except KeyError as e:"},{"line_number":85,"context_line":"            msg \u003d _(\"Could not find %s parameter in the request\") % e.args[0]"},{"line_number":86,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            utils.check_string_length(name, \"Aggregate name\", 1, 255)"},{"line_number":90,"context_line":"        except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BVp8%3D","line":87,"in_reply_to":"AAAATn%2F%2BWS4%3D","updated":"2013-11-27 07:54:17.000000000","message":"which is not the case. I don\u0027t see a lot of unrelated changes but only a couple of empty lines that make the code more clear.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"f6157f0461ca942165babb7a1736043e378144a6","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        except KeyError as e:"},{"line_number":85,"context_line":"            msg \u003d _(\"Could not find %s parameter in the request\") % e.args[0]"},{"line_number":86,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            utils.check_string_length(name, \"Aggregate name\", 1, 255)"},{"line_number":90,"context_line":"        except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BWS4%3D","line":87,"in_reply_to":"AAAATn%2F%2BWew%3D","updated":"2013-11-27 03:14:35.000000000","message":"Just some of my experience, my patch was voted -1 because of such issue. ;-)\n\nhttps://review.openstack.org/#/c/56811/\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nRussell Bryant\t\tNov 23\n\nPatch Set 3: I would prefer that you didn\u0027t merge this\n\nThere are a lot of unrelated and unnecessary changes in the test file\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"ed0349e1a27ac861354bdacf2265032ed56b609e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        except KeyError as e:"},{"line_number":85,"context_line":"            msg \u003d _(\"Could not find %s parameter in the request\") % e.args[0]"},{"line_number":86,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            utils.check_string_length(name, \"Aggregate name\", 1, 255)"},{"line_number":90,"context_line":"        except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BWew%3D","line":87,"in_reply_to":"AAAATn%2F%2BWh4%3D","updated":"2013-11-27 02:11:51.000000000","message":"OK, I will do it. Could you give me some http addresses on which I can find the standards like this? Thanks.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":7494,"name":"Guangya Liu","email":"gyliu513@gmail.com","username":"JayLau"},"change_message_id":"5295f503594934af44f6c8ab01c838c5b4a82c9f","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        except KeyError as e:"},{"line_number":85,"context_line":"            msg \u003d _(\"Could not find %s parameter in the request\") % e.args[0]"},{"line_number":86,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            utils.check_string_length(name, \"Aggregate name\", 1, 255)"},{"line_number":90,"context_line":"        except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BWh4%3D","line":87,"in_reply_to":"AAAATn%2F%2BWjo%3D","updated":"2013-11-27 01:53:14.000000000","message":"It is supposed that we do not involve any code change that did not related to this patch. I hope that you can keep this as it is for now. Thanks.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"e2ca7e891b21ad25f25d32ab64978d32784d84e8","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        except KeyError as e:"},{"line_number":85,"context_line":"            msg \u003d _(\"Could not find %s parameter in the request\") % e.args[0]"},{"line_number":86,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            utils.check_string_length(name, \"Aggregate name\", 1, 255)"},{"line_number":90,"context_line":"        except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BWjo%3D","line":87,"in_reply_to":"AAAATn%2F%2BZts%3D","updated":"2013-11-27 01:45:06.000000000","message":"Why should I remove this change? This change can make this function more clearer I think.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"7aade640b20aa73c44600211d798be4686751b91","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        except KeyError as e:"},{"line_number":85,"context_line":"            msg \u003d _(\"Could not find %s parameter in the request\") % e.args[0]"},{"line_number":86,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            utils.check_string_length(name, \"Aggregate name\", 1, 255)"},{"line_number":90,"context_line":"        except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9eEs%3D","line":87,"in_reply_to":"AAAATn%2F9h%2BE%3D","updated":"2013-12-11 06:53:07.000000000","message":"I will remove this change.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"da089690ae074437c97f7393444a7587a2503cf1","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        except exception.InvalidInput as e:"},{"line_number":91,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        if avail_zone is not None:"},{"line_number":94,"context_line":"            try:"},{"line_number":95,"context_line":"                utils.check_string_length(avail_zone, \"Availability_zone\", 0,"},{"line_number":96,"context_line":"                                          255)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9h8M%3D","line":93,"updated":"2013-12-10 14:56:58.000000000","message":"same as on the v2 side, put \n\nif avail_zone is not None:\n    utils.check_string_length(avail_zone, \"Availability_zone\", 0, 255)\n\ninside the upper try","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"},{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"7aade640b20aa73c44600211d798be4686751b91","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        except exception.InvalidInput as e:"},{"line_number":91,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        if avail_zone is not None:"},{"line_number":94,"context_line":"            try:"},{"line_number":95,"context_line":"                utils.check_string_length(avail_zone, \"Availability_zone\", 0,"},{"line_number":96,"context_line":"                                          255)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F9eEY%3D","line":93,"in_reply_to":"AAAATn%2F9h8M%3D","updated":"2013-12-11 06:53:07.000000000","message":"OK, i will do it.","commit_id":"e33403cf6a1f3d73de361ace7fbbf2c7c6eef520"}],"nova/tests/api/openstack/compute/contrib/test_aggregates.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9fb38896b16a72d5d59237b2dc0805de5c3d8282","unresolved":false,"context_lines":[{"line_number":410,"context_line":"    def test_set_metadata_with_empty_key(self):"},{"line_number":411,"context_line":"        body \u003d {\"set_metadata\": {\"metadata\": {\"\": \"value\"}}}"},{"line_number":412,"context_line":"        self.assertRaises(exc.HTTPBadRequest, self.controller.action,"},{"line_number":413,"context_line":"                          self.req, \"1\", body\u003dbody)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"    def test_set_metadata_with_key_too_long(self):"},{"line_number":416,"context_line":"        body \u003d {\"set_metadata\": {\"metadata\": {\"x\" * 256: \"value\"}}}"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAT3%2F%2F9tc%3D","line":413,"updated":"2013-12-26 07:22:26.000000000","message":"related to my comment about aggregates.py, it would be better to add the test case of {\"metadata\": \"non_dict\"} as negative test.","commit_id":"771183bfc012318319178232b76a27191bcf4be9"}]}
