)]}'
{"patrole_tempest_plugin/tests/api/network/test_qos_rbac.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9793d64b179ccf8facc8ecf0c32010f467f38cc","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    @classmethod"},{"line_number":39,"context_line":"    def create_policy(cls, name\u003d\"policy\"):"},{"line_number":40,"context_line":"        return cls.ntp_client.create_qos_policy(name)[\u0027policy\u0027]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":43,"context_line":"                                 rules\u003d[\"create_policy\"],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f102583e","line":40,"range":{"start_line":40,"start_character":8,"end_line":40,"end_character":63},"updated":"2018-08-21 01:14:02.000000000","message":"We should add a addCleanup call here:\n\n    def create_policy(self, name\u003dNone):\n        name \u003d name or data_utils.rand_name(self.__class__.__name__)\n        policy \u003d self.ntp_client.create_qos_policy(name)[\u0027policy\u0027]\n        self.addCleanup(test_utils.call_and_ignore_notfound_exc,\n                                   self.ntp_client.delete_qos_policy, policy_id)\n        return policy\n\nAlso note that this doesn\u0027t need to be a classmethod.","commit_id":"8e6ca4431d90350b238932520c2f9f854b6cd7f3"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9793d64b179ccf8facc8ecf0c32010f467f38cc","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":58,"context_line":"                                 rules\u003d[\"get_policy\"],"},{"line_number":59,"context_line":"                                 expected_error_codes\u003d[401])"},{"line_number":60,"context_line":"    @decorators.idempotent_id(\u0027d004a8de-b226-4eb4-9fdc-8202a7f64c56\u0027)"},{"line_number":61,"context_line":"    def test_get_policy(self):"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_51d30cd6","line":59,"range":{"start_line":59,"start_character":55,"end_line":59,"end_character":58},"updated":"2018-08-21 01:14:02.000000000","message":"404","commit_id":"8e6ca4431d90350b238932520c2f9f854b6cd7f3"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9793d64b179ccf8facc8ecf0c32010f467f38cc","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            self.ntp_client.list_qos_policies()"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":71,"context_line":"                                 rules\u003d[\"create_policy\", \"update_policy\"],"},{"line_number":72,"context_line":"                                 expected_error_codes\u003d[403, 401])"},{"line_number":73,"context_line":"    @decorators.idempotent_id(\u0027fb74d56f-1dfc-490b-a9e1-454af583eefb\u0027)"},{"line_number":74,"context_line":"    def test_update_policy(self):"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f1d9f8f3","line":72,"range":{"start_line":71,"start_character":0,"end_line":72,"end_character":65},"updated":"2018-08-21 01:14:02.000000000","message":"See comments below.","commit_id":"8e6ca4431d90350b238932520c2f9f854b6cd7f3"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9793d64b179ccf8facc8ecf0c32010f467f38cc","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        RBAC test for the neutron update_policy policy"},{"line_number":79,"context_line":"        \"\"\""},{"line_number":80,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":81,"context_line":"            policy \u003d self.create_policy(name\u003d\u0027test-policy\u0027)"},{"line_number":82,"context_line":"            self.ntp_client.update_qos_policy(policy[\u0027id\u0027],"},{"line_number":83,"context_line":"                                              description\u003d\u0027updated\u0027)"},{"line_number":84,"context_line":"        self.addCleanup(self.ntp_client.delete_qos_policy, policy[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_31d0d0c9","line":81,"range":{"start_line":81,"start_character":12,"end_line":81,"end_character":59},"updated":"2018-08-21 01:14:02.000000000","message":"This should on L80. See comment on L97 around naming.","commit_id":"8e6ca4431d90350b238932520c2f9f854b6cd7f3"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9793d64b179ccf8facc8ecf0c32010f467f38cc","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        self.addCleanup(self.ntp_client.delete_qos_policy, policy[\u0027id\u0027])"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":87,"context_line":"                                 rules\u003d[\"create_policy\", \"delete_policy\"],"},{"line_number":88,"context_line":"                                 expected_error_codes\u003d[403, 401])"},{"line_number":89,"context_line":"    @decorators.idempotent_id(\u0027ef4c23a6-4095-47a6-958e-1df585f7d8db\u0027)"},{"line_number":90,"context_line":"    def test_delete_policy(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_1150345e","line":87,"range":{"start_line":87,"start_character":41,"end_line":87,"end_character":54},"updated":"2018-08-21 01:14:02.000000000","message":"This should be get_policy.","commit_id":"8e6ca4431d90350b238932520c2f9f854b6cd7f3"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9793d64b179ccf8facc8ecf0c32010f467f38cc","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":87,"context_line":"                                 rules\u003d[\"create_policy\", \"delete_policy\"],"},{"line_number":88,"context_line":"                                 expected_error_codes\u003d[403, 401])"},{"line_number":89,"context_line":"    @decorators.idempotent_id(\u0027ef4c23a6-4095-47a6-958e-1df585f7d8db\u0027)"},{"line_number":90,"context_line":"    def test_delete_policy(self):"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_71c64819","line":88,"range":{"start_line":88,"start_character":55,"end_line":88,"end_character":63},"updated":"2018-08-21 01:14:02.000000000","message":"404, 403\n\nThe framework disallows 401.","commit_id":"8e6ca4431d90350b238932520c2f9f854b6cd7f3"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9793d64b179ccf8facc8ecf0c32010f467f38cc","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        RBAC test for the neutron delete_policy policy"},{"line_number":95,"context_line":"        \"\"\""},{"line_number":96,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":97,"context_line":"            policy \u003d self.create_policy(name\u003d\u0027policy-for-delete\u0027)"},{"line_number":98,"context_line":"            self.ntp_client.delete_qos_policy(policy[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_515eac76","line":97,"range":{"start_line":97,"start_character":45,"end_line":97,"end_character":64},"updated":"2018-08-21 01:14:02.000000000","message":"nit: better to do: data_utils.rand_name(self.__class__.__name__ + \u0027-qos-policy\u0027)","commit_id":"8e6ca4431d90350b238932520c2f9f854b6cd7f3"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9793d64b179ccf8facc8ecf0c32010f467f38cc","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        \"\"\""},{"line_number":96,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":97,"context_line":"            policy \u003d self.create_policy(name\u003d\u0027policy-for-delete\u0027)"},{"line_number":98,"context_line":"            self.ntp_client.delete_qos_policy(policy[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d1707c0b","line":98,"range":{"start_line":98,"start_character":12,"end_line":98,"end_character":59},"updated":"2018-08-21 01:14:02.000000000","message":"This should be outdented so that it\u0027s not included underneath the `with`. Alternatively can do: self.ntp_client.delete_qos_policy(policy[\u0027id\u0027])","commit_id":"8e6ca4431d90350b238932520c2f9f854b6cd7f3"},{"author":{"_account_id":16274,"name":"Mykola Yakovliev","email":"VegasQ@gmail.com","username":"vegasq"},"change_message_id":"84bbb0c585d14de6c37293e370a7f622b02cfc03","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":58,"context_line":"            policy \u003d self.create_policy()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":61,"context_line":"                        self.ntp_client.delete_qos_policy, policy[\u0027id\u0027])"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":64,"context_line":"                                 rules\u003d[\"get_policy\"],"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_f5ddf240","line":61,"range":{"start_line":60,"start_character":0,"end_line":61,"end_character":72},"updated":"2018-08-24 16:00:59.000000000","message":"Duplicate L43","commit_id":"8bb3896f25fc7e46cc6159644cd9d0b517d4d79f"},{"author":{"_account_id":23140,"name":"Jess Egler","email":"jess.egler@gmail.com","username":"jessegler"},"change_message_id":"55d4fcf37151d8c6ea741aefb4673e8e74947b86","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":58,"context_line":"            policy \u003d self.create_policy()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":61,"context_line":"                        self.ntp_client.delete_qos_policy, policy[\u0027id\u0027])"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":64,"context_line":"                                 rules\u003d[\"get_policy\"],"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0642c60f","line":61,"range":{"start_line":60,"start_character":0,"end_line":61,"end_character":72},"in_reply_to":"3f79a3b5_f5ddf240","updated":"2018-08-24 17:13:36.000000000","message":"Good call","commit_id":"8bb3896f25fc7e46cc6159644cd9d0b517d4d79f"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"0e32ee98c2f627975cdb944d95e74896df888717","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from tempest.common import utils"},{"line_number":18,"context_line":"from tempest.lib.common.utils import data_utils"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_26a0d891","line":15,"updated":"2018-08-29 01:28:46.000000000","message":"nit: extra newline between copyright and imports","commit_id":"bc5ee58d2433a6e83315c31bc965fc80b05f8291"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"0e32ee98c2f627975cdb944d95e74896df888717","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":58,"context_line":"            policy \u003d self.create_policy()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":61,"context_line":"                        self.ntp_client.delete_qos_policy, policy[\u0027id\u0027])"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":64,"context_line":"                                 rules\u003d[\"get_policy\"],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_469dd455","line":61,"range":{"start_line":60,"start_character":0,"end_line":61,"end_character":72},"updated":"2018-08-29 01:28:46.000000000","message":"This can be omitted since this is already on L43.","commit_id":"bc5ee58d2433a6e83315c31bc965fc80b05f8291"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"0e32ee98c2f627975cdb944d95e74896df888717","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        RBAC test for the neutron get_policy policy"},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        with self.rbac_utils.override_role(self):"},{"line_number":74,"context_line":"            self.ntp_client.list_qos_policies()"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":77,"context_line":"                                 rules\u003d[\"create_policy\", \"update_policy\"],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_46c6344c","line":74,"range":{"start_line":74,"start_character":28,"end_line":74,"end_character":45},"updated":"2018-08-29 01:28:46.000000000","message":"My hunch tells me this should be:\n\n    self.ntp_client.show_qos_policy(policy[\u0027id\u0027])\n\nBecause the policy name itself is singular not plural (i.e. get_policies). But this can be confirmed by altering the neutron policy.json from:\n\n\"get_policy\": \"rule:regular_user\",\n\nTo:\n\n\"get_policy\": \"rule:admin_only\"\n\nThen running the test using rbac_test_role \u003d member.\n\nWhich *should* result in a 404 getting raised. I think if you do the same for list_qos_policies you\u0027ll see an OverPermission raised which will be a test failure.\n\nhttps://github.com/openstack/neutron/blob/088f51cdaff7be91ed86d631af885e54312f9bfb/etc/policy.json#L192","commit_id":"bc5ee58d2433a6e83315c31bc965fc80b05f8291"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"0e32ee98c2f627975cdb944d95e74896df888717","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            self.ntp_client.list_qos_policies()"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":77,"context_line":"                                 rules\u003d[\"create_policy\", \"update_policy\"],"},{"line_number":78,"context_line":"                                 expected_error_codes\u003d[403, 403])"},{"line_number":79,"context_line":"    @decorators.idempotent_id(\u0027fb74d56f-1dfc-490b-a9e1-454af583eefb\u0027)"},{"line_number":80,"context_line":"    def test_update_policy(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_e6c2e034","line":77,"range":{"start_line":77,"start_character":41,"end_line":77,"end_character":54},"updated":"2018-08-29 01:28:46.000000000","message":"get_policy","commit_id":"bc5ee58d2433a6e83315c31bc965fc80b05f8291"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"0e32ee98c2f627975cdb944d95e74896df888717","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":77,"context_line":"                                 rules\u003d[\"create_policy\", \"update_policy\"],"},{"line_number":78,"context_line":"                                 expected_error_codes\u003d[403, 403])"},{"line_number":79,"context_line":"    @decorators.idempotent_id(\u0027fb74d56f-1dfc-490b-a9e1-454af583eefb\u0027)"},{"line_number":80,"context_line":"    def test_update_policy(self):"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c6dfa40a","line":78,"range":{"start_line":78,"start_character":55,"end_line":78,"end_character":58},"updated":"2018-08-29 01:28:46.000000000","message":"404","commit_id":"bc5ee58d2433a6e83315c31bc965fc80b05f8291"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"0e32ee98c2f627975cdb944d95e74896df888717","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                                              description\u003d\u0027updated\u0027)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":92,"context_line":"                                 rules\u003d[\"create_policy\", \"delete_policy\"],"},{"line_number":93,"context_line":"                                 expected_error_codes\u003d[403, 403])"},{"line_number":94,"context_line":"    @decorators.idempotent_id(\u0027ef4c23a6-4095-47a6-958e-1df585f7d8db\u0027)"},{"line_number":95,"context_line":"    def test_delete_policy(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_a6daa81a","line":92,"range":{"start_line":92,"start_character":41,"end_line":92,"end_character":54},"updated":"2018-08-29 01:28:46.000000000","message":"get_policy","commit_id":"bc5ee58d2433a6e83315c31bc965fc80b05f8291"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"0e32ee98c2f627975cdb944d95e74896df888717","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":92,"context_line":"                                 rules\u003d[\"create_policy\", \"delete_policy\"],"},{"line_number":93,"context_line":"                                 expected_error_codes\u003d[403, 403])"},{"line_number":94,"context_line":"    @decorators.idempotent_id(\u0027ef4c23a6-4095-47a6-958e-1df585f7d8db\u0027)"},{"line_number":95,"context_line":"    def test_delete_policy(self):"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_66e490e1","line":93,"range":{"start_line":93,"start_character":55,"end_line":93,"end_character":58},"updated":"2018-08-29 01:28:46.000000000","message":"404","commit_id":"bc5ee58d2433a6e83315c31bc965fc80b05f8291"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"d297c2392f276d81471d10371c4fb180becdd7a7","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @rbac_rule_validation.action(service\u003d\"neutron\","},{"line_number":47,"context_line":"                                 rules\u003d[\"create_policy\"],"},{"line_number":48,"context_line":"                                 expected_error_codes\u003d[403])"},{"line_number":49,"context_line":"    @decorators.idempotent_id(\u00272ade2e48-7f82-4650-a69c-933d8d594636\u0027)"},{"line_number":50,"context_line":"    def test_create_policy(self):"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_024faf6a","line":48,"range":{"start_line":48,"start_character":33,"end_line":48,"end_character":60},"updated":"2018-09-11 21:03:22.000000000","message":"nit: not needed as it already defaults to 403","commit_id":"e3b252740221d075bc9fdc514eaa3d89f4400551"}]}
