keystone.resource.backends.base module

keystone.resource.backends.base module

class keystone.resource.backends.base.ResourceDriverBase[source]

Bases: object

check_project_depth(max_depth)[source]

Check the projects depth in the backend whether exceed the limit.

Parameters:

max_depth (integer) – the limit depth that project depth should not exceed.

Returns:

the exceeded project’s id or None if no exceeding.

abstract create_project(project_id, project)[source]

Create a new project.

Parameters:
  • project_id – This parameter can be ignored.

  • project (dict) – The new project

Project schema:

type: object
properties:
    id:
        type: string
    name:
        type: string
    domain_id:
        type: [string, null]
    description:
        type: string
    enabled:
        type: boolean
    parent_id:
        type: string
    is_domain:
        type: boolean
required: [id, name, domain_id]
additionalProperties: true

If the project doesn’t match the schema the behavior is undefined.

The driver can impose requirements such as the maximum length of a field. If these requirements are not met the behavior is undefined.

Raises:

keystone.exception.Conflict – if the project id already exists or the name already exists for the domain_id.

abstract delete_project(project_id)[source]

Delete an existing project.

Raises:

keystone.exception.ProjectNotFound – if project_id does not exist

abstract delete_projects_from_ids(project_ids)[source]

Delete a given list of projects.

Deletes a list of projects. Ensures no project on the list exists after it is successfully called. If an empty list is provided, the it is silently ignored. In addition, if a project ID in the list of project_ids is not found in the backend, no exception is raised, but a message is logged.

abstract get_project(project_id)[source]

Get a project by ID.

Returns:

project_ref

Raises:

keystone.exception.ProjectNotFound – if project_id does not exist

abstract get_project_by_name(project_name, domain_id)[source]

Get a project by name.

Returns:

project_ref

Raises:

keystone.exception.ProjectNotFound – if a project with the project_name does not exist within the domain

abstract is_leaf_project(project_id)[source]

Check if a project is a leaf in the hierarchy.

Parameters:

project_id – the driver will check if this project is a leaf in the hierarchy.

Raises:

keystone.exception.ProjectNotFound – if project_id does not exist

abstract list_project_ids_from_domain_ids(domain_ids)[source]

List project ids for the provided list of domain ids.

Parameters:

domain_ids – list of domain ids

Returns:

a list of project ids owned by the specified domain ids.

This method is used internally by the assignment manager to bulk read a set of project ids given a list of domain ids.

abstract list_project_parents(project_id)[source]

List all parents from a project by its ID.

Parameters:

project_id – the driver will list the parents of this project.

Returns:

a list of project_refs or an empty list.

Raises:

keystone.exception.ProjectNotFound – if project_id does not exist

abstract list_projects(hints)[source]

List projects in the system.

Parameters:

hints – filter hints which the driver should implement if at all possible.

Returns:

a list of project_refs or an empty list.

abstract list_projects_acting_as_domain(hints)[source]

List all projects acting as domains.

Parameters:

hints – filter hints which the driver should implement if at all possible.

Returns:

a list of project_refs or an empty list.

abstract list_projects_from_ids(project_ids)[source]

List projects for the provided list of ids.

Parameters:

project_ids – list of ids

Returns:

a list of project_refs.

This method is used internally by the assignment manager to bulk read a set of projects given their ids.

abstract list_projects_in_domain(domain_id)[source]

List projects in the domain.

Parameters:

domain_id – the driver MUST only return projects within this domain.

Returns:

a list of project_refs or an empty list.

abstract list_projects_in_subtree(project_id)[source]

List all projects in the subtree of a given project.

Parameters:

project_id – the driver will get the subtree under this project.

Returns:

a list of project_refs or an empty list

Raises:

keystone.exception.ProjectNotFound – if project_id does not exist

abstract update_project(project_id, project)[source]

Update an existing project.

Raises:
keystone.resource.backends.base.get_project_from_domain(domain_ref)[source]

Create a project ref from the provided domain ref.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.