<font size=2 face="sans-serif">Hi Andrew,</font>
<br>
<br><font size=2 face="sans-serif">Sorry to be picking this up so late
- I'm not sure if anyone answered your question, but from the data I can
see it looks like that the two role assignments you have on the domain
are not inherited assignments - (the Inherited Attribute is False in the
role assignment listing). Hence these assignments apply only to the domain
object itself, rather than projects within that domain. Such an assignment
might be useful, for instance, to give someone the ability to add users/groups
to the domain (but such an ability has no meaning for regular projects).</font>
<br>
<br><font size=2 face="sans-serif">If what you want is a role that you
assign to a domain and is also assigned to each project, then you need
to actually mark the assignments as inherited - you do this when you create
the assignment, e.g. use the --inherited option in 'openstack role add'.
For more details see: </font><a href="http://docs.openstack.org/developer/python-openstackclient/command-objects/role.html"><font size=2 color=blue face="sans-serif">http://docs.openstack.org/developer/python-openstackclient/command-objects/role.html</font></a>
<br>
<br><font size=2 face="sans-serif">Let me know if you need more guidance
on this (or if this indeed does not solve your problem, in which case someone
more strange is going on).</font>
<br>
<br><font size=2 face="sans-serif">Henry</font>
<br><font size=2 face="sans-serif">----------------------------</font>
<br>
<br><font size=2 face="sans-serif">[Openstack] Role inheritance in keystone</font>
<br>
<br><font size=2 face="sans-serif">Andrew Bogott abogott at wikimedia.org
</font>
<br><font size=2 face="sans-serif">Sun Oct 30 16:38:37 UTC 2016</font>
<br><font size=2 face="sans-serif">Previous message: [Openstack] centos6
image question</font>
<br><font size=2 face="sans-serif">Next message: [Openstack] horizon.pp:[
ERROR ] ,        Applying Puppet manifests
[ ERROR ]</font>
<br><font size=2 face="sans-serif">Messages sorted by: [ date ] [ thread
] [ subject ] [ author ]</font>
<br><font size=2 face="sans-serif">I've just read</font>
<br>
<br><a href="http://developer.openstack.org/api-ref/identity/v3-ext/inherit.html"><font size=2 face="sans-serif">http://developer.openstack.org/api-ref/identity/v3-ext/inherit.html</font></a>
<br>
<br><font size=2 face="sans-serif">and I think I understand it, but can't
put it into practice.  I have a </font>
<br><font size=2 face="sans-serif">user with a role on a domain, and a
project in that domain, but I see no </font>
<br><font size=2 face="sans-serif">evidence that the role assignment is
inherited by the project.  Am I </font>
<br><font size=2 face="sans-serif">missing some extra 'enable inheritance'
config?  Or does inheritance </font>
<br><font size=2 face="sans-serif">explicitly not work for the 'default'
project?</font>
<br>
<br><font size=2 face="sans-serif">I'm running Openstack Liberty; My entire
workflow is attached, below.  </font>
<br><font size=2 face="sans-serif">Hopefully there's an obvious mistake!</font>
<br>
<br><font size=2 face="sans-serif">Thank you!</font>
<br>
<br><font size=2 face="sans-serif">-Andrew</font>
<br>
<br>
<br>
<br><font size=2 face="sans-serif">$export OS_USERNAME="novaadmin"</font>
<br><font size=2 face="sans-serif">$export OS_PROJECT_DOMAIN_ID="default"</font>
<br><font size=2 face="sans-serif">$export OS_USER_DOMAIN_ID="default"</font>
<br><font size=2 face="sans-serif">$export OS_PASSWORD="<redacted>"</font>
<br><font size=2 face="sans-serif">$export OS_AUTH_URL="http://<redacted>:35357/v3"</font>
<br><font size=2 face="sans-serif">$export OS_REGION_NAME="codfw"</font>
<br><font size=2 face="sans-serif">$export OS_NO_CACHE=1</font>
<br><font size=2 face="sans-serif">$export OS_IDENTITY_API_VERSION=3</font>
<br>
<br><font size=2 face="sans-serif">$ curl $OS_AUTH_URL</font>
<br><font size=2 face="sans-serif">{"version": {"status":
"stable", "updated": "2015-03-30T00:00:00Z",
</font>
<br><font size=2 face="sans-serif">"media-types": [{"base":
"application/json", "type": </font>
<br><font size=2 face="sans-serif">"application/vnd.openstack.identity-v3+json"}],
"id": "v3.4", "links": </font>
<br><font size=2 face="sans-serif">[{"href": "</font><a href=http://labtestcontrol2001.wikimedia.org:35357/v3/><font size=2 face="sans-serif">http://labtestcontrol2001.wikimedia.org:35357/v3/</font></a><font size=2 face="sans-serif">",
"rel": </font>
<br><font size=2 face="sans-serif">"self"}]}}</font>
<br>
<br><font size=2 face="sans-serif">$ Conclusion:  running keystone
api 3.4</font>
<br>
<br><font size=2 face="sans-serif">$ openstack project show emptytestproject</font>
<br><font size=2 face="sans-serif">+-------------+----------------------------------+</font>
<br><font size=2 face="sans-serif">| Field       | Value
                     
     |</font>
<br><font size=2 face="sans-serif">+-------------+----------------------------------+</font>
<br><font size=2 face="sans-serif">| description |      
                     
     |</font>
<br><font size=2 face="sans-serif">| domain_id   | default  
                     
 |</font>
<br><font size=2 face="sans-serif">| enabled     | True  
                     
    |</font>
<br><font size=2 face="sans-serif">| id          |
23c3fe708cb44c4db3144c3763b2c96c |</font>
<br><font size=2 face="sans-serif">| is_domain   | False    
                     
 |</font>
<br><font size=2 face="sans-serif">| name        |
emptytestproject                
|</font>
<br><font size=2 face="sans-serif">| parent_id   | None    
                     
  |</font>
<br><font size=2 face="sans-serif">+-------------+----------------------------------+</font>
<br>
<br><font size=2 face="sans-serif">$ openstack domain list</font>
<br><font size=2 face="sans-serif">+---------+---------+---------+----------------------------------------------------------------------+</font>
<br><font size=2 face="sans-serif">| ID      | Name  
 | Enabled | Description |</font>
<br><font size=2 face="sans-serif">+---------+---------+---------+----------------------------------------------------------------------+</font>
<br><font size=2 face="sans-serif">| default | Default | True    |
Owns users and tenants (i.e. projects) </font>
<br><font size=2 face="sans-serif">available on Identity API v2. |</font>
<br><font size=2 face="sans-serif">+---------+---------+---------+----------------------------------------------------------------------+</font>
<br>
<br><font size=2 face="sans-serif">$ # Conclusion: 'emptytestproject' is
in domain 'default.'</font>
<br>
<br><font size=2 face="sans-serif">$ openstack role assignment list --domain
default --user novaadmin</font>
<br><font size=2 face="sans-serif">+----------------------------------+-----------+-------+---------+---------+-----------+</font>
<br><font size=2 face="sans-serif">| Role          
                  | User  
   | Group | Project | </font>
<br><font size=2 face="sans-serif">Domain  | Inherited |</font>
<br><font size=2 face="sans-serif">+----------------------------------+-----------+-------+---------+---------+-----------+</font>
<br><font size=2 face="sans-serif">| 8284c7e1155a464c818cf1eacf008c23 |
novaadmin |       |         | </font>
<br><font size=2 face="sans-serif">default | False     |</font>
<br><font size=2 face="sans-serif">| cb17fb40e2ef4cdd99956cd771b1799a |
novaadmin |       |         | </font>
<br><font size=2 face="sans-serif">default | False     |</font>
<br><font size=2 face="sans-serif">+----------------------------------+-----------+-------+---------+---------+-----------+</font>
<br>
<br><font size=2 face="sans-serif">$ openstack role list</font>
<br><font size=2 face="sans-serif">+----------------------------------+--------------+</font>
<br><font size=2 face="sans-serif">| ID          
                    |
Name         |</font>
<br><font size=2 face="sans-serif">+----------------------------------+--------------+</font>
<br><font size=2 face="sans-serif">| 8284c7e1155a464c818cf1eacf008c23 |
user         |</font>
<br><font size=2 face="sans-serif">| 8e86568d85984eda8ff44532f99e9304 |
admin        |</font>
<br><font size=2 face="sans-serif">| cb17fb40e2ef4cdd99956cd771b1799a |
projectadmin |</font>
<br><font size=2 face="sans-serif">| eb3fb807ab684f3d9fa77eed65bc0817 |
glanceadmin  |</font>
<br><font size=2 face="sans-serif">+----------------------------------+--------------+</font>
<br>
<br><font size=2 face="sans-serif">$ # Conclusion:  user 'novaadmin'
has roles 'projectadmin' and 'user' on </font>
<br><font size=2 face="sans-serif">domain 'default.'</font>
<br>
<br><font size=2 face="sans-serif">$ # expected:  user 'novaadmin'
should have those two inherited roles in </font>
<br><font size=2 face="sans-serif">'emptytestproject'</font>
<br>
<br><font size=2 face="sans-serif">$ openstack role assignment list --project
emptytestproject --user novaadmin</font>
<br>
<br><font size=2 face="sans-serif">$ # nope, no roles.</font>
<br>
<br><font size=2 face="sans-serif">$ # expected:  user 'novaadmin'
should be able to list servers in </font>
<br><font size=2 face="sans-serif">emptytestproject</font>
<br>
<br><font size=2 face="sans-serif">$ OS_TENANT_NAME=emptytestproject openstack
server list</font>
<br><font size=2 face="sans-serif">The request you have made requires authentication.
(HTTP 401) </font>
<br><font size=2 face="sans-serif">(Request-ID: req-5b173b30-1cdc-4d30-b1d1-41558dd0cd26)</font>
<br>
<br><font size=2 face="sans-serif">$ # nope!</font>
<br>
<br>
<br>
<br><font size=2 face="sans-serif">$ # ==================================================================</font>
<br><font size=2 face="sans-serif">$ # policy doublecheck</font>
<br><font size=2 face="sans-serif">$ # ==================================================================</font>
<br>
<br><font size=2 face="sans-serif">$ openstack role assignment list --project
labtestproject --user novaadmin</font>
<br><font size=2 face="sans-serif">+----------------------------------+-----------+-------+----------------+--------+-----------+</font>
<br><font size=2 face="sans-serif">| Role          
                  | User  
   | Group | Project        </font>
<br><font size=2 face="sans-serif">| Domain | Inherited |</font>
<br><font size=2 face="sans-serif">+----------------------------------+-----------+-------+----------------+--------+-----------+</font>
<br><font size=2 face="sans-serif">| 8284c7e1155a464c818cf1eacf008c23 |
novaadmin |       | labtestproject </font>
<br><font size=2 face="sans-serif">|        | False
    |</font>
<br><font size=2 face="sans-serif">| cb17fb40e2ef4cdd99956cd771b1799a |
novaadmin |       | labtestproject </font>
<br><font size=2 face="sans-serif">|        | False
    |</font>
<br><font size=2 face="sans-serif">+----------------------------------+-----------+-------+----------------+--------+-----------+</font>
<br>
<br><font size=2 face="sans-serif">$ OS_TENANT_NAME=labtestproject openstack
server list</font>
<br><font size=2 face="sans-serif">+--------------------------------------+-------------------+---------+---------------------------------+</font>
<br><font size=2 face="sans-serif">| ID          
                     
  | Name              | Status
| </font>
<br><font size=2 face="sans-serif">Networks        
               |</font>
<br><font size=2 face="sans-serif">+--------------------------------------+-------------------+---------+---------------------------------+</font>
<br><font size=2 face="sans-serif">| dd3dd963-c78f-4c68-801a-6bdada4b2c35
| puppetless        | SHUTOFF | </font>
<br><font size=2 face="sans-serif">public=10.196.16.71      
      |</font>
<br><font size=2 face="sans-serif">| 12d4fe67-7da2-4c28-8c33-bff64b06bff5
| eightpointfive    | SHUTOFF | </font>
<br><font size=2 face="sans-serif">public=10.196.16.70      
      |</font>
<br><font size=2 face="sans-serif">| 932b8e24-e3ac-44ed-a0a5-035ab3c69869
| rnds-test-104     | SHUTOFF | </font>
<br><font size=2 face="sans-serif">public=10.196.16.40      
      |</font>
<br><font size=2 face="sans-serif">| 991ba7b0-0b1a-4843-ba85-4a5ae5f72ce6
| spice-test-101    | SHUTOFF | </font>
<br><font size=2 face="sans-serif">public=10.196.16.17      
      |</font>
<br><font size=2 face="sans-serif">| 93139bfd-51f6-4796-b3ec-0ac971f1d24e
| libvirt-test-101  | SHUTOFF | </font>
<br><font size=2 face="sans-serif">public=10.196.16.16      
      |</font>
<br><font size=2 face="sans-serif">| 1d28d0e3-8dea-4cce-9bd4-a999a43ebea3
| network-tests-101 | SHUTOFF | </font>
<br><font size=2 face="sans-serif">public=10.196.16.2, 10.196.17.1 |</font>
<br><font size=2 face="sans-serif">+--------------------------------------+-------------------+---------+---------------------------------+</font>
<br>
<br><font size=2 face="sans-serif">$ # Yep, policy allows user with projectadmin
role to list servers.</font>