)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"80db24ee0745cb1b9731eabae41c36bd6c4cea17","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sheel Rana \u003cranasheel2000@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-02-10 20:40:42 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Api-microversions patch for bug #1535749"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently cinder treats all non zero values passed"},{"line_number":10,"context_line":"to it as True for bootable filter in volume GET call."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a57f1b5_367a9df2","line":7,"updated":"2016-02-10 20:43:06.000000000","message":"Please put a summary in this line of what the patch does rather than referencing a bug number.","commit_id":"c7d2eda50ab6e8408d31fdf8700aab895a2157ea"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"09444f4d89827427905f697796818e61e2fff744","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sheel Rana \u003cranasheel2000@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-02-10 20:40:42 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Api-microversions patch for bug #1535749"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently cinder treats all non zero values passed"},{"line_number":10,"context_line":"to it as True for bootable filter in volume GET call."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a57f1b5_29b7a2d9","line":7,"in_reply_to":"3a57f1b5_367a9df2","updated":"2016-02-10 20:59:33.000000000","message":"Done","commit_id":"c7d2eda50ab6e8408d31fdf8700aab895a2157ea"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"1188af5e22bf5d99ab0363dc9e7501e9cf8406b6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sheel Rana \u003cranasheel2000@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-02-29 14:06:22 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added Bootable filter for cinder list command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is microversion patch for bug #1535749."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9aed3d3a_0b702adb","line":7,"updated":"2016-03-01 00:08:44.000000000","message":"You\u0027ve actually already merged a fix for the original bug. There should be a new bug with something like:\nBootable filter patch should use microversions","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fcf2290452e86ef03576ff6a19e40fa712fbbe79","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sheel Rana \u003cranasheel2000@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-02-29 14:06:22 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added Bootable filter for cinder list command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is microversion patch for bug #1535749."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9aed3d3a_33d63bf1","line":7,"in_reply_to":"9aed3d3a_0b702adb","updated":"2016-03-01 05:06:48.000000000","message":"Separate bug created for this...\nhttps://bugs.launchpad.net/cinder/+bug/1551535","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"1188af5e22bf5d99ab0363dc9e7501e9cf8406b6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added Bootable filter for cinder list command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is microversion patch for bug #1535749."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Currently cinder treats all non zero values passed to it"},{"line_number":12,"context_line":"as True for bootable filter in volume GET call."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9aed3d3a_eb198689","line":9,"updated":"2016-03-01 00:08:44.000000000","message":"You should probably explain that your original patch would break the API, because it will now return a previously valid request into an error. (This should be in the bug, or better, this is the bug you are trying to fix with this patch.","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fcf2290452e86ef03576ff6a19e40fa712fbbe79","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added Bootable filter for cinder list command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is microversion patch for bug #1535749."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Currently cinder treats all non zero values passed to it"},{"line_number":12,"context_line":"as True for bootable filter in volume GET call."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9aed3d3a_93074781","line":9,"in_reply_to":"9aed3d3a_eb198689","updated":"2016-03-01 05:06:48.000000000","message":"Done","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"4209b1f7609cf184519b06225676fc4083e313a0","unresolved":false,"context_lines":[{"line_number":18,"context_line":"But as this will change the API behavior, microversioning is done"},{"line_number":19,"context_line":"for this fix."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Closes-Bug: #1535749"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Depends-On: Ic90f4a13cfad601a181fd3a91684ecbb2b2fba74"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"5aef4532_f9528edc","line":21,"updated":"2016-03-07 21:17:09.000000000","message":"should be new bug #1551535","commit_id":"6f10e0e7be40921d33fce00a35b08ae9debb9e1e"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"177e43c6ee059562247e2bc9c6b6c2ab7e75e811","unresolved":false,"context_lines":[{"line_number":18,"context_line":"But as this will change the API behavior, microversioning is done"},{"line_number":19,"context_line":"for this fix."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Closes-Bug: #1535749"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Depends-On: Ic90f4a13cfad601a181fd3a91684ecbb2b2fba74"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"5aef4532_282d9e46","line":21,"in_reply_to":"5aef4532_f9528edc","updated":"2016-03-08 12:37:35.000000000","message":"Done","commit_id":"6f10e0e7be40921d33fce00a35b08ae9debb9e1e"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"6d792e330ca03eac572a351f42c503679938dcfd","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Closes-Bug: #1551535"},{"line_number":22,"context_line":"Closes-Bug: #1552076"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Depends-On: Ic90f4a13cfad601a181fd3a91684ecbb2b2fba74"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: Idd57014c1504eb4fc9ea0eabe894d2000ea9c364"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"1af94dfe_bc5e1810","line":24,"updated":"2016-03-16 13:45:05.000000000","message":"This has been merged in, so it is no longer a dependency. You should rebase your patch to make sure you pick up the changes properly.","commit_id":"99e19d7f20688b064064db0162a4c62225235ac5"}],"cinder/api/openstack/api_version_request.py":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"1188af5e22bf5d99ab0363dc9e7501e9cf8406b6","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    * 3.0 - Includes all V2 APIs and extensions. V1 API is still supported."},{"line_number":48,"context_line":"    * 3.0 - Versions API updated to reflect beginning of microversions epoch."},{"line_number":49,"context_line":"    * 3.1 - Based on V3.0 with updated API behavior over 3.0 API."},{"line_number":50,"context_line":"    * 3.1 - First micro version to reflect updated API behavior."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"9aed3d3a_c738f6d5","line":49,"updated":"2016-03-01 00:08:44.000000000","message":"You just need one line here, with the subject of your bug. i.e.\n3.1 Bootable filters no longer all treated as true","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fcf2290452e86ef03576ff6a19e40fa712fbbe79","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    * 3.0 - Includes all V2 APIs and extensions. V1 API is still supported."},{"line_number":48,"context_line":"    * 3.0 - Versions API updated to reflect beginning of microversions epoch."},{"line_number":49,"context_line":"    * 3.1 - Based on V3.0 with updated API behavior over 3.0 API."},{"line_number":50,"context_line":"    * 3.1 - First micro version to reflect updated API behavior."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"9aed3d3a_f3f6938d","line":49,"in_reply_to":"9aed3d3a_c738f6d5","updated":"2016-03-01 05:06:48.000000000","message":"Done","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"1188af5e22bf5d99ab0363dc9e7501e9cf8406b6","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    * 3.0 - Includes all V2 APIs and extensions. V1 API is still supported."},{"line_number":48,"context_line":"    * 3.0 - Versions API updated to reflect beginning of microversions epoch."},{"line_number":49,"context_line":"    * 3.1 - Based on V3.0 with updated API behavior over 3.0 API."},{"line_number":50,"context_line":"    * 3.1 - First micro version to reflect updated API behavior."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"\"\"\""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9aed3d3a_273442dc","line":50,"updated":"2016-03-01 00:08:44.000000000","message":"remove this","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fcf2290452e86ef03576ff6a19e40fa712fbbe79","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    * 3.0 - Includes all V2 APIs and extensions. V1 API is still supported."},{"line_number":48,"context_line":"    * 3.0 - Versions API updated to reflect beginning of microversions epoch."},{"line_number":49,"context_line":"    * 3.1 - Based on V3.0 with updated API behavior over 3.0 API."},{"line_number":50,"context_line":"    * 3.1 - First micro version to reflect updated API behavior."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"\"\"\""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9aed3d3a_b3008b67","line":50,"in_reply_to":"9aed3d3a_273442dc","updated":"2016-03-01 05:06:48.000000000","message":"Done","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"7bcaa0973f88b411df941fa71bf5d66f093544fc","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        if self.is_null():"},{"line_number":147,"context_line":"            raise ValueError"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        if isinstance(min_version, str):"},{"line_number":150,"context_line":"            min_version \u003d APIVersionRequest(version_string\u003dmin_version)"},{"line_number":151,"context_line":"        if isinstance(max_version, str):"}],"source_content_type":"text/x-python","patch_set":19,"id":"5aef4532_c87d1ab3","line":148,"updated":"2016-03-08 12:48:47.000000000","message":"Sorry I missed this earlier, but you should have this patch as a dependency. You should not replicate the code here. This should be removed.","commit_id":"6e2d2d1b93ace6a576837509c7362f3303866c44"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"ccfe23e6c9342b87f25d5d5668d40f930ed23286","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        if self.is_null():"},{"line_number":147,"context_line":"            raise ValueError"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        if isinstance(min_version, str):"},{"line_number":150,"context_line":"            min_version \u003d APIVersionRequest(version_string\u003dmin_version)"},{"line_number":151,"context_line":"        if isinstance(max_version, str):"}],"source_content_type":"text/x-python","patch_set":19,"id":"5aef4532_637d08b1","line":148,"in_reply_to":"5aef4532_c87d1ab3","updated":"2016-03-08 13:38:58.000000000","message":"Done","commit_id":"6e2d2d1b93ace6a576837509c7362f3303866c44"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"8533f983e7823a28b9aa96241398f565ea5167e5","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    * 3.0 - Includes all V2 APIs and extensions. V1 API is still supported."},{"line_number":48,"context_line":"    * 3.0 - Versions API updated to reflect beginning of microversions epoch."},{"line_number":49,"context_line":"    * 3.1 - Bootable filters in volume GET call no longer treates all values"},{"line_number":50,"context_line":"            passed to it as true."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"3afc51ec_4e847fd3","line":49,"range":{"start_line":49,"start_character":58,"end_line":49,"end_character":65},"updated":"2016-03-14 07:40:43.000000000","message":"treats","commit_id":"1a7965d684a4e4307f134647e9fc1e8ff6fb80c4"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"8565aa0cac8861a9a4d866b007228a6c12876015","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    * 3.0 - Includes all V2 APIs and extensions. V1 API is still supported."},{"line_number":48,"context_line":"    * 3.0 - Versions API updated to reflect beginning of microversions epoch."},{"line_number":49,"context_line":"    * 3.1 - Bootable filters in volume GET call no longer treates all values"},{"line_number":50,"context_line":"            passed to it as true."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"3afc51ec_1489e126","line":49,"range":{"start_line":49,"start_character":58,"end_line":49,"end_character":65},"in_reply_to":"3afc51ec_4e847fd3","updated":"2016-03-14 09:35:54.000000000","message":"Done","commit_id":"1a7965d684a4e4307f134647e9fc1e8ff6fb80c4"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8bd12148acbc50b9a4cb61cef37f0647e7e218e5","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    * 3.0 - Includes all V2 APIs and extensions. V1 API is still supported."},{"line_number":48,"context_line":"    * 3.0 - Versions API updated to reflect beginning of microversions epoch."},{"line_number":49,"context_line":"    * 3.1 - Adds visibility and protected to _volume_upload_image parameters."},{"line_number":50,"context_line":"    * 3.1 - Bootable filters in volume GET call no longer treats all values"},{"line_number":51,"context_line":"            passed to it as true."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":32,"id":"9a061dce_505a122b","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":75},"updated":"2016-04-06 10:14:12.000000000","message":"Should we introduce v3.2 here?","commit_id":"037f91633ae73045c55d6546743e1eaf3f024d2d"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"77b21c6fa3e261ceff7570a5c6b0c05721c62a63","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    * 3.0 - Includes all V2 APIs and extensions. V1 API is still supported."},{"line_number":48,"context_line":"    * 3.0 - Versions API updated to reflect beginning of microversions epoch."},{"line_number":49,"context_line":"    * 3.1 - Adds visibility and protected to _volume_upload_image parameters."},{"line_number":50,"context_line":"    * 3.1 - Bootable filters in volume GET call no longer treats all values"},{"line_number":51,"context_line":"            passed to it as true."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":32,"id":"9a061dce_399bb019","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":75},"in_reply_to":"9a061dce_2c4570b2","updated":"2016-04-07 15:52:45.000000000","message":"oops..\n\nSorry, I have updated..","commit_id":"037f91633ae73045c55d6546743e1eaf3f024d2d"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"f3dba095f4d1bab2d41e3c81abc07a583c28289c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    * 3.0 - Includes all V2 APIs and extensions. V1 API is still supported."},{"line_number":48,"context_line":"    * 3.0 - Versions API updated to reflect beginning of microversions epoch."},{"line_number":49,"context_line":"    * 3.1 - Adds visibility and protected to _volume_upload_image parameters."},{"line_number":50,"context_line":"    * 3.1 - Bootable filters in volume GET call no longer treats all values"},{"line_number":51,"context_line":"            passed to it as true."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":32,"id":"9a061dce_2c4570b2","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":75},"in_reply_to":"9a061dce_505a122b","updated":"2016-04-06 16:55:15.000000000","message":"It should be 3.1 only.\nIs there any specific reason behind using 3.2?","commit_id":"037f91633ae73045c55d6546743e1eaf3f024d2d"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    * 3.0 - Includes all V2 APIs and extensions. V1 API is still supported."},{"line_number":48,"context_line":"    * 3.0 - Versions API updated to reflect beginning of microversions epoch."},{"line_number":49,"context_line":"    * 3.1 - Adds visibility and protected to _volume_upload_image parameters."},{"line_number":50,"context_line":"    * 3.1 - Bootable filters in volume GET call no longer treats all values"},{"line_number":51,"context_line":"            passed to it as true."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_0350ffd2","line":50,"updated":"2016-04-07 15:30:02.000000000","message":"this should be 3.2","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    * 3.0 - Includes all V2 APIs and extensions. V1 API is still supported."},{"line_number":48,"context_line":"    * 3.0 - Versions API updated to reflect beginning of microversions epoch."},{"line_number":49,"context_line":"    * 3.1 - Adds visibility and protected to _volume_upload_image parameters."},{"line_number":50,"context_line":"    * 3.1 - Bootable filters in volume GET call no longer treats all values"},{"line_number":51,"context_line":"            passed to it as true."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_59f1446a","line":50,"in_reply_to":"9a061dce_0350ffd2","updated":"2016-04-07 15:53:23.000000000","message":"Done","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"# the minimum version of the API supported."},{"line_number":58,"context_line":"# Explicitly using /v1 or /v2 enpoints will still work"},{"line_number":59,"context_line":"_MIN_API_VERSION \u003d \"3.0\""},{"line_number":60,"context_line":"_MAX_API_VERSION \u003d \"3.1\""},{"line_number":61,"context_line":"_LEGACY_API_VERSION1 \u003d \"1.0\""},{"line_number":62,"context_line":"_LEGACY_API_VERSION2 \u003d \"2.0\""},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_03675fb7","line":60,"updated":"2016-04-07 15:30:02.000000000","message":"needs a bump to 3.2","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":57,"context_line":"# the minimum version of the API supported."},{"line_number":58,"context_line":"# Explicitly using /v1 or /v2 enpoints will still work"},{"line_number":59,"context_line":"_MIN_API_VERSION \u003d \"3.0\""},{"line_number":60,"context_line":"_MAX_API_VERSION \u003d \"3.1\""},{"line_number":61,"context_line":"_LEGACY_API_VERSION1 \u003d \"1.0\""},{"line_number":62,"context_line":"_LEGACY_API_VERSION2 \u003d \"2.0\""},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_39f45059","line":60,"in_reply_to":"9a061dce_03675fb7","updated":"2016-04-07 15:53:23.000000000","message":"Done","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"}],"cinder/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"1188af5e22bf5d99ab0363dc9e7501e9cf8406b6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  3.0 and later versions and their respective /v3 endpoints."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  All other 3.0 APIs are functionally identical to version 2.0."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"3.1"},{"line_number":33,"context_line":"---"},{"line_number":34,"context_line":"  The 3.1 Cinder API is based on V3.0 core APIs, some of the API will have"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aed3d3a_8759ce37","line":31,"updated":"2016-03-01 00:08:44.000000000","message":"This history should be specific for your patch. The only thing changing in api version 3.1 is your change, so the history should reflect that. i.e., 3.1 changes for bootable filter no longer treating everything as true...","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"1188af5e22bf5d99ab0363dc9e7501e9cf8406b6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  3.0 and later versions and their respective /v3 endpoints."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  All other 3.0 APIs are functionally identical to version 2.0."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"3.1"},{"line_number":33,"context_line":"---"},{"line_number":34,"context_line":"  The 3.1 Cinder API is based on V3.0 core APIs, some of the API will have"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aed3d3a_c73f56b2","line":31,"updated":"2016-03-01 00:08:44.000000000","message":"This history should be specific for your patch. The only thing changing in api version 3.1 is your change, so the history should reflect that. i.e., 3.1 changes for bootable filter no longer treating everything as true...","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"1188af5e22bf5d99ab0363dc9e7501e9cf8406b6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  3.0 and later versions and their respective /v3 endpoints."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  All other 3.0 APIs are functionally identical to version 2.0."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"3.1"},{"line_number":33,"context_line":"---"},{"line_number":34,"context_line":"  The 3.1 Cinder API is based on V3.0 core APIs, some of the API will have"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aed3d3a_47a186f7","line":31,"updated":"2016-03-01 00:08:44.000000000","message":"This history should be specific to your patch. It should have what has changed in the cinder API for version 3.1, which is that bootable filter no longer returns true for everything, or whatever is specific for your change.","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fcf2290452e86ef03576ff6a19e40fa712fbbe79","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  3.0 and later versions and their respective /v3 endpoints."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  All other 3.0 APIs are functionally identical to version 2.0."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"3.1"},{"line_number":33,"context_line":"---"},{"line_number":34,"context_line":"  The 3.1 Cinder API is based on V3.0 core APIs, some of the API will have"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aed3d3a_331bdbcb","line":31,"in_reply_to":"9aed3d3a_47a186f7","updated":"2016-03-01 05:06:48.000000000","message":"Only changes are kept, all other details are removed..\nI tried to limit the required details, but if you still find it lengthy, let me know.","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fcf2290452e86ef03576ff6a19e40fa712fbbe79","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  3.0 and later versions and their respective /v3 endpoints."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  All other 3.0 APIs are functionally identical to version 2.0."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"3.1"},{"line_number":33,"context_line":"---"},{"line_number":34,"context_line":"  The 3.1 Cinder API is based on V3.0 core APIs, some of the API will have"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aed3d3a_b3852bd0","line":31,"in_reply_to":"9aed3d3a_8759ce37","updated":"2016-03-01 05:06:48.000000000","message":"I think same comment as above.. :)","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fcf2290452e86ef03576ff6a19e40fa712fbbe79","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  3.0 and later versions and their respective /v3 endpoints."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"  All other 3.0 APIs are functionally identical to version 2.0."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"3.1"},{"line_number":33,"context_line":"---"},{"line_number":34,"context_line":"  The 3.1 Cinder API is based on V3.0 core APIs, some of the API will have"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9aed3d3a_d3826fc7","line":31,"in_reply_to":"9aed3d3a_c73f56b2","updated":"2016-03-01 05:06:48.000000000","message":"I think same comment as above.. :)","commit_id":"e3c4dc1e0b961eaa2a718bb5407406dd3581b2ce"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  Added the parameters ``protected`` and ``visibility`` to"},{"line_number":35,"context_line":"  _volume_upload_image requests."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  Change in return value of \u0027GET API request\u0027 for fetching cinder volume"},{"line_number":38,"context_line":"  list on the basis of \u0027bootable\u0027 status of volume as filter."},{"line_number":39,"context_line":"  Before V3.1, \u0027GET API request\u0027 to fetch volume list returns non-bootable"},{"line_number":40,"context_line":"  volumes if bootable filter value is any of the false or False."}],"source_content_type":"text/x-rst","patch_set":33,"id":"9a061dce_83ad2f9d","line":37,"updated":"2016-04-07 15:30:02.000000000","message":"You have a new microversion. We bump every time, so add header for 3.2 here.","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":34,"context_line":"  Added the parameters ``protected`` and ``visibility`` to"},{"line_number":35,"context_line":"  _volume_upload_image requests."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"  Change in return value of \u0027GET API request\u0027 for fetching cinder volume"},{"line_number":38,"context_line":"  list on the basis of \u0027bootable\u0027 status of volume as filter."},{"line_number":39,"context_line":"  Before V3.1, \u0027GET API request\u0027 to fetch volume list returns non-bootable"},{"line_number":40,"context_line":"  volumes if bootable filter value is any of the false or False."}],"source_content_type":"text/x-rst","patch_set":33,"id":"9a061dce_3e50b631","line":37,"in_reply_to":"9a061dce_83ad2f9d","updated":"2016-04-07 15:53:23.000000000","message":"Done","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"}],"cinder/api/v2/volumes.py":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"4cb185d4f0c60dda4cfa5ade04a1157db53f8038","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        if req_version.matches(\"3.1\"):"},{"line_number":246,"context_line":"            self.volume_api.check_volume_filters_micro_version(filters)"},{"line_number":247,"context_line":"        else:"},{"line_number":248,"context_line":"            self.volume_api.check_volume_filters(filters)"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_133f73d7","line":246,"range":{"start_line":246,"start_character":28,"end_line":246,"end_character":62},"updated":"2016-02-10 20:29:36.000000000","message":"I\u0027d suggest you call it \u0027strict\u0027 or similar rather than micro_version, since over time we\u0027re going to have lots of things with microversions.","commit_id":"37d21a1c550c786f0fc534073d6c26bcaecb3762"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"d25ab987c8f5f129343b2379d23a9ca39682a234","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        if req_version.matches(\"3.1\"):"},{"line_number":246,"context_line":"            self.volume_api.check_volume_filters_micro_version(filters)"},{"line_number":247,"context_line":"        else:"},{"line_number":248,"context_line":"            self.volume_api.check_volume_filters(filters)"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_b66e8d2d","line":246,"range":{"start_line":246,"start_character":28,"end_line":246,"end_character":62},"in_reply_to":"3a57f1b5_133f73d7","updated":"2016-02-10 20:43:51.000000000","message":"Done","commit_id":"37d21a1c550c786f0fc534073d6c26bcaecb3762"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"772c7bff29a21900f744134fda24816412996afd","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        if req_version.matches(\"3.1\"):"},{"line_number":246,"context_line":"            self.volume_api.check_volume_filters_strict(filters)"},{"line_number":247,"context_line":"        else:"},{"line_number":248,"context_line":"            self.volume_api.check_volume_filters(filters)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a57f1b5_0ce194fe","line":245,"updated":"2016-02-10 21:20:22.000000000","message":"probably better to just have:\nif req.api_version_request.matches(\"3.1\"):\n\nif not, we\u0027ll have tons of things like L#243 all over the code.","commit_id":"1bd2f61aebf217f33044293381eabae3ed61f63b"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"7089d2b2b67b1714cc9060c3b26895077a42625a","unresolved":false,"context_lines":[{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        req_version \u003d req.api_version_request"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        if req_version.matches(\"3.1\"):"},{"line_number":246,"context_line":"            self.volume_api.check_volume_filters_strict(filters)"},{"line_number":247,"context_line":"        else:"},{"line_number":248,"context_line":"            self.volume_api.check_volume_filters(filters)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a57f1b5_4923c1a7","line":245,"in_reply_to":"3a57f1b5_0ce194fe","updated":"2016-02-11 18:29:59.000000000","message":"Done","commit_id":"1bd2f61aebf217f33044293381eabae3ed61f63b"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            filters[\u0027display_name\u0027] \u003d filters[\u0027name\u0027]"},{"line_number":230,"context_line":"            del filters[\u0027name\u0027]"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        if req.api_version_request.matches(\"3.1\", None):"},{"line_number":233,"context_line":"            self.volume_api.check_volume_filters(filters, \"3.1\")"},{"line_number":234,"context_line":"        else:"},{"line_number":235,"context_line":"            self.volume_api.check_volume_filters(filters)"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_63929b4d","line":232,"updated":"2016-04-07 15:30:02.000000000","message":"Bump to 3.2","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            filters[\u0027display_name\u0027] \u003d filters[\u0027name\u0027]"},{"line_number":230,"context_line":"            del filters[\u0027name\u0027]"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        if req.api_version_request.matches(\"3.1\", None):"},{"line_number":233,"context_line":"            self.volume_api.check_volume_filters(filters, \"3.1\")"},{"line_number":234,"context_line":"        else:"},{"line_number":235,"context_line":"            self.volume_api.check_volume_filters(filters)"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_59eca429","line":232,"in_reply_to":"9a061dce_63929b4d","updated":"2016-04-07 15:53:23.000000000","message":"Done","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        except exc.HTTPConflict:"},{"line_number":288,"context_line":"            raise"},{"line_number":289,"context_line":"        except Exception:"},{"line_number":290,"context_line":"            # Pass the other exception and let default not found error"},{"line_number":291,"context_line":"            # handling take care of it"},{"line_number":292,"context_line":"            pass"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_43f4b759","line":290,"updated":"2016-04-07 15:30:02.000000000","message":"I think adding \"the other exception\" is confusing, since it implies that you are passing and exception, instead of \"pass\" to do nothing. Just my opinion...","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        except exc.HTTPConflict:"},{"line_number":288,"context_line":"            raise"},{"line_number":289,"context_line":"        except Exception:"},{"line_number":290,"context_line":"            # Pass the other exception and let default not found error"},{"line_number":291,"context_line":"            # handling take care of it"},{"line_number":292,"context_line":"            pass"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_396450b7","line":290,"in_reply_to":"9a061dce_43f4b759","updated":"2016-04-07 15:53:23.000000000","message":"this code is not related to this patch.. :)","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"6ea8d56032795bb7dcac3ef79cf34ca301fe1cf5","unresolved":false,"context_lines":[{"line_number":230,"context_line":"            del filters[\u0027name\u0027]"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        if req.api_version_request.matches(\"3.2\", None):"},{"line_number":233,"context_line":"            self.volume_api.check_volume_filters(filters, \"3.2\")"},{"line_number":234,"context_line":"        else:"},{"line_number":235,"context_line":"            self.volume_api.check_volume_filters(filters)"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"1a122d0e_0930b09d","line":233,"updated":"2016-04-18 13:11:40.000000000","message":"It would be less confusing if you passed a boolean here. Sending a specific version makes it look like that particular version matters, which it doesn\u0027t.","commit_id":"201c804b12f4024b60484dc4c23620675619e388"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"a34861bfeda79533e5bf9ddda64b22537bf1a83f","unresolved":false,"context_lines":[{"line_number":230,"context_line":"            del filters[\u0027name\u0027]"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        if req.api_version_request.matches(\"3.2\", None):"},{"line_number":233,"context_line":"            self.volume_api.check_volume_filters(filters, \"3.2\")"},{"line_number":234,"context_line":"        else:"},{"line_number":235,"context_line":"            self.volume_api.check_volume_filters(filters)"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":35,"id":"1a122d0e_6f267acf","line":233,"in_reply_to":"1a122d0e_0930b09d","updated":"2016-04-18 16:36:03.000000000","message":"Done","commit_id":"201c804b12f4024b60484dc4c23620675619e388"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"94c33cb6b201055252f2ad8c96739e60a9493bab","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        strict \u003d False"},{"line_number":233,"context_line":"        if req.api_version_request.matches(\"3.2\", None):"},{"line_number":234,"context_line":"            strict \u003d True"},{"line_number":235,"context_line":"        self.volume_api.check_volume_filters(filters, strict)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        volumes \u003d self.volume_api.get_all(context, marker, limit,"}],"source_content_type":"text/x-python","patch_set":39,"id":"1a122d0e_71ca781c","line":234,"updated":"2016-04-20 12:21:59.000000000","message":"-1: Please just do:\n\n strict \u003d req.api_version_request.matches(\"3.2\", None)","commit_id":"c7972bf9d0a4286d7f94bfc7bf85035f16e48f45"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"38835148e4709d4f69749d90b20031577e3a5a46","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        strict \u003d False"},{"line_number":233,"context_line":"        if req.api_version_request.matches(\"3.2\", None):"},{"line_number":234,"context_line":"            strict \u003d True"},{"line_number":235,"context_line":"        self.volume_api.check_volume_filters(filters, strict)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        volumes \u003d self.volume_api.get_all(context, marker, limit,"}],"source_content_type":"text/x-python","patch_set":39,"id":"1a122d0e_80153c9d","line":234,"in_reply_to":"1a122d0e_71ca781c","updated":"2016-04-20 13:34:17.000000000","message":"Ouch, you\u0027re right.","commit_id":"c7972bf9d0a4286d7f94bfc7bf85035f16e48f45"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"07dad11e7e6ef7b9265b489809dba4407ea837e9","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        strict \u003d False"},{"line_number":233,"context_line":"        if req.api_version_request.matches(\"3.2\", None):"},{"line_number":234,"context_line":"            strict \u003d True"},{"line_number":235,"context_line":"        self.volume_api.check_volume_filters(filters, strict)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        volumes \u003d self.volume_api.get_all(context, marker, limit,"}],"source_content_type":"text/x-python","patch_set":39,"id":"1a122d0e_f4db117a","line":234,"in_reply_to":"1a122d0e_80153c9d","updated":"2016-04-20 13:43:17.000000000","message":"Yep its good to do, I am updating it..\n\njust on lighter note, what about below :)\n\nself.volume_api.check_volume_filters(filters, req.api_version_request.matches(\"3.2\", None))","commit_id":"c7972bf9d0a4286d7f94bfc7bf85035f16e48f45"}],"cinder/api/v3/volumes.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"c0292c9ed8e4ac2aa1f00c72a59fa670ff73a6b3","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from cinder import utils"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class VolumeController(volumes_v2.VolumeController, wsgi.Controller):"},{"line_number":25,"context_line":"    \"\"\"The Volumes API controller for the OpenStack API V3.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self, ext_mgr):"}],"source_content_type":"text/x-python","patch_set":41,"id":"1a122d0e_3d856559","line":24,"range":{"start_line":24,"start_character":50,"end_line":24,"end_character":67},"updated":"2016-04-20 15:34:22.000000000","message":"I don\u0027t think you should derive from both. Isn\u0027t VolumeController already including wsgi.Controller?","commit_id":"d2affd35ff9e0458697c3bc7eb9cf71beb7005ec"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"b1ae6607fff38a364b3cb1573b078ca05ff16eef","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from cinder import utils"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class VolumeController(volumes_v2.VolumeController, wsgi.Controller):"},{"line_number":25,"context_line":"    \"\"\"The Volumes API controller for the OpenStack API V3.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self, ext_mgr):"}],"source_content_type":"text/x-python","patch_set":41,"id":"1a122d0e_c0d1ea24","line":24,"range":{"start_line":24,"start_character":50,"end_line":24,"end_character":67},"in_reply_to":"1a122d0e_3d856559","updated":"2016-04-20 15:48:17.000000000","message":"Done","commit_id":"d2affd35ff9e0458697c3bc7eb9cf71beb7005ec"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"c0292c9ed8e4ac2aa1f00c72a59fa670ff73a6b3","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class VolumeController(volumes_v2.VolumeController, wsgi.Controller):"},{"line_number":25,"context_line":"    \"\"\"The Volumes API controller for the OpenStack API V3.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self, ext_mgr):"},{"line_number":28,"context_line":"        super(VolumeController, self).__init__(volumes_v2.VolumeController)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def _get_volumes(self, req, is_detail):"},{"line_number":31,"context_line":"        \"\"\"Returns a list of volumes, transformed through view builder.\"\"\""}],"source_content_type":"text/x-python","patch_set":41,"id":"1a122d0e_9d94798b","line":28,"range":{"start_line":27,"start_character":0,"end_line":28,"end_character":75},"updated":"2016-04-20 15:34:22.000000000","message":"I don\u0027t think this is required.","commit_id":"d2affd35ff9e0458697c3bc7eb9cf71beb7005ec"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"b1ae6607fff38a364b3cb1573b078ca05ff16eef","unresolved":false,"context_lines":[{"line_number":24,"context_line":"class VolumeController(volumes_v2.VolumeController, wsgi.Controller):"},{"line_number":25,"context_line":"    \"\"\"The Volumes API controller for the OpenStack API V3.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self, ext_mgr):"},{"line_number":28,"context_line":"        super(VolumeController, self).__init__(volumes_v2.VolumeController)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def _get_volumes(self, req, is_detail):"},{"line_number":31,"context_line":"        \"\"\"Returns a list of volumes, transformed through view builder.\"\"\""}],"source_content_type":"text/x-python","patch_set":41,"id":"1a122d0e_20a7febd","line":28,"range":{"start_line":27,"start_character":0,"end_line":28,"end_character":75},"in_reply_to":"1a122d0e_9d94798b","updated":"2016-04-20 15:48:17.000000000","message":"Done","commit_id":"d2affd35ff9e0458697c3bc7eb9cf71beb7005ec"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"43d5d1b405f79159752c318736319ab247e664fd","unresolved":false,"context_lines":[{"line_number":22,"context_line":"class VolumeController(volumes_v2.VolumeController):"},{"line_number":23,"context_line":"    \"\"\"The Volumes API controller for the OpenStack API V3.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def _get_volumes(self, req, is_detail):"},{"line_number":26,"context_line":"        \"\"\"Returns a list of volumes, transformed through view builder.\"\"\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"}],"source_content_type":"text/x-python","patch_set":44,"id":"1a122d0e_30cc4888","line":25,"updated":"2016-04-21 08:31:01.000000000","message":"opinion: This could reuse more of base class code by changing v2 _get_volume to accept optional argument strict that defaulted to False and here would just have done:\n\n strict \u003d req.api_version_request.matches(\"3.2\", None)\n return super(VolumeController, self)._get_volumes(req, is_detail, strict)\n\nBut I also see the value in completely detaching v3 code from v2 on behavior departure.","commit_id":"01da8fcf418d3175173e3496d667478bb6324fc4"}],"cinder/tests/unit/api/test_versions.py":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"ec40ed6919ded4873bfb9630e9f9eda062163ace","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        self.assertEqual(\u0027\u0027, version_list[0].get(\u0027min_version\u0027))"},{"line_number":130,"context_line":"        self.assertEqual(\u0027\u0027, version_list[0].get(\u0027version\u0027))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @ddt.data(\u00273.0\u0027, \u0027latest\u0027)"},{"line_number":133,"context_line":"    def test_versions_v3_0_and_latest(self, version):"},{"line_number":134,"context_line":"        req \u003d self.build_request(header_version\u003dversion)"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_e783feca","line":132,"updated":"2016-03-21 18:13:29.000000000","message":"This should be changed to: \n@ddt.data(\u00273.1\u0027, \u0027latest\u0027)","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"e15ecbdca762bb20c4501698879c5dff29da77c4","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        self.assertEqual(\u0027\u0027, version_list[0].get(\u0027min_version\u0027))"},{"line_number":130,"context_line":"        self.assertEqual(\u0027\u0027, version_list[0].get(\u0027version\u0027))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @ddt.data(\u00273.0\u0027, \u0027latest\u0027)"},{"line_number":133,"context_line":"    def test_versions_v3_0_and_latest(self, version):"},{"line_number":134,"context_line":"        req \u003d self.build_request(header_version\u003dversion)"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"ba0121b8_e8c26333","line":132,"in_reply_to":"fa0719c6_e1829f51","updated":"2016-03-30 15:09:48.000000000","message":"I think the way to change this is:\nhttps://review.openstack.org/#/c/230617/40/cinder/tests/unit/api/test_versions.py","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"2ec14ada765c17391b7c21e7eb21952fcf022bb6","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        self.assertEqual(\u0027\u0027, version_list[0].get(\u0027min_version\u0027))"},{"line_number":130,"context_line":"        self.assertEqual(\u0027\u0027, version_list[0].get(\u0027version\u0027))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @ddt.data(\u00273.0\u0027, \u0027latest\u0027)"},{"line_number":133,"context_line":"    def test_versions_v3_0_and_latest(self, version):"},{"line_number":134,"context_line":"        req \u003d self.build_request(header_version\u003dversion)"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_e1829f51","line":132,"in_reply_to":"fa0719c6_e783feca","updated":"2016-03-22 14:42:36.000000000","message":"Its ok, but what about 3.0 test?\nMay be I have to add test for test_version_v3 as well, what you say?","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"ec40ed6919ded4873bfb9630e9f9eda062163ace","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        self.assertEqual(\u0027\u0027, version_list[0].get(\u0027version\u0027))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @ddt.data(\u00273.0\u0027, \u0027latest\u0027)"},{"line_number":133,"context_line":"    def test_versions_v3_0_and_latest(self, version):"},{"line_number":134,"context_line":"        req \u003d self.build_request(header_version\u003dversion)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        response \u003d req.get_response(router.APIRouter())"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_c7887aea","line":133,"updated":"2016-03-21 18:13:29.000000000","message":"I\u0027d like to keep a test that checks to see if the highest microversion is the same as _MAX_API_VERSION.\nThis test should be renamed:\ntest_versions_MAX_API_VERSION and latest.","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"e15ecbdca762bb20c4501698879c5dff29da77c4","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        self.assertEqual(\u0027\u0027, version_list[0].get(\u0027version\u0027))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @ddt.data(\u00273.0\u0027, \u0027latest\u0027)"},{"line_number":133,"context_line":"    def test_versions_v3_0_and_latest(self, version):"},{"line_number":134,"context_line":"        req \u003d self.build_request(header_version\u003dversion)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        response \u003d req.get_response(router.APIRouter())"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba0121b8_c8d67ff0","line":133,"in_reply_to":"fa0719c6_c185db59","updated":"2016-03-30 15:09:48.000000000","message":"Sorry about the churn. I think you can just change this to latest:\nI think the way to change this is:\nhttps://review.openstack.org/#/c/230617/40/cinder/tests/unit/api/test_versions.py","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"2ec14ada765c17391b7c21e7eb21952fcf022bb6","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        self.assertEqual(\u0027\u0027, version_list[0].get(\u0027version\u0027))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @ddt.data(\u00273.0\u0027, \u0027latest\u0027)"},{"line_number":133,"context_line":"    def test_versions_v3_0_and_latest(self, version):"},{"line_number":134,"context_line":"        req \u003d self.build_request(header_version\u003dversion)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        response \u003d req.get_response(router.APIRouter())"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_c185db59","line":133,"in_reply_to":"fa0719c6_c7887aea","updated":"2016-03-22 14:42:36.000000000","message":"Done","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"ec40ed6919ded4873bfb9630e9f9eda062163ace","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        version_list \u003d body[\u0027versions\u0027]"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        ids \u003d [v[\u0027id\u0027] for v in version_list]"},{"line_number":142,"context_line":"        self.assertEqual({\u0027v3.0\u0027}, set(ids))"},{"line_number":143,"context_line":"        if version \u003d\u003d \u0027latest\u0027:"},{"line_number":144,"context_line":"            self.check_response(response,"},{"line_number":145,"context_line":"                                api_version_request._MAX_API_VERSION)"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_076b921f","line":142,"updated":"2016-03-21 18:13:29.000000000","message":"change to {\u0027v3.1\u0027}","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"787af1cd163ed5ab8bf7ef62d2a0ad654d975027","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        version_list \u003d body[\u0027versions\u0027]"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        ids \u003d [v[\u0027id\u0027] for v in version_list]"},{"line_number":142,"context_line":"        self.assertEqual({\u0027v3.0\u0027}, set(ids))"},{"line_number":143,"context_line":"        if version \u003d\u003d \u0027latest\u0027:"},{"line_number":144,"context_line":"            self.check_response(response,"},{"line_number":145,"context_line":"                                api_version_request._MAX_API_VERSION)"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba0121b8_b16a597f","line":142,"in_reply_to":"ba0121b8_4801cf69","updated":"2016-03-31 15:20:02.000000000","message":"Please let me know if I need to make changes for ids?\nIn case you want me to implement as above, it compares ids for 3.1 and latest which lead to test case failure.\nI was asking same thing on IRC, may be i am able to clear my question here..","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"2ec14ada765c17391b7c21e7eb21952fcf022bb6","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        version_list \u003d body[\u0027versions\u0027]"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        ids \u003d [v[\u0027id\u0027] for v in version_list]"},{"line_number":142,"context_line":"        self.assertEqual({\u0027v3.0\u0027}, set(ids))"},{"line_number":143,"context_line":"        if version \u003d\u003d \u0027latest\u0027:"},{"line_number":144,"context_line":"            self.check_response(response,"},{"line_number":145,"context_line":"                                api_version_request._MAX_API_VERSION)"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_217db76e","line":142,"in_reply_to":"fa0719c6_076b921f","updated":"2016-03-22 14:42:36.000000000","message":"Done","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"e15ecbdca762bb20c4501698879c5dff29da77c4","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        version_list \u003d body[\u0027versions\u0027]"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        ids \u003d [v[\u0027id\u0027] for v in version_list]"},{"line_number":142,"context_line":"        self.assertEqual({\u0027v3.0\u0027}, set(ids))"},{"line_number":143,"context_line":"        if version \u003d\u003d \u0027latest\u0027:"},{"line_number":144,"context_line":"            self.check_response(response,"},{"line_number":145,"context_line":"                                api_version_request._MAX_API_VERSION)"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba0121b8_4801cf69","line":142,"in_reply_to":"fa0719c6_217db76e","updated":"2016-03-30 15:09:48.000000000","message":"see above","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"ec40ed6919ded4873bfb9630e9f9eda062163ace","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            self.check_response(response,"},{"line_number":145,"context_line":"                                api_version_request._MAX_API_VERSION)"},{"line_number":146,"context_line":"        else:"},{"line_number":147,"context_line":"            self.check_response(response, \u00273.0\u0027)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        self.assertEqual(api_version_request._MAX_API_VERSION,"},{"line_number":150,"context_line":"                         version_list[0].get(\u0027version\u0027))"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_47e3caa3","line":147,"updated":"2016-03-21 18:13:29.000000000","message":"Remove your changes and change \u00273.0\u0027 to \u00273.1\u0027","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"e15ecbdca762bb20c4501698879c5dff29da77c4","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            self.check_response(response,"},{"line_number":145,"context_line":"                                api_version_request._MAX_API_VERSION)"},{"line_number":146,"context_line":"        else:"},{"line_number":147,"context_line":"            self.check_response(response, \u00273.0\u0027)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        self.assertEqual(api_version_request._MAX_API_VERSION,"},{"line_number":150,"context_line":"                         version_list[0].get(\u0027version\u0027))"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba0121b8_c8eddfb8","line":147,"in_reply_to":"fa0719c6_01807345","updated":"2016-03-30 15:09:48.000000000","message":"see above","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"2ec14ada765c17391b7c21e7eb21952fcf022bb6","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            self.check_response(response,"},{"line_number":145,"context_line":"                                api_version_request._MAX_API_VERSION)"},{"line_number":146,"context_line":"        else:"},{"line_number":147,"context_line":"            self.check_response(response, \u00273.0\u0027)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        self.assertEqual(api_version_request._MAX_API_VERSION,"},{"line_number":150,"context_line":"                         version_list[0].get(\u0027version\u0027))"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_01807345","line":147,"in_reply_to":"fa0719c6_47e3caa3","updated":"2016-03-22 14:42:36.000000000","message":"Done","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"}],"cinder/tests/unit/api/v3/test_volumes.py":[{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"e7cfbe61ffbeb84ba7d43e138f57667585ae4f39","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"            self.controller.index(req)"},{"line_number":53,"context_line":"            filters \u003d req.params.copy()"},{"line_number":54,"context_line":"            strict \u003d False"},{"line_number":55,"context_line":"            volume_get.assert_called_with(filters, strict)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_check_volume_filters_microversion_called(self):"}],"source_content_type":"text/x-python","patch_set":44,"id":"1a122d0e_f5ff6263","line":54,"range":{"start_line":54,"start_character":11,"end_line":54,"end_character":26},"updated":"2016-04-21 08:16:12.000000000","message":"Why not consistent with line 71?","commit_id":"01da8fcf418d3175173e3496d667478bb6324fc4"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"634cdb198d723f9a92d4c8498ae0529f91b53592","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"            self.controller.index(req)"},{"line_number":53,"context_line":"            filters \u003d req.params.copy()"},{"line_number":54,"context_line":"            strict \u003d False"},{"line_number":55,"context_line":"            volume_get.assert_called_with(filters, strict)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_check_volume_filters_microversion_called(self):"}],"source_content_type":"text/x-python","patch_set":44,"id":"1a122d0e_3011d15e","line":54,"range":{"start_line":54,"start_character":11,"end_line":54,"end_character":26},"in_reply_to":"1a122d0e_b0a698be","updated":"2016-04-21 15:18:51.000000000","message":"Done","commit_id":"01da8fcf418d3175173e3496d667478bb6324fc4"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"43d5d1b405f79159752c318736319ab247e664fd","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"            self.controller.index(req)"},{"line_number":53,"context_line":"            filters \u003d req.params.copy()"},{"line_number":54,"context_line":"            strict \u003d False"},{"line_number":55,"context_line":"            volume_get.assert_called_with(filters, strict)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def test_check_volume_filters_microversion_called(self):"}],"source_content_type":"text/x-python","patch_set":44,"id":"1a122d0e_b0a698be","line":54,"range":{"start_line":54,"start_character":11,"end_line":54,"end_character":26},"in_reply_to":"1a122d0e_f5ff6263","updated":"2016-04-21 08:31:01.000000000","message":"nit: +1","commit_id":"01da8fcf418d3175173e3496d667478bb6324fc4"}],"cinder/tests/unit/test_volume.py":[{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"4209b1f7609cf184519b06225676fc4083e313a0","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    cfg.StrOpt(\u0027fake_opt1\u0027, default\u003d\u0027fake\u0027, help\u003d\u0027fake opts\u0027)"},{"line_number":90,"context_line":"]"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"version_header_name \u003d \u0027OpenStack-Volume-microversion\u0027"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def create_snapshot(volume_id, size\u003d1, metadata\u003dNone, ctxt\u003dNone,"},{"line_number":95,"context_line":"                    **kwargs):"}],"source_content_type":"text/x-python","patch_set":17,"id":"5aef4532_d9e7d210","line":92,"updated":"2016-03-07 21:17:09.000000000","message":"Sorry, but the header changed with the merge of:\nhttps://review.openstack.org/#/c/286901/\nto now be:\nOpenStack-API-Version","commit_id":"6f10e0e7be40921d33fce00a35b08ae9debb9e1e"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"177e43c6ee059562247e2bc9c6b6c2ab7e75e811","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    cfg.StrOpt(\u0027fake_opt1\u0027, default\u003d\u0027fake\u0027, help\u003d\u0027fake opts\u0027)"},{"line_number":90,"context_line":"]"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"version_header_name \u003d \u0027OpenStack-Volume-microversion\u0027"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"def create_snapshot(volume_id, size\u003d1, metadata\u003dNone, ctxt\u003dNone,"},{"line_number":95,"context_line":"                    **kwargs):"}],"source_content_type":"text/x-python","patch_set":17,"id":"5aef4532_a8fa4ebb","line":92,"in_reply_to":"5aef4532_d9e7d210","updated":"2016-03-08 12:37:35.000000000","message":"Done","commit_id":"6f10e0e7be40921d33fce00a35b08ae9debb9e1e"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"4209b1f7609cf184519b06225676fc4083e313a0","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                          base_url\u003d\u0027http://localhost/v3\u0027)"},{"line_number":303,"context_line":"            req.method \u003d \u0027GET\u0027"},{"line_number":304,"context_line":"            req.content_type \u003d \u0027application/json\u0027"},{"line_number":305,"context_line":"            req.headers \u003d {version_header_name: \u00273.0\u0027}"},{"line_number":306,"context_line":"            response \u003d self.controller.index(req)"},{"line_number":307,"context_line":"            self.assertTrue(volume_get.called)"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"5aef4532_79b03ef5","line":305,"updated":"2016-03-07 21:17:09.000000000","message":"The value passed to the (new) version_header_name is now:\nvolume \u003cversion\u003e\nas seen in:\nhttps://review.openstack.org/#/c/286901","commit_id":"6f10e0e7be40921d33fce00a35b08ae9debb9e1e"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"177e43c6ee059562247e2bc9c6b6c2ab7e75e811","unresolved":false,"context_lines":[{"line_number":302,"context_line":"                                          base_url\u003d\u0027http://localhost/v3\u0027)"},{"line_number":303,"context_line":"            req.method \u003d \u0027GET\u0027"},{"line_number":304,"context_line":"            req.content_type \u003d \u0027application/json\u0027"},{"line_number":305,"context_line":"            req.headers \u003d {version_header_name: \u00273.0\u0027}"},{"line_number":306,"context_line":"            response \u003d self.controller.index(req)"},{"line_number":307,"context_line":"            self.assertTrue(volume_get.called)"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"5aef4532_e80456c1","line":305,"in_reply_to":"5aef4532_79b03ef5","updated":"2016-03-08 12:37:35.000000000","message":"Done","commit_id":"6f10e0e7be40921d33fce00a35b08ae9debb9e1e"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"8533f983e7823a28b9aa96241398f565ea5167e5","unresolved":false,"context_lines":[{"line_number":358,"context_line":"        self.expected_status \u003d \u0027available\u0027"},{"line_number":359,"context_line":"        self.controller \u003d volumes.VolumeController(\u0027VolumeActions\u0027)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def test_check_volume_filters(self):"},{"line_number":362,"context_line":"        with mock.patch.object(vol_get,"},{"line_number":363,"context_line":"                               \u0027check_volume_filters\u0027) as volume_get:"},{"line_number":364,"context_line":"            req \u003d fakes.HTTPRequest.blank(\u0027/fake/volumes\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"3afc51ec_6e85fbab","line":361,"updated":"2016-03-14 07:40:43.000000000","message":"Can we have a different name for this method because it is not testing check_volume_filters?","commit_id":"1a7965d684a4e4307f134647e9fc1e8ff6fb80c4"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"8565aa0cac8861a9a4d866b007228a6c12876015","unresolved":false,"context_lines":[{"line_number":358,"context_line":"        self.expected_status \u003d \u0027available\u0027"},{"line_number":359,"context_line":"        self.controller \u003d volumes.VolumeController(\u0027VolumeActions\u0027)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    def test_check_volume_filters(self):"},{"line_number":362,"context_line":"        with mock.patch.object(vol_get,"},{"line_number":363,"context_line":"                               \u0027check_volume_filters\u0027) as volume_get:"},{"line_number":364,"context_line":"            req \u003d fakes.HTTPRequest.blank(\u0027/fake/volumes\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"3afc51ec_74cae56f","line":361,"in_reply_to":"3afc51ec_6e85fbab","updated":"2016-03-14 09:35:54.000000000","message":"Done","commit_id":"1a7965d684a4e4307f134647e9fc1e8ff6fb80c4"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"8533f983e7823a28b9aa96241398f565ea5167e5","unresolved":false,"context_lines":[{"line_number":4238,"context_line":"        volume_api.check_volume_filters_strict(filters)"},{"line_number":4239,"context_line":""},{"line_number":4240,"context_line":"        # Confirming converted filter value against True"},{"line_number":4241,"context_line":"        self.assertEqual(filters[\u0027bootable\u0027], True)"},{"line_number":4242,"context_line":""},{"line_number":4243,"context_line":"    def test_check_volume_filters_strict_false(self):"},{"line_number":4244,"context_line":"        \"\"\"Test bootable as filter for false.\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"3afc51ec_ae542321","line":4241,"updated":"2016-03-14 07:40:43.000000000","message":"The order is expected, observed. We can also use assertTrue.","commit_id":"1a7965d684a4e4307f134647e9fc1e8ff6fb80c4"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"8565aa0cac8861a9a4d866b007228a6c12876015","unresolved":false,"context_lines":[{"line_number":4238,"context_line":"        volume_api.check_volume_filters_strict(filters)"},{"line_number":4239,"context_line":""},{"line_number":4240,"context_line":"        # Confirming converted filter value against True"},{"line_number":4241,"context_line":"        self.assertEqual(filters[\u0027bootable\u0027], True)"},{"line_number":4242,"context_line":""},{"line_number":4243,"context_line":"    def test_check_volume_filters_strict_false(self):"},{"line_number":4244,"context_line":"        \"\"\"Test bootable as filter for false.\"\"\""}],"source_content_type":"text/x-python","patch_set":25,"id":"3afc51ec_14a281ae","line":4241,"in_reply_to":"3afc51ec_ae542321","updated":"2016-03-14 09:35:54.000000000","message":"Done","commit_id":"1a7965d684a4e4307f134647e9fc1e8ff6fb80c4"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"8533f983e7823a28b9aa96241398f565ea5167e5","unresolved":false,"context_lines":[{"line_number":4251,"context_line":"        # Confirming converted filter value against False"},{"line_number":4252,"context_line":"        self.assertEqual(filters[\u0027bootable\u0027], False)"},{"line_number":4253,"context_line":""},{"line_number":4254,"context_line":"    def test_check_volume_filters_strict_0(self):"},{"line_number":4255,"context_line":"        \"\"\"Test bootable as filter for 0.\"\"\""},{"line_number":4256,"context_line":"        volume_api \u003d cinder.volume.api.API()"},{"line_number":4257,"context_line":"        filters \u003d {\u0027bootable\u0027: \u00270\u0027}"}],"source_content_type":"text/x-python","patch_set":25,"id":"3afc51ec_a919bd7b","line":4254,"updated":"2016-03-14 07:40:43.000000000","message":"We can combine the false and true value test cases into two cases using ddt.\n\n@ddt.data(\u0027False\u0027, \u0027false\u0027, \u0027f\u0027, \u00270\u0027, )\ndef test_check_volume_filters_strict_false(self, filter_value):\n        volume_api \u003d cinder.volume.api.API()\n        filters \u003d {\u0027bootable\u0027: filter_value}\n\n        volume_api.check_volume_filters_strict(filters)\n\n        self.assertFalse(filters[\u0027bootable\u0027])","commit_id":"1a7965d684a4e4307f134647e9fc1e8ff6fb80c4"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"8565aa0cac8861a9a4d866b007228a6c12876015","unresolved":false,"context_lines":[{"line_number":4251,"context_line":"        # Confirming converted filter value against False"},{"line_number":4252,"context_line":"        self.assertEqual(filters[\u0027bootable\u0027], False)"},{"line_number":4253,"context_line":""},{"line_number":4254,"context_line":"    def test_check_volume_filters_strict_0(self):"},{"line_number":4255,"context_line":"        \"\"\"Test bootable as filter for 0.\"\"\""},{"line_number":4256,"context_line":"        volume_api \u003d cinder.volume.api.API()"},{"line_number":4257,"context_line":"        filters \u003d {\u0027bootable\u0027: \u00270\u0027}"}],"source_content_type":"text/x-python","patch_set":25,"id":"3afc51ec_74914552","line":4254,"in_reply_to":"3afc51ec_a919bd7b","updated":"2016-03-14 09:35:54.000000000","message":"Good suggestion.\nDone.","commit_id":"1a7965d684a4e4307f134647e9fc1e8ff6fb80c4"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f8714987a1afaacf2d5c5e7dcb5716631db7f781","unresolved":false,"context_lines":[{"line_number":4207,"context_line":"        volume_api.check_volume_filters(filters)"},{"line_number":4208,"context_line":""},{"line_number":4209,"context_line":"        # Confirming converted filter value against True"},{"line_number":4210,"context_line":"        if filter_value is \u0027True\u0027:"},{"line_number":4211,"context_line":"            self.assertTrue(filters[\u0027bootable\u0027])"},{"line_number":4212,"context_line":"        else:"},{"line_number":4213,"context_line":"            self.assertFalse(filters[\u0027bootable\u0027])"}],"source_content_type":"text/x-python","patch_set":29,"id":"1af94dfe_7f22c202","line":4210,"updated":"2016-03-16 13:55:20.000000000","message":"This should just be an assertTrue(filter_value \u003d\u003d filters[\u0027bootable\u0027]) or similar rather than if/else.","commit_id":"fed49dcef77ceb1237d03416c18f5e135f0ff5ee"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"12cfef3747c511967d70faab9a50ff8341111116","unresolved":false,"context_lines":[{"line_number":4207,"context_line":"        volume_api.check_volume_filters(filters)"},{"line_number":4208,"context_line":""},{"line_number":4209,"context_line":"        # Confirming converted filter value against True"},{"line_number":4210,"context_line":"        if filter_value is \u0027True\u0027:"},{"line_number":4211,"context_line":"            self.assertTrue(filters[\u0027bootable\u0027])"},{"line_number":4212,"context_line":"        else:"},{"line_number":4213,"context_line":"            self.assertFalse(filters[\u0027bootable\u0027])"}],"source_content_type":"text/x-python","patch_set":29,"id":"1af94dfe_1ad9ff83","line":4210,"in_reply_to":"1af94dfe_0b425b10","updated":"2016-03-16 16:50:23.000000000","message":"ok, got it. \nThank you!!","commit_id":"fed49dcef77ceb1237d03416c18f5e135f0ff5ee"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"9aff48937018299dde055b2d367635258eac9f01","unresolved":false,"context_lines":[{"line_number":4207,"context_line":"        volume_api.check_volume_filters(filters)"},{"line_number":4208,"context_line":""},{"line_number":4209,"context_line":"        # Confirming converted filter value against True"},{"line_number":4210,"context_line":"        if filter_value is \u0027True\u0027:"},{"line_number":4211,"context_line":"            self.assertTrue(filters[\u0027bootable\u0027])"},{"line_number":4212,"context_line":"        else:"},{"line_number":4213,"context_line":"            self.assertFalse(filters[\u0027bootable\u0027])"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa0719c6_cb2f07a0","line":4210,"in_reply_to":"1af94dfe_1ad9ff83","updated":"2016-03-21 09:07:04.000000000","message":"Done","commit_id":"fed49dcef77ceb1237d03416c18f5e135f0ff5ee"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"01db581d11ac9b4fbbff68c435e5a312b51e0f6e","unresolved":false,"context_lines":[{"line_number":4207,"context_line":"        volume_api.check_volume_filters(filters)"},{"line_number":4208,"context_line":""},{"line_number":4209,"context_line":"        # Confirming converted filter value against True"},{"line_number":4210,"context_line":"        if filter_value is \u0027True\u0027:"},{"line_number":4211,"context_line":"            self.assertTrue(filters[\u0027bootable\u0027])"},{"line_number":4212,"context_line":"        else:"},{"line_number":4213,"context_line":"            self.assertFalse(filters[\u0027bootable\u0027])"}],"source_content_type":"text/x-python","patch_set":29,"id":"1af94dfe_0b425b10","line":4210,"in_reply_to":"1af94dfe_751ca313","updated":"2016-03-16 15:51:43.000000000","message":"I think Eric is pointing out that it can be the a single statement for either case by switching it to his suggestion. That might be cleaner and feels better than having conditional assertions in the unit test code.","commit_id":"fed49dcef77ceb1237d03416c18f5e135f0ff5ee"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"56efa37daa2b8f5c966fd4acd2a5c6e9c03d738a","unresolved":false,"context_lines":[{"line_number":4207,"context_line":"        volume_api.check_volume_filters(filters)"},{"line_number":4208,"context_line":""},{"line_number":4209,"context_line":"        # Confirming converted filter value against True"},{"line_number":4210,"context_line":"        if filter_value is \u0027True\u0027:"},{"line_number":4211,"context_line":"            self.assertTrue(filters[\u0027bootable\u0027])"},{"line_number":4212,"context_line":"        else:"},{"line_number":4213,"context_line":"            self.assertFalse(filters[\u0027bootable\u0027])"}],"source_content_type":"text/x-python","patch_set":29,"id":"1af94dfe_751ca313","line":4210,"in_reply_to":"1af94dfe_7f22c202","updated":"2016-03-16 14:20:14.000000000","message":"I had to implement \"if else\" to handle both True and False value inputs in one testcase.\n\nThere would be some point in it, but I am confused why this \"if else\" is wrong here. :)","commit_id":"fed49dcef77ceb1237d03416c18f5e135f0ff5ee"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6a2f84ed7721d1614f41abd31ed0eb41f3640f56","unresolved":false,"context_lines":[{"line_number":4207,"context_line":"        volume_api.check_volume_filters(filters)"},{"line_number":4208,"context_line":""},{"line_number":4209,"context_line":"        # Confirming converted filter value against True or False"},{"line_number":4210,"context_line":"        assertTrue(filter_value \u003d\u003d filters[\u0027bootable\u0027])"},{"line_number":4211,"context_line":""},{"line_number":4212,"context_line":"    def test_check_volume_filters_invalid(self):"},{"line_number":4213,"context_line":"        \"\"\"Test bootable as filter\"\"\""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_0e6270ad","line":4210,"updated":"2016-03-22 10:38:26.000000000","message":"I guess you\u0027re missing \"self.\" before \"assertTrue\".","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"2ec14ada765c17391b7c21e7eb21952fcf022bb6","unresolved":false,"context_lines":[{"line_number":4207,"context_line":"        volume_api.check_volume_filters(filters)"},{"line_number":4208,"context_line":""},{"line_number":4209,"context_line":"        # Confirming converted filter value against True or False"},{"line_number":4210,"context_line":"        assertTrue(filter_value \u003d\u003d filters[\u0027bootable\u0027])"},{"line_number":4211,"context_line":""},{"line_number":4212,"context_line":"    def test_check_volume_filters_invalid(self):"},{"line_number":4213,"context_line":"        \"\"\"Test bootable as filter\"\"\""}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_e1261fb9","line":4210,"in_reply_to":"fa0719c6_0e6270ad","updated":"2016-03-22 14:42:36.000000000","message":"whoops..\nyep, Jenkins showed Red card(-1) for this...\n\nI will update in next patchset.\nThanks!!","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":386,"context_line":"            req \u003d fakes.HTTPRequest.blank(\u0027/v3/volumes?bootable\u003dTrue\u0027)"},{"line_number":387,"context_line":"            req.method \u003d \u0027GET\u0027"},{"line_number":388,"context_line":"            req.content_type \u003d \u0027application/json\u0027"},{"line_number":389,"context_line":"            req.headers \u003d {version_header_name: \u0027volume 3.1\u0027}"},{"line_number":390,"context_line":"            self.override_config(\u0027query_volume_filters\u0027, \u0027bootable\u0027)"},{"line_number":391,"context_line":"            req.environ[\u0027cinder.context\u0027].is_admin \u003d True"},{"line_number":392,"context_line":"            req.api_version_request \u003d api_version.max_api_version()"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_8346cf78","line":389,"updated":"2016-04-07 15:30:02.000000000","message":"bump to 3.2","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":386,"context_line":"            req \u003d fakes.HTTPRequest.blank(\u0027/v3/volumes?bootable\u003dTrue\u0027)"},{"line_number":387,"context_line":"            req.method \u003d \u0027GET\u0027"},{"line_number":388,"context_line":"            req.content_type \u003d \u0027application/json\u0027"},{"line_number":389,"context_line":"            req.headers \u003d {version_header_name: \u0027volume 3.1\u0027}"},{"line_number":390,"context_line":"            self.override_config(\u0027query_volume_filters\u0027, \u0027bootable\u0027)"},{"line_number":391,"context_line":"            req.environ[\u0027cinder.context\u0027].is_admin \u003d True"},{"line_number":392,"context_line":"            req.api_version_request \u003d api_version.max_api_version()"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_d9571456","line":389,"in_reply_to":"9a061dce_8346cf78","updated":"2016-04-07 15:53:23.000000000","message":"Done","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":393,"context_line":"            self.controller.index(req)"},{"line_number":394,"context_line":"            filters \u003d req.params.copy()"},{"line_number":395,"context_line":"            self.assertTrue(volume_get.called)"},{"line_number":396,"context_line":"            volume_get.assert_called_with(filters, \"3.1\")"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"    def tearDown(self):"},{"line_number":399,"context_line":"        super(VolumeTestCase, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_63345bfb","line":396,"updated":"2016-04-07 15:30:02.000000000","message":"3.1 -\u003e 3.2","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":393,"context_line":"            self.controller.index(req)"},{"line_number":394,"context_line":"            filters \u003d req.params.copy()"},{"line_number":395,"context_line":"            self.assertTrue(volume_get.called)"},{"line_number":396,"context_line":"            volume_get.assert_called_with(filters, \"3.1\")"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"    def tearDown(self):"},{"line_number":399,"context_line":"        super(VolumeTestCase, self).tearDown()"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_b9522065","line":396,"in_reply_to":"9a061dce_63345bfb","updated":"2016-04-07 15:53:23.000000000","message":"Done","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":4240,"context_line":"        filters \u003d {\u0027bootable\u0027: filter_value}"},{"line_number":4241,"context_line":""},{"line_number":4242,"context_line":"        # To convert filter value to True or False"},{"line_number":4243,"context_line":"        volume_api.check_volume_filters(filters, \"3.1\")"},{"line_number":4244,"context_line":""},{"line_number":4245,"context_line":"        # Confirming converted filter value against False"},{"line_number":4246,"context_line":"        self.assertFalse(filters[\u0027bootable\u0027])"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_c323a7bb","line":4243,"updated":"2016-04-07 15:30:02.000000000","message":"3.2","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":4240,"context_line":"        filters \u003d {\u0027bootable\u0027: filter_value}"},{"line_number":4241,"context_line":""},{"line_number":4242,"context_line":"        # To convert filter value to True or False"},{"line_number":4243,"context_line":"        volume_api.check_volume_filters(filters, \"3.1\")"},{"line_number":4244,"context_line":""},{"line_number":4245,"context_line":"        # Confirming converted filter value against False"},{"line_number":4246,"context_line":"        self.assertFalse(filters[\u0027bootable\u0027])"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_59cae41b","line":4243,"in_reply_to":"9a061dce_c323a7bb","updated":"2016-04-07 15:53:23.000000000","message":"Done","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":4252,"context_line":"        filters \u003d {\u0027bootable\u0027: filter_value}"},{"line_number":4253,"context_line":""},{"line_number":4254,"context_line":"        # To convert filter value to True or False"},{"line_number":4255,"context_line":"        volume_api.check_volume_filters(filters, \"3.1\")"},{"line_number":4256,"context_line":""},{"line_number":4257,"context_line":"        # Confirming converted filter value against True"},{"line_number":4258,"context_line":"        self.assertTrue(filters[\u0027bootable\u0027])"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_431e7770","line":4255,"updated":"2016-04-07 15:30:02.000000000","message":"3.2","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":4252,"context_line":"        filters \u003d {\u0027bootable\u0027: filter_value}"},{"line_number":4253,"context_line":""},{"line_number":4254,"context_line":"        # To convert filter value to True or False"},{"line_number":4255,"context_line":"        volume_api.check_volume_filters(filters, \"3.1\")"},{"line_number":4256,"context_line":""},{"line_number":4257,"context_line":"        # Confirming converted filter value against True"},{"line_number":4258,"context_line":"        self.assertTrue(filters[\u0027bootable\u0027])"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_39cd7031","line":4255,"in_reply_to":"9a061dce_431e7770","updated":"2016-04-07 15:53:23.000000000","message":"Done","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":4265,"context_line":"        # Confirming exception for invalid value in filter"},{"line_number":4266,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":4267,"context_line":"                          volume_api.check_volume_filters,"},{"line_number":4268,"context_line":"                          filters, \"3.1\")"},{"line_number":4269,"context_line":""},{"line_number":4270,"context_line":"    def test_update_volume_readonly_flag(self):"},{"line_number":4271,"context_line":"        \"\"\"Test volume readonly flag can be updated at API level.\"\"\""}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_03011f06","line":4268,"updated":"2016-04-07 15:30:02.000000000","message":"3.2","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":4265,"context_line":"        # Confirming exception for invalid value in filter"},{"line_number":4266,"context_line":"        self.assertRaises(exception.InvalidInput,"},{"line_number":4267,"context_line":"                          volume_api.check_volume_filters,"},{"line_number":4268,"context_line":"                          filters, \"3.1\")"},{"line_number":4269,"context_line":""},{"line_number":4270,"context_line":"    def test_update_volume_readonly_flag(self):"},{"line_number":4271,"context_line":"        \"\"\"Test volume readonly flag can be updated at API level.\"\"\""}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_d9def4db","line":4268,"in_reply_to":"9a061dce_03011f06","updated":"2016-04-07 15:53:23.000000000","message":"Done","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"e7cfbe61ffbeb84ba7d43e138f57667585ae4f39","unresolved":false,"context_lines":[{"line_number":4172,"context_line":"    def test_check_volume_filters(self, filter_value):"},{"line_number":4173,"context_line":"        \"\"\"Test bootable as filter for True or False\"\"\""},{"line_number":4174,"context_line":"        volume_api \u003d cinder.volume.api.API()"},{"line_number":4175,"context_line":"        filters \u003d {\u0027bootable\u0027: filter_value}"},{"line_number":4176,"context_line":""},{"line_number":4177,"context_line":"        # To convert filter value to True or False"},{"line_number":4178,"context_line":"        volume_api.check_volume_filters(filters)"}],"source_content_type":"text/x-python","patch_set":44,"id":"1a122d0e_15aade84","line":4175,"range":{"start_line":4175,"start_character":30,"end_line":4175,"end_character":43},"updated":"2016-04-21 08:16:12.000000000","message":"IMO, this should be a string rather than bool.","commit_id":"01da8fcf418d3175173e3496d667478bb6324fc4"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"43d5d1b405f79159752c318736319ab247e664fd","unresolved":false,"context_lines":[{"line_number":4172,"context_line":"    def test_check_volume_filters(self, filter_value):"},{"line_number":4173,"context_line":"        \"\"\"Test bootable as filter for True or False\"\"\""},{"line_number":4174,"context_line":"        volume_api \u003d cinder.volume.api.API()"},{"line_number":4175,"context_line":"        filters \u003d {\u0027bootable\u0027: filter_value}"},{"line_number":4176,"context_line":""},{"line_number":4177,"context_line":"        # To convert filter value to True or False"},{"line_number":4178,"context_line":"        volume_api.check_volume_filters(filters)"}],"source_content_type":"text/x-python","patch_set":44,"id":"1a122d0e_70e1a029","line":4175,"range":{"start_line":4175,"start_character":30,"end_line":4175,"end_character":43},"in_reply_to":"1a122d0e_15aade84","updated":"2016-04-21 08:31:01.000000000","message":"nit: I agree, it would be better to do six.text_type(filter_value)","commit_id":"01da8fcf418d3175173e3496d667478bb6324fc4"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"e7cfbe61ffbeb84ba7d43e138f57667585ae4f39","unresolved":false,"context_lines":[{"line_number":4178,"context_line":"        volume_api.check_volume_filters(filters)"},{"line_number":4179,"context_line":""},{"line_number":4180,"context_line":"        # Confirming converted filter value against True or False"},{"line_number":4181,"context_line":"        self.assertTrue(filter_value \u003d\u003d filters[\u0027bootable\u0027])"},{"line_number":4182,"context_line":""},{"line_number":4183,"context_line":"    def test_check_volume_filters_invalid(self):"},{"line_number":4184,"context_line":"        \"\"\"Test bootable as filter\"\"\""}],"source_content_type":"text/x-python","patch_set":44,"id":"1a122d0e_75999278","line":4181,"range":{"start_line":4181,"start_character":13,"end_line":4181,"end_character":23},"updated":"2016-04-21 08:16:12.000000000","message":"Why not assertEqual(filter_value, filters[\u0027bootable\u0027])?","commit_id":"01da8fcf418d3175173e3496d667478bb6324fc4"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"43d5d1b405f79159752c318736319ab247e664fd","unresolved":false,"context_lines":[{"line_number":4178,"context_line":"        volume_api.check_volume_filters(filters)"},{"line_number":4179,"context_line":""},{"line_number":4180,"context_line":"        # Confirming converted filter value against True or False"},{"line_number":4181,"context_line":"        self.assertTrue(filter_value \u003d\u003d filters[\u0027bootable\u0027])"},{"line_number":4182,"context_line":""},{"line_number":4183,"context_line":"    def test_check_volume_filters_invalid(self):"},{"line_number":4184,"context_line":"        \"\"\"Test bootable as filter\"\"\""}],"source_content_type":"text/x-python","patch_set":44,"id":"1a122d0e_f0cbf0a1","line":4181,"range":{"start_line":4181,"start_character":13,"end_line":4181,"end_character":23},"in_reply_to":"1a122d0e_75999278","updated":"2016-04-21 08:31:01.000000000","message":"-1: I\u0027d rather see this fixed in this patch","commit_id":"01da8fcf418d3175173e3496d667478bb6324fc4"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"634cdb198d723f9a92d4c8498ae0529f91b53592","unresolved":false,"context_lines":[{"line_number":4178,"context_line":"        volume_api.check_volume_filters(filters)"},{"line_number":4179,"context_line":""},{"line_number":4180,"context_line":"        # Confirming converted filter value against True or False"},{"line_number":4181,"context_line":"        self.assertTrue(filter_value \u003d\u003d filters[\u0027bootable\u0027])"},{"line_number":4182,"context_line":""},{"line_number":4183,"context_line":"    def test_check_volume_filters_invalid(self):"},{"line_number":4184,"context_line":"        \"\"\"Test bootable as filter\"\"\""}],"source_content_type":"text/x-python","patch_set":44,"id":"1a122d0e_cb50b00d","line":4181,"range":{"start_line":4181,"start_character":13,"end_line":4181,"end_character":23},"in_reply_to":"1a122d0e_f0cbf0a1","updated":"2016-04-21 15:18:51.000000000","message":"Done","commit_id":"01da8fcf418d3175173e3496d667478bb6324fc4"}],"cinder/volume/api.py":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"4cb185d4f0c60dda4cfa5ade04a1157db53f8038","unresolved":false,"context_lines":[{"line_number":1720,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1721,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, v)"},{"line_number":1722,"context_line":""},{"line_number":1723,"context_line":"    "},{"line_number":1724,"context_line":"    def check_volume_filters_micro_version(self, filters):"},{"line_number":1725,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1726,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_33194f89","line":1723,"range":{"start_line":1723,"start_character":0,"end_line":1723,"end_character":4},"updated":"2016-02-10 20:29:36.000000000","message":"trailing white space","commit_id":"37d21a1c550c786f0fc534073d6c26bcaecb3762"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"d25ab987c8f5f129343b2379d23a9ca39682a234","unresolved":false,"context_lines":[{"line_number":1720,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1721,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, v)"},{"line_number":1722,"context_line":""},{"line_number":1723,"context_line":"    "},{"line_number":1724,"context_line":"    def check_volume_filters_micro_version(self, filters):"},{"line_number":1725,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1726,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a57f1b5_5664f947","line":1723,"range":{"start_line":1723,"start_character":0,"end_line":1723,"end_character":4},"in_reply_to":"3a57f1b5_33194f89","updated":"2016-02-10 20:43:51.000000000","message":"Done","commit_id":"37d21a1c550c786f0fc534073d6c26bcaecb3762"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"639040a5690f5bb732b55f28c8fcb895cc7cedef","unresolved":false,"context_lines":[{"line_number":1687,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1688,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, v)"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"    def check_volume_filters_strict(self, filters):"},{"line_number":1691,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":"        for k, v in filters.items():"}],"source_content_type":"text/x-python","patch_set":26,"id":"1af94dfe_e87e3ead","line":1690,"updated":"2016-03-15 23:20:31.000000000","message":"can we get a simple doc on this method and it\u0027s purpose?\n\nWe should also document that this is associated with what microversion","commit_id":"788e30448710b3e7c05b934e0d333db61aee2b09"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"2d8b856e1b02b780db057fc2ce292b106e48e9b3","unresolved":false,"context_lines":[{"line_number":1687,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1688,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, v)"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"    def check_volume_filters_strict(self, filters):"},{"line_number":1691,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":"        for k, v in filters.items():"}],"source_content_type":"text/x-python","patch_set":26,"id":"1af94dfe_4de93c1a","line":1690,"in_reply_to":"1af94dfe_e87e3ead","updated":"2016-03-16 03:25:41.000000000","message":"Done","commit_id":"788e30448710b3e7c05b934e0d333db61aee2b09"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6a2f84ed7721d1614f41abd31ed0eb41f3640f56","unresolved":false,"context_lines":[{"line_number":1687,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1688,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, v)"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"    def check_volume_filters_strict(self, filters):"},{"line_number":1691,"context_line":"        \"\"\"Boolean filter values in Volume GET."},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":"        Before V3.1, all values other than \u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027 were"},{"line_number":1694,"context_line":"        trated as True for specific boolean filter parameters in Volume"},{"line_number":1695,"context_line":"        GET request."},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"        But V3.1 onwards, only true/True/0/1/False/false parameters are"},{"line_number":1698,"context_line":"        supported."},{"line_number":1699,"context_line":"        All other input values to specific boolean filter parameter will"},{"line_number":1700,"context_line":"        lead to raising exception."},{"line_number":1701,"context_line":""},{"line_number":1702,"context_line":"        This changes API behavior. So, kept under micro version."},{"line_number":1703,"context_line":""},{"line_number":1704,"context_line":"        This is microversioned for V3.1 onwards."},{"line_number":1705,"context_line":"        \"\"\""},{"line_number":1706,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"        for k, v in filters.items():"},{"line_number":1709,"context_line":"            try:"},{"line_number":1710,"context_line":"                if k in booleans:"},{"line_number":1711,"context_line":"                    try:"},{"line_number":1712,"context_line":"                        # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1713,"context_line":"                        # which is only acceptable format in database queries."},{"line_number":1714,"context_line":"                        filters[k] \u003d strutils.bool_from_string(v, strict\u003dTrue)"},{"line_number":1715,"context_line":"                    except ValueError:"},{"line_number":1716,"context_line":"                        msg \u003d _(\u0027\\\u0027%(key)s \u003d %(value)s\\\u0027\u0027) % {\u0027key\u0027: k,"},{"line_number":1717,"context_line":"                                                              \u0027value\u0027: v}"},{"line_number":1718,"context_line":"                        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":1719,"context_line":"                elif k \u003d\u003d \u0027display_name\u0027:"},{"line_number":1720,"context_line":"                    # Use the raw value of display name as is for the filter"},{"line_number":1721,"context_line":"                    # without passing it through ast.literal_eval(). If the"},{"line_number":1722,"context_line":"                    # display name is a properly quoted string (e.g. \u0027\"foo\"\u0027)"},{"line_number":1723,"context_line":"                    # then literal_eval() strips the quotes (i.e. \u0027foo\u0027), so"},{"line_number":1724,"context_line":"                    # the filter becomes different from the user input."},{"line_number":1725,"context_line":"                    continue"},{"line_number":1726,"context_line":"                else:"},{"line_number":1727,"context_line":"                    filters[k] \u003d ast.literal_eval(v)"},{"line_number":1728,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1729,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, v)"},{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":""},{"line_number":1732,"context_line":"class HostAPI(base.Base):"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_ce8cf881","line":1729,"range":{"start_line":1690,"start_character":0,"end_line":1729,"end_character":76},"updated":"2016-03-22 10:38:26.000000000","message":"This is almost the same as check_volume_filters. Is it possible to simply change check_volume_filters to accept strict argument?","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5a4bfe68a263e9d13d68c3f4558a7e93a8c8aa22","unresolved":false,"context_lines":[{"line_number":1687,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1688,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, v)"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"    def check_volume_filters_strict(self, filters):"},{"line_number":1691,"context_line":"        \"\"\"Boolean filter values in Volume GET."},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":"        Before V3.1, all values other than \u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027 were"},{"line_number":1694,"context_line":"        trated as True for specific boolean filter parameters in Volume"},{"line_number":1695,"context_line":"        GET request."},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"        But V3.1 onwards, only true/True/0/1/False/false parameters are"},{"line_number":1698,"context_line":"        supported."},{"line_number":1699,"context_line":"        All other input values to specific boolean filter parameter will"},{"line_number":1700,"context_line":"        lead to raising exception."},{"line_number":1701,"context_line":""},{"line_number":1702,"context_line":"        This changes API behavior. So, kept under micro version."},{"line_number":1703,"context_line":""},{"line_number":1704,"context_line":"        This is microversioned for V3.1 onwards."},{"line_number":1705,"context_line":"        \"\"\""},{"line_number":1706,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"        for k, v in filters.items():"},{"line_number":1709,"context_line":"            try:"},{"line_number":1710,"context_line":"                if k in booleans:"},{"line_number":1711,"context_line":"                    try:"},{"line_number":1712,"context_line":"                        # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1713,"context_line":"                        # which is only acceptable format in database queries."},{"line_number":1714,"context_line":"                        filters[k] \u003d strutils.bool_from_string(v, strict\u003dTrue)"},{"line_number":1715,"context_line":"                    except ValueError:"},{"line_number":1716,"context_line":"                        msg \u003d _(\u0027\\\u0027%(key)s \u003d %(value)s\\\u0027\u0027) % {\u0027key\u0027: k,"},{"line_number":1717,"context_line":"                                                              \u0027value\u0027: v}"},{"line_number":1718,"context_line":"                        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":1719,"context_line":"                elif k \u003d\u003d \u0027display_name\u0027:"},{"line_number":1720,"context_line":"                    # Use the raw value of display name as is for the filter"},{"line_number":1721,"context_line":"                    # without passing it through ast.literal_eval(). If the"},{"line_number":1722,"context_line":"                    # display name is a properly quoted string (e.g. \u0027\"foo\"\u0027)"},{"line_number":1723,"context_line":"                    # then literal_eval() strips the quotes (i.e. \u0027foo\u0027), so"},{"line_number":1724,"context_line":"                    # the filter becomes different from the user input."},{"line_number":1725,"context_line":"                    continue"},{"line_number":1726,"context_line":"                else:"},{"line_number":1727,"context_line":"                    filters[k] \u003d ast.literal_eval(v)"},{"line_number":1728,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1729,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, v)"},{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":""},{"line_number":1732,"context_line":"class HostAPI(base.Base):"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_187461cd","line":1729,"range":{"start_line":1690,"start_character":0,"end_line":1729,"end_character":76},"in_reply_to":"fa0719c6_46d721bf","updated":"2016-03-22 16:38:04.000000000","message":"With code duplication 10 versions of the method can be even worse - when you want to do a small change it will require changing 10 lines instead of one.\n\nInstead of introducing a parameter you can consider if it\u0027s possible to extract similar parts of these methods into another private one, or use less strict method inside another. But I think introducing a parameter will be easiest.","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"2ec14ada765c17391b7c21e7eb21952fcf022bb6","unresolved":false,"context_lines":[{"line_number":1687,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1688,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, v)"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"    def check_volume_filters_strict(self, filters):"},{"line_number":1691,"context_line":"        \"\"\"Boolean filter values in Volume GET."},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":"        Before V3.1, all values other than \u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027 were"},{"line_number":1694,"context_line":"        trated as True for specific boolean filter parameters in Volume"},{"line_number":1695,"context_line":"        GET request."},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"        But V3.1 onwards, only true/True/0/1/False/false parameters are"},{"line_number":1698,"context_line":"        supported."},{"line_number":1699,"context_line":"        All other input values to specific boolean filter parameter will"},{"line_number":1700,"context_line":"        lead to raising exception."},{"line_number":1701,"context_line":""},{"line_number":1702,"context_line":"        This changes API behavior. So, kept under micro version."},{"line_number":1703,"context_line":""},{"line_number":1704,"context_line":"        This is microversioned for V3.1 onwards."},{"line_number":1705,"context_line":"        \"\"\""},{"line_number":1706,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"        for k, v in filters.items():"},{"line_number":1709,"context_line":"            try:"},{"line_number":1710,"context_line":"                if k in booleans:"},{"line_number":1711,"context_line":"                    try:"},{"line_number":1712,"context_line":"                        # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1713,"context_line":"                        # which is only acceptable format in database queries."},{"line_number":1714,"context_line":"                        filters[k] \u003d strutils.bool_from_string(v, strict\u003dTrue)"},{"line_number":1715,"context_line":"                    except ValueError:"},{"line_number":1716,"context_line":"                        msg \u003d _(\u0027\\\u0027%(key)s \u003d %(value)s\\\u0027\u0027) % {\u0027key\u0027: k,"},{"line_number":1717,"context_line":"                                                              \u0027value\u0027: v}"},{"line_number":1718,"context_line":"                        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":1719,"context_line":"                elif k \u003d\u003d \u0027display_name\u0027:"},{"line_number":1720,"context_line":"                    # Use the raw value of display name as is for the filter"},{"line_number":1721,"context_line":"                    # without passing it through ast.literal_eval(). If the"},{"line_number":1722,"context_line":"                    # display name is a properly quoted string (e.g. \u0027\"foo\"\u0027)"},{"line_number":1723,"context_line":"                    # then literal_eval() strips the quotes (i.e. \u0027foo\u0027), so"},{"line_number":1724,"context_line":"                    # the filter becomes different from the user input."},{"line_number":1725,"context_line":"                    continue"},{"line_number":1726,"context_line":"                else:"},{"line_number":1727,"context_line":"                    filters[k] \u003d ast.literal_eval(v)"},{"line_number":1728,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1729,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, v)"},{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":""},{"line_number":1732,"context_line":"class HostAPI(base.Base):"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_46d721bf","line":1729,"range":{"start_line":1690,"start_character":0,"end_line":1729,"end_character":76},"in_reply_to":"fa0719c6_bfbc4d6d","updated":"2016-03-22 14:42:36.000000000","message":"well, I am ok to go ahead with this but I have some conflicts here.\nLet me explain my part..\n\nCurrently we are talking about 2 versions, things will be complicated when we will grow with versions.\n\nLets say we have 10 versions, then this seems a bit complicated to introduce multiple arguments in one function for different versions and then refactoring code depending upon version.","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"df9df338fa3beb716cf48f9c79a9002bef976e55","unresolved":false,"context_lines":[{"line_number":1687,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1688,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, v)"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"    def check_volume_filters_strict(self, filters):"},{"line_number":1691,"context_line":"        \"\"\"Boolean filter values in Volume GET."},{"line_number":1692,"context_line":""},{"line_number":1693,"context_line":"        Before V3.1, all values other than \u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027 were"},{"line_number":1694,"context_line":"        trated as True for specific boolean filter parameters in Volume"},{"line_number":1695,"context_line":"        GET request."},{"line_number":1696,"context_line":""},{"line_number":1697,"context_line":"        But V3.1 onwards, only true/True/0/1/False/false parameters are"},{"line_number":1698,"context_line":"        supported."},{"line_number":1699,"context_line":"        All other input values to specific boolean filter parameter will"},{"line_number":1700,"context_line":"        lead to raising exception."},{"line_number":1701,"context_line":""},{"line_number":1702,"context_line":"        This changes API behavior. So, kept under micro version."},{"line_number":1703,"context_line":""},{"line_number":1704,"context_line":"        This is microversioned for V3.1 onwards."},{"line_number":1705,"context_line":"        \"\"\""},{"line_number":1706,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"        for k, v in filters.items():"},{"line_number":1709,"context_line":"            try:"},{"line_number":1710,"context_line":"                if k in booleans:"},{"line_number":1711,"context_line":"                    try:"},{"line_number":1712,"context_line":"                        # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1713,"context_line":"                        # which is only acceptable format in database queries."},{"line_number":1714,"context_line":"                        filters[k] \u003d strutils.bool_from_string(v, strict\u003dTrue)"},{"line_number":1715,"context_line":"                    except ValueError:"},{"line_number":1716,"context_line":"                        msg \u003d _(\u0027\\\u0027%(key)s \u003d %(value)s\\\u0027\u0027) % {\u0027key\u0027: k,"},{"line_number":1717,"context_line":"                                                              \u0027value\u0027: v}"},{"line_number":1718,"context_line":"                        raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":1719,"context_line":"                elif k \u003d\u003d \u0027display_name\u0027:"},{"line_number":1720,"context_line":"                    # Use the raw value of display name as is for the filter"},{"line_number":1721,"context_line":"                    # without passing it through ast.literal_eval(). If the"},{"line_number":1722,"context_line":"                    # display name is a properly quoted string (e.g. \u0027\"foo\"\u0027)"},{"line_number":1723,"context_line":"                    # then literal_eval() strips the quotes (i.e. \u0027foo\u0027), so"},{"line_number":1724,"context_line":"                    # the filter becomes different from the user input."},{"line_number":1725,"context_line":"                    continue"},{"line_number":1726,"context_line":"                else:"},{"line_number":1727,"context_line":"                    filters[k] \u003d ast.literal_eval(v)"},{"line_number":1728,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1729,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, v)"},{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":""},{"line_number":1732,"context_line":"class HostAPI(base.Base):"}],"source_content_type":"text/x-python","patch_set":30,"id":"fa0719c6_bfbc4d6d","line":1729,"range":{"start_line":1690,"start_character":0,"end_line":1729,"end_character":76},"in_reply_to":"fa0719c6_ce8cf881","updated":"2016-03-22 12:46:02.000000000","message":"+1 on it","commit_id":"c161fb8ee987a80a5681243ac03620604a93380f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8bd12148acbc50b9a4cb61cef37f0647e7e218e5","unresolved":false,"context_lines":[{"line_number":1665,"context_line":"        if not self.volume_rpcapi.thaw_host(ctxt, host):"},{"line_number":1666,"context_line":"            return \"Backend reported error during thaw_host operation.\""},{"line_number":1667,"context_line":""},{"line_number":1668,"context_line":"    def check_volume_filters(self, filters, version \u003d None):"},{"line_number":1669,"context_line":"        \"\"\"Sets the user filter value to accepted format\"\"\""},{"line_number":1670,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1671,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"9a061dce_10a25afd","line":1668,"updated":"2016-04-06 10:14:12.000000000","message":"Space is not needed here","commit_id":"037f91633ae73045c55d6546743e1eaf3f024d2d"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"f3dba095f4d1bab2d41e3c81abc07a583c28289c","unresolved":false,"context_lines":[{"line_number":1665,"context_line":"        if not self.volume_rpcapi.thaw_host(ctxt, host):"},{"line_number":1666,"context_line":"            return \"Backend reported error during thaw_host operation.\""},{"line_number":1667,"context_line":""},{"line_number":1668,"context_line":"    def check_volume_filters(self, filters, version \u003d None):"},{"line_number":1669,"context_line":"        \"\"\"Sets the user filter value to accepted format\"\"\""},{"line_number":1670,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1671,"context_line":""}],"source_content_type":"text/x-python","patch_set":32,"id":"9a061dce_0c706c0a","line":1668,"in_reply_to":"9a061dce_10a25afd","updated":"2016-04-06 16:55:15.000000000","message":"I will remove in next patchset for sure.\nThanks!!","commit_id":"037f91633ae73045c55d6546743e1eaf3f024d2d"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8bd12148acbc50b9a4cb61cef37f0647e7e218e5","unresolved":false,"context_lines":[{"line_number":1689,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1690,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, val)"},{"line_number":1691,"context_line":""},{"line_number":1692,"context_line":"    def _check_boolean_filter_value(self, key, val, version \u003d None):"},{"line_number":1693,"context_line":"        \"\"\"Boolean filter values in Volume GET."},{"line_number":1694,"context_line":""},{"line_number":1695,"context_line":"        Before V3.1, all values other than \u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027 were"}],"source_content_type":"text/x-python","patch_set":32,"id":"9a061dce_9095ca88","line":1692,"range":{"start_line":1692,"start_character":60,"end_line":1692,"end_character":61},"updated":"2016-04-06 10:14:12.000000000","message":"The same as above","commit_id":"037f91633ae73045c55d6546743e1eaf3f024d2d"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"f3dba095f4d1bab2d41e3c81abc07a583c28289c","unresolved":false,"context_lines":[{"line_number":1689,"context_line":"            except (ValueError, SyntaxError):"},{"line_number":1690,"context_line":"                LOG.debug(\u0027Could not evaluate value %s, assuming string\u0027, val)"},{"line_number":1691,"context_line":""},{"line_number":1692,"context_line":"    def _check_boolean_filter_value(self, key, val, version \u003d None):"},{"line_number":1693,"context_line":"        \"\"\"Boolean filter values in Volume GET."},{"line_number":1694,"context_line":""},{"line_number":1695,"context_line":"        Before V3.1, all values other than \u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027 were"}],"source_content_type":"text/x-python","patch_set":32,"id":"9a061dce_6c67684d","line":1692,"range":{"start_line":1692,"start_character":60,"end_line":1692,"end_character":61},"in_reply_to":"9a061dce_9095ca88","updated":"2016-04-06 16:55:15.000000000","message":"Though this will not cause any issue, but I will remove in next patchset for sure.\nThanks!!","commit_id":"037f91633ae73045c55d6546743e1eaf3f024d2d"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8bd12148acbc50b9a4cb61cef37f0647e7e218e5","unresolved":false,"context_lines":[{"line_number":1704,"context_line":"        This changes API behavior. So, micro version introduced for V3.1"},{"line_number":1705,"context_line":"        onwards."},{"line_number":1706,"context_line":"        \"\"\""},{"line_number":1707,"context_line":"        if version is None:"},{"line_number":1708,"context_line":"            # For existing behavior(before version 3.1)"},{"line_number":1709,"context_line":"            accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1710,"context_line":"            accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"}],"source_content_type":"text/x-python","patch_set":32,"id":"9a061dce_703f5687","line":1707,"updated":"2016-04-06 10:14:12.000000000","message":"IMO, we should explicit check if version is 3.1 here","commit_id":"037f91633ae73045c55d6546743e1eaf3f024d2d"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"f3dba095f4d1bab2d41e3c81abc07a583c28289c","unresolved":false,"context_lines":[{"line_number":1704,"context_line":"        This changes API behavior. So, micro version introduced for V3.1"},{"line_number":1705,"context_line":"        onwards."},{"line_number":1706,"context_line":"        \"\"\""},{"line_number":1707,"context_line":"        if version is None:"},{"line_number":1708,"context_line":"            # For existing behavior(before version 3.1)"},{"line_number":1709,"context_line":"            accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1710,"context_line":"            accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"}],"source_content_type":"text/x-python","patch_set":32,"id":"9a061dce_0cdeacdc","line":1707,"in_reply_to":"9a061dce_703f5687","updated":"2016-04-06 16:55:15.000000000","message":"Here None will serve the purpose well as None is default value here.\nIn future we would be having other versions as well..then checking mulitple versions will be tedious...so checking None is ok.","commit_id":"037f91633ae73045c55d6546743e1eaf3f024d2d"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":1692,"context_line":"    def _check_boolean_filter_value(self, key, val, version\u003dNone):"},{"line_number":1693,"context_line":"        \"\"\"Boolean filter values in Volume GET."},{"line_number":1694,"context_line":""},{"line_number":1695,"context_line":"        Before V3.1, all values other than \u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027 were"},{"line_number":1696,"context_line":"        trated as True for specific boolean filter parameters in Volume"},{"line_number":1697,"context_line":"        GET request."},{"line_number":1698,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_1e34d2db","line":1695,"updated":"2016-04-07 15:30:02.000000000","message":"3.2","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":1692,"context_line":"    def _check_boolean_filter_value(self, key, val, version\u003dNone):"},{"line_number":1693,"context_line":"        \"\"\"Boolean filter values in Volume GET."},{"line_number":1694,"context_line":""},{"line_number":1695,"context_line":"        Before V3.1, all values other than \u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027 were"},{"line_number":1696,"context_line":"        trated as True for specific boolean filter parameters in Volume"},{"line_number":1697,"context_line":"        GET request."},{"line_number":1698,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_b9f6a08c","line":1695,"in_reply_to":"9a061dce_1e34d2db","updated":"2016-04-07 15:53:23.000000000","message":"Done","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":1696,"context_line":"        trated as True for specific boolean filter parameters in Volume"},{"line_number":1697,"context_line":"        GET request."},{"line_number":1698,"context_line":""},{"line_number":1699,"context_line":"        But V3.1 onwards, only true/True/0/1/False/false parameters are"},{"line_number":1700,"context_line":"        supported."},{"line_number":1701,"context_line":"        All other input values to specific boolean filter parameter will"},{"line_number":1702,"context_line":"        lead to raising exception."}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_5e500a0b","line":1699,"updated":"2016-04-07 15:30:02.000000000","message":"3.2","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":1696,"context_line":"        trated as True for specific boolean filter parameters in Volume"},{"line_number":1697,"context_line":"        GET request."},{"line_number":1698,"context_line":""},{"line_number":1699,"context_line":"        But V3.1 onwards, only true/True/0/1/False/false parameters are"},{"line_number":1700,"context_line":"        supported."},{"line_number":1701,"context_line":"        All other input values to specific boolean filter parameter will"},{"line_number":1702,"context_line":"        lead to raising exception."}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_79008866","line":1699,"in_reply_to":"9a061dce_5e500a0b","updated":"2016-04-07 15:53:23.000000000","message":"Done","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":1705,"context_line":"        onwards."},{"line_number":1706,"context_line":"        \"\"\""},{"line_number":1707,"context_line":"        if version is None:"},{"line_number":1708,"context_line":"            # For existing behavior(before version 3.1)"},{"line_number":1709,"context_line":"            accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1710,"context_line":"            accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"},{"line_number":1711,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_1e4b325a","line":1708,"updated":"2016-04-07 15:30:02.000000000","message":"3.2","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":1705,"context_line":"        onwards."},{"line_number":1706,"context_line":"        \"\"\""},{"line_number":1707,"context_line":"        if version is None:"},{"line_number":1708,"context_line":"            # For existing behavior(before version 3.1)"},{"line_number":1709,"context_line":"            accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1710,"context_line":"            accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"},{"line_number":1711,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_99fd9c70","line":1708,"in_reply_to":"9a061dce_1e4b325a","updated":"2016-04-07 15:53:23.000000000","message":"Done","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"b37ed99c465ca16efd068ccd0fbe7e4182bb7cb1","unresolved":false,"context_lines":[{"line_number":1716,"context_line":"            else:"},{"line_number":1717,"context_line":"                return bool(val)"},{"line_number":1718,"context_line":"        else:"},{"line_number":1719,"context_line":"            # for updated behavior, from V3.1 onwards."},{"line_number":1720,"context_line":"            # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1721,"context_line":"            # which is only acceptable format in database queries."},{"line_number":1722,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_de6b7ab5","line":1719,"updated":"2016-04-07 15:30:02.000000000","message":"3.2","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"fc07f55dc68126367b833f9bf47a02ed4f24de50","unresolved":false,"context_lines":[{"line_number":1716,"context_line":"            else:"},{"line_number":1717,"context_line":"                return bool(val)"},{"line_number":1718,"context_line":"        else:"},{"line_number":1719,"context_line":"            # for updated behavior, from V3.1 onwards."},{"line_number":1720,"context_line":"            # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1721,"context_line":"            # which is only acceptable format in database queries."},{"line_number":1722,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":33,"id":"9a061dce_59078481","line":1719,"in_reply_to":"9a061dce_de6b7ab5","updated":"2016-04-07 15:53:23.000000000","message":"Done","commit_id":"048a65efe26ad19e5aa0c533527ec4c26ab19cf9"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"02529c31435fede305f5219eab2b2a75b7393ef7","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"                return True"},{"line_number":1716,"context_line":"            else:"},{"line_number":1717,"context_line":"                return bool(val)"},{"line_number":1718,"context_line":"        else:"},{"line_number":1719,"context_line":"            # for updated behavior, from V3.2 onwards."},{"line_number":1720,"context_line":"            # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1721,"context_line":"            # which is only acceptable format in database queries."}],"source_content_type":"text/x-python","patch_set":34,"id":"5a18252c_93847c0b","line":1718,"updated":"2016-04-14 23:03:11.000000000","message":"shouldn\u0027t this check for a specific version being 3.2 or \u003e\n\nif someone passes in version\u003d2.12, they will get the new logic.","commit_id":"dd9183e4b823be8dd5c167d4469db0ac4ae62ae2"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"117db8fea1b733f2be3ce38c160dd01a46d9ce20","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"                return True"},{"line_number":1716,"context_line":"            else:"},{"line_number":1717,"context_line":"                return bool(val)"},{"line_number":1718,"context_line":"        else:"},{"line_number":1719,"context_line":"            # for updated behavior, from V3.2 onwards."},{"line_number":1720,"context_line":"            # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1721,"context_line":"            # which is only acceptable format in database queries."}],"source_content_type":"text/x-python","patch_set":34,"id":"1a122d0e_a94d5b74","line":1718,"in_reply_to":"5a18252c_73bf2061","updated":"2016-04-17 06:58:31.000000000","message":"I have updated it as per this comment.\n(though it was ok even if i did not update :P)","commit_id":"dd9183e4b823be8dd5c167d4469db0ac4ae62ae2"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"9435ac64473adbc51780fd4b945e2577621d994e","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"                return True"},{"line_number":1716,"context_line":"            else:"},{"line_number":1717,"context_line":"                return bool(val)"},{"line_number":1718,"context_line":"        else:"},{"line_number":1719,"context_line":"            # for updated behavior, from V3.2 onwards."},{"line_number":1720,"context_line":"            # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1721,"context_line":"            # which is only acceptable format in database queries."}],"source_content_type":"text/x-python","patch_set":34,"id":"5a18252c_73bf2061","line":1718,"in_reply_to":"5a18252c_93847c0b","updated":"2016-04-14 23:21:05.000000000","message":"No, this will not happen as the calling function itself checks what version to pass to it for requests which are \u003e3.2.\nkindly refer \nhttps://review.openstack.org/#/c/278605/34/cinder/api/v2/volumes.py\n\n        if req.api_version_request.matches(\"3.2\", None):\n            self.volume_api.check_volume_filters(filters, \"3.2\")\n        else:\n            self.volume_api.check_volume_filters(filters)","commit_id":"dd9183e4b823be8dd5c167d4469db0ac4ae62ae2"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a5a041ae575f942f31836a44000af8f978fc541f","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"                return True"},{"line_number":1716,"context_line":"            else:"},{"line_number":1717,"context_line":"                return bool(val)"},{"line_number":1718,"context_line":"        elif version \u003d\u003d \u00273.2\u0027:"},{"line_number":1719,"context_line":"            # for updated behavior, from V3.2 onwards."},{"line_number":1720,"context_line":"            # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1721,"context_line":"            # which is only acceptable format in database queries."}],"source_content_type":"text/x-python","patch_set":35,"id":"1a122d0e_6784f5d3","line":1718,"range":{"start_line":1718,"start_character":24,"end_line":1718,"end_character":25},"updated":"2016-04-18 11:18:55.000000000","message":"This needs to be \u003e\u003d and not a string comparision. Unit tests should have caught this problem, so it seems there is not enough unit test coverage either","commit_id":"201c804b12f4024b60484dc4c23620675619e388"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"eb5be180253d27181daafadddf8916588f10714c","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"                return True"},{"line_number":1716,"context_line":"            else:"},{"line_number":1717,"context_line":"                return bool(val)"},{"line_number":1718,"context_line":"        elif version \u003d\u003d \u00273.2\u0027:"},{"line_number":1719,"context_line":"            # for updated behavior, from V3.2 onwards."},{"line_number":1720,"context_line":"            # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1721,"context_line":"            # which is only acceptable format in database queries."}],"source_content_type":"text/x-python","patch_set":35,"id":"1a122d0e_e991f49a","line":1718,"range":{"start_line":1718,"start_character":24,"end_line":1718,"end_character":25},"in_reply_to":"1a122d0e_6784f5d3","updated":"2016-04-18 13:03:47.000000000","message":"Dear Duncan Thomas,\n\nThis is not a version comparision here rather a referential comparision only, so doing string comparision will not be a problem.\nActually, version comparision is done earlier and here we are just comparing whether it is None or else \"3.2\"..\n\nLet me explain:\n\nActual https header version comparision is done at\nhttps://review.openstack.org/#/c/278605/35/cinder/api/v2/volumes.py \nwe pass string \"3.2\" to differentiate the function call is for microversion:\n \nif req.api_version_request.matches(\"3.2\", None):\n    self.volume_api.check_volume_filters(filters, *\"3.2\"*)\nelse:\n    self.volume_api.check_volume_filters(filters)\n\nThen here we compare this argument part(\"3.2\") as string comparision here to check if this call needs to be executed as per microversion or normal.\n\nHope I could explain.","commit_id":"201c804b12f4024b60484dc4c23620675619e388"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"6ea8d56032795bb7dcac3ef79cf34ca301fe1cf5","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"                return True"},{"line_number":1716,"context_line":"            else:"},{"line_number":1717,"context_line":"                return bool(val)"},{"line_number":1718,"context_line":"        elif version \u003d\u003d \u00273.2\u0027:"},{"line_number":1719,"context_line":"            # for updated behavior, from V3.2 onwards."},{"line_number":1720,"context_line":"            # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1721,"context_line":"            # which is only acceptable format in database queries."}],"source_content_type":"text/x-python","patch_set":35,"id":"1a122d0e_e9ba9422","line":1718,"range":{"start_line":1718,"start_character":24,"end_line":1718,"end_character":25},"in_reply_to":"1a122d0e_6784f5d3","updated":"2016-04-18 13:11:40.000000000","message":"It\u0027s confusing to use a string, when you really want a boolean that determines whether we have the new funcionality or not,","commit_id":"201c804b12f4024b60484dc4c23620675619e388"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"a34861bfeda79533e5bf9ddda64b22537bf1a83f","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"                return True"},{"line_number":1716,"context_line":"            else:"},{"line_number":1717,"context_line":"                return bool(val)"},{"line_number":1718,"context_line":"        elif version \u003d\u003d \u00273.2\u0027:"},{"line_number":1719,"context_line":"            # for updated behavior, from V3.2 onwards."},{"line_number":1720,"context_line":"            # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1721,"context_line":"            # which is only acceptable format in database queries."}],"source_content_type":"text/x-python","patch_set":35,"id":"1a122d0e_4f5a9e51","line":1718,"range":{"start_line":1718,"start_character":24,"end_line":1718,"end_character":25},"in_reply_to":"1a122d0e_e9ba9422","updated":"2016-04-18 16:36:03.000000000","message":"Done","commit_id":"201c804b12f4024b60484dc4c23620675619e388"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c7a55ebc70c7110e8c905c63809d5b0f94780d11","unresolved":false,"context_lines":[{"line_number":1704,"context_line":"        This changes API behavior. So, micro version introduced for V3.2"},{"line_number":1705,"context_line":"        onwards."},{"line_number":1706,"context_line":"        \"\"\""},{"line_number":1707,"context_line":"        if strict is False:"},{"line_number":1708,"context_line":"            # For existing behavior(before version 3.2)"},{"line_number":1709,"context_line":"            accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1710,"context_line":"            accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a122d0e_8fa2bb49","line":1707,"updated":"2016-04-19 17:40:51.000000000","message":"nit:\nif not strict:","commit_id":"b5d4f999f6693afe279415deb4a67d859de2b304"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"efafd127e34b00bb384741f82e02a181be86cbfd","unresolved":false,"context_lines":[{"line_number":1704,"context_line":"        This changes API behavior. So, micro version introduced for V3.2"},{"line_number":1705,"context_line":"        onwards."},{"line_number":1706,"context_line":"        \"\"\""},{"line_number":1707,"context_line":"        if strict is False:"},{"line_number":1708,"context_line":"            # For existing behavior(before version 3.2)"},{"line_number":1709,"context_line":"            accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1710,"context_line":"            accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a122d0e_d7c8c5aa","line":1707,"in_reply_to":"1a122d0e_8fa2bb49","updated":"2016-04-19 19:30:09.000000000","message":"if not strict:\n    ...\nelse:\n    ...\n\nIt\u0027s a boolean, it can only be True or False.\n\nIt\u0027s also generally more conventional to do the True brnach first, i.e.:\nif strict:\n    ...\nelse:\n    ...","commit_id":"b5d4f999f6693afe279415deb4a67d859de2b304"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"c7a55ebc70c7110e8c905c63809d5b0f94780d11","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"                return True"},{"line_number":1716,"context_line":"            else:"},{"line_number":1717,"context_line":"                return bool(val)"},{"line_number":1718,"context_line":"        elif strict is True:"},{"line_number":1719,"context_line":"            # for updated behavior, from V3.2 onwards."},{"line_number":1720,"context_line":"            # To translate any true/false/t/f/0/1 to True/False"},{"line_number":1721,"context_line":"            # which is only acceptable format in database queries."}],"source_content_type":"text/x-python","patch_set":37,"id":"1a122d0e_6fbe3f66","line":1718,"updated":"2016-04-19 17:40:51.000000000","message":"nit:\nelif strict:","commit_id":"b5d4f999f6693afe279415deb4a67d859de2b304"}]}
