)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"ae73174d1033dc981c3991b209d09f0b35497db8","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch removes this limitation."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I53ca239395b538bc103a8e5cefc728142a034f20"},{"line_number":18,"context_line":"Closes-Bug: #1398329"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a961159_fcb9d979","line":17,"updated":"2014-12-10 21:06:42.000000000","message":"can you add me as a co-author: https://bugs.launchpad.net/nova/+bug/1398329/comments/2","commit_id":"73de4871aa5fc5cbc5bf6c693e3fafc0d5393cea"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"ca0570120809d6e57a4ae67ad11c8c7fc98836c4","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch removes this limitation."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I53ca239395b538bc103a8e5cefc728142a034f20"},{"line_number":18,"context_line":"Closes-Bug: #1398329"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a961159_2e8239c8","line":17,"in_reply_to":"3a961159_fcb9d979","updated":"2014-12-11 08:51:36.000000000","message":"Done","commit_id":"73de4871aa5fc5cbc5bf6c693e3fafc0d5393cea"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"e70b9770c029a641f1d84c1655c26c0ac38f2cd1","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Closes-Bug: #1398329"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Author: Mh Raies raiesmh08@gmail.com"},{"line_number":20,"context_line":"Co-Authored-By: Joe Gordon joe.gordon0@gmail.com"},{"line_number":21,"context_line":"Change-Id: I53ca239395b538bc103a8e5cefc728142a034f20"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3a961159_5bb34f0a","line":19,"updated":"2014-12-15 19:18:06.000000000","message":"Note, this line isn\u0027t needed, the Author is listed on line 2","commit_id":"2276e5b799e5ed86fee79d2f926a41e22bdc4dc5"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"2b38cc057667973296b6e1537dee4a62daa425b4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch enables tenant and user specific filtering."},{"line_number":10,"context_line":"Prior to this, one could not filter list of servers on"},{"line_number":11,"context_line":"tenant or user basis."},{"line_number":12,"context_line":"For example -"},{"line_number":13,"context_line":"nova list --tenant \u003ctenant_id\u003e [--user \u003cuser_id\u003e]"},{"line_number":14,"context_line":"This was not giving desirable output."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7a016987_cf92e7f5","line":11,"updated":"2015-05-22 07:08:25.000000000","message":"nit: this would be more readable with a blank line here","commit_id":"cc8468260272040331f6b41c6eda9f925759ef53"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"d4e2b5436e9e7bdbe0f79d44d4c28a410f59e791","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch enables tenant and user specific filtering."},{"line_number":10,"context_line":"Prior to this, one could not filter list of servers on"},{"line_number":11,"context_line":"tenant or user basis."},{"line_number":12,"context_line":"For example -"},{"line_number":13,"context_line":"nova list --tenant \u003ctenant_id\u003e [--user \u003cuser_id\u003e]"},{"line_number":14,"context_line":"This was not giving desirable output."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7a016987_21bb9577","line":11,"in_reply_to":"7a016987_cf92e7f5","updated":"2015-05-26 05:23:27.000000000","message":"Will do in next patch.","commit_id":"cc8468260272040331f6b41c6eda9f925759ef53"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"2b38cc057667973296b6e1537dee4a62daa425b4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Prior to this, one could not filter list of servers on"},{"line_number":11,"context_line":"tenant or user basis."},{"line_number":12,"context_line":"For example -"},{"line_number":13,"context_line":"nova list --tenant \u003ctenant_id\u003e [--user \u003cuser_id\u003e]"},{"line_number":14,"context_line":"This was not giving desirable output."},{"line_number":15,"context_line":"This patch removes this limitation."},{"line_number":16,"context_line":"Note in above that currently python-client does not implement"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7a016987_8fbf4f60","line":13,"updated":"2015-05-22 07:08:25.000000000","message":"nit: and here","commit_id":"cc8468260272040331f6b41c6eda9f925759ef53"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"d4e2b5436e9e7bdbe0f79d44d4c28a410f59e791","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Prior to this, one could not filter list of servers on"},{"line_number":11,"context_line":"tenant or user basis."},{"line_number":12,"context_line":"For example -"},{"line_number":13,"context_line":"nova list --tenant \u003ctenant_id\u003e [--user \u003cuser_id\u003e]"},{"line_number":14,"context_line":"This was not giving desirable output."},{"line_number":15,"context_line":"This patch removes this limitation."},{"line_number":16,"context_line":"Note in above that currently python-client does not implement"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7a016987_01c099df","line":13,"in_reply_to":"7a016987_8fbf4f60","updated":"2015-05-26 05:23:27.000000000","message":"ditto","commit_id":"cc8468260272040331f6b41c6eda9f925759ef53"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"2b38cc057667973296b6e1537dee4a62daa425b4","unresolved":false,"context_lines":[{"line_number":12,"context_line":"For example -"},{"line_number":13,"context_line":"nova list --tenant \u003ctenant_id\u003e [--user \u003cuser_id\u003e]"},{"line_number":14,"context_line":"This was not giving desirable output."},{"line_number":15,"context_line":"This patch removes this limitation."},{"line_number":16,"context_line":"Note in above that currently python-client does not implement"},{"line_number":17,"context_line":"\"--user\" argument. I will add a patch for that also."},{"line_number":18,"context_line":"Thus one can filter out servers tenant and user basis."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7a016987_4fb5d77b","line":15,"updated":"2015-05-22 07:08:25.000000000","message":"nit: and here","commit_id":"cc8468260272040331f6b41c6eda9f925759ef53"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"d4e2b5436e9e7bdbe0f79d44d4c28a410f59e791","unresolved":false,"context_lines":[{"line_number":12,"context_line":"For example -"},{"line_number":13,"context_line":"nova list --tenant \u003ctenant_id\u003e [--user \u003cuser_id\u003e]"},{"line_number":14,"context_line":"This was not giving desirable output."},{"line_number":15,"context_line":"This patch removes this limitation."},{"line_number":16,"context_line":"Note in above that currently python-client does not implement"},{"line_number":17,"context_line":"\"--user\" argument. I will add a patch for that also."},{"line_number":18,"context_line":"Thus one can filter out servers tenant and user basis."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7a016987_e1b45d83","line":15,"in_reply_to":"7a016987_4fb5d77b","updated":"2015-05-26 05:23:27.000000000","message":"ditto","commit_id":"cc8468260272040331f6b41c6eda9f925759ef53"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"2b38cc057667973296b6e1537dee4a62daa425b4","unresolved":false,"context_lines":[{"line_number":19,"context_line":"If you are not passing user info then current context"},{"line_number":20,"context_line":"user will be entertained."},{"line_number":21,"context_line":"Similarly, If you are not passing tenant info,"},{"line_number":22,"context_line":"this will entertain current context tenant."},{"line_number":23,"context_line":"Closes-Bug: #1398329"},{"line_number":24,"context_line":"Author: Mh Raies raiesmh08@gmail.com"},{"line_number":25,"context_line":"Co-Authored-By: Joe Gordon joe.gordon0@gmail.com"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7a016987_2fb85b74","line":22,"updated":"2015-05-22 07:08:25.000000000","message":"a blank line here actually means something, it helps demarcate the tags at the end","commit_id":"cc8468260272040331f6b41c6eda9f925759ef53"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"d4e2b5436e9e7bdbe0f79d44d4c28a410f59e791","unresolved":false,"context_lines":[{"line_number":19,"context_line":"If you are not passing user info then current context"},{"line_number":20,"context_line":"user will be entertained."},{"line_number":21,"context_line":"Similarly, If you are not passing tenant info,"},{"line_number":22,"context_line":"this will entertain current context tenant."},{"line_number":23,"context_line":"Closes-Bug: #1398329"},{"line_number":24,"context_line":"Author: Mh Raies raiesmh08@gmail.com"},{"line_number":25,"context_line":"Co-Authored-By: Joe Gordon joe.gordon0@gmail.com"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7a016987_c1b9617b","line":22,"in_reply_to":"7a016987_2fb85b74","updated":"2015-05-26 05:23:27.000000000","message":"ditto","commit_id":"cc8468260272040331f6b41c6eda9f925759ef53"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"f70d6d903c29924d67b9051519dc9fb75ed80ee0","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Similarly, If you are not passing tenant info,"},{"line_number":22,"context_line":"this will entertain current context tenant."},{"line_number":23,"context_line":"Closes-Bug: #1398329"},{"line_number":24,"context_line":"Author: Mh Raies raiesmh08@gmail.com"},{"line_number":25,"context_line":"Co-Authored-By: Joe Gordon joe.gordon0@gmail.com"},{"line_number":26,"context_line":"Change-Id: I53ca239395b538bc103a8e5cefc728142a034f20"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7a016987_cfa9c725","line":24,"updated":"2015-05-22 07:09:28.000000000","message":"nit: oh and you don\u0027t need to list yourself as author, see line 2","commit_id":"cc8468260272040331f6b41c6eda9f925759ef53"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"d4e2b5436e9e7bdbe0f79d44d4c28a410f59e791","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Similarly, If you are not passing tenant info,"},{"line_number":22,"context_line":"this will entertain current context tenant."},{"line_number":23,"context_line":"Closes-Bug: #1398329"},{"line_number":24,"context_line":"Author: Mh Raies raiesmh08@gmail.com"},{"line_number":25,"context_line":"Co-Authored-By: Joe Gordon joe.gordon0@gmail.com"},{"line_number":26,"context_line":"Change-Id: I53ca239395b538bc103a8e5cefc728142a034f20"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":23,"id":"7a016987_81ac8936","line":24,"in_reply_to":"7a016987_cfa9c725","updated":"2015-05-26 05:23:27.000000000","message":"ditto","commit_id":"cc8468260272040331f6b41c6eda9f925759ef53"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"af35601ac175490abf152666d0f40bfa571df198","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     raiesmh08 \u003craiesmh08@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-27 04:19:19 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enable tenant/user specific instance filtering"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch enables tenant and user specific filtering."},{"line_number":10,"context_line":"Prior to this, one could not filter list of servers on"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"7a016987_b5d8a780","line":7,"updated":"2015-05-27 14:32:11.000000000","message":"you didn\u0027t fix any of the commit message nits :/\n\nnot going to -1 for that but it\u0027d be nice if you did","commit_id":"7a864bc586b04e2ac2b85a7939c3b67a4455d2a9"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"fed28710ef2e0ddfd129769566375347137bf172","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     raiesmh08 \u003craiesmh08@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-27 04:19:19 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enable tenant/user specific instance filtering"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch enables tenant and user specific filtering."},{"line_number":10,"context_line":"Prior to this, one could not filter list of servers on"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"7a016987_595d1078","line":7,"in_reply_to":"7a016987_b5d8a780","updated":"2015-05-28 06:28:33.000000000","message":"Will do in next","commit_id":"7a864bc586b04e2ac2b85a7939c3b67a4455d2a9"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"300e027fc769fb29a2c634be1c012d2076dcae0e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\"--user\" argument. I will add a patch for that also."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Thus one can filter out servers tenant and user basis."},{"line_number":23,"context_line":"If you are not passing user info then current context"},{"line_number":24,"context_line":"user will be entertained."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Similarly, If you are not passing tenant info,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"7a016987_696d8f03","line":23,"updated":"2015-05-28 12:37:12.000000000","message":"nit: s/user info/user_id/","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"300e027fc769fb29a2c634be1c012d2076dcae0e","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Thus one can filter out servers tenant and user basis."},{"line_number":23,"context_line":"If you are not passing user info then current context"},{"line_number":24,"context_line":"user will be entertained."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Similarly, If you are not passing tenant info,"},{"line_number":27,"context_line":"this will entertain current context tenant."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"7a016987_693b4fec","line":24,"updated":"2015-05-28 12:37:12.000000000","message":"\"entertained\" doesn\u0027t work here. \"used\" does.","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"300e027fc769fb29a2c634be1c012d2076dcae0e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"in current context. I will add this feature in  python-client also."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Closes-Bug: #1398329"},{"line_number":33,"context_line":"Author: Mh Raies raiesmh08@gmail.com"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Co-Authored-By: Joe Gordon joe.gordon0@gmail.com"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"7a016987_89a44bb9","line":33,"updated":"2015-05-28 12:37:12.000000000","message":"nit: you don\u0027t need this","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"300e027fc769fb29a2c634be1c012d2076dcae0e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"Author: Mh Raies raiesmh08@gmail.com"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Co-Authored-By: Joe Gordon joe.gordon0@gmail.com"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Change-Id: I53ca239395b538bc103a8e5cefc728142a034f20"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"7a016987_660ffce1","line":36,"updated":"2015-05-28 12:37:12.000000000","message":"nit: this looks much better now thank you! The blank lines on 34 + 36 are undesirable though.\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a44fa6751ec93d1ac7027cb46f8d7885ebb2eeab","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Similarly, if you don\u0027t pass tenant_id, the current context tenant"},{"line_number":14,"context_line":"will be used."},{"line_number":15,"context_line":"python-novaclient does not currently support options to pass"},{"line_number":16,"context_line":"\u0027all_users\u0027 and \u0027user_id\u0027. I\u0027ll add this support in another patch."},{"line_number":17,"context_line":"DocImpact"},{"line_number":18,"context_line":"Closes-Bug: #1398329"},{"line_number":19,"context_line":"Co-Authored-By: Joe Gordon \u003cjoe.gordon0@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"3afb71cf_ed052bc2","line":16,"updated":"2015-06-08 11:16:35.000000000","message":"Why\u0027d you delete all the formatting lines please? I don\u0027t want to nag about the commit message every patch, please follow the documented standard","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"2d9293bc6d684b07f71a7755b6555a2b6ef03738","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Similarly, if you don\u0027t pass tenant_id, the current context tenant"},{"line_number":14,"context_line":"will be used."},{"line_number":15,"context_line":"python-novaclient does not currently support options to pass"},{"line_number":16,"context_line":"\u0027all_users\u0027 and \u0027user_id\u0027. I\u0027ll add this support in another patch."},{"line_number":17,"context_line":"DocImpact"},{"line_number":18,"context_line":"Closes-Bug: #1398329"},{"line_number":19,"context_line":"Co-Authored-By: Joe Gordon \u003cjoe.gordon0@gmail.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"3afb71cf_cab6ca89","line":16,"in_reply_to":"3afb71cf_ed052bc2","updated":"2015-06-08 15:19:49.000000000","message":"Actually I had pasted what you had written in last patch.\nI will check again it.","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4ce75e9bab3cd92960356a8bdfca70232f412dbd","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Closes-Bug: #1398329"},{"line_number":19,"context_line":"Co-Authored-By: Joe Gordon \u003cjoe.gordon0@gmail.com\u003e"},{"line_number":20,"context_line":"Co-Authored-By: Alexis Lee \u003calexisl@hp.com\u003e"},{"line_number":21,"context_line":"Change-Id: I53ca239395b538bc103a8e5cefc728142a034f20"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"fa32b979_ff98ea79","line":21,"updated":"2015-06-18 13:15:08.000000000","message":"I don\u0027t see a blueprint mentioned. Was it approved as a spec ?","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"}],"etc/nova/policy.json":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f47c0ab5bf06091e1c4bc785ca3f0a240906a710","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    \"compute:create:forced_host\": \"is_admin:True\","},{"line_number":12,"context_line":"    \"compute:get_all\": \"\","},{"line_number":13,"context_line":"    \"compute:get_all_tenants\": \"\","},{"line_number":14,"context_line":"    \"compute:get_per_tenant\": \"rule:admin_or_owner\","},{"line_number":15,"context_line":"    \"compute:start\": \"rule:admin_or_owner\","},{"line_number":16,"context_line":"    \"compute:stop\": \"rule:admin_or_owner\","},{"line_number":17,"context_line":"    \"compute:unlock_override\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":27,"id":"7a016987_da49e3d1","line":14,"updated":"2015-05-28 12:37:49.000000000","message":"we should at least add DocImpact to the commit message","commit_id":"933b16cbb000da2bb61164884fae75ca07fa368a"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"077a7e299314e250ce0b3c91f9cfaef6879e7c2d","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    \"compute:create:forced_host\": \"is_admin:True\","},{"line_number":12,"context_line":"    \"compute:get_all\": \"\","},{"line_number":13,"context_line":"    \"compute:get_all_tenants\": \"\","},{"line_number":14,"context_line":"    \"compute:get_per_tenant\": \"rule:admin_or_owner\","},{"line_number":15,"context_line":"    \"compute:start\": \"rule:admin_or_owner\","},{"line_number":16,"context_line":"    \"compute:stop\": \"rule:admin_or_owner\","},{"line_number":17,"context_line":"    \"compute:unlock_override\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":27,"id":"7a016987_7561e0a7","line":14,"in_reply_to":"7a016987_da49e3d1","updated":"2015-05-28 12:57:32.000000000","message":"Fair shout","commit_id":"933b16cbb000da2bb61164884fae75ca07fa368a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4ce75e9bab3cd92960356a8bdfca70232f412dbd","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    \"compute:create:forced_host\": \"is_admin:True\","},{"line_number":12,"context_line":"    \"compute:get_all\": \"\","},{"line_number":13,"context_line":"    \"compute:get_all_tenants\": \"\","},{"line_number":14,"context_line":"    \"compute:get_per_tenant\": \"rule:admin_or_owner\","},{"line_number":15,"context_line":"    \"compute:start\": \"rule:admin_or_owner\","},{"line_number":16,"context_line":"    \"compute:stop\": \"rule:admin_or_owner\","},{"line_number":17,"context_line":"    \"compute:unlock_override\": \"rule:admin_api\","}],"source_content_type":"application/json","patch_set":29,"id":"fa32b979_7f929a4d","line":14,"updated":"2015-06-18 13:15:08.000000000","message":"that\u0027s v2 policy right ? For my understanding, V2 is now stable, please don\u0027t add more in that.","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4ce75e9bab3cd92960356a8bdfca70232f412dbd","unresolved":false,"context_lines":[{"line_number":393,"context_line":"    \"os_compute_api:os-assisted-volume-snapshots:delete\": \"rule:admin_api\","},{"line_number":394,"context_line":"    \"os_compute_api:os-assisted-volume-snapshots:discoverable\": \"\","},{"line_number":395,"context_line":"    \"os_compute_api:os-console-auth-tokens\": \"rule:admin_api\","},{"line_number":396,"context_line":"    \"os_compute_api:os-server-external-events:create\": \"rule:admin_api\""},{"line_number":397,"context_line":"}"}],"source_content_type":"application/json","patch_set":29,"id":"fa32b979_1fa26e99","line":396,"updated":"2015-06-18 13:15:08.000000000","message":"need a v2.1 policy stuff here","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"}],"nova/api/openstack/compute/plugins/v3/servers.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"7930a595b910fd2205df9fcf43b50dd68d231242","unresolved":false,"context_lines":[{"line_number":374,"context_line":"                search_opts[\u0027user_id\u0027] \u003d search_opts[\u0027user_id\u0027]"},{"line_number":375,"context_line":"            else:"},{"line_number":376,"context_line":"                if context.user_id:"},{"line_number":377,"context_line":"                    search_opts[\u0027user_id\u0027] \u003d context.user_id"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        limit, marker \u003d common.get_limit_and_marker(req)"},{"line_number":380,"context_line":"        sort_keys, sort_dirs \u003d common.get_sort_params(req.params)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7a016987_aff68b5a","line":377,"updated":"2015-05-22 07:06:44.000000000","message":"Unless I\u0027m missing something, we need an \u0027all_users\u0027 option now","commit_id":"cc8468260272040331f6b41c6eda9f925759ef53"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"d4e2b5436e9e7bdbe0f79d44d4c28a410f59e791","unresolved":false,"context_lines":[{"line_number":374,"context_line":"                search_opts[\u0027user_id\u0027] \u003d search_opts[\u0027user_id\u0027]"},{"line_number":375,"context_line":"            else:"},{"line_number":376,"context_line":"                if context.user_id:"},{"line_number":377,"context_line":"                    search_opts[\u0027user_id\u0027] \u003d context.user_id"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        limit, marker \u003d common.get_limit_and_marker(req)"},{"line_number":380,"context_line":"        sort_keys, sort_dirs \u003d common.get_sort_params(req.params)"}],"source_content_type":"text/x-python","patch_set":23,"id":"7a016987_c10f2187","line":377,"in_reply_to":"7a016987_aff68b5a","updated":"2015-05-26 05:23:27.000000000","message":"Yes you are right. I will think over this and update accordingly.","commit_id":"cc8468260272040331f6b41c6eda9f925759ef53"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"af35601ac175490abf152666d0f40bfa571df198","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                if context.project_id:"},{"line_number":370,"context_line":"                    search_opts[\u0027project_id\u0027] \u003d context.project_id"},{"line_number":371,"context_line":"                if \u0027user_id\u0027 not in search_opts.keys():"},{"line_number":372,"context_line":"                    search_opts[\u0027user_id\u0027] \u003d context.user_id"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        limit, marker \u003d common.get_limit_and_marker(req)"},{"line_number":375,"context_line":"        sort_keys, sort_dirs \u003d common.get_sort_params(req.params)"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a016987_4eee808c","line":372,"updated":"2015-05-27 14:32:11.000000000","message":"it\u0027s a bit clumsy repeating the tests from L357 on L367. I refactored this block:\n\n    if \u0027tenant_id\u0027 in search_opts:\n        search_opts[\u0027project_id\u0027] \u003d search_opts[\u0027tenant_id\u0027]\n    else:\n        if \u0027all_tenants\u0027 in search_opts:\n            action \u003d \"detail\" if is_detail else \"index\"\n            authorize(context, action\u003d\"%s:get_all_tenants\" % action)\n        else:\n            if context.project_id:\n                search_opts[\u0027project_id\u0027] \u003d context.project_id\n            if \u0027user_id\u0027 not in search_opts:\n                search_opts[\u0027user_id\u0027] \u003d context.user_id\n    if \u0027all_tenants\u0027 in search_opts:\n        del search_opts[\u0027all_tenants\u0027]\n\nHowever you still need \u0027all_users\u0027. Currently there\u0027s no way to query for all users in your context tenant without passing your tenant_id explicitly.","commit_id":"7a864bc586b04e2ac2b85a7939c3b67a4455d2a9"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"fed28710ef2e0ddfd129769566375347137bf172","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                if context.project_id:"},{"line_number":370,"context_line":"                    search_opts[\u0027project_id\u0027] \u003d context.project_id"},{"line_number":371,"context_line":"                if \u0027user_id\u0027 not in search_opts.keys():"},{"line_number":372,"context_line":"                    search_opts[\u0027user_id\u0027] \u003d context.user_id"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        limit, marker \u003d common.get_limit_and_marker(req)"},{"line_number":375,"context_line":"        sort_keys, sort_dirs \u003d common.get_sort_params(req.params)"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a016987_d9722011","line":372,"in_reply_to":"7a016987_4eee808c","updated":"2015-05-28 06:28:33.000000000","message":"Will do in next patch","commit_id":"7a864bc586b04e2ac2b85a7939c3b67a4455d2a9"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"300e027fc769fb29a2c634be1c012d2076dcae0e","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        # then remove it from the search options. Nothing passed as"},{"line_number":348,"context_line":"        # the value for all_tenants is considered to enable the feature"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        try:"},{"line_number":351,"context_line":"            all_tenants \u003d search_opts.get(\u0027all_tenants\u0027)"},{"line_number":352,"context_line":"            all_users \u003d search_opts.get(\u0027all_users\u0027)"},{"line_number":353,"context_line":"            if all_tenants:"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_0678482a","line":350,"updated":"2015-05-28 12:37:12.000000000","message":"nit: this could be two lines lower. Tight exception blocks help to show where an exception is expected.","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"ffe1c36cb0d16dd70bd3b2a0cabc226f0ffdb1c9","unresolved":false,"context_lines":[{"line_number":347,"context_line":"        # then remove it from the search options. Nothing passed as"},{"line_number":348,"context_line":"        # the value for all_tenants is considered to enable the feature"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        try:"},{"line_number":351,"context_line":"            all_tenants \u003d search_opts.get(\u0027all_tenants\u0027)"},{"line_number":352,"context_line":"            all_users \u003d search_opts.get(\u0027all_users\u0027)"},{"line_number":353,"context_line":"            if all_tenants:"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_1ef74f8c","line":350,"in_reply_to":"7a016987_0678482a","updated":"2015-05-29 03:55:28.000000000","message":"Thanks for input","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"300e027fc769fb29a2c634be1c012d2076dcae0e","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                    del search_opts[\u0027all_tenants\u0027]"},{"line_number":356,"context_line":"            if all_users:"},{"line_number":357,"context_line":"                if not strutils.bool_from_string(all_users, True):"},{"line_number":358,"context_line":"                    del search_opts[\u0027all_tenants\u0027]"},{"line_number":359,"context_line":"        except ValueError as err:"},{"line_number":360,"context_line":"            raise exception.InvalidInput(six.text_type(err))"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_54994a6d","line":358,"updated":"2015-05-28 12:37:12.000000000","message":"all_users","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"ffe1c36cb0d16dd70bd3b2a0cabc226f0ffdb1c9","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                    del search_opts[\u0027all_tenants\u0027]"},{"line_number":356,"context_line":"            if all_users:"},{"line_number":357,"context_line":"                if not strutils.bool_from_string(all_users, True):"},{"line_number":358,"context_line":"                    del search_opts[\u0027all_tenants\u0027]"},{"line_number":359,"context_line":"        except ValueError as err:"},{"line_number":360,"context_line":"            raise exception.InvalidInput(six.text_type(err))"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_9e0a1f89","line":358,"in_reply_to":"7a016987_54994a6d","updated":"2015-05-29 03:55:28.000000000","message":"Sorry, my mistake.","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"300e027fc769fb29a2c634be1c012d2076dcae0e","unresolved":false,"context_lines":[{"line_number":374,"context_line":"                        search_opts[\u0027project_id\u0027] \u003d context.project_id"},{"line_number":375,"context_line":"                else:"},{"line_number":376,"context_line":"                    if context.project_id:"},{"line_number":377,"context_line":"                        search_opts[\u0027tenant_id\u0027] \u003d context.project_id"},{"line_number":378,"context_line":"                        search_opts[\u0027project_id\u0027] \u003d context.project_id"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        if \u0027all_users\u0027 in search_opts:"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_663b7cec","line":377,"updated":"2015-05-28 12:37:12.000000000","message":"pretty sure you meant user_id here?","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"ffe1c36cb0d16dd70bd3b2a0cabc226f0ffdb1c9","unresolved":false,"context_lines":[{"line_number":374,"context_line":"                        search_opts[\u0027project_id\u0027] \u003d context.project_id"},{"line_number":375,"context_line":"                else:"},{"line_number":376,"context_line":"                    if context.project_id:"},{"line_number":377,"context_line":"                        search_opts[\u0027tenant_id\u0027] \u003d context.project_id"},{"line_number":378,"context_line":"                        search_opts[\u0027project_id\u0027] \u003d context.project_id"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        if \u0027all_users\u0027 in search_opts:"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_5e85c7cc","line":377,"in_reply_to":"7a016987_663b7cec","updated":"2015-05-29 03:55:28.000000000","message":"No it should be \u0027tenant_id\u0027 itself.\n\nPlease check https://review.openstack.org/#/c/139025/26/nova/compute/api.py L#1950 \n\nif \u0027tenant_id\u0027 in search_opts.keys():\n and \u0027user_id\u0027 is not there in search_opts then --\u003e\n      check_policy(context, \u0027compute:get_per_tenant\u0027, \u003ctarget with no user_id\u003e\n\nThe intention to do this is because --\nnova list --tenant \u003ctenant-id\u003e should all users associated instances within given tenant.\n\nSo I think this implementation is fine.","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9d48e75e2a7671ee18aa2042268b0c6d756780f5","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # TODO(gmann): \u0027all_tenants\u0027 flag should not be required while"},{"line_number":332,"context_line":"        # searching with \u0027tenant_id\u0027. Ref bug# 1185290"},{"line_number":333,"context_line":"        # +microversions to achieve above mentioned behavior by"},{"line_number":334,"context_line":"        # uncommenting below code."},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"        # if \u0027tenant_id\u0027 in search_opts and \u0027all_tenants\u0027 not in search_opts:"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_d6b790d6","line":333,"updated":"2015-06-08 15:51:49.000000000","message":"if you want to remove this, you need to complete the TODO. That should be trivial as, as Alex pointed out, you already need a microversion bump.","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9d48e75e2a7671ee18aa2042268b0c6d756780f5","unresolved":false,"context_lines":[{"line_number":341,"context_line":"            # policy permission for compute:get_all_tenants when it"},{"line_number":342,"context_line":"            # doesn\u0027t actually need it."},{"line_number":343,"context_line":"            # if context.project_id !\u003d search_opts.get(\u0027tenant_id\u0027):"},{"line_number":344,"context_line":"            #    search_opts[\u0027all_tenants\u0027] \u003d 1"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        # If all tenants is passed with 0 or false as the value"},{"line_number":347,"context_line":"        # then remove it from the search options. Nothing passed as"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_96b118e4","line":344,"updated":"2015-06-08 15:51:49.000000000","message":"This can be removed","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"c343ddcb6846faa116ea0035b225874a48be7b3b","unresolved":false,"context_lines":[{"line_number":341,"context_line":"            # policy permission for compute:get_all_tenants when it"},{"line_number":342,"context_line":"            # doesn\u0027t actually need it."},{"line_number":343,"context_line":"            # if context.project_id !\u003d search_opts.get(\u0027tenant_id\u0027):"},{"line_number":344,"context_line":"            #    search_opts[\u0027all_tenants\u0027] \u003d 1"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        # If all tenants is passed with 0 or false as the value"},{"line_number":347,"context_line":"        # then remove it from the search options. Nothing passed as"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_99426b0f","line":344,"in_reply_to":"3afb71cf_96b118e4","updated":"2015-06-08 16:03:39.000000000","message":"... if you do the TODO","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"9d48e75e2a7671ee18aa2042268b0c6d756780f5","unresolved":false,"context_lines":[{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        # If all tenants is passed with 0 or false as the value"},{"line_number":347,"context_line":"        # then remove it from the search options. Nothing passed as"},{"line_number":348,"context_line":"        # the value for all_tenants is considered to enable the feature"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        all_tenants \u003d search_opts.get(\u0027all_tenants\u0027)"},{"line_number":351,"context_line":"        all_users \u003d search_opts.get(\u0027all_users\u0027)"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_76eb3cb1","line":348,"updated":"2015-06-08 15:51:49.000000000","message":"This still seems useful","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"13173870dc1c2cce7421ca2182816e74600b5f09","unresolved":false,"context_lines":[{"line_number":370,"context_line":"            # to see other users within their tenant (or any tenant,"},{"line_number":371,"context_line":"            # if they have get_all_tenants)."},{"line_number":372,"context_line":"            else:"},{"line_number":373,"context_line":"                if \u0027user_id\u0027 not in search_opts \\"},{"line_number":374,"context_line":"                    and \u0027all_users\u0027 not in search_opts:"},{"line_number":375,"context_line":"                    if context.user_id:"},{"line_number":376,"context_line":"                        search_opts[\u0027user_id\u0027] \u003d context.user_id"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_5285faaa","line":373,"updated":"2015-06-08 11:07:17.000000000","message":"can you please write this as:\nif (\u0027user_id\u0027 not in search_opts and\n    \u0027all_users\u0027 not in search_opts):","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"2d9293bc6d684b07f71a7755b6555a2b6ef03738","unresolved":false,"context_lines":[{"line_number":370,"context_line":"            # to see other users within their tenant (or any tenant,"},{"line_number":371,"context_line":"            # if they have get_all_tenants)."},{"line_number":372,"context_line":"            else:"},{"line_number":373,"context_line":"                if \u0027user_id\u0027 not in search_opts \\"},{"line_number":374,"context_line":"                    and \u0027all_users\u0027 not in search_opts:"},{"line_number":375,"context_line":"                    if context.user_id:"},{"line_number":376,"context_line":"                        search_opts[\u0027user_id\u0027] \u003d context.user_id"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_4a59ba59","line":373,"in_reply_to":"3afb71cf_5285faaa","updated":"2015-06-08 15:19:49.000000000","message":"thanks for input, I will amend it.","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a44fa6751ec93d1ac7027cb46f8d7885ebb2eeab","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                else:"},{"line_number":380,"context_line":"                    if context.project_id:"},{"line_number":381,"context_line":"                        search_opts[\u0027tenant_id\u0027] \u003d context.project_id"},{"line_number":382,"context_line":"                        search_opts[\u0027project_id\u0027] \u003d context.project_id"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        if \u0027all_users\u0027 in search_opts:"},{"line_number":385,"context_line":"            del search_opts[\u0027all_users\u0027]"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_4dcaff6f","line":382,"updated":"2015-06-08 11:16:35.000000000","message":"-1, this is too deeply nested","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"2d9293bc6d684b07f71a7755b6555a2b6ef03738","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                else:"},{"line_number":380,"context_line":"                    if context.project_id:"},{"line_number":381,"context_line":"                        search_opts[\u0027tenant_id\u0027] \u003d context.project_id"},{"line_number":382,"context_line":"                        search_opts[\u0027project_id\u0027] \u003d context.project_id"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        if \u0027all_users\u0027 in search_opts:"},{"line_number":385,"context_line":"            del search_opts[\u0027all_users\u0027]"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_0a198288","line":382,"in_reply_to":"3afb71cf_4dcaff6f","updated":"2015-06-08 15:19:49.000000000","message":"Please share your IRC id and timing u would be available.\nThis patch is taking too much time, please discuss and only then I will upload new one.","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"d7df06c45c112cc7418b19ac53dc852a5cb85d9a","unresolved":false,"context_lines":[{"line_number":598,"context_line":"                context.project_id):"},{"line_number":599,"context_line":"                search_opts[\u0027project_id\u0027] \u003d context.project_id"},{"line_number":600,"context_line":"            elif \u0027user_id\u0027 not in search_opts:"},{"line_number":601,"context_line":"                 search_opts[\u0027user_id\u0027] \u003d context.user_id"},{"line_number":602,"context_line":""},{"line_number":603,"context_line":"        limit, marker \u003d common.get_limit_and_marker(req)"},{"line_number":604,"context_line":"        # Sorting by multiple keys and directions is conditionally enabled"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_0e3b63d1","line":601,"updated":"2014-12-04 13:30:43.000000000","message":"E111 indentation is not a multiple of four","commit_id":"9c87d1539224ec960ad4c4406a0912e85990521f"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b7450bbd0c2307f389fb4c13c2af201a4ee5a118","unresolved":false,"context_lines":[{"line_number":594,"context_line":"            # Don\u0027t overwrite project_id/tenant_id/user_id if"},{"line_number":595,"context_line":"            # explicitly set in search_opts"},{"line_number":596,"context_line":"            if (\u0027project_id\u0027 not in search_opts and"},{"line_number":597,"context_line":"                \u0027tenant_id\u0027 not in server_opts and"},{"line_number":598,"context_line":"                context.project_id):"},{"line_number":599,"context_line":"                search_opts[\u0027project_id\u0027] \u003d context.project_id"},{"line_number":600,"context_line":"            elif \u0027user_id\u0027 not in search_opts:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_763821ef","line":597,"updated":"2014-12-05 08:57:31.000000000","message":"why tenant_id?\n\nhttp://developer.openstack.org/api-ref-compute-v2.html\ndidn\u0027t have that info","commit_id":"b5e9eee6e9bb99dbb3b3829b1613f647be3b452d"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"ca8a4c4eb3b197e1e0e90cffba5a83e232dcf2cc","unresolved":false,"context_lines":[{"line_number":594,"context_line":"            # Don\u0027t overwrite project_id/tenant_id/user_id if"},{"line_number":595,"context_line":"            # explicitly set in search_opts"},{"line_number":596,"context_line":"            if (\u0027project_id\u0027 not in search_opts and"},{"line_number":597,"context_line":"                \u0027tenant_id\u0027 not in server_opts and"},{"line_number":598,"context_line":"                context.project_id):"},{"line_number":599,"context_line":"                search_opts[\u0027project_id\u0027] \u003d context.project_id"},{"line_number":600,"context_line":"            elif \u0027user_id\u0027 not in search_opts:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_61ff7202","line":597,"in_reply_to":"5a890539_763821ef","updated":"2014-12-08 06:38:49.000000000","message":"When you run the cli for this, in debug mode then -\n\n\"http://10.0.0.17:8774/v2/d0a91ae0a2b647acbb06805c677a65c1/servers/detail?tenant_id\u003ddemo\"\n\nThis trace can be found - which reflects \"/detail?tenant_id\u003ddemo\"\n\nThats why we need to take tenant_id","commit_id":"b5e9eee6e9bb99dbb3b3829b1613f647be3b452d"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"33fc33f5307fa6a192893b7b10f1d7ae2bba5784","unresolved":false,"context_lines":[{"line_number":594,"context_line":"            # Don\u0027t overwrite project_id/tenant_id/user_id if"},{"line_number":595,"context_line":"            # explicitly set in search_opts"},{"line_number":596,"context_line":"            if (\u0027project_id\u0027 not in search_opts and"},{"line_number":597,"context_line":"                \u0027tenant_id\u0027 not in server_opts and"},{"line_number":598,"context_line":"                context.project_id):"},{"line_number":599,"context_line":"                search_opts[\u0027project_id\u0027] \u003d context.project_id"},{"line_number":600,"context_line":"            elif \u0027user_id\u0027 not in search_opts:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_b59b5265","line":597,"in_reply_to":"5a890539_763821ef","updated":"2014-12-05 15:16:34.000000000","message":"this should be search_opts","commit_id":"b5e9eee6e9bb99dbb3b3829b1613f647be3b452d"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"ca8a4c4eb3b197e1e0e90cffba5a83e232dcf2cc","unresolved":false,"context_lines":[{"line_number":594,"context_line":"            # Don\u0027t overwrite project_id/tenant_id/user_id if"},{"line_number":595,"context_line":"            # explicitly set in search_opts"},{"line_number":596,"context_line":"            if (\u0027project_id\u0027 not in search_opts and"},{"line_number":597,"context_line":"                \u0027tenant_id\u0027 not in server_opts and"},{"line_number":598,"context_line":"                context.project_id):"},{"line_number":599,"context_line":"                search_opts[\u0027project_id\u0027] \u003d context.project_id"},{"line_number":600,"context_line":"            elif \u0027user_id\u0027 not in search_opts:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_3ea74751","line":597,"in_reply_to":"5a890539_b59b5265","updated":"2014-12-08 06:38:49.000000000","message":"Yes, I will amend it in my next patch.","commit_id":"b5e9eee6e9bb99dbb3b3829b1613f647be3b452d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"20b1dab13d947c76c0805985a4db7a2c226483ae","unresolved":false,"context_lines":[{"line_number":529,"context_line":"        search_opts.update(req.GET)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":532,"context_line":"        remove_invalid_options(context, search_opts,"},{"line_number":533,"context_line":"                self._get_server_search_options())"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        # Verify search by \u0027status\u0027 contains a valid status."}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_08db2aee","line":532,"updated":"2014-12-08 12:43:58.000000000","message":"there will remove the project_id, tenant_id, user_id","commit_id":"ac0f79ea2927e268882cfb5228b0022be882d23f"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"bbb1bde28c43c1cad2c61ece1b1b08dd4b13fe5b","unresolved":false,"context_lines":[{"line_number":529,"context_line":"        search_opts.update(req.GET)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":532,"context_line":"        remove_invalid_options(context, search_opts,"},{"line_number":533,"context_line":"                self._get_server_search_options())"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"        # Verify search by \u0027status\u0027 contains a valid status."}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_2210e100","line":532,"in_reply_to":"3a961159_08db2aee","updated":"2014-12-09 11:27:50.000000000","message":"I don\u0027t think so as, \n\nTenant specific listing is allowed only to Admin.\n\nIf you are making a call by non admin user/tenant,  tenant_id option will be treated as invalid and will be removed by \"remove_invalid_options\" method.","commit_id":"ac0f79ea2927e268882cfb5228b0022be882d23f"},{"author":{"_account_id":8151,"name":"Michal Jura","email":"mjura@suse.com","username":"mjura"},"change_message_id":"94e366a8331b8bd4d92bd723f5cd61fabcfe3b8b","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                           {\u0027project_id\u0027: context.project_id,"},{"line_number":203,"context_line":"                            \u0027user_id\u0027: context.user_id})"},{"line_number":204,"context_line":"            del search_opts[\u0027all_tenants\u0027]"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        else:"},{"line_number":207,"context_line":"            if \u0027tenant_id\u0027 in search_opts.keys():"},{"line_number":208,"context_line":"                search_opts[\u0027project_id\u0027] \u003d search_opts[\u0027tenant_id\u0027]"}],"source_content_type":"text/x-python","patch_set":19,"id":"bab921fb_d4a0ff92","line":205,"updated":"2015-04-23 08:09:45.000000000","message":"I think that we would like to remove this empty line here","commit_id":"f7b19f7a8b86ae7f35a32b451728ac1de4c3dae7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"13173870dc1c2cce7421ca2182816e74600b5f09","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            # to see other users within their tenant (or any tenant,"},{"line_number":221,"context_line":"            # if they have get_all_tenants)."},{"line_number":222,"context_line":"            else:"},{"line_number":223,"context_line":"                if \u0027user_id\u0027 not in search_opts \\"},{"line_number":224,"context_line":"                    and \u0027all_users\u0027 not in search_opts:"},{"line_number":225,"context_line":"                    if context.user_id:"},{"line_number":226,"context_line":"                        search_opts[\u0027user_id\u0027] \u003d context.user_id"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_128f82cd","line":223,"updated":"2015-06-08 11:07:17.000000000","message":"ditto","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4ce75e9bab3cd92960356a8bdfca70232f412dbd","unresolved":false,"context_lines":[{"line_number":234,"context_line":"        if \u0027all_users\u0027 in search_opts:"},{"line_number":235,"context_line":"            del search_opts[\u0027all_users\u0027]"},{"line_number":236,"context_line":"        if \u0027all_tenants\u0027 in search_opts:"},{"line_number":237,"context_line":"            del search_opts[\u0027all_tenants\u0027]"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        limit, marker \u003d common.get_limit_and_marker(req)"},{"line_number":240,"context_line":"        # Sorting by multiple keys and directions is conditionally enabled"}],"source_content_type":"text/x-python","patch_set":29,"id":"fa32b979_dfbe46ad","line":237,"updated":"2015-06-18 13:15:08.000000000","message":"maybe I\u0027m wrong, but I think you can\u0027t change the V2 API now that it\u0027s stable","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"}],"nova/compute/api.py":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"ae73174d1033dc981c3991b209d09f0b35497db8","unresolved":false,"context_lines":[{"line_number":1948,"context_line":"            search_opts \u003d {}"},{"line_number":1949,"context_line":""},{"line_number":1950,"context_line":"        target \u003d {}"},{"line_number":1951,"context_line":"        # Check for appropriate project id"},{"line_number":1952,"context_line":"        if \u0027project_id\u0027 in search_opts.keys():"},{"line_number":1953,"context_line":"            project_id \u003d search_opts[\u0027project_id\u0027]"},{"line_number":1954,"context_line":"        elif \u0027tenant_id\u0027 in search_opts.keys():"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_bc9cb110","line":1951,"updated":"2014-12-10 21:06:42.000000000","message":"having this mapping logic all over the place is confusing, lets simplify it.","commit_id":"73de4871aa5fc5cbc5bf6c693e3fafc0d5393cea"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"ca0570120809d6e57a4ae67ad11c8c7fc98836c4","unresolved":false,"context_lines":[{"line_number":1948,"context_line":"            search_opts \u003d {}"},{"line_number":1949,"context_line":""},{"line_number":1950,"context_line":"        target \u003d {}"},{"line_number":1951,"context_line":"        # Check for appropriate project id"},{"line_number":1952,"context_line":"        if \u0027project_id\u0027 in search_opts.keys():"},{"line_number":1953,"context_line":"            project_id \u003d search_opts[\u0027project_id\u0027]"},{"line_number":1954,"context_line":"        elif \u0027tenant_id\u0027 in search_opts.keys():"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_6e28c1e2","line":1951,"in_reply_to":"3a961159_bc9cb110","updated":"2014-12-11 08:51:36.000000000","message":"Alternatively done in another way.","commit_id":"73de4871aa5fc5cbc5bf6c693e3fafc0d5393cea"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"ae73174d1033dc981c3991b209d09f0b35497db8","unresolved":false,"context_lines":[{"line_number":1988,"context_line":"            filters[\u0027system_metadata\u0027] \u003d jsonutils.loads(metadata)"},{"line_number":1989,"context_line":""},{"line_number":1990,"context_line":"        # search_option to filter_name mapping."},{"line_number":1991,"context_line":"        filter_mapping \u003d {"},{"line_number":1992,"context_line":"                \u0027image\u0027: \u0027image_ref\u0027,"},{"line_number":1993,"context_line":"                \u0027name\u0027: \u0027display_name\u0027,"},{"line_number":1994,"context_line":"                \u0027tenant_id\u0027: \u0027project_id\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_3c88c1c4","line":1991,"updated":"2014-12-10 21:06:42.000000000","message":"Can you re-use some of this mapping logic?","commit_id":"73de4871aa5fc5cbc5bf6c693e3fafc0d5393cea"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"ca0570120809d6e57a4ae67ad11c8c7fc98836c4","unresolved":false,"context_lines":[{"line_number":1988,"context_line":"            filters[\u0027system_metadata\u0027] \u003d jsonutils.loads(metadata)"},{"line_number":1989,"context_line":""},{"line_number":1990,"context_line":"        # search_option to filter_name mapping."},{"line_number":1991,"context_line":"        filter_mapping \u003d {"},{"line_number":1992,"context_line":"                \u0027image\u0027: \u0027image_ref\u0027,"},{"line_number":1993,"context_line":"                \u0027name\u0027: \u0027display_name\u0027,"},{"line_number":1994,"context_line":"                \u0027tenant_id\u0027: \u0027project_id\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_ee7bd1f2","line":1991,"in_reply_to":"3a961159_3c88c1c4","updated":"2014-12-11 08:51:36.000000000","message":"Alternatively done in another way.","commit_id":"73de4871aa5fc5cbc5bf6c693e3fafc0d5393cea"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1b98973b520b59e78fde35b5093f9f3440dfb2f3","unresolved":false,"context_lines":[{"line_number":1953,"context_line":"            \u0027user_id\u0027: context.user_id,"},{"line_number":1954,"context_line":"        }"},{"line_number":1955,"context_line":""},{"line_number":1956,"context_line":"        if not self.skip_policy_check:"},{"line_number":1957,"context_line":"            check_policy(context, \"get_all\", target)"},{"line_number":1958,"context_line":""},{"line_number":1959,"context_line":"        if search_opts is None:"}],"source_content_type":"text/x-python","patch_set":12,"id":"baa041b7_3749638c","side":"PARENT","line":1956,"updated":"2015-04-02 13:21:56.000000000","message":"we didn\u0027t doing policy enforcement under rest api layer  anymore. This is why the check at here.","commit_id":"ef42f74a07b6a96252f91f1755631ddc314a3b2f"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"9e0758633aa3964f652412b205215e794b18c6c4","unresolved":false,"context_lines":[{"line_number":1953,"context_line":"            \u0027user_id\u0027: context.user_id,"},{"line_number":1954,"context_line":"        }"},{"line_number":1955,"context_line":""},{"line_number":1956,"context_line":"        if not self.skip_policy_check:"},{"line_number":1957,"context_line":"            check_policy(context, \"get_all\", target)"},{"line_number":1958,"context_line":""},{"line_number":1959,"context_line":"        if search_opts is None:"}],"source_content_type":"text/x-python","patch_set":12,"id":"baa041b7_b11303b8","side":"PARENT","line":1956,"in_reply_to":"baa041b7_3749638c","updated":"2015-04-05 06:28:51.000000000","message":"I will do in next patch. Thanks for comment.","commit_id":"ef42f74a07b6a96252f91f1755631ddc314a3b2f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1b98973b520b59e78fde35b5093f9f3440dfb2f3","unresolved":false,"context_lines":[{"line_number":1954,"context_line":"        if search_opts.has_key(\u0027tenant_id\u0027) and search_opts.has_key(\u0027user_id\u0027):"},{"line_number":1955,"context_line":"            check_policy(context, \u0027compute:get_per_tenant\u0027,"},{"line_number":1956,"context_line":"                         {\u0027project_id\u0027: search_opts[\u0027tenant_id\u0027],"},{"line_number":1957,"context_line":"                          \u0027user_id\u0027: search_opts[\u0027user_id\u0027]})"},{"line_number":1958,"context_line":"            del search_opts[\u0027tenant_id\u0027]"},{"line_number":1959,"context_line":""},{"line_number":1960,"context_line":"        if \u0027project_id\u0027 in search_opts.keys():"}],"source_content_type":"text/x-python","patch_set":12,"id":"baa041b7_b72c53ac","line":1957,"updated":"2015-04-02 13:21:56.000000000","message":"we should enforce this policy at rest api layer.","commit_id":"c7a1de10cc0cbe3d5a7384575d88ac8b01de45bc"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"9e0758633aa3964f652412b205215e794b18c6c4","unresolved":false,"context_lines":[{"line_number":1954,"context_line":"        if search_opts.has_key(\u0027tenant_id\u0027) and search_opts.has_key(\u0027user_id\u0027):"},{"line_number":1955,"context_line":"            check_policy(context, \u0027compute:get_per_tenant\u0027,"},{"line_number":1956,"context_line":"                         {\u0027project_id\u0027: search_opts[\u0027tenant_id\u0027],"},{"line_number":1957,"context_line":"                          \u0027user_id\u0027: search_opts[\u0027user_id\u0027]})"},{"line_number":1958,"context_line":"            del search_opts[\u0027tenant_id\u0027]"},{"line_number":1959,"context_line":""},{"line_number":1960,"context_line":"        if \u0027project_id\u0027 in search_opts.keys():"}],"source_content_type":"text/x-python","patch_set":12,"id":"baa041b7_51395740","line":1957,"in_reply_to":"baa041b7_b72c53ac","updated":"2015-04-05 06:28:51.000000000","message":"This should not be at API layer (In file nova/api/openstack/compute/servers.py) Because in this case - when we invoke unit test then it will fail for more testcases.\n\nAs unit test invokes directly API.get_all method, if there is not any policy check in this fie the most of tests will fail due to policy issue. So this check is added here.","commit_id":"c7a1de10cc0cbe3d5a7384575d88ac8b01de45bc"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"300e027fc769fb29a2c634be1c012d2076dcae0e","unresolved":false,"context_lines":[{"line_number":1956,"context_line":"            else:"},{"line_number":1957,"context_line":"                check_policy(context, \u0027compute:get_per_tenant\u0027,"},{"line_number":1958,"context_line":"                             {\u0027project_id\u0027: search_opts[\u0027tenant_id\u0027]})"},{"line_number":1959,"context_line":"            del search_opts[\u0027tenant_id\u0027]"},{"line_number":1960,"context_line":""},{"line_number":1961,"context_line":"        if \u0027project_id\u0027 in search_opts.keys():"},{"line_number":1962,"context_line":"            project_id \u003d search_opts.get(\u0027project_id\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_2f29d737","line":1959,"updated":"2015-05-28 12:37:12.000000000","message":"Why do this please?","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"ffe1c36cb0d16dd70bd3b2a0cabc226f0ffdb1c9","unresolved":false,"context_lines":[{"line_number":1956,"context_line":"            else:"},{"line_number":1957,"context_line":"                check_policy(context, \u0027compute:get_per_tenant\u0027,"},{"line_number":1958,"context_line":"                             {\u0027project_id\u0027: search_opts[\u0027tenant_id\u0027]})"},{"line_number":1959,"context_line":"            del search_opts[\u0027tenant_id\u0027]"},{"line_number":1960,"context_line":""},{"line_number":1961,"context_line":"        if \u0027project_id\u0027 in search_opts.keys():"},{"line_number":1962,"context_line":"            project_id \u003d search_opts.get(\u0027project_id\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_fee2339f","line":1959,"in_reply_to":"7a016987_2f29d737","updated":"2015-05-29 03:55:28.000000000","message":"In case when there is \u0027tenant_id\u0027 in search_opts, search_opts will have both \"project_id\" and \u0027tenant_id\u0027. Thus L#1977 will print both tenant_id and project_id for same id, which is misleading. So tenant_id should be deleted.","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"300e027fc769fb29a2c634be1c012d2076dcae0e","unresolved":false,"context_lines":[{"line_number":1959,"context_line":"            del search_opts[\u0027tenant_id\u0027]"},{"line_number":1960,"context_line":""},{"line_number":1961,"context_line":"        if \u0027project_id\u0027 in search_opts.keys():"},{"line_number":1962,"context_line":"            project_id \u003d search_opts.get(\u0027project_id\u0027)"},{"line_number":1963,"context_line":"        else:"},{"line_number":1964,"context_line":"            project_id \u003d context.project_id"},{"line_number":1965,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_0f217b4d","line":1962,"updated":"2015-05-28 12:37:12.000000000","message":"this should be search_opts.get(\u0027tenant_id\u0027)?","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"ffe1c36cb0d16dd70bd3b2a0cabc226f0ffdb1c9","unresolved":false,"context_lines":[{"line_number":1959,"context_line":"            del search_opts[\u0027tenant_id\u0027]"},{"line_number":1960,"context_line":""},{"line_number":1961,"context_line":"        if \u0027project_id\u0027 in search_opts.keys():"},{"line_number":1962,"context_line":"            project_id \u003d search_opts.get(\u0027project_id\u0027)"},{"line_number":1963,"context_line":"        else:"},{"line_number":1964,"context_line":"            project_id \u003d context.project_id"},{"line_number":1965,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_fea7d34d","line":1962,"in_reply_to":"7a016987_0f217b4d","updated":"2015-05-29 03:55:28.000000000","message":"No, its not like that.\n\nIn what case when L#1950 will not be executed ?\nwhen tenant_id is not there right ? \u003cbut still in case \u0027project_id is there in search_opts\u0027\u003e\n\nin this case L#1961 get validated.","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"011419b98f6e31afe9e96316ffce7df6bc2160bc","unresolved":false,"context_lines":[{"line_number":1951,"context_line":"            \u0027user_id\u0027: search_opts.get(\u0027user_id\u0027, context.user_id),"},{"line_number":1952,"context_line":"        }"},{"line_number":1953,"context_line":"        if \u0027tenant_id\u0027 in search_opts.keys():"},{"line_number":1954,"context_line":"            check_policy(context, \u0027compute:get_per_tenant\u0027, target)"},{"line_number":1955,"context_line":""},{"line_number":1956,"context_line":"        if not self.skip_policy_check:"},{"line_number":1957,"context_line":"            check_policy(context, \"get_all\", target)"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a016987_5e9b8766","line":1954,"updated":"2015-05-29 03:41:45.000000000","message":"nova list --tenant \u003ctenant\u003e should give all instances within that tenant and all users in that tenant.\n\nI think this will not be working with this patch.","commit_id":"382aef852ea904847b413fe2f619a1331fe37bdd"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"13173870dc1c2cce7421ca2182816e74600b5f09","unresolved":false,"context_lines":[{"line_number":1948,"context_line":""},{"line_number":1949,"context_line":"        target \u003d {}"},{"line_number":1950,"context_line":"        # Check for appropriate project id and user_id"},{"line_number":1951,"context_line":"        if \u0027tenant_id\u0027 in search_opts.keys():"},{"line_number":1952,"context_line":"            if \u0027user_id\u0027 in search_opts.keys():"},{"line_number":1953,"context_line":"                check_policy(context, \u0027compute:get_per_tenant\u0027,"},{"line_number":1954,"context_line":"                             {\u0027project_id\u0027: search_opts[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_9247f276","line":1951,"updated":"2015-06-08 11:07:17.000000000","message":"can we use six.viewkeys(search_opts) to be python 3 friendly","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"2d9293bc6d684b07f71a7755b6555a2b6ef03738","unresolved":false,"context_lines":[{"line_number":1948,"context_line":""},{"line_number":1949,"context_line":"        target \u003d {}"},{"line_number":1950,"context_line":"        # Check for appropriate project id and user_id"},{"line_number":1951,"context_line":"        if \u0027tenant_id\u0027 in search_opts.keys():"},{"line_number":1952,"context_line":"            if \u0027user_id\u0027 in search_opts.keys():"},{"line_number":1953,"context_line":"                check_policy(context, \u0027compute:get_per_tenant\u0027,"},{"line_number":1954,"context_line":"                             {\u0027project_id\u0027: search_opts[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_d02798b4","line":1951,"in_reply_to":"3afb71cf_9247f276","updated":"2015-06-08 15:19:49.000000000","message":"garyk, thanks for input. I will correct it :)","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"13173870dc1c2cce7421ca2182816e74600b5f09","unresolved":false,"context_lines":[{"line_number":1949,"context_line":"        target \u003d {}"},{"line_number":1950,"context_line":"        # Check for appropriate project id and user_id"},{"line_number":1951,"context_line":"        if \u0027tenant_id\u0027 in search_opts.keys():"},{"line_number":1952,"context_line":"            if \u0027user_id\u0027 in search_opts.keys():"},{"line_number":1953,"context_line":"                check_policy(context, \u0027compute:get_per_tenant\u0027,"},{"line_number":1954,"context_line":"                             {\u0027project_id\u0027: search_opts[\u0027tenant_id\u0027],"},{"line_number":1955,"context_line":"                              \u0027user_id\u0027: search_opts[\u0027user_id\u0027]})"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_32595e5b","line":1952,"updated":"2015-06-08 11:07:17.000000000","message":"ditto","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"2d9293bc6d684b07f71a7755b6555a2b6ef03738","unresolved":false,"context_lines":[{"line_number":1949,"context_line":"        target \u003d {}"},{"line_number":1950,"context_line":"        # Check for appropriate project id and user_id"},{"line_number":1951,"context_line":"        if \u0027tenant_id\u0027 in search_opts.keys():"},{"line_number":1952,"context_line":"            if \u0027user_id\u0027 in search_opts.keys():"},{"line_number":1953,"context_line":"                check_policy(context, \u0027compute:get_per_tenant\u0027,"},{"line_number":1954,"context_line":"                             {\u0027project_id\u0027: search_opts[\u0027tenant_id\u0027],"},{"line_number":1955,"context_line":"                              \u0027user_id\u0027: search_opts[\u0027user_id\u0027]})"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_702464ae","line":1952,"in_reply_to":"3afb71cf_32595e5b","updated":"2015-06-08 15:19:49.000000000","message":"ditto","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"}],"nova/tests/unit/api/openstack/compute/plugins/v3/test_servers.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"300e027fc769fb29a2c634be1c012d2076dcae0e","unresolved":false,"context_lines":[{"line_number":755,"context_line":"                         limit\u003dNone, marker\u003dNone, want_objects\u003dFalse,"},{"line_number":756,"context_line":"                         expected_attrs\u003dNone, sort_keys\u003dNone, sort_dirs\u003dNone):"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"            self.assertIsNotNone(search_opts)"},{"line_number":759,"context_line":"            db_list \u003d [fakes.stub_instance(100, uuid\u003dserver_uuid)]"},{"line_number":760,"context_line":"            return instance_obj._make_instance_list("},{"line_number":761,"context_line":"                context, objects.InstanceList(), db_list, FIELDS)"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_d4589a58","line":758,"updated":"2015-05-28 12:37:12.000000000","message":"We need to assert the correct search_opts were passed","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"ffe1c36cb0d16dd70bd3b2a0cabc226f0ffdb1c9","unresolved":false,"context_lines":[{"line_number":755,"context_line":"                         limit\u003dNone, marker\u003dNone, want_objects\u003dFalse,"},{"line_number":756,"context_line":"                         expected_attrs\u003dNone, sort_keys\u003dNone, sort_dirs\u003dNone):"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"            self.assertIsNotNone(search_opts)"},{"line_number":759,"context_line":"            db_list \u003d [fakes.stub_instance(100, uuid\u003dserver_uuid)]"},{"line_number":760,"context_line":"            return instance_obj._make_instance_list("},{"line_number":761,"context_line":"                context, objects.InstanceList(), db_list, FIELDS)"}],"source_content_type":"text/x-python","patch_set":26,"id":"7a016987_be64bb21","line":758,"in_reply_to":"7a016987_d4589a58","updated":"2015-05-29 03:55:28.000000000","message":"Fine, I will check it.","commit_id":"36016675c7846951d62946e49d960eefa393e803"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"13173870dc1c2cce7421ca2182816e74600b5f09","unresolved":false,"context_lines":[{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        self.assertEqual(len(servers), 1)"},{"line_number":717,"context_line":"        self.assertEqual(servers[0][\u0027id\u0027], server_uuid)"},{"line_number":718,"context_line":"###################"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"    def test_tenant_id_filter_converts_to_project_id_for_admin(self):"},{"line_number":721,"context_line":"        def fake_get_all(context, filters\u003dNone, limit\u003dNone, marker\u003dNone,"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_923ed2d8","line":718,"updated":"2015-06-08 11:07:17.000000000","message":"not sure what this tag is but we do not need it","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"2d9293bc6d684b07f71a7755b6555a2b6ef03738","unresolved":false,"context_lines":[{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        self.assertEqual(len(servers), 1)"},{"line_number":717,"context_line":"        self.assertEqual(servers[0][\u0027id\u0027], server_uuid)"},{"line_number":718,"context_line":"###################"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"    def test_tenant_id_filter_converts_to_project_id_for_admin(self):"},{"line_number":721,"context_line":"        def fake_get_all(context, filters\u003dNone, limit\u003dNone, marker\u003dNone,"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_9027e063","line":718,"in_reply_to":"3afb71cf_923ed2d8","updated":"2015-06-08 15:19:49.000000000","message":"This is added by mistake. I will correct in next.","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"13173870dc1c2cce7421ca2182816e74600b5f09","unresolved":false,"context_lines":[{"line_number":795,"context_line":"        self.assertEqual(len(servers), 1)"},{"line_number":796,"context_line":"        self.assertEqual(servers[0][\u0027id\u0027], server_uuid)"},{"line_number":797,"context_line":""},{"line_number":798,"context_line":"#######################################"},{"line_number":799,"context_line":"    def test_all_tenants_param_normal(self):"},{"line_number":800,"context_line":"        def fake_get_all(context, filters\u003dNone, limit\u003dNone, marker\u003dNone,"},{"line_number":801,"context_line":"                         columns_to_join\u003dNone, use_slave\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_9215b24a","line":798,"updated":"2015-06-08 11:07:17.000000000","message":"ditto","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"2d9293bc6d684b07f71a7755b6555a2b6ef03738","unresolved":false,"context_lines":[{"line_number":795,"context_line":"        self.assertEqual(len(servers), 1)"},{"line_number":796,"context_line":"        self.assertEqual(servers[0][\u0027id\u0027], server_uuid)"},{"line_number":797,"context_line":""},{"line_number":798,"context_line":"#######################################"},{"line_number":799,"context_line":"    def test_all_tenants_param_normal(self):"},{"line_number":800,"context_line":"        def fake_get_all(context, filters\u003dNone, limit\u003dNone, marker\u003dNone,"},{"line_number":801,"context_line":"                         columns_to_join\u003dNone, use_slave\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":29,"id":"3afb71cf_301dcc0f","line":798,"in_reply_to":"3afb71cf_9215b24a","updated":"2015-06-08 15:19:49.000000000","message":"ditto.","commit_id":"48b6d9229797dfc75ca69d7fe881ce4c29edacb2"}],"nova/tests/unit/api/openstack/compute/test_servers.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"af35601ac175490abf152666d0f40bfa571df198","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"7a016987_951a4b16","updated":"2015-05-27 14:32:11.000000000","message":"please test that you can query all users in your context tenant","commit_id":"7a864bc586b04e2ac2b85a7939c3b67a4455d2a9"},{"author":{"_account_id":8205,"name":"Mh Raies","email":"raiesmh08@gmail.com","username":"raiesmh08"},"change_message_id":"fed28710ef2e0ddfd129769566375347137bf172","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"7a016987_b9608436","in_reply_to":"7a016987_951a4b16","updated":"2015-05-28 06:28:33.000000000","message":"Will do in next patch.","commit_id":"7a864bc586b04e2ac2b85a7939c3b67a4455d2a9"}]}
