)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfc3a85bde9a332b287e447a7308f2ca48f180d6","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2018-06-16 09:52:23 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Simple usage docs for implied roles"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I47722a52f590eae1d1b5c6c5ac7f08b5508e9437"},{"line_number":10,"context_line":"Partial-Bug: #1775094"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f7c97a3_ccff8ffe","line":8,"updated":"2018-06-18 21:01:26.000000000","message":"I think we should add a depends on for https://review.openstack.org/#/c/557359/ \n\nJust so we don\u0027t start advertising something that is currently broken.","commit_id":"2d768c20321c0206d3ab082c0210f5ce3a1246fa"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"5d579a1835f68685db40dcd4dacfa478031a9b1b","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2018-06-16 09:52:23 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Simple usage docs for implied roles"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I47722a52f590eae1d1b5c6c5ac7f08b5508e9437"},{"line_number":10,"context_line":"Partial-Bug: #1775094"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f7c97a3_6296364c","line":8,"in_reply_to":"5f7c97a3_ccff8ffe","updated":"2018-06-21 17:40:27.000000000","message":"Done","commit_id":"2d768c20321c0206d3ab082c0210f5ce3a1246fa"}],"doc/source/admin/cli-manage-projects-users-and-roles.rst":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfc3a85bde9a332b287e447a7308f2ca48f180d6","unresolved":false,"context_lines":[{"line_number":382,"context_line":"----------------------"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"It is possible to build role hierarchies by having roles imply other roles."},{"line_number":385,"context_line":"These are called implied roles, or role inference rules."},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"To illustrate the capability, let\u0027s have the ``admin`` role imply the"},{"line_number":388,"context_line":"``Member`` role. In this example, if a user was assigned the ``admin`` role,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_51379c4c","line":385,"updated":"2018-06-18 21:01:26.000000000","message":"A short example of why this might be useful to operators would be beneficial, too (e.g. less role assignment, easier management, etc.)","commit_id":"2d768c20321c0206d3ab082c0210f5ce3a1246fa"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"5d579a1835f68685db40dcd4dacfa478031a9b1b","unresolved":false,"context_lines":[{"line_number":382,"context_line":"----------------------"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"It is possible to build role hierarchies by having roles imply other roles."},{"line_number":385,"context_line":"These are called implied roles, or role inference rules."},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"To illustrate the capability, let\u0027s have the ``admin`` role imply the"},{"line_number":388,"context_line":"``Member`` role. In this example, if a user was assigned the ``admin`` role,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_022d0245","line":385,"in_reply_to":"5f7c97a3_51379c4c","updated":"2018-06-21 17:40:27.000000000","message":"Done","commit_id":"2d768c20321c0206d3ab082c0210f5ce3a1246fa"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfc3a85bde9a332b287e447a7308f2ca48f180d6","unresolved":false,"context_lines":[{"line_number":385,"context_line":"These are called implied roles, or role inference rules."},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"To illustrate the capability, let\u0027s have the ``admin`` role imply the"},{"line_number":388,"context_line":"``Member`` role. In this example, if a user was assigned the ``admin`` role,"},{"line_number":389,"context_line":"they would also get the ``Member`` role that it implies."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":".. code-block:: console"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_9183f4cb","line":388,"range":{"start_line":388,"start_character":2,"end_line":388,"end_character":3},"updated":"2018-06-18 21:01:26.000000000","message":"The bootstrap patch we just merged uses \u0027member\u0027 instead of \u0027Member\u0027. Even though they are technically the same due to SQL storage being case-insensitive, we could use the \u0027member\u0027 version for the sake of consistency.","commit_id":"2d768c20321c0206d3ab082c0210f5ce3a1246fa"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"5d579a1835f68685db40dcd4dacfa478031a9b1b","unresolved":false,"context_lines":[{"line_number":385,"context_line":"These are called implied roles, or role inference rules."},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"To illustrate the capability, let\u0027s have the ``admin`` role imply the"},{"line_number":388,"context_line":"``Member`` role. In this example, if a user was assigned the ``admin`` role,"},{"line_number":389,"context_line":"they would also get the ``Member`` role that it implies."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":".. code-block:: console"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_a7ad4032","line":388,"range":{"start_line":388,"start_character":2,"end_line":388,"end_character":3},"in_reply_to":"5f7c97a3_9183f4cb","updated":"2018-06-21 17:40:27.000000000","message":"I will have a follow-up patch that changes ``Member`` to ``member`` across the docs. For consistency with the current state of the other sections in the page, I\u0027ll keep it as ``Member`` here.","commit_id":"2d768c20321c0206d3ab082c0210f5ce3a1246fa"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ff26d0599a58635719cb0ac69b52066bff218b33","unresolved":false,"context_lines":[{"line_number":385,"context_line":"These are called implied roles, or role inference rules."},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"To illustrate the capability, let\u0027s have the ``admin`` role imply the"},{"line_number":388,"context_line":"``Member`` role. In this example, if a user was assigned the ``admin`` role,"},{"line_number":389,"context_line":"they would also get the ``Member`` role that it implies."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":".. code-block:: console"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_a81d0d10","line":388,"range":{"start_line":388,"start_character":2,"end_line":388,"end_character":3},"in_reply_to":"5f7c97a3_a7ad4032","updated":"2018-06-21 19:07:59.000000000","message":"++ thanks","commit_id":"2d768c20321c0206d3ab082c0210f5ce3a1246fa"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"961a103f145691a8186f269ea620ea1a045a3cd9","unresolved":false,"context_lines":[{"line_number":395,"context_line":"    | Field      | Value                            |"},{"line_number":396,"context_line":"    +------------+----------------------------------+"},{"line_number":397,"context_line":"    | implies    | 71ccc37d41c8491c975ae72676db687f |"},{"line_number":398,"context_line":"    | prior_role | 29c09e68e6f741afa952a837e29c700b |"},{"line_number":399,"context_line":"    +------------+----------------------------------+"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_76edfcee","line":398,"range":{"start_line":398,"start_character":6,"end_line":398,"end_character":16},"updated":"2018-06-18 10:02:04.000000000","message":"Might be nice to explain what the \"prior role\" is.","commit_id":"2d768c20321c0206d3ab082c0210f5ce3a1246fa"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"5d579a1835f68685db40dcd4dacfa478031a9b1b","unresolved":false,"context_lines":[{"line_number":395,"context_line":"    | Field      | Value                            |"},{"line_number":396,"context_line":"    +------------+----------------------------------+"},{"line_number":397,"context_line":"    | implies    | 71ccc37d41c8491c975ae72676db687f |"},{"line_number":398,"context_line":"    | prior_role | 29c09e68e6f741afa952a837e29c700b |"},{"line_number":399,"context_line":"    +------------+----------------------------------+"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_a21d2e10","line":398,"range":{"start_line":398,"start_character":6,"end_line":398,"end_character":16},"in_reply_to":"5f7c97a3_76edfcee","updated":"2018-06-21 17:40:27.000000000","message":"I expanded the note to touch up on prior vs implied.","commit_id":"2d768c20321c0206d3ab082c0210f5ce3a1246fa"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"961a103f145691a8186f269ea620ea1a045a3cd9","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":".. code-block:: console"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"    $ openstack implied role list"},{"line_number":414,"context_line":"    +----------------------------------+-----------------+----------------------------------+-------------------+"},{"line_number":415,"context_line":"    | Prior Role ID                    | Prior Role Name | Implied Role ID                  | Implied Role Name |"},{"line_number":416,"context_line":"    +----------------------------------+-----------------+----------------------------------+-------------------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_b61e340b","line":413,"updated":"2018-06-18 10:02:04.000000000","message":"Weird, this doesn\u0027t work for me:\n\n devuser@ubuntu:~$ openstack --version\n openstack 3.15.0\n devuser@ubuntu:~$ openstack implied role list \n \u0027RoleManager\u0027 object has no attribute \u0027list_inference_roles\u0027\n\nAm I missing a keystoneclient update?","commit_id":"2d768c20321c0206d3ab082c0210f5ce3a1246fa"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfc3a85bde9a332b287e447a7308f2ca48f180d6","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":".. code-block:: console"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"    $ openstack implied role list"},{"line_number":414,"context_line":"    +----------------------------------+-----------------+----------------------------------+-------------------+"},{"line_number":415,"context_line":"    | Prior Role ID                    | Prior Role Name | Implied Role ID                  | Implied Role Name |"},{"line_number":416,"context_line":"    +----------------------------------+-----------------+----------------------------------+-------------------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_f104a81a","line":413,"in_reply_to":"5f7c97a3_b61e340b","updated":"2018-06-18 21:01:26.000000000","message":"https://review.openstack.org/#/c/557359/ fixes the issue for me when I install it locally.","commit_id":"2d768c20321c0206d3ab082c0210f5ce3a1246fa"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfc3a85bde9a332b287e447a7308f2ca48f180d6","unresolved":false,"context_lines":[{"line_number":412,"context_line":""},{"line_number":413,"context_line":"    $ openstack implied role list"},{"line_number":414,"context_line":"    +----------------------------------+-----------------+----------------------------------+-------------------+"},{"line_number":415,"context_line":"    | Prior Role ID                    | Prior Role Name | Implied Role ID                  | Implied Role Name |"},{"line_number":416,"context_line":"    +----------------------------------+-----------------+----------------------------------+-------------------+"},{"line_number":417,"context_line":"    | bb6abe2def6d47ada08d22d67b86571a | admin           | f0b42c563bd545398c40d66112e39f57 | Member            |"},{"line_number":418,"context_line":"    +----------------------------------+-----------------+----------------------------------+-------------------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_4c393fcd","line":415,"range":{"start_line":415,"start_character":41,"end_line":415,"end_character":46},"updated":"2018-06-18 21:01:26.000000000","message":"Not that we can change it now, but the term Prior is kind of confusing (prior to what). +1 for adding an explicit definition for it.","commit_id":"2d768c20321c0206d3ab082c0210f5ce3a1246fa"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"cfc3a85bde9a332b287e447a7308f2ca48f180d6","unresolved":false,"context_lines":[{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    Deleting an implied role removes the role inference rule. It does not"},{"line_number":432,"context_line":"    delete the prior or implied role. Therefore if a user was assigned the"},{"line_number":433,"context_line":"    prior role, they will not have anymore the roles that it implied."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f7c97a3_3153006f","line":433,"updated":"2018-06-18 21:01:26.000000000","message":"++","commit_id":"2d768c20321c0206d3ab082c0210f5ce3a1246fa"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"2f284374d4d123da8ab2bb6b786e4d8a0c82e595","unresolved":false,"context_lines":[{"line_number":410,"context_line":"pieces as if they were a single one. For example, you can have a ``Member``"},{"line_number":411,"context_line":"role imply ``compute_member``, ``network_member``, and ``volume_member``,"},{"line_number":412,"context_line":"and then assign either the full-blown ``Member`` role to users or any one of"},{"line_number":413,"context_line":"the subsets."},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"Listing implied roles"},{"line_number":416,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_8d3aa3ca","line":413,"updated":"2018-06-21 18:11:42.000000000","message":"Nice addition.","commit_id":"d554e50d9e4285890216483abab143d1350cda5f"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"db7a9eddfdbed4a057d98b257d3427874969beb8","unresolved":false,"context_lines":[{"line_number":417,"context_line":""},{"line_number":418,"context_line":"To list implied roles:"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":".. code-block:: console"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    $ openstack implied role list"},{"line_number":423,"context_line":"    +----------------------------------+-----------------+----------------------------------+-------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_a820adb1","line":420,"range":{"start_line":420,"start_character":16,"end_line":420,"end_character":23},"updated":"2018-06-21 19:41:28.000000000","message":"TIL this is a valid code-block type","commit_id":"d554e50d9e4285890216483abab143d1350cda5f"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"2f284374d4d123da8ab2bb6b786e4d8a0c82e595","unresolved":false,"context_lines":[{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    Deleting an implied role removes the role inference rule. It does not"},{"line_number":441,"context_line":"    delete the prior or implied role. Therefore if a user was assigned the"},{"line_number":442,"context_line":"    prior role, they will not have anymore the roles that it implied."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_0d753398","line":442,"range":{"start_line":442,"start_character":16,"end_line":442,"end_character":69},"updated":"2018-06-21 18:11:42.000000000","message":"(nit) slightly awkward grammar, I would say \"they will no longer have the roles that it implied\"","commit_id":"d554e50d9e4285890216483abab143d1350cda5f"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"db7a9eddfdbed4a057d98b257d3427874969beb8","unresolved":false,"context_lines":[{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    Deleting an implied role removes the role inference rule. It does not"},{"line_number":441,"context_line":"    delete the prior or implied role. Therefore if a user was assigned the"},{"line_number":442,"context_line":"    prior role, they will not have anymore the roles that it implied."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_68a37544","line":442,"range":{"start_line":442,"start_character":16,"end_line":442,"end_character":69},"in_reply_to":"5f7c97a3_0d753398","updated":"2018-06-21 19:41:28.000000000","message":"++","commit_id":"d554e50d9e4285890216483abab143d1350cda5f"}]}
