keystone.resource.backends package

Submodules

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.

keystone.resource.backends.resource_options module

keystone.resource.backends.resource_options.register_role_options()[source]

keystone.resource.backends.sql module

class keystone.resource.backends.sql.Resource[source]

Bases: keystone.resource.backends.base.ResourceDriverBase

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.

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.

delete_project(project_id)[source]

Delete an existing project.

Raises

keystone.exception.ProjectNotFound – if project_id does not exist

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.

get_project(project_id)[source]

Get a project by ID.

Returns

project_ref

Raises

keystone.exception.ProjectNotFound – if project_id does not exist

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

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

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.

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

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.

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.

list_projects_by_tags(filters)[source]
list_projects_from_ids(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.

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.

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

update_project(project_id, project)[source]

Update an existing project.

Raises

keystone.resource.backends.sql_model module

class keystone.resource.backends.sql_model.Project(*args, **kwargs)[source]

Bases: sqlalchemy.ext.declarative.api.Base, keystone.common.sql.core.ModelDictMixinWithExtras

attributes = ['id', 'name', 'domain_id', 'description', 'enabled', 'parent_id', 'is_domain', 'tags']
description
domain_id
enabled
extra
classmethod from_dict(project_dict)[source]
id
is_domain
name
parent_id
resource_options_registry = <keystone.common.resource_options.core.ResourceOptionRegistry object>
property tags
to_dict(include_extra_dict=False)[source]

Return the model’s attributes as a dictionary.

If include_extra_dict is True, ‘extra’ attributes are literally included in the resulting dictionary twice, for backwards-compatibility with a broken implementation.

class keystone.resource.backends.sql_model.ProjectOption(option_id, option_value)[source]

Bases: sqlalchemy.ext.declarative.api.Base

option_id
option_value
project_id
class keystone.resource.backends.sql_model.ProjectTag(*args, **kwargs)[source]

Bases: sqlalchemy.ext.declarative.api.Base, keystone.common.sql.core.ModelDictMixin

attributes = ['project_id', 'name']
name
project_id
to_dict()[source]

Return the model’s attributes as a dictionary.

Module contents