Merge "API documentation for Hierarchical Multitenancy"

This commit is contained in:
Jenkins 2014-11-11 17:19:19 +00:00 committed by Gerrit Code Review
commit eccbab8e3f

View File

@ -9,6 +9,12 @@ The Identity API also provides endpoint discovery through a service
catalog, identity management, project management, and a centralized catalog, identity management, project management, and a centralized
repository for policy engine rule sets. repository for policy engine rule sets.
What's New in Version 3.4
-------------------------
- Addition of `parent_id` optional attribute to projects. This enables the
construction of a hierarchy of projects.
What's New in Version 3.3 What's New in Version 3.3
------------------------- -------------------------
@ -813,6 +819,13 @@ References the domain which owns the project; if a domain is not
specified by the client, the Identity service implementation will specified by the client, the Identity service implementation will
default it to the domain to which the client's token is scoped. default it to the domain to which the client's token is scoped.
- ``parent_id`` (string) *New in version 3.4*
References the parent project; if a parent project is not specified by the
client, the Identity service will consider the project to be a top-level
project (without any parents). All projects within a hierarchy must be owned
by the same domain.
- ``description`` (string) - ``description`` (string)
- ``enabled`` (boolean) - ``enabled`` (boolean)
@ -835,6 +848,7 @@ Example entity:
"links": { "links": {
"self": "http://identity:35357/v3/projects/263fd9" "self": "http://identity:35357/v3/projects/263fd9"
} }
"parent_id": "183ab2"
} }
} }
@ -3118,6 +3132,11 @@ Get project
Relationship: Relationship:
``http://docs.openstack.org/api/openstack-identity/3/rel/project`` ``http://docs.openstack.org/api/openstack-identity/3/rel/project``
*New in version 3.4*
- ``subtree_as_list`` (key-only, no value expected)
- ``parents_as_list`` (key-only, no value expected)
Response: Response:
:: ::
@ -3132,7 +3151,192 @@ Response:
"links": { "links": {
"self": "https://identity:35357/v3/projects/263fd9" "self": "https://identity:35357/v3/projects/263fd9"
}, },
"name": "Dev Group A" "name": "Dev Group A",
"parent_id": "183ab2"
}
}
If additional information about the project's heirarchy is required, this API
has two query parameters.
::
GET /projects/{project_id}?parents_as_list
The entire parent hierarchy will be included as a list in the response.
This list will contain all projects found by traversing up the hierarchy
to the top-level project.
Response:
::
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "263fd9",
"links": {
"self": "http://identity:35357/v3/projects/263fd9"
},
"name": "Dev Group A",
"parent_id": "183ab2",
"parents": [
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "183ab2",
"links": {
"self": "identity:35357/v3/projects/183ab2"
},
"name": "Dev Group A Parent",
"parent_id": null
}
}
]
}
}
::
GET /projects/{project_id}?subtree_as_list
The entire child hierarchy will be included in the response as a list in the
response. This list will contain all projects found by traversing down the
hierarchy.
Response:
::
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "263fd9",
"links": {
"self": "http://identity:35357/v3/projects/263fd9"
},
"name": "Dev Group A",
"parent_id": "183ab2",
"subtree": [
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "9n1jhb",
"links": {
"self": "identity:35357/v3/projects/9n1jhb"
},
"name": "Dev Group A Child 1",
"parent_id": "263fd9"
}
},
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "4b6aa1",
"links": {
"self": "identity:35357/v3/projects/4b6aa1"
},
"name": "Dev Group A Child 2",
"parent_id": "263fd9"
}
},
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "b76xq8",
"links": {
"self": "identity:35357/v3/projects/b76xq8"
},
"name": "Dev Group A Grandchild",
"parent_id": "4b6aa1"
}
}
]
}
}
Note that the query parameters are not mutually exclusive. The API accept both
parameters at the same time:
::
GET /projects/{project_id}?parents_as_list&subtree_as_list
Both the parent and child hierarchies will be included in the response.
Response:
::
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "263fd9",
"links": {
"self": "http://identity:35357/v3/projects/263fd9"
},
"name": "Dev Group A",
"parent_id": "183ab2",
"parents": [
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "183ab2",
"links": {
"self": "identity:35357/v3/projects/183ab2"
},
"name": "Dev Group A Parent",
"parent_id": null
}
}
],
"subtree": [
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "9n1jhb",
"links": {
"self": "identity:35357/v3/projects/9n1jhb"
},
"name": "Dev Group A Child 1",
"parent_id": "263fd9"
}
},
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "4b6aa1",
"links": {
"self": "identity:35357/v3/projects/4b6aa1"
},
"name": "Dev Group A Child 2",
"parent_id": "263fd9"
}
},
{
"project": {
"domain_id": "1789d1",
"enabled": true,
"id": "b76xq8",
"links": {
"self": "identity:35357/v3/projects/b76xq8"
},
"name": "Dev Group A Grandchild",
"parent_id": "4b6aa1"
}
}
]
} }
} }
@ -3155,7 +3359,8 @@ Request:
"description": "Project space for Test Group", "description": "Project space for Test Group",
"domain_id": "1789d1", "domain_id": "1789d1",
"enabled": true, "enabled": true,
"name": "Test Group" "name": "Test Group",
"parent_id": "7fa612"
} }
} }
@ -3174,10 +3379,16 @@ Response:
"links": { "links": {
"self": "https://identity:35357/v3/projects/d52e32" "self": "https://identity:35357/v3/projects/d52e32"
}, },
"name": "Test Group" "name": "Test Group",
"parent_id": "7fa612"
} }
} }
*New in version 3.4*
* Adding a project with a parent_id pointing to a project that
does not exist fails with a ``404 Not Found``
Update project Update project
^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
@ -3217,10 +3428,18 @@ Response:
"links": { "links": {
"self": "https://identity:35357/v3/projects/d52e32" "self": "https://identity:35357/v3/projects/d52e32"
}, },
"name": "Build Group" "name": "Build Group",
"parent_id": "7fa612"
} }
} }
* New in version 3.4 *
* The update of the parent_id is not allowed and will fail
with a ``403 Forbidden``
* Disabling a project that is not a leaf in the hierarchy (it is a
parent of one or more projects) will fail with a ``403 Forbidden``
Delete project Delete project
^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
@ -3235,6 +3454,11 @@ Relationship:
Status: 204 No Content Status: 204 No Content
*New in version 3.4*
* The deletion of a project that is not a leaf in the project
hierarchy will fail with a ``403 Forbidden``.
Users Users
~~~~~ ~~~~~