)]}'
{"doc/source/framework/overview.rst":[{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"cabc7dfa9aebc9eeae8b47073efeb834a8a97f82","unresolved":false,"context_lines":[{"line_number":26,"context_line":"      * Expected result is ``True`` and the test fails. This results in a"},{"line_number":27,"context_line":"        ``Forbidden`` exception getting thrown."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"     For example, a 200 from the API call and a ``True`` result from"},{"line_number":30,"context_line":"     ``oslo.policy`` or a 403 from the API call and a ``False`` result from"},{"line_number":31,"context_line":"     ``oslo.policy`` are successful results."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_43f75fd4","line":29,"updated":"2017-11-28 02:03:54.000000000","message":"This should probably be moved to L21. An example of failing results could go here instead.","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9bcda1bfe367139f121b29c71d24c3ce035a9bf","unresolved":false,"context_lines":[{"line_number":26,"context_line":"      * Expected result is ``True`` and the test fails. This results in a"},{"line_number":27,"context_line":"        ``Forbidden`` exception getting thrown."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"     For example, a 200 from the API call and a ``True`` result from"},{"line_number":30,"context_line":"     ``oslo.policy`` or a 403 from the API call and a ``False`` result from"},{"line_number":31,"context_line":"     ``oslo.policy`` are successful results."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_6aa3f901","line":29,"in_reply_to":"ff82abbf_43f75fd4","updated":"2017-11-30 22:32:02.000000000","message":"Done","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"90f0b7d326ac57d8f720cefb30f60eb7af8d8cb9","unresolved":false,"context_lines":[{"line_number":58,"context_line":"This module is responsible for handling role switching, the mechanism by which"},{"line_number":59,"context_line":"Patrole is able to set up, tear down and execute APIs using the same set"},{"line_number":60,"context_line":"of credentials. Every RBAC test must perform a role switch even if the role"},{"line_number":61,"context_line":"that is being switched to is admin. For more information about this module,"},{"line_number":62,"context_line":"please see :ref:`rbac-utils`."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_26dca9e2","line":61,"updated":"2017-11-28 02:52:13.000000000","message":"nit: newline here for consistency","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9bcda1bfe367139f121b29c71d24c3ce035a9bf","unresolved":false,"context_lines":[{"line_number":58,"context_line":"This module is responsible for handling role switching, the mechanism by which"},{"line_number":59,"context_line":"Patrole is able to set up, tear down and execute APIs using the same set"},{"line_number":60,"context_line":"of credentials. Every RBAC test must perform a role switch even if the role"},{"line_number":61,"context_line":"that is being switched to is admin. For more information about this module,"},{"line_number":62,"context_line":"please see :ref:`rbac-utils`."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_8aa8bddb","line":61,"in_reply_to":"ff82abbf_26dca9e2","updated":"2017-11-30 22:32:02.000000000","message":"Done","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"}],"doc/source/framework/rbac_utils.rst":[{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"cabc7dfa9aebc9eeae8b47073efeb834a8a97f82","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The only foolproof solution is to manipulate the role for the same set of"},{"line_number":22,"context_line":"credentials, rather than using distinct credentials for setup/teardown"},{"line_number":23,"context_line":"and test execution, respectively. This is especially true if you consider"},{"line_number":24,"context_line":"custom policy rule definitions, which can be arbitrarily complex."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Patrole, therefore, implicitly splits up each test into 3 stages: set up,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_63e4e3e0","line":23,"range":{"start_line":23,"start_character":58,"end_line":23,"end_character":73},"updated":"2017-11-28 02:03:54.000000000","message":"nit: This should be in third person (\"when considering\")","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9bcda1bfe367139f121b29c71d24c3ce035a9bf","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The only foolproof solution is to manipulate the role for the same set of"},{"line_number":22,"context_line":"credentials, rather than using distinct credentials for setup/teardown"},{"line_number":23,"context_line":"and test execution, respectively. This is especially true if you consider"},{"line_number":24,"context_line":"custom policy rule definitions, which can be arbitrarily complex."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Patrole, therefore, implicitly splits up each test into 3 stages: set up,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_aa9901d1","line":23,"range":{"start_line":23,"start_character":58,"end_line":23,"end_character":73},"in_reply_to":"ff82abbf_63e4e3e0","updated":"2017-11-30 22:32:02.000000000","message":"Done","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23185,"name":"Samantha Blanco","email":"samantha.blanco@att.com","username":"sblanco"},"change_message_id":"cabc7dfa9aebc9eeae8b47073efeb834a8a97f82","unresolved":false,"context_lines":[{"line_number":24,"context_line":"custom policy rule definitions, which can be arbitrarily complex."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Patrole, therefore, implicitly splits up each test into 3 stages: set up,"},{"line_number":27,"context_line":"test execution and teardown."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The role workflow is as follows:"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_43cf5f55","line":27,"range":{"start_line":27,"start_character":10,"end_line":27,"end_character":15},"updated":"2017-11-28 02:03:54.000000000","message":"nit: execution, and","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9bcda1bfe367139f121b29c71d24c3ce035a9bf","unresolved":false,"context_lines":[{"line_number":24,"context_line":"custom policy rule definitions, which can be arbitrarily complex."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Patrole, therefore, implicitly splits up each test into 3 stages: set up,"},{"line_number":27,"context_line":"test execution and teardown."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The role workflow is as follows:"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_0a5fcd0e","line":27,"range":{"start_line":27,"start_character":10,"end_line":27,"end_character":15},"in_reply_to":"ff82abbf_43cf5f55","updated":"2017-11-30 22:32:02.000000000","message":"Done","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"90f0b7d326ac57d8f720cefb30f60eb7af8d8cb9","unresolved":false,"context_lines":[{"line_number":33,"context_line":"2) Test execution: ``[patrole] rbac_test_role`` is used manually via a call"},{"line_number":34,"context_line":"   to ``rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)``. Everything that"},{"line_number":35,"context_line":"   is executed after this call, until the end of the test, uses the primary"},{"line_number":36,"context_line":"   credentials overridden with the RBAC role."},{"line_number":37,"context_line":"3) Teardown: Admin role is used automatically. The primary credentials have"},{"line_number":38,"context_line":"   been overridden with the admin role."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_660b917c","line":36,"range":{"start_line":36,"start_character":35,"end_line":36,"end_character":44},"updated":"2017-11-28 02:52:13.000000000","message":"``rbac_test_role``","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9bcda1bfe367139f121b29c71d24c3ce035a9bf","unresolved":false,"context_lines":[{"line_number":33,"context_line":"2) Test execution: ``[patrole] rbac_test_role`` is used manually via a call"},{"line_number":34,"context_line":"   to ``rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)``. Everything that"},{"line_number":35,"context_line":"   is executed after this call, until the end of the test, uses the primary"},{"line_number":36,"context_line":"   credentials overridden with the RBAC role."},{"line_number":37,"context_line":"3) Teardown: Admin role is used automatically. The primary credentials have"},{"line_number":38,"context_line":"   been overridden with the admin role."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_ea6149d5","line":36,"range":{"start_line":36,"start_character":35,"end_line":36,"end_character":44},"in_reply_to":"ff82abbf_660b917c","updated":"2017-11-30 22:32:02.000000000","message":"Done","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"90f0b7d326ac57d8f720cefb30f60eb7af8d8cb9","unresolved":false,"context_lines":[{"line_number":34,"context_line":"   to ``rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)``. Everything that"},{"line_number":35,"context_line":"   is executed after this call, until the end of the test, uses the primary"},{"line_number":36,"context_line":"   credentials overridden with the RBAC role."},{"line_number":37,"context_line":"3) Teardown: Admin role is used automatically. The primary credentials have"},{"line_number":38,"context_line":"   been overridden with the admin role."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":".. _Tempest credentials: https://docs.openstack.org/tempest/latest/library/credential_providers.html"},{"line_number":41,"context_line":".. _dynamic credentials: https://docs.openstack.org/tempest/latest/configuration.html#dynamic-credentials"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_a67af9ed","line":38,"range":{"start_line":37,"start_character":71,"end_line":38,"end_character":7},"updated":"2017-11-28 02:52:13.000000000","message":"are","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9bcda1bfe367139f121b29c71d24c3ce035a9bf","unresolved":false,"context_lines":[{"line_number":34,"context_line":"   to ``rbac_utils.switch_role(self, toggle_rbac_role\u003dTrue)``. Everything that"},{"line_number":35,"context_line":"   is executed after this call, until the end of the test, uses the primary"},{"line_number":36,"context_line":"   credentials overridden with the RBAC role."},{"line_number":37,"context_line":"3) Teardown: Admin role is used automatically. The primary credentials have"},{"line_number":38,"context_line":"   been overridden with the admin role."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":".. _Tempest credentials: https://docs.openstack.org/tempest/latest/library/credential_providers.html"},{"line_number":41,"context_line":".. _dynamic credentials: https://docs.openstack.org/tempest/latest/configuration.html#dynamic-credentials"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_4a65d5e0","line":38,"range":{"start_line":37,"start_character":71,"end_line":38,"end_character":7},"in_reply_to":"ff82abbf_a67af9ed","updated":"2017-11-30 22:32:02.000000000","message":"Done","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"90f0b7d326ac57d8f720cefb30f60eb7af8d8cb9","unresolved":false,"context_lines":[{"line_number":49,"context_line":"provides. These resources are typically reserved for \"expensive\" resources"},{"line_number":50,"context_line":"in terms of memory or storage requirements, like volumes and VMs. These"},{"line_number":51,"context_line":"resources are **always** created via the admin role; Patrole automatically"},{"line_number":52,"context_line":"handles this for you."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Like Tempest, however, Patrole must also create resources inside tests"},{"line_number":55,"context_line":"themselves. At the beginning of each test, the primary credentials have already"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_466bed1c","line":52,"range":{"start_line":52,"start_character":13,"end_line":52,"end_character":21},"updated":"2017-11-28 02:52:13.000000000","message":"remove","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9bcda1bfe367139f121b29c71d24c3ce035a9bf","unresolved":false,"context_lines":[{"line_number":49,"context_line":"provides. These resources are typically reserved for \"expensive\" resources"},{"line_number":50,"context_line":"in terms of memory or storage requirements, like volumes and VMs. These"},{"line_number":51,"context_line":"resources are **always** created via the admin role; Patrole automatically"},{"line_number":52,"context_line":"handles this for you."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Like Tempest, however, Patrole must also create resources inside tests"},{"line_number":55,"context_line":"themselves. At the beginning of each test, the primary credentials have already"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_2a6891b8","line":52,"range":{"start_line":52,"start_character":13,"end_line":52,"end_character":21},"in_reply_to":"ff82abbf_466bed1c","updated":"2017-11-30 22:32:02.000000000","message":"Done","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"90f0b7d326ac57d8f720cefb30f60eb7af8d8cb9","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Like Tempest, however, Patrole must also create resources inside tests"},{"line_number":55,"context_line":"themselves. At the beginning of each test, the primary credentials have already"},{"line_number":56,"context_line":"been overridden with the admin role. You can create whatever test-level"},{"line_number":57,"context_line":"resources you need, without having to worry about permissions."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Test Execution"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_c6685d1e","line":56,"range":{"start_line":56,"start_character":37,"end_line":56,"end_character":40},"updated":"2017-11-28 02:52:13.000000000","message":"One","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9bcda1bfe367139f121b29c71d24c3ce035a9bf","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Like Tempest, however, Patrole must also create resources inside tests"},{"line_number":55,"context_line":"themselves. At the beginning of each test, the primary credentials have already"},{"line_number":56,"context_line":"been overridden with the admin role. You can create whatever test-level"},{"line_number":57,"context_line":"resources you need, without having to worry about permissions."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Test Execution"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_8a73ddb1","line":56,"range":{"start_line":56,"start_character":37,"end_line":56,"end_character":40},"in_reply_to":"ff82abbf_c6685d1e","updated":"2017-11-30 22:32:02.000000000","message":"Done","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"90f0b7d326ac57d8f720cefb30f60eb7af8d8cb9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"Like Tempest, however, Patrole must also create resources inside tests"},{"line_number":55,"context_line":"themselves. At the beginning of each test, the primary credentials have already"},{"line_number":56,"context_line":"been overridden with the admin role. You can create whatever test-level"},{"line_number":57,"context_line":"resources you need, without having to worry about permissions."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Test Execution"},{"line_number":60,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_865ed573","line":57,"range":{"start_line":57,"start_character":10,"end_line":57,"end_character":18},"updated":"2017-11-28 02:52:13.000000000","message":"one needs","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9bcda1bfe367139f121b29c71d24c3ce035a9bf","unresolved":false,"context_lines":[{"line_number":54,"context_line":"Like Tempest, however, Patrole must also create resources inside tests"},{"line_number":55,"context_line":"themselves. At the beginning of each test, the primary credentials have already"},{"line_number":56,"context_line":"been overridden with the admin role. You can create whatever test-level"},{"line_number":57,"context_line":"resources you need, without having to worry about permissions."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Test Execution"},{"line_number":60,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_6a6e99ca","line":57,"range":{"start_line":57,"start_character":10,"end_line":57,"end_character":18},"in_reply_to":"ff82abbf_865ed573","updated":"2017-11-30 22:32:02.000000000","message":"Done","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"90f0b7d326ac57d8f720cefb30f60eb7af8d8cb9","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        # Call the endpoint that enforces the expected policy action, described"},{"line_number":85,"context_line":"        # by the \"rule\" kwarg in the decorator above."},{"line_number":86,"context_line":"        self.aggregates_client.show_aggregate(aggregate_id)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Test Cleanup"},{"line_number":89,"context_line":"------------"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_46d9adf0","line":87,"updated":"2017-11-28 02:52:13.000000000","message":"Details about how waiting after API call using admin creds would be useful","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c9bcda1bfe367139f121b29c71d24c3ce035a9bf","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        # Call the endpoint that enforces the expected policy action, described"},{"line_number":85,"context_line":"        # by the \"rule\" kwarg in the decorator above."},{"line_number":86,"context_line":"        self.aggregates_client.show_aggregate(aggregate_id)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Test Cleanup"},{"line_number":89,"context_line":"------------"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"ff82abbf_ca79e593","line":87,"in_reply_to":"ff82abbf_46d9adf0","updated":"2017-11-30 22:32:02.000000000","message":"Will do this in a follow-up later, as this\u0027ll be refactored by: https://review.openstack.org/#/c/521703/","commit_id":"9b49c909ab1abcd0fc71dfd5be4cb0400b363f5b"}]}
