OpenStack will add support for hierarchical ownership of objects.
This enables the management of projects and quotas in a way that is more comfortable for private clouds, because in a private cloud, you can organize better your departmental divisions they work as “subprojects”.
In short, the proposal is to modify the organizational structure of OpenStack, creating nested projects in Keystone.
Use Case 1:
Example of the new project hierarchy:
+-------------------------------------+
| Division A |
| |
| +-------------------------+ |
| | User: domain_admin_team | |
| | Role: domain_admin | |
| +-------------------------+ |
| |
| /\ |
| |
| / \ |
| |
| / \ |
| |
| / \ |
| |
| / \ |
| |
| / \ |
| |
| +--------------+ +--------------+ |
| | Dev | | Test | |
| +--------------+ +--------------+ |
| +--------------+ +--------------+ |
| | User: Joe | | User: Sam | |
| | Role: p_admin| | Role: p_admin| |
| +--------------+ +--------------+ |
| |
| / \ |
| |
| / \ |
| |
| +---------------+ +----------------+|
| | Dev.subproject| | Test.subproject||
| +---------------+ +----------------+|
| |
| p_admin= role project_admin |
+-------------------------------------+
Notes:
None
Create a new column “parent_project_id” in table “project”, when the column is null, it means that this project is the root of the tree.
A user will only have access to projects which he has a directly assigned role or a role inherited from a parent project.
None
None
None
None
None
- A role assignment defined for a project A must be inherited by all the child projects of project A;
- A role assignment defined for a group X must be inherited by all the child projects of that group X;
- For a project A, list all the inherited roles assignment of A, which will also be inherited by the child projects of project A;
- For a group X, list all the inherited role assignment of ABC projecs, which will also be inherited by the users in the group X in the child projects;
- Check if a user has an inherited role assignment on a project;
- Check if a group has an inherited role assignment on a project;
- Revoke an inherited project role assignment from a user on a project;
- Revoke an inherited project role assignment from group on a project.
- Parent projects
- Children projects
- Full hierarchy
None
The new ways to manipulate hierarchical projects must be documented in the API.