)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b3c00d6ed8586eb9f6723bf170fb65fd30c7069a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"aggregate_metadata.values is above 255."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch is the continuous one of"},{"line_number":15,"context_line":"https://review.openstack.org/#/c/53789/"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I2c778f2237ba5bd2aa8335a0eae80f3aad3e9157"},{"line_number":18,"context_line":"Closes-Bug: #1219693"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAWH%2F%2Fz70%3D","line":15,"updated":"2014-03-13 16:57:47.000000000","message":"Why was that one abandoned and this one created in its place?","commit_id":"6b3547dbd2ef6e1c68ecb97ca8a95c85946bc1cd"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"93692549ae1f5f37075adf8727048dcaa15d178c","unresolved":false,"context_lines":[{"line_number":12,"context_line":"aggregate_metadata.values is above 255."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch is the continuous one of"},{"line_number":15,"context_line":"https://review.openstack.org/#/c/53789/"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I2c778f2237ba5bd2aa8335a0eae80f3aad3e9157"},{"line_number":18,"context_line":"Closes-Bug: #1219693"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAWH%2F%2FwRU%3D","line":15,"in_reply_to":"AAAAWH%2F%2Fz70%3D","updated":"2014-03-14 01:23:53.000000000","message":"Hi Dan,\n\nI saw this patch in launchpad, but the original patch owner changed the patch from himself to \u0027Unassigned\u0027 in January.\n\nSo I assigned it to me, and modified it. I\u0027ll add the original owner (wanghong) into reviewer. Thanks.","commit_id":"6b3547dbd2ef6e1c68ecb97ca8a95c85946bc1cd"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"22e19a9efb81d843f52775d3f41aa7e56985a47a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"aggregate_metadata.values is above 255."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch is the continuous one of"},{"line_number":15,"context_line":"https://review.openstack.org/#/c/53789/"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I2c778f2237ba5bd2aa8335a0eae80f3aad3e9157"},{"line_number":18,"context_line":"Closes-Bug: #1219693"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAWH%2F%2B0Kk%3D","line":15,"updated":"2014-03-24 04:31:02.000000000","message":"nit: line14-15 seems unnecessary, because the lines will be not useful after merging.","commit_id":"575fd06458a4240b4ecb369e2a40fde7b3c88c39"}],"nova/api/openstack/compute/contrib/aggregates.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b345e3aad7cc7564d869f7f9853f5ab4a5dfb32a","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        for key, value in metadata.items():"},{"line_number":225,"context_line":"            try:"},{"line_number":226,"context_line":"                # To avoid the empty key"},{"line_number":227,"context_line":"                if key is not None:"},{"line_number":228,"context_line":"                    utils.check_string_length(key, \"metadata.key\", 1, 255)"},{"line_number":229,"context_line":"                if value is not None:"},{"line_number":230,"context_line":"                    utils.check_string_length(value, \"metadata.value\", 0, 255)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2B958%3D","line":227,"updated":"2014-03-21 10:21:01.000000000","message":"you needn\u0027t this check, utils.check_string_length will doing that.","commit_id":"6b3547dbd2ef6e1c68ecb97ca8a95c85946bc1cd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b345e3aad7cc7564d869f7f9853f5ab4a5dfb32a","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                # To avoid the empty key"},{"line_number":227,"context_line":"                if key is not None:"},{"line_number":228,"context_line":"                    utils.check_string_length(key, \"metadata.key\", 1, 255)"},{"line_number":229,"context_line":"                if value is not None:"},{"line_number":230,"context_line":"                    utils.check_string_length(value, \"metadata.value\", 0, 255)"},{"line_number":231,"context_line":"            except exception.InvalidInput as e:"},{"line_number":232,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2B954%3D","line":229,"updated":"2014-03-21 10:21:01.000000000","message":"ditto","commit_id":"6b3547dbd2ef6e1c68ecb97ca8a95c85946bc1cd"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"3c2c7432880415821d99f86a8f4ed1752e16400b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        try:"},{"line_number":77,"context_line":"            utils.check_string_length(name, \"Aggregate name\", 1, 255)"},{"line_number":78,"context_line":"            if avail_zone:"},{"line_number":79,"context_line":"                utils.check_string_length(avail_zone, \"Availability_zone\", 0,"},{"line_number":80,"context_line":"                                          255)"},{"line_number":81,"context_line":"        except exception.InvalidInput as e:"},{"line_number":82,"context_line":"            raise exc.HTTPBadRequest(explanation\u003de.format_message())"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2BgcI%3D","line":79,"updated":"2014-03-26 10:16:16.000000000","message":"nit: if you are here, the len(avail_zone) is more or equal to 1 so the check could be from 1 to 255, but ok :)","commit_id":"212e459a41c354ad0f60e97ac358b472f8f50018"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"04b54d55cb5d53d3391aaebb6a8a5ff46643f3df","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            name \u003d host_aggregate[\"name\"]"},{"line_number":73,"context_line":"        except KeyError:"},{"line_number":74,"context_line":"            raise exc.HTTPBadRequest()"},{"line_number":75,"context_line":"        avail_zone \u003d host_aggregate.get(\"availability_zone\") or None"},{"line_number":76,"context_line":"        try:"},{"line_number":77,"context_line":"            utils.check_string_length(name, \"Aggregate name\", 1, 255)"},{"line_number":78,"context_line":"            if avail_zone:"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAWn%2F%2F9MM%3D","line":75,"updated":"2014-04-08 09:11:02.000000000","message":"Why is this change(or None) necessary?\nEven if not changing, the behavior seems the same.","commit_id":"762f6909942fb236729704738e395009923b2c75"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"0a674f47ae7ee0434e948e36811d018024cd3713","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        except KeyError:"},{"line_number":74,"context_line":"            raise exc.HTTPBadRequest()"},{"line_number":75,"context_line":"        # NOTE(wingwj): Avoid availability_zone equals to \u0027\u0027"},{"line_number":76,"context_line":"        avail_zone \u003d host_aggregate.get(\"availability_zone\") or None"},{"line_number":77,"context_line":"        try:"},{"line_number":78,"context_line":"            utils.check_string_length(name, \"Aggregate name\", 1, 255)"},{"line_number":79,"context_line":"            if avail_zone:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAW3%2F%2F7pA%3D","line":76,"updated":"2014-04-09 12:15:32.000000000","message":"Thanks for adding the comment, I see the reason. but this seems a little tricky. how about changing line 79 to\n\n if avail_zone is not None:\n\ninstead of this \"or None\"?","commit_id":"a51263643381076f70e5e43f5a8e07a985a18e77"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"8efc44cd7cd73f0dbc18852e714065244b04da58","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        except KeyError:"},{"line_number":74,"context_line":"            raise exc.HTTPBadRequest()"},{"line_number":75,"context_line":"        # NOTE(wingwj): Avoid availability_zone equals to \u0027\u0027"},{"line_number":76,"context_line":"        avail_zone \u003d host_aggregate.get(\"availability_zone\") or None"},{"line_number":77,"context_line":"        try:"},{"line_number":78,"context_line":"            utils.check_string_length(name, \"Aggregate name\", 1, 255)"},{"line_number":79,"context_line":"            if avail_zone:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAW3%2F%2F1iM%3D","line":76,"in_reply_to":"AAAAW3%2F%2F7pA%3D","updated":"2014-04-10 06:05:35.000000000","message":"Done","commit_id":"a51263643381076f70e5e43f5a8e07a985a18e77"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e2230e1cca0fbb626198699def566da750355be8","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            except exception.InvalidInput as e:"},{"line_number":129,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if updates.get(\"availability_zone\"):"},{"line_number":132,"context_line":"            try:"},{"line_number":133,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":134,"context_line":"                                          \"Availability_zone\", 0, 255)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAXH%2F%2Fg8c%3D","line":131,"updated":"2014-04-20 21:14:02.000000000","message":"Here should be\n\n if updates.get(\"availability_zone\") is not None:\n\nfor checking \"\" at line133 like create an aggregate.","commit_id":"97d2722c422e83e8b8798941f4e12e3a36557c57"},{"author":{"_account_id":8328,"name":"Mike Spreitzer","email":"mspreitz@us.ibm.com","username":"mspreitz"},"change_message_id":"8ca8d7fbf773bd10066622b45d81558c9e36e040","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            except exception.InvalidInput as e:"},{"line_number":129,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if updates.get(\"availability_zone\") is not None:"},{"line_number":132,"context_line":"            try:"},{"line_number":133,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":134,"context_line":"                                          \"Availability_zone\", 1, 255)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAXH%2F%2FgbQ%3D","line":131,"updated":"2014-04-21 04:53:58.000000000","message":"Why not follow the style of the test on line 124?","commit_id":"408174a3d5a354c3a8ff79f566c397d7f3f2aeb3"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"af17b6e13ceeb385f26e709aa817676cab0c43bd","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            except exception.InvalidInput as e:"},{"line_number":129,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if updates.get(\"availability_zone\") is not None:"},{"line_number":132,"context_line":"            try:"},{"line_number":133,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":134,"context_line":"                                          \"Availability_zone\", 1, 255)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAXH%2F%2Ffvg%3D","line":131,"in_reply_to":"AAAAXH%2F%2FgbQ%3D","updated":"2014-04-21 09:32:41.000000000","message":"To allow setting \u0027availability_zone\u0027 to None.\n\nMaybe I need to add one test like \"test_update_with_null_availability_zone\".","commit_id":"408174a3d5a354c3a8ff79f566c397d7f3f2aeb3"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"d5b32f2a2bab071d32b03a5510f11906ca798f16","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if updates.get(\"availability_zone\") is not None:"},{"line_number":132,"context_line":"            try:"},{"line_number":133,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":134,"context_line":"                                          \"Availability_zone\", 1, 255)"},{"line_number":135,"context_line":"            except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":15,"id":"9ad9bd40_be825950","line":132,"updated":"2014-04-30 22:03:32.000000000","message":"why are two try blocks needed here?","commit_id":"942eb0ac1f471c5be1eedca8aa4357b57cbbf96d"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"6081d99f0db97db78f07b9f06607a249a8784664","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if updates.get(\"availability_zone\") is not None:"},{"line_number":132,"context_line":"            try:"},{"line_number":133,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":134,"context_line":"                                          \"Availability_zone\", 1, 255)"},{"line_number":135,"context_line":"            except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_ea05ae7a","line":132,"in_reply_to":"1ae5cdf2_144f6193","updated":"2014-06-03 01:32:11.000000000","message":"Sorry, I\u0027ll correct it.","commit_id":"942eb0ac1f471c5be1eedca8aa4357b57cbbf96d"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"0a430129b1a75f3734968bf5870980682287fcb7","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if updates.get(\"availability_zone\") is not None:"},{"line_number":132,"context_line":"            try:"},{"line_number":133,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":134,"context_line":"                                          \"Availability_zone\", 1, 255)"},{"line_number":135,"context_line":"            except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_144f6193","line":132,"in_reply_to":"1ae5cdf2_4ea1b6a8","updated":"2014-06-02 23:57:25.000000000","message":"yes, my question is why not write it that way?","commit_id":"942eb0ac1f471c5be1eedca8aa4357b57cbbf96d"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"9ddbe7f8b544e359eecca5c08ad449fe1dd04efa","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if updates.get(\"availability_zone\") is not None:"},{"line_number":132,"context_line":"            try:"},{"line_number":133,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":134,"context_line":"                                          \"Availability_zone\", 1, 255)"},{"line_number":135,"context_line":"            except exception.InvalidInput as e:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_4ea1b6a8","line":132,"in_reply_to":"9ad9bd40_be825950","updated":"2014-05-30 08:07:07.000000000","message":"Because if \u0027InvalidInput\u0027 raises here, we need to catch it and re-raise the \u0027BadRequest\u0027.\n\nDo you mean I need to write it together, like this?\n\n    try:\n        if \u0027name\u0027 in updates\n            utils.check_string_length(updates[\u0027name\u0027]...)\n        if updates.get(\u0027az\u0027) is not None:\n            utils.check_string_length(updates[\u0027name\u0027] ...)\n    except exception.InvalidInput as e:\n        raise exc.HTTPConflict(explanation\u003de.format_message())","commit_id":"942eb0ac1f471c5be1eedca8aa4357b57cbbf96d"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"40ceee98a309e64275a1817d4c95abea032c9c6b","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        if not isinstance(metadata, dict):"},{"line_number":224,"context_line":"            msg \u003d _(\u0027The value of metadata must be a dict\u0027)"},{"line_number":225,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":226,"context_line":"        for key, value in metadata.items():"},{"line_number":227,"context_line":"            try:"},{"line_number":228,"context_line":"                utils.check_string_length(key, \"metadata.key\", 1, 255)"},{"line_number":229,"context_line":"                utils.check_string_length(value, \"metadata.value\", 0, 255)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAXX%2F%2FttY%3D","line":226,"updated":"2014-04-28 14:07:35.000000000","message":"I just asking myself about to know if this is better:\n  try:\n    for key, value in metadata.items():\n      utils.check_string_length(key, \"metadata.key\", 1, 255)\n      ...\n  except exception.InvalidInput as e:\n    raise exc.HTTPBadRequest(explanation\u003de.format_message())\n\nBut not a big deal I guess.","commit_id":"942eb0ac1f471c5be1eedca8aa4357b57cbbf96d"}],"nova/api/openstack/compute/plugins/v3/aggregates.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e2230e1cca0fbb626198699def566da750355be8","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            except exception.InvalidInput as e:"},{"line_number":138,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        if updates.get(\"availability_zone\"):"},{"line_number":141,"context_line":"            try:"},{"line_number":142,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":143,"context_line":"                                          \"Availability_zone\", 0, 255)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAXH%2F%2Fg8Y%3D","line":140,"updated":"2014-04-20 21:14:02.000000000","message":"ditto","commit_id":"97d2722c422e83e8b8798941f4e12e3a36557c57"},{"author":{"_account_id":8328,"name":"Mike Spreitzer","email":"mspreitz@us.ibm.com","username":"mspreitz"},"change_message_id":"8ca8d7fbf773bd10066622b45d81558c9e36e040","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            except exception.InvalidInput as e:"},{"line_number":138,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        if updates.get(\"availability_zone\") is not None:"},{"line_number":141,"context_line":"            try:"},{"line_number":142,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":143,"context_line":"                                          \"Availability_zone\", 1, 255)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAXH%2F%2FgbM%3D","line":140,"updated":"2014-04-21 04:53:58.000000000","message":"Why not follow the style of the previous test (line 133)?","commit_id":"408174a3d5a354c3a8ff79f566c397d7f3f2aeb3"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"af17b6e13ceeb385f26e709aa817676cab0c43bd","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            except exception.InvalidInput as e:"},{"line_number":138,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        if updates.get(\"availability_zone\") is not None:"},{"line_number":141,"context_line":"            try:"},{"line_number":142,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":143,"context_line":"                                          \"Availability_zone\", 1, 255)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAXH%2F%2FfvY%3D","line":140,"in_reply_to":"AAAAXH%2F%2FgbM%3D","updated":"2014-04-21 09:32:41.000000000","message":"ditto","commit_id":"408174a3d5a354c3a8ff79f566c397d7f3f2aeb3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c792feaa99dd2cb7c9fbab0a4b1814cd0d2c383d","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if updates.get(\"availability_zone\") is not None:"},{"line_number":141,"context_line":"            try:"},{"line_number":142,"context_line":"                utils.check_string_length(updates[\u0027availability_zone\u0027],"},{"line_number":143,"context_line":"                                          \"Availability_zone\", 1, 255)"},{"line_number":144,"context_line":"            except exception.InvalidInput as e:"},{"line_number":145,"context_line":"                raise exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_bcc66666","line":143,"updated":"2014-06-04 02:12:16.000000000","message":"Here also is necessary to be applied Joe\u0027s previous comment like v2 API code.","commit_id":"00f45b3d22b5ffd187c25ec49d6c1f4b1bcc98b7"}],"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":"86606d9ccf87b0a37e5ec6ee01fc36c68f659c54","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        self.assertRaises(exc.HTTPBadRequest, self.controller.create,"},{"line_number":156,"context_line":"                          self.req, {\"aggregate\":"},{"line_number":157,"context_line":"                                     {\"name\": \"test\","},{"line_number":158,"context_line":"                                      \"availability_zone\": \"x\" * 256}})"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def test_create_with_extra_invalid_arg(self):"},{"line_number":161,"context_line":"        self.assertRaises(exc.HTTPBadRequest, self.controller.create,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2BYrg%3D","line":158,"updated":"2014-03-27 06:35:30.000000000","message":"related to specifying 1 as minimum length of availability_zone, better to add one more test like:\n\n \"availability_zone\": \"\"","commit_id":"8d78b53ef60db2e43bfeab66b6d05dd57ff2bf15"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d03b33eb5ca3676069298038694ee44fba1a86cd","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        result \u003d self.controller.create(self.req,"},{"line_number":170,"context_line":"                                        {\"aggregate\":"},{"line_number":171,"context_line":"                                         {\"name\": \"aggregate1\","},{"line_number":172,"context_line":"                                          \"availability_zone\": \"\"}})"},{"line_number":173,"context_line":"        self.assertEqual(AGGREGATE, result[\"aggregate\"])"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def test_create_with_extra_invalid_arg(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAW3%2F%2F0hA%3D","line":172,"updated":"2014-04-10 07:38:06.000000000","message":"Hi wingwj\n\nHow about passing None instead of \"\" like the test method name?","commit_id":"738998078987d9ae0bf9604271519337f38ca9c2"},{"author":{"_account_id":8021,"name":"wingwj","email":"wingwj@gmail.com","username":"wingwj"},"change_message_id":"3da2ebde7eb50a32e4eafba092966cf13818a279","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        result \u003d self.controller.create(self.req,"},{"line_number":170,"context_line":"                                        {\"aggregate\":"},{"line_number":171,"context_line":"                                         {\"name\": \"aggregate1\","},{"line_number":172,"context_line":"                                          \"availability_zone\": \"\"}})"},{"line_number":173,"context_line":"        self.assertEqual(AGGREGATE, result[\"aggregate\"])"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def test_create_with_extra_invalid_arg(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAW3%2F%2Fzg4%3D","line":172,"in_reply_to":"AAAAW3%2F%2F0hA%3D","updated":"2014-04-10 09:44:34.000000000","message":"OK. But is it means we\u0027ll skip the \"\" test?","commit_id":"738998078987d9ae0bf9604271519337f38ca9c2"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4f4996a7281c578afa72a5f3ea4b51d1318d337a","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        result \u003d self.controller.create(self.req,"},{"line_number":170,"context_line":"                                        {\"aggregate\":"},{"line_number":171,"context_line":"                                         {\"name\": \"aggregate1\","},{"line_number":172,"context_line":"                                          \"availability_zone\": \"\"}})"},{"line_number":173,"context_line":"        self.assertEqual(AGGREGATE, result[\"aggregate\"])"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def test_create_with_extra_invalid_arg(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAW3%2F%2Fza4%3D","line":172,"in_reply_to":"AAAAW3%2F%2Fzg4%3D","updated":"2014-04-10 09:56:08.000000000","message":"I guess if adding \"\" test, that should be negative test(HTTPBadRequest case).\n\nNow there are two ways to create an aggregate without AZ.\none is\n\n {\"aggregate\":\n    {\"name\": \"aggregate1\",\n     \"availability_zone\": None\n    }\n }\n\nthe other is\n\n {\"aggregate\":\n    {\"name\": \"aggregate1\"}\n }\n\nI don\u0027t think \"availability_zone\": \"\" also should mean non AZ.","commit_id":"738998078987d9ae0bf9604271519337f38ca9c2"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e2230e1cca0fbb626198699def566da750355be8","unresolved":false,"context_lines":[{"line_number":285,"context_line":"                          self.req, \"2\", body\u003dtest_metadata)"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def test_update_with_availability_zone_too_long(self):"},{"line_number":288,"context_line":"        test_metadata \u003d {\"aggregate\": {\"availability_zone\": \"x\" * 256}}"},{"line_number":289,"context_line":"        self.assertRaises(exc.HTTPBadRequest, self.controller.update,"},{"line_number":290,"context_line":"                          self.req, \"2\", body\u003dtest_metadata)"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAXH%2F%2Fg8U%3D","line":288,"updated":"2014-04-20 21:14:02.000000000","message":"test_update_with_empty_availability_zone() seems necessary.","commit_id":"97d2722c422e83e8b8798941f4e12e3a36557c57"}],"nova/tests/api/openstack/compute/plugins/v3/test_aggregates.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"04b54d55cb5d53d3391aaebb6a8a5ff46643f3df","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        self.assertEqual(AGGREGATE, result[\"aggregate\"])"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    def test_create_with_empty_availability_zone(self):"},{"line_number":175,"context_line":"        # NOTE(wingwj): The availability_zone can be equals to \u0027 \u0027"},{"line_number":176,"context_line":"        def stub_create_aggregate(context, name, az_name):"},{"line_number":177,"context_line":"            self.assertEqual(context, self.context, \"context\")"},{"line_number":178,"context_line":"            self.assertEqual(\"aggregate1\", name, \"name\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAWn%2F%2F9KE%3D","line":175,"updated":"2014-04-08 09:11:02.000000000","message":"Could you remove this test case for v3 API at least?\n\nThe name of all spaces is considered as invalid for flavor name, and now we are applying this rule for whole Nova APIs. For API consistency, it is very nice to remove the test case for v2 API also.\n\nhttps://review.openstack.org/#/c/66536","commit_id":"762f6909942fb236729704738e395009923b2c75"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e2230e1cca0fbb626198699def566da750355be8","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                          self.req, \"2\", body\u003dtest_metadata)"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"    def test_update_with_availability_zone_too_long(self):"},{"line_number":280,"context_line":"        test_metadata \u003d {\"aggregate\": {\"availability_zone\": \"x\" * 256}}"},{"line_number":281,"context_line":"        self.assertRaises(exc.HTTPBadRequest, self.controller.update,"},{"line_number":282,"context_line":"                          self.req, \"2\", body\u003dtest_metadata)"},{"line_number":283,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAXH%2F%2Fg8Q%3D","line":280,"updated":"2014-04-20 21:14:02.000000000","message":"ditto","commit_id":"97d2722c422e83e8b8798941f4e12e3a36557c57"}]}
