)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f3a5e9abddf72abab7b3c90e30fbdc7104be5558","unresolved":false,"context_lines":[{"line_number":12,"context_line":"the whole Nova API."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"In addition, removed the test \"test_quotas_update_zero_value_as_admin\""},{"line_number":15,"context_line":"because the quota with zero values is meaningless."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partially implements blueprint nova-api-validation-fw"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAUH%2F%2BldM%3D","line":15,"updated":"2014-01-24 05:26:19.000000000","message":"Sorry for missing this in my previous review.\n\nThis patch does not remove test_quotas_update_zero_value_as_admin.\nShould we remove it?","commit_id":"7f4f4b90361ca55f0b8c02eb8928b5a07d787a19"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"fc02d571a9bc37ae8a8b13b22a0dfbc3ed704bfc","unresolved":false,"context_lines":[{"line_number":12,"context_line":"the whole Nova API."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"In addition, removed the test \"test_quotas_update_zero_value_as_admin\""},{"line_number":15,"context_line":"because the quota with zero values is meaningless."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partially implements blueprint nova-api-validation-fw"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAUH%2F%2Blcs%3D","line":15,"in_reply_to":"AAAAUH%2F%2BldM%3D","updated":"2014-01-24 05:29:52.000000000","message":"Yes, I\u0027m sorry, I forgot to remove this message. Thank you for pointing it out.","commit_id":"7f4f4b90361ca55f0b8c02eb8928b5a07d787a19"}],"nova/api/openstack/compute/plugins/v3/quota_sets.py":[{"author":{"_account_id":9533,"name":"Eiichi Aikawa","email":"aikawa@mxk.nes.nec.co.jp","username":"EiichiAikawa"},"change_message_id":"1686a9c9d7a2a5dfb906528f28faabd5b8feeecb","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            if key \u003d\u003d \u0027force\u0027:"},{"line_number":158,"context_line":"                force_update \u003d strutils.bool_from_string(value)"},{"line_number":159,"context_line":"            else:"},{"line_number":160,"context_line":"                value \u003d int(value)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        try:"},{"line_number":163,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2FzgA%3D","line":160,"updated":"2014-01-08 08:58:15.000000000","message":"As Oomichi-san said, value will not be used until overwritten, so I also think line 160 is not needed.\nBut force_update will be referenced at line 174, so I think line 157-159 should not be deleted.","commit_id":"d78c14bbefe5430a0f7abbd5764b03d9bcaba469"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"dac52179cd3ed572b0cae375fff57f776621e9ea","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            if key \u003d\u003d \u0027force\u0027:"},{"line_number":158,"context_line":"                force_update \u003d strutils.bool_from_string(value)"},{"line_number":159,"context_line":"            else:"},{"line_number":160,"context_line":"                value \u003d int(value)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        try:"},{"line_number":163,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2F0Vc%3D","line":160,"updated":"2014-01-08 04:58:33.000000000","message":"line 154-160 seems unnecessary because force_update and value are not used and they are validated with schema already.","commit_id":"d78c14bbefe5430a0f7abbd5764b03d9bcaba469"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"161c273021b2b5241b2e10f9ec13bb065355e062","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            if key \u003d\u003d \u0027force\u0027:"},{"line_number":158,"context_line":"                force_update \u003d strutils.bool_from_string(value)"},{"line_number":159,"context_line":"            else:"},{"line_number":160,"context_line":"                value \u003d int(value)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        try:"},{"line_number":163,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Fy5k%3D","line":160,"in_reply_to":"AAAAUH%2F%2FzgA%3D","updated":"2014-01-08 11:20:35.000000000","message":"Thank you for your advice.\nI\u0027ll modify as below. \n* delete line 154-157 and 159-160.\n* modify line 157-158 to that if  body[\u0027quota_set\u0027] has key \u0027force\u0027, then force_update \u003d strutils.bool_from_string(value).","commit_id":"d78c14bbefe5430a0f7abbd5764b03d9bcaba469"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8511281e02559ba3717f8b8cc4e9d35d18d0ae00","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @extensions.expected_errors((400, 403))"},{"line_number":139,"context_line":"    @wsgi.serializers(xml\u003dQuotaTemplate)"},{"line_number":140,"context_line":"    @validation.schema(request_body_schema\u003dquota_sets_schema.update)"},{"line_number":141,"context_line":"    def update(self, req, id, body):"},{"line_number":142,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":143,"context_line":"        authorize_update(context)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FgQI%3D","line":140,"updated":"2014-01-13 08:47:02.000000000","message":"The same point as https://review.openstack.org/#/c/61972/ .","commit_id":"251e4418b8e66813e03b51dbe4b85b45321f101b"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"0bfd66ce439ac26c98335dde33407644e4912781","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    @extensions.expected_errors((400, 403))"},{"line_number":139,"context_line":"    @wsgi.serializers(xml\u003dQuotaTemplate)"},{"line_number":140,"context_line":"    @validation.schema(request_body_schema\u003dquota_sets_schema.update)"},{"line_number":141,"context_line":"    def update(self, req, id, body):"},{"line_number":142,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":143,"context_line":"        authorize_update(context)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FUjQ%3D","line":140,"in_reply_to":"AAAAUH%2F%2FgQI%3D","updated":"2014-01-15 03:01:28.000000000","message":"Done","commit_id":"251e4418b8e66813e03b51dbe4b85b45321f101b"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"5bd366981c0607e0174bb0121dfbbaedc910446d","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        for key, value in quota_set.items():"},{"line_number":153,"context_line":"            if key \u003d\u003d \u0027force\u0027:"},{"line_number":154,"context_line":"                force_update \u003d ("},{"line_number":155,"context_line":"                    strutils.bool_from_string(body[\u0027quota_set\u0027][\u0027force\u0027]))"},{"line_number":156,"context_line":"            else:"},{"line_number":157,"context_line":"                value \u003d int(value)"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FHF4%3D","line":155,"updated":"2014-01-17 10:44:33.000000000","message":"The outside () is not needed.","commit_id":"ef55a517ea4826d5dc918e5ddde8ec4bb68c3b06"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2d20ff134dba5300c4208406bed0d848e6aefb59","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                force_update \u003d ("},{"line_number":155,"context_line":"                    strutils.bool_from_string(body[\u0027quota_set\u0027][\u0027force\u0027]))"},{"line_number":156,"context_line":"            else:"},{"line_number":157,"context_line":"                value \u003d int(value)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        try:"},{"line_number":160,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FHI4%3D","line":157,"updated":"2014-01-17 10:37:34.000000000","message":"This \u0027value\u0027 is not used. so line156-157 should be removed.","commit_id":"ef55a517ea4826d5dc918e5ddde8ec4bb68c3b06"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"3d47c9f0bf42927f466aa7da14a25ee04fe98708","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                force_update \u003d ("},{"line_number":155,"context_line":"                    strutils.bool_from_string(body[\u0027quota_set\u0027][\u0027force\u0027]))"},{"line_number":156,"context_line":"            else:"},{"line_number":157,"context_line":"                value \u003d int(value)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        try:"},{"line_number":160,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BxXE%3D","line":157,"in_reply_to":"AAAAUH%2F%2FHI4%3D","updated":"2014-01-22 10:17:38.000000000","message":"Done.\nI misunderstood...","commit_id":"ef55a517ea4826d5dc918e5ddde8ec4bb68c3b06"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2d20ff134dba5300c4208406bed0d848e6aefb59","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                continue"},{"line_number":176,"context_line":"            # validate whether already used and reserved exceeds the new"},{"line_number":177,"context_line":"            # quota, this check will be ignored if admin want to force"},{"line_number":178,"context_line":"            # update"},{"line_number":179,"context_line":"            value \u003d int(value)"},{"line_number":180,"context_line":"            if force_update is not True and value \u003e\u003d 0:"},{"line_number":181,"context_line":"                quota_value \u003d quotas.get(key)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2FHJQ%3D","line":178,"updated":"2014-01-17 10:37:34.000000000","message":"This \u0027value\u0027 is used instead.","commit_id":"ef55a517ea4826d5dc918e5ddde8ec4bb68c3b06"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1783487b3acd3312a26ae45a7ae250faa7f65cb7","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        for key, value in quota_set.items():"},{"line_number":153,"context_line":"            if key \u003d\u003d \u0027force\u0027:"},{"line_number":154,"context_line":"                force_update \u003d strutils.bool_from_string("},{"line_number":155,"context_line":"                                 body[\u0027quota_set\u0027][\u0027force\u0027])"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        try:"},{"line_number":158,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2BtA8%3D","line":155,"updated":"2014-01-23 00:56:39.000000000","message":"line152-155 gets body[\u0027quota_set\u0027][\u0027force\u0027] only.\n\nSo how about\n\n if quota_set.get(\u0027force\u0027):\n     force_update \u003d strutils.bool_from_string(quota_set[\u0027force\u0027])\n \n?","commit_id":"974ee9bd6e8a04e9677cd19a97b1d2502022bdfd"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"c4fa18574f41b16e14c22d0564e0a851544b99ad","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        for key, value in quota_set.items():"},{"line_number":153,"context_line":"            if key \u003d\u003d \u0027force\u0027:"},{"line_number":154,"context_line":"                force_update \u003d strutils.bool_from_string("},{"line_number":155,"context_line":"                                 body[\u0027quota_set\u0027][\u0027force\u0027])"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        try:"},{"line_number":158,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2Bles%3D","line":155,"in_reply_to":"AAAAUH%2F%2Bmr0%3D","updated":"2014-01-24 05:10:06.000000000","message":"Done","commit_id":"974ee9bd6e8a04e9677cd19a97b1d2502022bdfd"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"0afebf6aee2053eb2dea43925cb1cd52d5179aca","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        for key, value in quota_set.items():"},{"line_number":153,"context_line":"            if key \u003d\u003d \u0027force\u0027:"},{"line_number":154,"context_line":"                force_update \u003d strutils.bool_from_string("},{"line_number":155,"context_line":"                                 body[\u0027quota_set\u0027][\u0027force\u0027])"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        try:"},{"line_number":158,"context_line":"            settable_quotas \u003d QUOTAS.get_settable_quotas(context, project_id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F%2Bmr0%3D","line":155,"in_reply_to":"AAAAUH%2F%2BtA8%3D","updated":"2014-01-23 23:11:24.000000000","message":"Sorry, how about\n\n force_update \u003d strutils.bool_from_string(quota_set.get(\u0027force\u0027, \u0027False\u0027))\n\n?\n\nline149 and line152-155 can be merged to the above one line.","commit_id":"974ee9bd6e8a04e9677cd19a97b1d2502022bdfd"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"856570351c47b538018aedf9c483d26a1bf460ec","unresolved":false,"context_lines":[{"line_number":32,"context_line":"ALIAS \u003d \"os-quota-sets\""},{"line_number":33,"context_line":"QUOTAS \u003d quota.QUOTAS"},{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":"FILTERED_QUOTAS \u003d [\u0027injected_files\u0027, \u0027injected_file_content_bytes\u0027,"},{"line_number":36,"context_line":"                   \u0027injected_file_path_bytes\u0027]"},{"line_number":37,"context_line":"authorize_update \u003d extensions.extension_authorizer(\u0027compute\u0027,"},{"line_number":38,"context_line":"                                                   \u0027v3:%s:update\u0027 % ALIAS)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_11a8651f","line":35,"updated":"2014-06-25 03:41:14.000000000","message":"Could you add a comment here that if this list is changed then the schema file also needs to be updated?","commit_id":"e8c4919c660e717ce1668a156467c2c432ef5111"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"848c4dc93bb75eba874d3ef928c7ad44a723d93c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"ALIAS \u003d \"os-quota-sets\""},{"line_number":33,"context_line":"QUOTAS \u003d quota.QUOTAS"},{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":"FILTERED_QUOTAS \u003d [\u0027injected_files\u0027, \u0027injected_file_content_bytes\u0027,"},{"line_number":36,"context_line":"                   \u0027injected_file_path_bytes\u0027]"},{"line_number":37,"context_line":"authorize_update \u003d extensions.extension_authorizer(\u0027compute\u0027,"},{"line_number":38,"context_line":"                                                   \u0027v3:%s:update\u0027 % ALIAS)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_c4f63dd8","line":35,"in_reply_to":"1ae5cdf2_11a8651f","updated":"2014-06-25 03:59:03.000000000","message":"Done","commit_id":"e8c4919c660e717ce1668a156467c2c432ef5111"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"db7130f4e1ba477ebe4d48c38b7821798d5a122a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"ALIAS \u003d \"os-quota-sets\""},{"line_number":33,"context_line":"QUOTAS \u003d quota.QUOTAS"},{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":"FILTERED_QUOTAS \u003d [\u0027injected_files\u0027, \u0027injected_file_content_bytes\u0027,"},{"line_number":36,"context_line":"                   \u0027injected_file_path_bytes\u0027]"},{"line_number":37,"context_line":"authorize_update \u003d extensions.extension_authorizer(\u0027compute\u0027,"},{"line_number":38,"context_line":"                                                   \u0027v3:%s:update\u0027 % ALIAS)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1ae5cdf2_c4dabd78","line":35,"in_reply_to":"1ae5cdf2_11a8651f","updated":"2014-06-25 03:51:33.000000000","message":"That is a nice idea for maintaining the code.","commit_id":"e8c4919c660e717ce1668a156467c2c432ef5111"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"b9a8841f22f74cff99b17ee06fe97621d2083948","unresolved":false,"context_lines":[{"line_number":32,"context_line":"ALIAS \u003d \"os-quota-sets\""},{"line_number":33,"context_line":"QUOTAS \u003d quota.QUOTAS"},{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":"# If FILTERED_QUOTAS list is changed,"},{"line_number":36,"context_line":"# then the schema file also needs to be updated."},{"line_number":37,"context_line":"FILTERED_QUOTAS \u003d [\u0027injected_files\u0027, \u0027injected_file_content_bytes\u0027,"},{"line_number":38,"context_line":"                   \u0027injected_file_path_bytes\u0027]"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_674bab86","line":35,"updated":"2014-06-25 05:18:00.000000000","message":"The keywork NOTE is necessary like:\n\n # NOTE: If FILTERED_QUOTAS list is changed, \n\nand better to add a new line before line35 for clear description.","commit_id":"a06f56310aca1288047269901628b8c75b8f27be"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"a2aff73024a28a6e362aafadfc0cfac893fa184e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"ALIAS \u003d \"os-quota-sets\""},{"line_number":33,"context_line":"QUOTAS \u003d quota.QUOTAS"},{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":"# If FILTERED_QUOTAS list is changed,"},{"line_number":36,"context_line":"# then the schema file also needs to be updated."},{"line_number":37,"context_line":"FILTERED_QUOTAS \u003d [\u0027injected_files\u0027, \u0027injected_file_content_bytes\u0027,"},{"line_number":38,"context_line":"                   \u0027injected_file_path_bytes\u0027]"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_422a1d30","line":35,"in_reply_to":"1ae5cdf2_674bab86","updated":"2014-06-25 05:36:10.000000000","message":"OK, thank you.","commit_id":"a06f56310aca1288047269901628b8c75b8f27be"}],"nova/api/openstack/compute/schemas/v3/quota_sets.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d9990d7cf70072b497b2d7b2db9b469817929a94","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                    \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],"},{"line_number":26,"context_line":"                    \u0027pattern\u0027: \u0027^-?[0-9]+$\u0027,"},{"line_number":27,"context_line":"                    \u0027minimum\u0027: -1"},{"line_number":28,"context_line":"                },"},{"line_number":29,"context_line":"                \u0027cores\u0027: {"},{"line_number":30,"context_line":"                    \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],"},{"line_number":31,"context_line":"                    \u0027pattern\u0027: \u0027^-?[0-9]+$\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_f7fb1779","line":28,"updated":"2014-06-24 05:35:43.000000000","message":"To avoid copy\u0026paste code, how about defining common quota type in this file and sharing it between quotas?\n\ne.g:\n common_quota \u003d {\n     \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],\n     \u0027pattern\u0027: \u0027^-?[0-9]+$\u0027,\n     \u0027minimum\u0027: -1\n }\n\n update \u003d {\n     [..]\n     \u0027instances\u0027: common_quota,\n     \u0027cores\u0027: common_quota,\n     [..]\n\nThis common quota type will be used in this file only, so I feel it is OK to avoid it in parameter_types.py.","commit_id":"fe513604417fa80f781d27fc3f3cd6088e78634c"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"87850fc62e8558c56cff7aa99c3a298112126944","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                    \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],"},{"line_number":26,"context_line":"                    \u0027pattern\u0027: \u0027^-?[0-9]+$\u0027,"},{"line_number":27,"context_line":"                    \u0027minimum\u0027: -1"},{"line_number":28,"context_line":"                },"},{"line_number":29,"context_line":"                \u0027cores\u0027: {"},{"line_number":30,"context_line":"                    \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],"},{"line_number":31,"context_line":"                    \u0027pattern\u0027: \u0027^-?[0-9]+$\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_3751ff63","line":28,"in_reply_to":"1ae5cdf2_f7fb1779","updated":"2014-06-24 05:46:15.000000000","message":"Thank you, I\u0027ll do so.","commit_id":"fe513604417fa80f781d27fc3f3cd6088e78634c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"6394c2fb2c024fd2a4c46b8a569d2da826f7ddd3","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        \u0027type\u0027: \u0027object\u0027,"},{"line_number":27,"context_line":"        \u0027quota_set\u0027: {"},{"line_number":28,"context_line":"            \u0027properties\u0027: {"},{"line_number":29,"context_line":"                # -1 is a flag value for unlimited"},{"line_number":30,"context_line":"                \u0027instances\u0027: common_quota,"},{"line_number":31,"context_line":"                \u0027cores\u0027: common_quota,"},{"line_number":32,"context_line":"                \u0027ram\u0027: common_quota,"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_3722dfba","line":29,"updated":"2014-06-24 05:59:12.000000000","message":"better to move line29 into line18 for clear explanation.","commit_id":"37d144950bacc82ba89473e50fb0acaf8b3f1fb3"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"232ad54819c7a8f22b5d98bcbe1450b7860e7710","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        \u0027type\u0027: \u0027object\u0027,"},{"line_number":27,"context_line":"        \u0027quota_set\u0027: {"},{"line_number":28,"context_line":"            \u0027properties\u0027: {"},{"line_number":29,"context_line":"                # -1 is a flag value for unlimited"},{"line_number":30,"context_line":"                \u0027instances\u0027: common_quota,"},{"line_number":31,"context_line":"                \u0027cores\u0027: common_quota,"},{"line_number":32,"context_line":"                \u0027ram\u0027: common_quota,"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ae5cdf2_f27fa515","line":29,"in_reply_to":"1ae5cdf2_3722dfba","updated":"2014-06-24 06:13:46.000000000","message":"Right, thank you.","commit_id":"37d144950bacc82ba89473e50fb0acaf8b3f1fb3"}],"nova/api/openstack/compute/schemas/v3/quota_sets_schema.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"575970c9f434868b753079e5440e9f9e0ea6668d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                \u0027force\u0027: {"},{"line_number":70,"context_line":"                    \u0027type\u0027: [\u0027boolean\u0027, \u0027string\u0027],"},{"line_number":71,"context_line":"                    \u0027enum\u0027: [True, \u0027True\u0027, \u0027TRUE\u0027, \u0027true\u0027, \u00271\u0027,"},{"line_number":72,"context_line":"                             False, \u0027False\u0027, \u0027FALSE\u0027, \u0027false\u0027, \u00270\u0027],"},{"line_number":73,"context_line":"                },"},{"line_number":74,"context_line":"            },"},{"line_number":75,"context_line":"            \u0027additionalProperties\u0027: False,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Fp48%3D","line":72,"updated":"2014-01-10 02:19:46.000000000","message":"Could you rebase this on https://review.openstack.org/#/c/34514/ and use parameter_types.boolean instead?\n\nparameter_types.boolean has been tested with unit tests already, and we can reduce the code of this schema.\n\nhttps://review.openstack.org/#/c/62310/8/nova/api/openstack/compute/schemas/v3/cells_schema.py would be a good example.","commit_id":"94b6f4683284e9aa5cddaf70549775a1f4ee941a"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"fb0175b566f0d99181622d0ab3e9c4e98196b442","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                \u0027force\u0027: {"},{"line_number":70,"context_line":"                    \u0027type\u0027: [\u0027boolean\u0027, \u0027string\u0027],"},{"line_number":71,"context_line":"                    \u0027enum\u0027: [True, \u0027True\u0027, \u0027TRUE\u0027, \u0027true\u0027, \u00271\u0027,"},{"line_number":72,"context_line":"                             False, \u0027False\u0027, \u0027FALSE\u0027, \u0027false\u0027, \u00270\u0027],"},{"line_number":73,"context_line":"                },"},{"line_number":74,"context_line":"            },"},{"line_number":75,"context_line":"            \u0027additionalProperties\u0027: False,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FoGw%3D","line":72,"in_reply_to":"AAAAUH%2F%2Foi0%3D","updated":"2014-01-10 10:53:48.000000000","message":"OK.Done.","commit_id":"94b6f4683284e9aa5cddaf70549775a1f4ee941a"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"27515cbd4e0a8d362c187839bbfea33be4159ef3","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                \u0027force\u0027: {"},{"line_number":70,"context_line":"                    \u0027type\u0027: [\u0027boolean\u0027, \u0027string\u0027],"},{"line_number":71,"context_line":"                    \u0027enum\u0027: [True, \u0027True\u0027, \u0027TRUE\u0027, \u0027true\u0027, \u00271\u0027,"},{"line_number":72,"context_line":"                             False, \u0027False\u0027, \u0027FALSE\u0027, \u0027false\u0027, \u00270\u0027],"},{"line_number":73,"context_line":"                },"},{"line_number":74,"context_line":"            },"},{"line_number":75,"context_line":"            \u0027additionalProperties\u0027: False,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2FpCw%3D","line":72,"in_reply_to":"AAAAUH%2F%2Fp48%3D","updated":"2014-01-10 06:50:38.000000000","message":"Done","commit_id":"94b6f4683284e9aa5cddaf70549775a1f4ee941a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e3ab275252987ad75665fb1d01b5a8ba123ca79e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                \u0027force\u0027: {"},{"line_number":70,"context_line":"                    \u0027type\u0027: [\u0027boolean\u0027, \u0027string\u0027],"},{"line_number":71,"context_line":"                    \u0027enum\u0027: [True, \u0027True\u0027, \u0027TRUE\u0027, \u0027true\u0027, \u00271\u0027,"},{"line_number":72,"context_line":"                             False, \u0027False\u0027, \u0027FALSE\u0027, \u0027false\u0027, \u00270\u0027],"},{"line_number":73,"context_line":"                },"},{"line_number":74,"context_line":"            },"},{"line_number":75,"context_line":"            \u0027additionalProperties\u0027: False,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Foi0%3D","line":72,"in_reply_to":"AAAAUH%2F%2FpCw%3D","updated":"2014-01-10 09:21:36.000000000","message":"Sorry for messing this.\nIt is not necessary to apply the above my comment, because Chris said that parameter_types should not be applied to each schema patch on https://review.openstack.org/#/c/34514/ .\n\nI\u0027m sorry for that.","commit_id":"94b6f4683284e9aa5cddaf70549775a1f4ee941a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c896e5c715408af494c29a2c3e276d98387daca3","unresolved":false,"context_lines":[{"line_number":21,"context_line":"                # -1 is a flag value for unlimited"},{"line_number":22,"context_line":"                \u0027instances\u0027: {"},{"line_number":23,"context_line":"                    \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],"},{"line_number":24,"context_line":"                    \u0027pattern\u0027: \u0027^-?\\d+$\u0027,"},{"line_number":25,"context_line":"                    \u0027minimum\u0027: -1"},{"line_number":26,"context_line":"                },"},{"line_number":27,"context_line":"                \u0027cores\u0027: {"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Faio%3D","line":24,"updated":"2014-01-14 00:25:57.000000000","message":"nit: I prefer \u0027^-?[0-9]+$\u0027, because this pattern characters will be included in response body if validation error happens, and [0-9] would show the reason more easily.","commit_id":"251e4418b8e66813e03b51dbe4b85b45321f101b"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"0bfd66ce439ac26c98335dde33407644e4912781","unresolved":false,"context_lines":[{"line_number":21,"context_line":"                # -1 is a flag value for unlimited"},{"line_number":22,"context_line":"                \u0027instances\u0027: {"},{"line_number":23,"context_line":"                    \u0027type\u0027: [\u0027integer\u0027, \u0027string\u0027],"},{"line_number":24,"context_line":"                    \u0027pattern\u0027: \u0027^-?\\d+$\u0027,"},{"line_number":25,"context_line":"                    \u0027minimum\u0027: -1"},{"line_number":26,"context_line":"                },"},{"line_number":27,"context_line":"                \u0027cores\u0027: {"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FUks%3D","line":24,"in_reply_to":"AAAAUH%2F%2Faio%3D","updated":"2014-01-15 03:01:28.000000000","message":"Done","commit_id":"251e4418b8e66813e03b51dbe4b85b45321f101b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8511281e02559ba3717f8b8cc4e9d35d18d0ae00","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                    \u0027type\u0027: [\u0027boolean\u0027, \u0027string\u0027],"},{"line_number":69,"context_line":"                    \u0027enum\u0027: [True, \u0027True\u0027, \u0027TRUE\u0027, \u0027true\u0027, \u00271\u0027,"},{"line_number":70,"context_line":"                             False, \u0027False\u0027, \u0027FALSE\u0027, \u0027false\u0027, \u00270\u0027],"},{"line_number":71,"context_line":"                },"},{"line_number":72,"context_line":"            },"},{"line_number":73,"context_line":"            \u0027additionalProperties\u0027: False,"},{"line_number":74,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FgP0%3D","line":71,"updated":"2014-01-13 08:47:02.000000000","message":"Here also should be replace to parameter_types.boolean.","commit_id":"251e4418b8e66813e03b51dbe4b85b45321f101b"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"0bfd66ce439ac26c98335dde33407644e4912781","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                    \u0027type\u0027: [\u0027boolean\u0027, \u0027string\u0027],"},{"line_number":69,"context_line":"                    \u0027enum\u0027: [True, \u0027True\u0027, \u0027TRUE\u0027, \u0027true\u0027, \u00271\u0027,"},{"line_number":70,"context_line":"                             False, \u0027False\u0027, \u0027FALSE\u0027, \u0027false\u0027, \u00270\u0027],"},{"line_number":71,"context_line":"                },"},{"line_number":72,"context_line":"            },"},{"line_number":73,"context_line":"            \u0027additionalProperties\u0027: False,"},{"line_number":74,"context_line":"        },"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FUko%3D","line":71,"in_reply_to":"AAAAUH%2F%2FgP0%3D","updated":"2014-01-15 03:01:28.000000000","message":"Done","commit_id":"251e4418b8e66813e03b51dbe4b85b45321f101b"}],"nova/tests/api/openstack/compute/plugins/v3/test_quota_sets.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d9990d7cf70072b497b2d7b2db9b469817929a94","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                          req, \u0027update_me\u0027, body\u003dbody)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_quotas_update_invalid_value_json_fromat_empty_string(self):"},{"line_number":174,"context_line":"        id \u003d \u0027update_me\u0027"},{"line_number":175,"context_line":"        expected_resp \u003d self._generate_quota_set(id\u003did)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # when PUT JSON format with empty string for quota"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_97701342","line":174,"updated":"2014-06-24 05:35:43.000000000","message":"The above id was separated from the url of line179 because of using line175, but now line175 should be removed and it is better to merge this to line 179 like the other test cases.","commit_id":"fe513604417fa80f781d27fc3f3cd6088e78634c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d9990d7cf70072b497b2d7b2db9b469817929a94","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_quotas_update_invalid_value_json_fromat_empty_string(self):"},{"line_number":174,"context_line":"        id \u003d \u0027update_me\u0027"},{"line_number":175,"context_line":"        expected_resp \u003d self._generate_quota_set(id\u003did)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # when PUT JSON format with empty string for quota"},{"line_number":178,"context_line":"        body \u003d self._generate_quota_set(ram\u003d\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_3792df58","line":175,"updated":"2014-06-24 05:35:43.000000000","message":"this expected_resp is not used now, and it is necessary to remove.","commit_id":"fe513604417fa80f781d27fc3f3cd6088e78634c"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"87850fc62e8558c56cff7aa99c3a298112126944","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_quotas_update_invalid_value_json_fromat_empty_string(self):"},{"line_number":174,"context_line":"        id \u003d \u0027update_me\u0027"},{"line_number":175,"context_line":"        expected_resp \u003d self._generate_quota_set(id\u003did)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # when PUT JSON format with empty string for quota"},{"line_number":178,"context_line":"        body \u003d self._generate_quota_set(ram\u003d\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_57fccb3f","line":175,"in_reply_to":"1ae5cdf2_3792df58","updated":"2014-06-24 05:46:15.000000000","message":"Done","commit_id":"fe513604417fa80f781d27fc3f3cd6088e78634c"}]}
