# keystone.resource.backends.base module

class keystone.resource.backends.base.ResourceDriverBase

  Bases: `object`

  check_project_depth(max_depth)

    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.

  abstractmethod create_project(project_id, project)

    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.

  abstractmethod delete_project(project_id)

    Delete an existing project.

    Raises:

      keystone.exception.ProjectNotFound – if project_id does not exist

  abstractmethod delete_projects_from_ids(project_ids)

    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.

  abstractmethod get_project(project_id)

    Get a project by ID.

    Returns:

      project_ref

    Raises:

      keystone.exception.ProjectNotFound – if project_id does not exist

  abstractmethod get_project_by_name(project_name, domain_id)

    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

  abstractmethod is_leaf_project(project_id)

    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

  abstractmethod list_project_ids_from_domain_ids(domain_ids)

    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.

  abstractmethod list_project_parents(project_id)

    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

  abstractmethod list_projects(hints)

    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.

  abstractmethod list_projects_acting_as_domain(hints)

    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.

  abstractmethod list_projects_from_ids(project_ids)

    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.

  abstractmethod list_projects_in_domain(domain_id)

    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.

  abstractmethod list_projects_in_subtree(project_id)

    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

  abstractmethod update_project(project_id, project)

    Update an existing project.

    Raises:

      - keystone.exception.ProjectNotFound – if project_id does not exist

      - keystone.exception.Conflict – if project name already exists

keystone.resource.backends.base.get_project_from_domain(domain_ref)

  Create a project ref from the provided domain ref.

this page last updated: 2026-06-11 21:50:20

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

found an error? report a bug