)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"aa081f865b22ee994d2deaf9088a644fc0470bc7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate value when user update quota"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cinder now doesn\u0027t check the existing reousrces when user lower the quota"},{"line_number":10,"context_line":"sets. It shouldn\u0027t allow to update the quota of this resource lower than"},{"line_number":11,"context_line":"existing number."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba3cc151_0f29ee9a","line":9,"updated":"2015-07-09 04:46:39.000000000","message":"resources","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"24d1038f09b0f821a2130a683c69420540c72ea9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate value when user update quota"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cinder now doesn\u0027t check the existing reousrces when user lower the quota"},{"line_number":10,"context_line":"sets. It shouldn\u0027t allow to update the quota of this resource lower than"},{"line_number":11,"context_line":"existing number."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba3cc151_a3b7b983","line":9,"in_reply_to":"ba3cc151_0f29ee9a","updated":"2015-07-09 07:16:26.000000000","message":"Done","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"fcb3ace3b29fe8267e027840b833135254b1e4ed","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This patch make code to validate the update value of quota and ensure the"},{"line_number":14,"context_line":"value can\u0027t be lower than existing resource."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIImpact"},{"line_number":17,"context_line":"If the update value is lower than existing resource, API will return"},{"line_number":18,"context_line":"400 Bad Request."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba3cc151_570c9ceb","line":16,"updated":"2015-07-08 11:57:45.000000000","message":"If you are adding a new option, like you are, you should mention it as well.","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"24d1038f09b0f821a2130a683c69420540c72ea9","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This patch make code to validate the update value of quota and ensure the"},{"line_number":14,"context_line":"value can\u0027t be lower than existing resource."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIImpact"},{"line_number":17,"context_line":"If the update value is lower than existing resource, API will return"},{"line_number":18,"context_line":"400 Bad Request."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba3cc151_9d9777eb","line":16,"in_reply_to":"ba3cc151_570c9ceb","updated":"2015-07-09 07:16:26.000000000","message":"Okay.","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"86d5add8da7d7fcab5d093410c55bff2c98d0390","unresolved":false,"context_lines":[{"line_number":14,"context_line":"value can\u0027t be lower than existing resource."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIImpact"},{"line_number":17,"context_line":"Add an option argument \u0027force\u0027\u003d\u0027True\u0027/\u0027False\u0027 in request body like this:"},{"line_number":18,"context_line":"{"},{"line_number":19,"context_line":"  \"quota_set\": {xxxx},"},{"line_number":20,"context_line":"  \"force\": \u0027True\u0027/\u0027False\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ba3cc151_84df110c","line":17,"updated":"2015-07-09 11:17:28.000000000","message":"This can be simplified and needs to specify default value. For example: \"Add an optional boolean argument \u0027force\u0027 with default value True.\"","commit_id":"fe37ad89736e9666949cbd6140f32e561026c662"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"55c02fc966c7b76260dd58be0d4eb53882051cd0","unresolved":false,"context_lines":[{"line_number":14,"context_line":"value can\u0027t be lower than existing resource."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIImpact"},{"line_number":17,"context_line":"Add an option argument \u0027force\u0027\u003d\u0027True\u0027/\u0027False\u0027 in request body like this:"},{"line_number":18,"context_line":"{"},{"line_number":19,"context_line":"  \"quota_set\": {xxxx},"},{"line_number":20,"context_line":"  \"force\": \u0027True\u0027/\u0027False\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ba3cc151_29a83520","line":17,"in_reply_to":"ba3cc151_84df110c","updated":"2015-07-14 09:29:25.000000000","message":"Done","commit_id":"fe37ad89736e9666949cbd6140f32e561026c662"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"86d5add8da7d7fcab5d093410c55bff2c98d0390","unresolved":false,"context_lines":[{"line_number":19,"context_line":"  \"quota_set\": {xxxx},"},{"line_number":20,"context_line":"  \"force\": \u0027True\u0027/\u0027False\u0027"},{"line_number":21,"context_line":"}"},{"line_number":22,"context_line":"If force\u003dTrue and the update value is lower than existing resource,"},{"line_number":23,"context_line":"API will return 400 Bad Request."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: I24428ce53e5d10e77235f372bb6d0b70ea672412"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ba3cc151_4497c939","line":22,"updated":"2015-07-09 11:17:28.000000000","message":"s/True/False","commit_id":"fe37ad89736e9666949cbd6140f32e561026c662"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"55c02fc966c7b76260dd58be0d4eb53882051cd0","unresolved":false,"context_lines":[{"line_number":19,"context_line":"  \"quota_set\": {xxxx},"},{"line_number":20,"context_line":"  \"force\": \u0027True\u0027/\u0027False\u0027"},{"line_number":21,"context_line":"}"},{"line_number":22,"context_line":"If force\u003dTrue and the update value is lower than existing resource,"},{"line_number":23,"context_line":"API will return 400 Bad Request."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: I24428ce53e5d10e77235f372bb6d0b70ea672412"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ba3cc151_89ab811e","line":22,"in_reply_to":"ba3cc151_4497c939","updated":"2015-07-14 09:29:25.000000000","message":"Done","commit_id":"fe37ad89736e9666949cbd6140f32e561026c662"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"892c99bd07f8d452ccf9fb16d9167db6c7aa0677","unresolved":false,"context_lines":[{"line_number":18,"context_line":"{"},{"line_number":19,"context_line":"  \"quota_set\": {xxxx},"},{"line_number":20,"context_line":"  \"force\": \u0027True\u0027/\u0027False\u0027"},{"line_number":21,"context_line":"}"},{"line_number":22,"context_line":"If force\u003dFalse and the update value is lower than existing resource,"},{"line_number":23,"context_line":"API will return 400 Bad Request."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba3cc151_eeec652b","line":21,"updated":"2015-07-10 20:25:30.000000000","message":"\"force\" is not a good name here from an API POV.  It\u0027s too vague, and \"force\" is never something that defaults to True.  It\u0027s for exceptional situations.  This should be called something like \"skip_validation\".","commit_id":"e8be06a78f3ec71836255fdf6493fbed339702f5"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"ffcf4ebee7392610986b3db9a6819acc3c62a97f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"{"},{"line_number":19,"context_line":"  \"quota_set\": {xxxx},"},{"line_number":20,"context_line":"  \"force\": \u0027True\u0027/\u0027False\u0027"},{"line_number":21,"context_line":"}"},{"line_number":22,"context_line":"If force\u003dFalse and the update value is lower than existing resource,"},{"line_number":23,"context_line":"API will return 400 Bad Request."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a41bdd9_eef9c6c9","line":21,"in_reply_to":"9a41bdd9_a458c757","updated":"2015-07-13 06:37:48.000000000","message":"\u0027skip_validation\u0027 is more appropriate to show what we want to do. I agree with you.","commit_id":"e8be06a78f3ec71836255fdf6493fbed339702f5"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"5fae9ab9c4c74112897ae831fb3ab9c26dbd0e94","unresolved":false,"context_lines":[{"line_number":18,"context_line":"{"},{"line_number":19,"context_line":"  \"quota_set\": {xxxx},"},{"line_number":20,"context_line":"  \"force\": \u0027True\u0027/\u0027False\u0027"},{"line_number":21,"context_line":"}"},{"line_number":22,"context_line":"If force\u003dFalse and the update value is lower than existing resource,"},{"line_number":23,"context_line":"API will return 400 Bad Request."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a41bdd9_a458c757","line":21,"in_reply_to":"ba3cc151_eeec652b","updated":"2015-07-13 02:12:17.000000000","message":"Agree with Eric on \u0027force is never something that defaults to True\u0027.  skip_validation is better.","commit_id":"e8be06a78f3ec71836255fdf6493fbed339702f5"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"16bd735d8b10a85aace3ca33e61db4ee9642b6cd","unresolved":false,"context_lines":[{"line_number":19,"context_line":"  \"quota_set\": {xxxx},"},{"line_number":20,"context_line":"  \"skip_validation\": \u0027True\u0027/\u0027False\u0027"},{"line_number":21,"context_line":"}"},{"line_number":22,"context_line":"If force\u003dFalse and the update value is lower than existing resource,"},{"line_number":23,"context_line":"API will return 400 Bad Request."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: I24428ce53e5d10e77235f372bb6d0b70ea672412"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a41bdd9_e1c99979","line":22,"updated":"2015-07-14 08:11:24.000000000","message":"s/force/skip_validation","commit_id":"b1ed3ccecec81cfc2d1207f57e0a52f4a3566ee4"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"17f730f57cc9ee92c8169f829ac2eea04cc64bab","unresolved":false,"context_lines":[{"line_number":19,"context_line":"  \"quota_set\": {xxxx},"},{"line_number":20,"context_line":"  \"skip_validation\": \u0027True\u0027/\u0027False\u0027"},{"line_number":21,"context_line":"}"},{"line_number":22,"context_line":"If force\u003dFalse and the update value is lower than existing resource,"},{"line_number":23,"context_line":"API will return 400 Bad Request."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: I24428ce53e5d10e77235f372bb6d0b70ea672412"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a41bdd9_ae9ff9b2","line":22,"in_reply_to":"9a41bdd9_e1c99979","updated":"2015-07-14 09:31:54.000000000","message":"Done","commit_id":"b1ed3ccecec81cfc2d1207f57e0a52f4a3566ee4"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"0faff4d70493371247474e2e31907ddb03573276","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate value when user update quota"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cinder now doesn\u0027t check the existing resource when user lower the quota"},{"line_number":10,"context_line":"sets. It should have a option action that doesn\u0027t allow to update the"},{"line_number":11,"context_line":"quota of resources lower than current usage."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa1b9901_bb94de42","line":9,"updated":"2015-08-20 13:54:48.000000000","message":"now -\u003e currently","commit_id":"23ef9f264c2db0e4f26010c412f69351c36aca21"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f024aa195a6d96e9b6c6f60a173c557cccc5680c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate value when user update quota"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cinder now doesn\u0027t check the existing resource when user lower the quota"},{"line_number":10,"context_line":"sets. It should have a option action that doesn\u0027t allow to update the"},{"line_number":11,"context_line":"quota of resources lower than current usage."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa1b9901_9702b03d","line":9,"updated":"2015-08-17 17:55:37.000000000","message":"s/lower/lowers","commit_id":"23ef9f264c2db0e4f26010c412f69351c36aca21"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f024aa195a6d96e9b6c6f60a173c557cccc5680c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Validate value when user update quota"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cinder now doesn\u0027t check the existing resource when user lower the quota"},{"line_number":10,"context_line":"sets. It should have a option action that doesn\u0027t allow to update the"},{"line_number":11,"context_line":"quota of resources lower than current usage."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch add code to validate the update value of quota and ensure the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa1b9901_379ac415","line":10,"updated":"2015-08-17 17:55:37.000000000","message":"s/a option/an optinal","commit_id":"23ef9f264c2db0e4f26010c412f69351c36aca21"},{"author":{"_account_id":15359,"name":"Erickson Filipe Guedes dos Santos","email":"erickson@lsd.ufcg.edu.br","username":"ericksonfilipe"},"change_message_id":"a9608b1fab40fc13180f705615d2c5e57d251ee0","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Validate value when user update quota"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cinder now doesn\u0027t check the existing resource when user lower the quota"},{"line_number":10,"context_line":"sets. It should have a option action that doesn\u0027t allow to update the"},{"line_number":11,"context_line":"quota of resources lower than current usage."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch add code to validate the update value of quota and ensure the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa1b9901_029dd258","line":10,"in_reply_to":"fa1b9901_379ac415","updated":"2015-08-18 13:17:50.000000000","message":"an optional","commit_id":"23ef9f264c2db0e4f26010c412f69351c36aca21"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f024aa195a6d96e9b6c6f60a173c557cccc5680c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"sets. It should have a option action that doesn\u0027t allow to update the"},{"line_number":11,"context_line":"quota of resources lower than current usage."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch add code to validate the update value of quota and ensure the"},{"line_number":14,"context_line":"value can\u0027t be lower than existing resource."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa1b9901_978950cd","line":13,"updated":"2015-08-17 17:55:37.000000000","message":"s/add/adds","commit_id":"23ef9f264c2db0e4f26010c412f69351c36aca21"}],"cinder/api/contrib/quotas.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"fcb3ace3b29fe8267e027840b833135254b1e4ed","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            msg \u003d (_(\"Missing required element quota_set in request body.\"))"},{"line_number":121,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Get the option argument \u0027force\u0027 from body, if force is True, then"},{"line_number":124,"context_line":"        # validate existing resource."},{"line_number":125,"context_line":"        force \u003d body.get(\u0027force\u0027, None)"},{"line_number":126,"context_line":"        if force is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_f714d0e9","line":123,"updated":"2015-07-08 11:57:45.000000000","message":"This is counter intuitive. Force should mean that you don\u0027t care about the new validation and you want it to be changed regardless of it going over quota, and default for force should be True.","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"24d1038f09b0f821a2130a683c69420540c72ea9","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            msg \u003d (_(\"Missing required element quota_set in request body.\"))"},{"line_number":121,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Get the option argument \u0027force\u0027 from body, if force is True, then"},{"line_number":124,"context_line":"        # validate existing resource."},{"line_number":125,"context_line":"        force \u003d body.get(\u0027force\u0027, None)"},{"line_number":126,"context_line":"        if force is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_6f6c3ad0","line":123,"in_reply_to":"ba3cc151_f714d0e9","updated":"2015-07-09 07:16:26.000000000","message":"Emm, You are right. This is a little confusion to end users.","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"fcb3ace3b29fe8267e027840b833135254b1e4ed","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Get the option argument \u0027force\u0027 from body, if force is True, then"},{"line_number":124,"context_line":"        # validate existing resource."},{"line_number":125,"context_line":"        force \u003d body.get(\u0027force\u0027, None)"},{"line_number":126,"context_line":"        if force is not None:"},{"line_number":127,"context_line":"            force \u003d strutils.bool_from_string(force)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_d7ee6cec","line":125,"updated":"2015-07-08 11:57:45.000000000","message":"This should be\n\n force \u003d body.get(\u0027force\u0027, True)","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"24d1038f09b0f821a2130a683c69420540c72ea9","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Get the option argument \u0027force\u0027 from body, if force is True, then"},{"line_number":124,"context_line":"        # validate existing resource."},{"line_number":125,"context_line":"        force \u003d body.get(\u0027force\u0027, None)"},{"line_number":126,"context_line":"        if force is not None:"},{"line_number":127,"context_line":"            force \u003d strutils.bool_from_string(force)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_cf522613","line":125,"in_reply_to":"ba3cc151_d7ee6cec","updated":"2015-07-09 07:16:26.000000000","message":"Done","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"fcb3ace3b29fe8267e027840b833135254b1e4ed","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        # validate existing resource."},{"line_number":125,"context_line":"        force \u003d body.get(\u0027force\u0027, None)"},{"line_number":126,"context_line":"        if force is not None:"},{"line_number":127,"context_line":"            force \u003d strutils.bool_from_string(force)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        bad_keys \u003d []"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_37c9d859","line":127,"updated":"2015-07-08 11:57:45.000000000","message":"These 2 lines should be:\n\n if not utils.is_valid_boolstr(force):                 \n     msg \u003d _(\"Invalid value \u0027%s\u0027 for force. \") % force \n     raise exception.InvalidParameterValue(err\u003dmsg)\n\n force \u003d strutils.bool_from_string(force)","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"24d1038f09b0f821a2130a683c69420540c72ea9","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        # validate existing resource."},{"line_number":125,"context_line":"        force \u003d body.get(\u0027force\u0027, None)"},{"line_number":126,"context_line":"        if force is not None:"},{"line_number":127,"context_line":"            force \u003d strutils.bool_from_string(force)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        bad_keys \u003d []"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ef328af1","line":127,"in_reply_to":"ba3cc151_37c9d859","updated":"2015-07-09 07:16:26.000000000","message":"Sure.","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"fcb3ace3b29fe8267e027840b833135254b1e4ed","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                continue"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"            value \u003d self._validate_quota_limit(body[\u0027quota_set\u0027][key])"},{"line_number":154,"context_line":"            if force:"},{"line_number":155,"context_line":"                self._validate_existing_resource(key, value, quota_values)"},{"line_number":156,"context_line":"            valid_quotas[key] \u003d value"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_977a24f0","line":154,"updated":"2015-07-08 11:57:45.000000000","message":"And we should change this as well:\n\n if not force:","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"24d1038f09b0f821a2130a683c69420540c72ea9","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                continue"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"            value \u003d self._validate_quota_limit(body[\u0027quota_set\u0027][key])"},{"line_number":154,"context_line":"            if force:"},{"line_number":155,"context_line":"                self._validate_existing_resource(key, value, quota_values)"},{"line_number":156,"context_line":"            valid_quotas[key] \u003d value"},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_8f6f3ec3","line":154,"in_reply_to":"ba3cc151_977a24f0","updated":"2015-07-09 07:16:26.000000000","message":"Done","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"86d5add8da7d7fcab5d093410c55bff2c98d0390","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        # validate existing resource."},{"line_number":125,"context_line":"        force \u003d body.get(\u0027force\u0027, True)"},{"line_number":126,"context_line":"        if not utils.is_valid_boolstr(force):"},{"line_number":127,"context_line":"            msg \u003d _(\"Invalid value \u0027%s\u0027 for force. \") % force"},{"line_number":128,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":129,"context_line":"        force \u003d strutils.bool_from_string(force)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_e4193dd2","line":127,"updated":"2015-07-09 11:17:28.000000000","message":"I don\u0027t know why I added that extra space at the end of the message :-(","commit_id":"fe37ad89736e9666949cbd6140f32e561026c662"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"55c02fc966c7b76260dd58be0d4eb53882051cd0","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        # validate existing resource."},{"line_number":125,"context_line":"        force \u003d body.get(\u0027force\u0027, True)"},{"line_number":126,"context_line":"        if not utils.is_valid_boolstr(force):"},{"line_number":127,"context_line":"            msg \u003d _(\"Invalid value \u0027%s\u0027 for force. \") % force"},{"line_number":128,"context_line":"            raise exception.InvalidParameterValue(err\u003dmsg)"},{"line_number":129,"context_line":"        force \u003d strutils.bool_from_string(force)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba3cc151_4953393a","line":127,"in_reply_to":"ba3cc151_e4193dd2","updated":"2015-07-14 09:29:25.000000000","message":":) Didn\u0027t notice this at all.","commit_id":"fe37ad89736e9666949cbd6140f32e561026c662"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"16bd735d8b10a85aace3ca33e61db4ee9642b6cd","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        project_id \u003d id"},{"line_number":121,"context_line":"        self.assert_valid_body(body, \u0027quota_set\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Get the option argument \u0027force\u0027 from body, if force is False, then"},{"line_number":124,"context_line":"        # validate existing resource."},{"line_number":125,"context_line":"        skip_flag \u003d body.get(\u0027skip_validation\u0027, True)"},{"line_number":126,"context_line":"        if not utils.is_valid_boolstr(skip_flag):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_61b109e1","line":123,"updated":"2015-07-14 08:11:24.000000000","message":"s/force/skip_validation","commit_id":"b1ed3ccecec81cfc2d1207f57e0a52f4a3566ee4"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"17f730f57cc9ee92c8169f829ac2eea04cc64bab","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        project_id \u003d id"},{"line_number":121,"context_line":"        self.assert_valid_body(body, \u0027quota_set\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Get the option argument \u0027force\u0027 from body, if force is False, then"},{"line_number":124,"context_line":"        # validate existing resource."},{"line_number":125,"context_line":"        skip_flag \u003d body.get(\u0027skip_validation\u0027, True)"},{"line_number":126,"context_line":"        if not utils.is_valid_boolstr(skip_flag):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_0e9865bf","line":123,"in_reply_to":"9a41bdd9_61b109e1","updated":"2015-07-14 09:31:54.000000000","message":"Done","commit_id":"b1ed3ccecec81cfc2d1207f57e0a52f4a3566ee4"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"85cf26996e650c03cb1fe4a214e11ab86d712a53","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        project_id \u003d id"},{"line_number":121,"context_line":"        self.assert_valid_body(body, \u0027quota_set\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Get the option argument \u0027skip_validation\u0027 from body,"},{"line_number":124,"context_line":"        # if skip_validation is False, then validate existing resource."},{"line_number":125,"context_line":"        skip_flag \u003d body.get(\u0027skip_validation\u0027, True)"},{"line_number":126,"context_line":"        if not utils.is_valid_boolstr(skip_flag):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_2e51a962","line":123,"updated":"2015-07-14 09:44:07.000000000","message":"\u0027option\u0027 -\u003e \u0027optional\u0027","commit_id":"dc3120f644ac38fcf6a05252d015b7279fd17a5f"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"35129587937647bdc3abed48cb401a50070178c2","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        project_id \u003d id"},{"line_number":121,"context_line":"        self.assert_valid_body(body, \u0027quota_set\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Get the option argument \u0027skip_validation\u0027 from body,"},{"line_number":124,"context_line":"        # if skip_validation is False, then validate existing resource."},{"line_number":125,"context_line":"        skip_flag \u003d body.get(\u0027skip_validation\u0027, True)"},{"line_number":126,"context_line":"        if not utils.is_valid_boolstr(skip_flag):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_8e647049","line":123,"in_reply_to":"9a41bdd9_2e51a962","updated":"2015-07-14 12:34:18.000000000","message":"Done","commit_id":"dc3120f644ac38fcf6a05252d015b7279fd17a5f"}],"cinder/tests/unit/api/contrib/test_quotas.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"fcb3ace3b29fe8267e027840b833135254b1e4ed","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,"},{"line_number":160,"context_line":"                          self.req, \u0027foo\u0027, body)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def test_update_lower_than_existing_resources_when_force_false(self):"},{"line_number":163,"context_line":"        # Create simple quota and quota usage."},{"line_number":164,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":165,"context_line":"        res \u003d test_db_api._quota_reserve(ctxt, \u0027foo\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_174134a9","line":162,"updated":"2015-07-08 11:57:45.000000000","message":"I like these tests, but they should be changed to match a logical meaning of force and we should add a new test method where you don\u0027t define force and it takes default  value.","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"24d1038f09b0f821a2130a683c69420540c72ea9","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,"},{"line_number":160,"context_line":"                          self.req, \u0027foo\u0027, body)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    def test_update_lower_than_existing_resources_when_force_false(self):"},{"line_number":163,"context_line":"        # Create simple quota and quota usage."},{"line_number":164,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":165,"context_line":"        res \u003d test_db_api._quota_reserve(ctxt, \u0027foo\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_0f66ceba","line":162,"in_reply_to":"ba3cc151_174134a9","updated":"2015-07-09 07:16:26.000000000","message":"I have considered this case in this test, at line#178. But I agree with you it should be splitted to another test.","commit_id":"6f99a630a65b082758dc54d051dc72b7f7a69a9a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"16bd735d8b10a85aace3ca33e61db4ee9642b6cd","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        self.assertEqual(expected,"},{"line_number":152,"context_line":"                         db.quota_usage_get_all_by_project(ctxt, \u0027foo\u0027))"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def test_update_lower_than_existing_resources_when_force_false(self):"},{"line_number":155,"context_line":"        self._commit_quota_reservation()"},{"line_number":156,"context_line":"        body \u003d {\u0027quota_set\u0027: {\u0027volumes\u0027: 0},"},{"line_number":157,"context_line":"                \u0027skip_validation\u0027: \u0027false\u0027}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_4179652e","line":154,"updated":"2015-07-14 08:11:24.000000000","message":"s/force/skip","commit_id":"b1ed3ccecec81cfc2d1207f57e0a52f4a3566ee4"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"17f730f57cc9ee92c8169f829ac2eea04cc64bab","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        self.assertEqual(expected,"},{"line_number":152,"context_line":"                         db.quota_usage_get_all_by_project(ctxt, \u0027foo\u0027))"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def test_update_lower_than_existing_resources_when_force_false(self):"},{"line_number":155,"context_line":"        self._commit_quota_reservation()"},{"line_number":156,"context_line":"        body \u003d {\u0027quota_set\u0027: {\u0027volumes\u0027: 0},"},{"line_number":157,"context_line":"                \u0027skip_validation\u0027: \u0027false\u0027}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_cebfddf9","line":154,"in_reply_to":"9a41bdd9_4179652e","updated":"2015-07-14 09:31:54.000000000","message":"Done","commit_id":"b1ed3ccecec81cfc2d1207f57e0a52f4a3566ee4"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"16bd735d8b10a85aace3ca33e61db4ee9642b6cd","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,"},{"line_number":163,"context_line":"                          self.req, \u0027foo\u0027, body)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def test_update_lower_than_existing_resources_when_force_true(self):"},{"line_number":166,"context_line":"        self._commit_quota_reservation()"},{"line_number":167,"context_line":"        body \u003d {\u0027quota_set\u0027: {\u0027volumes\u0027: 0},"},{"line_number":168,"context_line":"                \u0027skip_validation\u0027: \u0027true\u0027}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_01735d4e","line":165,"updated":"2015-07-14 08:11:24.000000000","message":"s/force/skip","commit_id":"b1ed3ccecec81cfc2d1207f57e0a52f4a3566ee4"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"17f730f57cc9ee92c8169f829ac2eea04cc64bab","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        self.assertRaises(webob.exc.HTTPBadRequest, self.controller.update,"},{"line_number":163,"context_line":"                          self.req, \u0027foo\u0027, body)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def test_update_lower_than_existing_resources_when_force_true(self):"},{"line_number":166,"context_line":"        self._commit_quota_reservation()"},{"line_number":167,"context_line":"        body \u003d {\u0027quota_set\u0027: {\u0027volumes\u0027: 0},"},{"line_number":168,"context_line":"                \u0027skip_validation\u0027: \u0027true\u0027}"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_8e38f5a1","line":165,"in_reply_to":"9a41bdd9_01735d4e","updated":"2015-07-14 09:31:54.000000000","message":"Done","commit_id":"b1ed3ccecec81cfc2d1207f57e0a52f4a3566ee4"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"16bd735d8b10a85aace3ca33e61db4ee9642b6cd","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        self.assertEqual(body[\u0027quota_set\u0027][\u0027volumes\u0027],"},{"line_number":171,"context_line":"                         result[\u0027quota_set\u0027][\u0027volumes\u0027])"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_update_lower_than_existing_resources_without_force_argument(self):"},{"line_number":174,"context_line":"        self._commit_quota_reservation()"},{"line_number":175,"context_line":"        body \u003d {\u0027quota_set\u0027: {\u0027volumes\u0027: 0}}"},{"line_number":176,"context_line":"        result \u003d self.controller.update(self.req, \u0027foo\u0027, body)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_c193354e","line":173,"updated":"2015-07-14 08:11:24.000000000","message":"s/force/skip","commit_id":"b1ed3ccecec81cfc2d1207f57e0a52f4a3566ee4"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"17f730f57cc9ee92c8169f829ac2eea04cc64bab","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        self.assertEqual(body[\u0027quota_set\u0027][\u0027volumes\u0027],"},{"line_number":171,"context_line":"                         result[\u0027quota_set\u0027][\u0027volumes\u0027])"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_update_lower_than_existing_resources_without_force_argument(self):"},{"line_number":174,"context_line":"        self._commit_quota_reservation()"},{"line_number":175,"context_line":"        body \u003d {\u0027quota_set\u0027: {\u0027volumes\u0027: 0}}"},{"line_number":176,"context_line":"        result \u003d self.controller.update(self.req, \u0027foo\u0027, body)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a41bdd9_4e42ed11","line":173,"in_reply_to":"9a41bdd9_c193354e","updated":"2015-07-14 09:31:54.000000000","message":"Done","commit_id":"b1ed3ccecec81cfc2d1207f57e0a52f4a3566ee4"}]}
