)]}'
{"README.rst":[{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"3ae75d21dbc4560896766e299f18d77530fec12f","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  endpoint at a time."},{"line_number":36,"context_line":"* *Complete coverage*. Patrole strives for complete coverage of OpenStack APIs"},{"line_number":37,"context_line":"  *that use RBAC*. For testing, Patrole uses the API-to-policy mapping"},{"line_number":38,"context_line":"  contained in each project’s policy in code documentation."},{"line_number":39,"context_line":"* *Self-contained*. Patrole should attempt to clean up after itself; whenever"},{"line_number":40,"context_line":"  possible we should tear down resources when done."},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_c4f66cd9","line":38,"range":{"start_line":38,"start_character":58,"end_line":38,"end_character":59},"updated":"2018-06-19 19:07:12.000000000","message":"nit: where applicable","commit_id":"7450a1f7ed321642c78eddde62b2950df9546371"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e14f03b5d999eff0f96d21a917e00749823d7ffe","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  endpoint at a time."},{"line_number":36,"context_line":"* *Complete coverage*. Patrole strives for complete coverage of OpenStack APIs"},{"line_number":37,"context_line":"  *that use RBAC*. For testing, Patrole uses the API-to-policy mapping"},{"line_number":38,"context_line":"  contained in each project’s policy in code documentation."},{"line_number":39,"context_line":"* *Self-contained*. Patrole should attempt to clean up after itself; whenever"},{"line_number":40,"context_line":"  possible we should tear down resources when done."},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_0797863c","line":38,"range":{"start_line":38,"start_character":58,"end_line":38,"end_character":59},"in_reply_to":"5f7c97a3_c4f66cd9","updated":"2018-06-19 19:59:31.000000000","message":"Done","commit_id":"7450a1f7ed321642c78eddde62b2950df9546371"}],"doc/source/index.rst":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d89093aa4c43ccdd619e15740b563be214c3616a","unresolved":false,"context_lines":[{"line_number":8,"context_line":".. toctree::"},{"line_number":9,"context_line":"   :maxdepth: 2"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"   overview"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Patrole Configuration Guide"},{"line_number":14,"context_line":"---------------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_b7a73b51","line":11,"range":{"start_line":11,"start_character":3,"end_line":11,"end_character":11},"updated":"2018-06-15 03:07:43.000000000","message":"this should go in separate section \u0027Overview\u0027","commit_id":"a29bda1d0217f644c4f282699d27a2d97d5c81ba"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"02fed993169bd53aebfd0ea5e69a0d448e70feb9","unresolved":false,"context_lines":[{"line_number":8,"context_line":".. toctree::"},{"line_number":9,"context_line":"   :maxdepth: 2"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"   overview"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Patrole Configuration Guide"},{"line_number":14,"context_line":"---------------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_5be35207","line":11,"range":{"start_line":11,"start_character":3,"end_line":11,"end_character":11},"in_reply_to":"5f7c97a3_b7a73b51","updated":"2018-06-17 03:58:23.000000000","message":"Done","commit_id":"a29bda1d0217f644c4f282699d27a2d97d5c81ba"}],"doc/source/overview.rst":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"f8088e890a6ae1d1892ab25b936bb59ecf25cf79","unresolved":false,"context_lines":[{"line_number":74,"context_line":"   :ref:`patrole-configuration`."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"#. Once the configuration is done you\u0027re now ready to run Patrole. This can"},{"line_number":77,"context_line":"   be done using the `tempest_run`_ command. This can be done by either"},{"line_number":78,"context_line":"   running::"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    $ tempest run"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_fca66ac0","line":77,"range":{"start_line":77,"start_character":65,"end_line":77,"end_character":71},"updated":"2018-06-11 00:23:53.000000000","message":"Remove either as there\u0027s only 1 command below.","commit_id":"19b493da0a19825a38e33941cd293b2652db724d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"555b3007c28fd041b596e947cf2f54091a9e8955","unresolved":false,"context_lines":[{"line_number":74,"context_line":"   :ref:`patrole-configuration`."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"#. Once the configuration is done you\u0027re now ready to run Patrole. This can"},{"line_number":77,"context_line":"   be done using the `tempest_run`_ command. This can be done by either"},{"line_number":78,"context_line":"   running::"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    $ tempest run"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_3f9b1d17","line":77,"range":{"start_line":77,"start_character":65,"end_line":77,"end_character":71},"in_reply_to":"5f7c97a3_fca66ac0","updated":"2018-06-14 02:34:16.000000000","message":"Done","commit_id":"19b493da0a19825a38e33941cd293b2652db724d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"7683afc30d1999f0520ad45a3e52a37b92d34f2d","unresolved":false,"context_lines":[{"line_number":77,"context_line":"   be done using the `tempest_run`_ command. This can be done by either"},{"line_number":78,"context_line":"   running::"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    $ tempest run"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"  There is also the option to use testr directly, or any `testr`_ based test"},{"line_number":83,"context_line":"  runner, like `ostestr`_. For example, from the workspace dir run::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_e899c56c","line":80,"updated":"2018-06-10 19:34:25.000000000","message":"Missing regex for patrole","commit_id":"19b493da0a19825a38e33941cd293b2652db724d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"555b3007c28fd041b596e947cf2f54091a9e8955","unresolved":false,"context_lines":[{"line_number":77,"context_line":"   be done using the `tempest_run`_ command. This can be done by either"},{"line_number":78,"context_line":"   running::"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    $ tempest run"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"  There is also the option to use testr directly, or any `testr`_ based test"},{"line_number":83,"context_line":"  runner, like `ostestr`_. For example, from the workspace dir run::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_5f9e1906","line":80,"in_reply_to":"5f7c97a3_e899c56c","updated":"2018-06-14 02:34:16.000000000","message":"Done","commit_id":"19b493da0a19825a38e33941cd293b2652db724d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1686ee7af96e3605d1ee6d56cc8bd98d03038b04","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    The ``rbac_test_role`` is service-specific. Member, for example,"},{"line_number":124,"context_line":"    is an arbitrary role, but by convention is used to designate the default"},{"line_number":125,"context_line":"    non-admin role in the system. Most patrole tests should be run with"},{"line_number":126,"context_line":"    **admin** and **Member** roles. However, some services, like Heat, take"},{"line_number":127,"context_line":"    advantage of a role called **heat_stack_user**, as it appears frequently"},{"line_number":128,"context_line":"    in Heat\u0027s policy.json."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"For more information about the Member role,"},{"line_number":131,"context_line":"please see: `\u003chttps://ask.openstack.org/en/question/4759/member-vs-_member_/\u003e`__."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_9f17d1a3","line":128,"range":{"start_line":126,"start_character":35,"end_line":128,"end_character":26},"updated":"2018-06-14 02:24:31.000000000","message":"Generalize this.","commit_id":"19b493da0a19825a38e33941cd293b2652db724d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"555b3007c28fd041b596e947cf2f54091a9e8955","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    The ``rbac_test_role`` is service-specific. Member, for example,"},{"line_number":124,"context_line":"    is an arbitrary role, but by convention is used to designate the default"},{"line_number":125,"context_line":"    non-admin role in the system. Most patrole tests should be run with"},{"line_number":126,"context_line":"    **admin** and **Member** roles. However, some services, like Heat, take"},{"line_number":127,"context_line":"    advantage of a role called **heat_stack_user**, as it appears frequently"},{"line_number":128,"context_line":"    in Heat\u0027s policy.json."},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"For more information about the Member role,"},{"line_number":131,"context_line":"please see: `\u003chttps://ask.openstack.org/en/question/4759/member-vs-_member_/\u003e`__."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_ff8845c6","line":128,"range":{"start_line":126,"start_character":35,"end_line":128,"end_character":26},"in_reply_to":"5f7c97a3_9f17d1a3","updated":"2018-06-14 02:34:16.000000000","message":"Done","commit_id":"19b493da0a19825a38e33941cd293b2652db724d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1686ee7af96e3605d1ee6d56cc8bd98d03038b04","unresolved":false,"context_lines":[{"line_number":133,"context_line":"Unit Tests"},{"line_number":134,"context_line":"----------"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Patrole also has a set of unit tests which test the Tempest code itself. These"},{"line_number":137,"context_line":"tests can be run by specifying the test discovery path::"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    $ stestr --test-path ./tempest/tests/unit run"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_9fbb51c2","line":136,"range":{"start_line":136,"start_character":52,"end_line":136,"end_character":59},"updated":"2018-06-14 02:24:31.000000000","message":"Patrole","commit_id":"19b493da0a19825a38e33941cd293b2652db724d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"555b3007c28fd041b596e947cf2f54091a9e8955","unresolved":false,"context_lines":[{"line_number":133,"context_line":"Unit Tests"},{"line_number":134,"context_line":"----------"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Patrole also has a set of unit tests which test the Tempest code itself. These"},{"line_number":137,"context_line":"tests can be run by specifying the test discovery path::"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    $ stestr --test-path ./tempest/tests/unit run"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_df89c9c6","line":136,"range":{"start_line":136,"start_character":52,"end_line":136,"end_character":59},"in_reply_to":"5f7c97a3_9fbb51c2","updated":"2018-06-14 02:34:16.000000000","message":"Done","commit_id":"19b493da0a19825a38e33941cd293b2652db724d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1686ee7af96e3605d1ee6d56cc8bd98d03038b04","unresolved":false,"context_lines":[{"line_number":136,"context_line":"Patrole also has a set of unit tests which test the Tempest code itself. These"},{"line_number":137,"context_line":"tests can be run by specifying the test discovery path::"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    $ stestr --test-path ./tempest/tests/unit run"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"By setting ``--test-path`` option to ./patrole/tests/unit it specifies that"},{"line_number":142,"context_line":"test discovery should only be run on the unit test directory."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_dfbc69b6","line":139,"range":{"start_line":139,"start_character":27,"end_line":139,"end_character":34},"updated":"2018-06-14 02:24:31.000000000","message":"patrole_tempest_plugin","commit_id":"19b493da0a19825a38e33941cd293b2652db724d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"555b3007c28fd041b596e947cf2f54091a9e8955","unresolved":false,"context_lines":[{"line_number":136,"context_line":"Patrole also has a set of unit tests which test the Tempest code itself. These"},{"line_number":137,"context_line":"tests can be run by specifying the test discovery path::"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    $ stestr --test-path ./tempest/tests/unit run"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"By setting ``--test-path`` option to ./patrole/tests/unit it specifies that"},{"line_number":142,"context_line":"test discovery should only be run on the unit test directory."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_7fbe7565","line":139,"range":{"start_line":139,"start_character":27,"end_line":139,"end_character":34},"in_reply_to":"5f7c97a3_dfbc69b6","updated":"2018-06-14 02:34:16.000000000","message":"Done","commit_id":"19b493da0a19825a38e33941cd293b2652db724d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"1686ee7af96e3605d1ee6d56cc8bd98d03038b04","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    $ stestr --test-path ./tempest/tests/unit run"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"By setting ``--test-path`` option to ./patrole/tests/unit it specifies that"},{"line_number":142,"context_line":"test discovery should only be run on the unit test directory."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Alternatively, there are the py27 and py35 tox jobs which will run the unit"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_3f31dd59","line":141,"range":{"start_line":141,"start_character":39,"end_line":141,"end_character":46},"updated":"2018-06-14 02:24:31.000000000","message":"patrole_tempest_plugin","commit_id":"19b493da0a19825a38e33941cd293b2652db724d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"555b3007c28fd041b596e947cf2f54091a9e8955","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    $ stestr --test-path ./tempest/tests/unit run"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"By setting ``--test-path`` option to ./patrole/tests/unit it specifies that"},{"line_number":142,"context_line":"test discovery should only be run on the unit test directory."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Alternatively, there are the py27 and py35 tox jobs which will run the unit"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_9fc111e7","line":141,"range":{"start_line":141,"start_character":39,"end_line":141,"end_character":46},"in_reply_to":"5f7c97a3_3f31dd59","updated":"2018-06-14 02:34:16.000000000","message":"Done","commit_id":"19b493da0a19825a38e33941cd293b2652db724d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d89093aa4c43ccdd619e15740b563be214c3616a","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Design Principles"},{"line_number":19,"context_line":"-----------------"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Patrole borrows some design principles from Tempest, but not all, as its"},{"line_number":22,"context_line":"testing scope is confined to policies."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_77ec4392","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":0},"updated":"2018-06-15 03:07:43.000000000","message":"you can explain that Patrole is Tempest plugin and give some ref of Tempest plugin doc. \n\nthis way people can understand the design in more better way.","commit_id":"a29bda1d0217f644c4f282699d27a2d97d5c81ba"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"02fed993169bd53aebfd0ea5e69a0d448e70feb9","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Design Principles"},{"line_number":19,"context_line":"-----------------"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Patrole borrows some design principles from Tempest, but not all, as its"},{"line_number":22,"context_line":"testing scope is confined to policies."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_dbb8c2e9","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":0},"in_reply_to":"5f7c97a3_77ec4392","updated":"2018-06-17 03:58:23.000000000","message":"Done","commit_id":"a29bda1d0217f644c4f282699d27a2d97d5c81ba"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d89093aa4c43ccdd619e15740b563be214c3616a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Design Principles"},{"line_number":19,"context_line":"-----------------"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Patrole borrows some design principles from Tempest, but not all, as its"},{"line_number":22,"context_line":"testing scope is confined to policies."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"* Patrole uses OpenStack public interfaces. Tests in Patrole should only touch"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_575d8777","line":21,"range":{"start_line":21,"start_character":21,"end_line":21,"end_character":51},"updated":"2018-06-15 03:07:43.000000000","message":"please link to Tempest design principle doc","commit_id":"a29bda1d0217f644c4f282699d27a2d97d5c81ba"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"02fed993169bd53aebfd0ea5e69a0d448e70feb9","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Design Principles"},{"line_number":19,"context_line":"-----------------"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Patrole borrows some design principles from Tempest, but not all, as its"},{"line_number":22,"context_line":"testing scope is confined to policies."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"* Patrole uses OpenStack public interfaces. Tests in Patrole should only touch"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_3bea16d8","line":21,"range":{"start_line":21,"start_character":21,"end_line":21,"end_character":51},"in_reply_to":"5f7c97a3_575d8777","updated":"2018-06-17 03:58:23.000000000","message":"Done","commit_id":"a29bda1d0217f644c4f282699d27a2d97d5c81ba"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d89093aa4c43ccdd619e15740b563be214c3616a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"  correctly and the best way to do that is to validate the policy alone."},{"line_number":30,"context_line":"* Patrole strives for complete coverage of OpenStack APIs *that use RBAC*."},{"line_number":31,"context_line":"  For testing, Patrole uses the API-to-policy mapping contained in each"},{"line_number":32,"context_line":"  project\u0027s policy in code documentation."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"  .. note::"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_775e837a","line":32,"range":{"start_line":32,"start_character":12,"end_line":32,"end_character":40},"updated":"2018-06-15 03:07:43.000000000","message":"can you map the link here with some document about what is \u0027policy in code\u0027 and then give 1 example -\n For Example\" \u003cNova\u0027s Policy-in-code\u003e","commit_id":"a29bda1d0217f644c4f282699d27a2d97d5c81ba"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"02fed993169bd53aebfd0ea5e69a0d448e70feb9","unresolved":false,"context_lines":[{"line_number":29,"context_line":"  correctly and the best way to do that is to validate the policy alone."},{"line_number":30,"context_line":"* Patrole strives for complete coverage of OpenStack APIs *that use RBAC*."},{"line_number":31,"context_line":"  For testing, Patrole uses the API-to-policy mapping contained in each"},{"line_number":32,"context_line":"  project\u0027s policy in code documentation."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"  .. note::"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_fbbd7ed7","line":32,"range":{"start_line":32,"start_character":12,"end_line":32,"end_character":40},"in_reply_to":"5f7c97a3_775e837a","updated":"2018-06-17 03:58:23.000000000","message":"Done","commit_id":"a29bda1d0217f644c4f282699d27a2d97d5c81ba"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d89093aa4c43ccdd619e15740b563be214c3616a","unresolved":false,"context_lines":[{"line_number":76,"context_line":"#. Once the configuration is done you\u0027re now ready to run Patrole. This can"},{"line_number":77,"context_line":"   be done using the `tempest_run`_ command. This can be done by running::"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    $ tempest run --regex \u0027^patrole_tempest_plugin\\.tests\\.unit\u0027"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"  There is also the option to use testr directly, or any `testr`_ based test"},{"line_number":82,"context_line":"  runner, like `ostestr`_. For example, from the workspace dir run::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_1782afa6","line":79,"range":{"start_line":79,"start_character":59,"end_line":79,"end_character":63},"updated":"2018-06-15 03:07:43.000000000","message":"instead of unit, can you gice example of api tests  - \u0027^patrole_tempest_plugin\\.tests\\.api\u0027","commit_id":"a29bda1d0217f644c4f282699d27a2d97d5c81ba"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"02fed993169bd53aebfd0ea5e69a0d448e70feb9","unresolved":false,"context_lines":[{"line_number":76,"context_line":"#. Once the configuration is done you\u0027re now ready to run Patrole. This can"},{"line_number":77,"context_line":"   be done using the `tempest_run`_ command. This can be done by running::"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    $ tempest run --regex \u0027^patrole_tempest_plugin\\.tests\\.unit\u0027"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"  There is also the option to use testr directly, or any `testr`_ based test"},{"line_number":82,"context_line":"  runner, like `ostestr`_. For example, from the workspace dir run::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_bbb706f6","line":79,"range":{"start_line":79,"start_character":59,"end_line":79,"end_character":63},"in_reply_to":"5f7c97a3_1782afa6","updated":"2018-06-17 03:58:23.000000000","message":"Done","commit_id":"a29bda1d0217f644c4f282699d27a2d97d5c81ba"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"d89093aa4c43ccdd619e15740b563be214c3616a","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"      $ tox -evenv-tempest -- pip install /opt/stack/patrole /opt/stack/keystone /opt/stack/nova"},{"line_number":101,"context_line":"      $ tox -eall -- patrole_tempest_plugin.tests.api"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":".. _Tempest: https://github.com/openstack/tempest"},{"line_number":104,"context_line":".. _Quickstart: https://docs.openstack.org/tempest/latest/overview.html#quickstart"},{"line_number":105,"context_line":".. _tempest_run: https://docs.openstack.org/tempest/latest/run.html"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_37b48b82","line":102,"range":{"start_line":102,"start_character":0,"end_line":102,"end_character":0},"updated":"2018-06-15 03:07:43.000000000","message":"also mention about where results will be output or logs files to debug. you can mention the default location and saying that is configurable.","commit_id":"a29bda1d0217f644c4f282699d27a2d97d5c81ba"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"02fed993169bd53aebfd0ea5e69a0d448e70feb9","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"      $ tox -evenv-tempest -- pip install /opt/stack/patrole /opt/stack/keystone /opt/stack/nova"},{"line_number":101,"context_line":"      $ tox -eall -- patrole_tempest_plugin.tests.api"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":".. _Tempest: https://github.com/openstack/tempest"},{"line_number":104,"context_line":".. _Quickstart: https://docs.openstack.org/tempest/latest/overview.html#quickstart"},{"line_number":105,"context_line":".. _tempest_run: https://docs.openstack.org/tempest/latest/run.html"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_fba25ead","line":102,"range":{"start_line":102,"start_character":0,"end_line":102,"end_character":0},"in_reply_to":"5f7c97a3_37b48b82","updated":"2018-06-17 03:58:23.000000000","message":"Done","commit_id":"a29bda1d0217f644c4f282699d27a2d97d5c81ba"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"3ae75d21dbc4560896766e299f18d77530fec12f","unresolved":false,"context_lines":[{"line_number":29,"context_line":"  correctly and the best way to do that is to validate the policy alone."},{"line_number":30,"context_line":"* Patrole strives for complete coverage of OpenStack APIs *that use RBAC*."},{"line_number":31,"context_line":"  For testing, Patrole uses the API-to-policy mapping contained in each"},{"line_number":32,"context_line":"  project\u0027s `policy in code`_ documentation."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"  For example, Nova\u0027s policy in code documentation is located in the"},{"line_number":35,"context_line":"  `Nova repository`_ under ``nova/policies``. Likewise, Keystone\u0027s policy in"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_e4dfe835","line":32,"range":{"start_line":32,"start_character":43,"end_line":32,"end_character":44},"updated":"2018-06-19 19:07:12.000000000","message":"nit: where applicable","commit_id":"7450a1f7ed321642c78eddde62b2950df9546371"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e14f03b5d999eff0f96d21a917e00749823d7ffe","unresolved":false,"context_lines":[{"line_number":29,"context_line":"  correctly and the best way to do that is to validate the policy alone."},{"line_number":30,"context_line":"* Patrole strives for complete coverage of OpenStack APIs *that use RBAC*."},{"line_number":31,"context_line":"  For testing, Patrole uses the API-to-policy mapping contained in each"},{"line_number":32,"context_line":"  project\u0027s `policy in code`_ documentation."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"  For example, Nova\u0027s policy in code documentation is located in the"},{"line_number":35,"context_line":"  `Nova repository`_ under ``nova/policies``. Likewise, Keystone\u0027s policy in"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_67a2faaf","line":32,"range":{"start_line":32,"start_character":43,"end_line":32,"end_character":44},"in_reply_to":"5f7c97a3_e4dfe835","updated":"2018-06-19 19:59:31.000000000","message":"Done","commit_id":"7450a1f7ed321642c78eddde62b2950df9546371"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"a7a47614a892d5c332afad5e8fc59f2356e134a5","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    modifications made to pre-provisioned credentials."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* Patrole should be self-testing."},{"line_number":55,"context_line":"* Patrole should validate all policy in code defaults. The defaults are usually"},{"line_number":56,"context_line":"  found under ``\u003cservice_name\u003e/policies`` or ``\u003cservice_name\u003e/common/policies``"},{"line_number":57,"context_line":"  under each OpenStack service\u0027s repository. For example:"},{"line_number":58,"context_line":"  `Nova\u0027s defaults \u003chttps://github.com/openstack/nova/tree/master/nova/policies\u003e`_"},{"line_number":59,"context_line":"  or `Keystone\u0027s defaults \u003chttps://github.com/openstack/keystone/tree/master/keystone/common/policies\u003e`_."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":".. _Tempest plugin: https://docs.openstack.org/tempest/latest/plugin.html"},{"line_number":62,"context_line":".. _design principles: https://docs.openstack.org/tempest/latest/overview.html#design-principles"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_eaa498a5","line":59,"range":{"start_line":55,"start_character":55,"end_line":59,"end_character":105},"updated":"2018-06-19 14:28:04.000000000","message":"Little redundant with L35-38. Can clean up in child patchset in flight.","commit_id":"7450a1f7ed321642c78eddde62b2950df9546371"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e14f03b5d999eff0f96d21a917e00749823d7ffe","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    modifications made to pre-provisioned credentials."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* Patrole should be self-testing."},{"line_number":55,"context_line":"* Patrole should validate all policy in code defaults. The defaults are usually"},{"line_number":56,"context_line":"  found under ``\u003cservice_name\u003e/policies`` or ``\u003cservice_name\u003e/common/policies``"},{"line_number":57,"context_line":"  under each OpenStack service\u0027s repository. For example:"},{"line_number":58,"context_line":"  `Nova\u0027s defaults \u003chttps://github.com/openstack/nova/tree/master/nova/policies\u003e`_"},{"line_number":59,"context_line":"  or `Keystone\u0027s defaults \u003chttps://github.com/openstack/keystone/tree/master/keystone/common/policies\u003e`_."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":".. _Tempest plugin: https://docs.openstack.org/tempest/latest/plugin.html"},{"line_number":62,"context_line":".. _design principles: https://docs.openstack.org/tempest/latest/overview.html#design-principles"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_a7c25252","line":59,"range":{"start_line":55,"start_character":55,"end_line":59,"end_character":105},"in_reply_to":"5f7c97a3_04b464f1","updated":"2018-06-19 19:59:31.000000000","message":"Done","commit_id":"7450a1f7ed321642c78eddde62b2950df9546371"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"3ae75d21dbc4560896766e299f18d77530fec12f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    modifications made to pre-provisioned credentials."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"* Patrole should be self-testing."},{"line_number":55,"context_line":"* Patrole should validate all policy in code defaults. The defaults are usually"},{"line_number":56,"context_line":"  found under ``\u003cservice_name\u003e/policies`` or ``\u003cservice_name\u003e/common/policies``"},{"line_number":57,"context_line":"  under each OpenStack service\u0027s repository. For example:"},{"line_number":58,"context_line":"  `Nova\u0027s defaults \u003chttps://github.com/openstack/nova/tree/master/nova/policies\u003e`_"},{"line_number":59,"context_line":"  or `Keystone\u0027s defaults \u003chttps://github.com/openstack/keystone/tree/master/keystone/common/policies\u003e`_."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":".. _Tempest plugin: https://docs.openstack.org/tempest/latest/plugin.html"},{"line_number":62,"context_line":".. _design principles: https://docs.openstack.org/tempest/latest/overview.html#design-principles"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_04b464f1","line":59,"range":{"start_line":55,"start_character":55,"end_line":59,"end_character":105},"in_reply_to":"5f7c97a3_eaa498a5","updated":"2018-06-19 19:07:12.000000000","message":"agreed","commit_id":"7450a1f7ed321642c78eddde62b2950df9546371"},{"author":{"_account_id":17896,"name":"Rick Bartra","email":"rickbartra@microsoft.com","username":"rb560u"},"change_message_id":"3ae75d21dbc4560896766e299f18d77530fec12f","unresolved":false,"context_lines":[{"line_number":75,"context_line":"   the Patrole repo::"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    $ git clone https://git.openstack.org/openstack/patrole"},{"line_number":78,"context_line":"    $ pip install patrole/"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"   This can be done within a venv."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_8475d434","line":78,"range":{"start_line":78,"start_character":6,"end_line":78,"end_character":26},"updated":"2018-06-19 19:07:12.000000000","message":"does this install a certain version of patrole or does it install from the source code? if the idea is to install from source code, then the command is slightly different.","commit_id":"7450a1f7ed321642c78eddde62b2950df9546371"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e14f03b5d999eff0f96d21a917e00749823d7ffe","unresolved":false,"context_lines":[{"line_number":75,"context_line":"   the Patrole repo::"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    $ git clone https://git.openstack.org/openstack/patrole"},{"line_number":78,"context_line":"    $ pip install patrole/"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"   This can be done within a venv."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_c792ee58","line":78,"range":{"start_line":78,"start_character":6,"end_line":78,"end_character":26},"in_reply_to":"5f7c97a3_8475d434","updated":"2018-06-19 19:59:31.000000000","message":"Will add how to install from source code too.","commit_id":"7450a1f7ed321642c78eddde62b2950df9546371"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c229794e00c2dcc7b939bb7842f33871bee5e0d4","unresolved":false,"context_lines":[{"line_number":131,"context_line":"To change the role that the patrole tests are being run as, edit"},{"line_number":132,"context_line":"``rbac_test_role`` in the ``patrole`` section of tempest.conf: ::"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    [patrole]"},{"line_number":135,"context_line":"    rbac_test_role \u003d Member"},{"line_number":136,"context_line":"    ..."},{"line_number":137,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_7b772e3d","line":134,"updated":"2018-06-17 04:01:40.000000000","message":"This Member role stuff needs to be addressed later. See this: https://review.openstack.org/#/c/575865/","commit_id":"7450a1f7ed321642c78eddde62b2950df9546371"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"a7a47614a892d5c332afad5e8fc59f2356e134a5","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    The ``rbac_test_role`` is service-specific. Member, for example,"},{"line_number":141,"context_line":"    is an arbitrary role, but by convention is used to designate the default"},{"line_number":142,"context_line":"    non-admin role in the system. Most patrole tests should be run with"},{"line_number":143,"context_line":"    **admin** and **Member** roles. However, other services may use entirely"},{"line_number":144,"context_line":"    different roles."},{"line_number":145,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_aa8f8020","line":142,"range":{"start_line":142,"start_character":39,"end_line":142,"end_character":46},"updated":"2018-06-19 14:28:04.000000000","message":"Patrole","commit_id":"7450a1f7ed321642c78eddde62b2950df9546371"}]}
