keystone.resource.core 模块

资源服务的入口点。

class keystone.resource.core.DomainConfigManager[source]

继承自: Manager

领域配置后端的默认枢纽点。

create_config(domain_id, config)[source]

为领域创建配置。

参数:
  • domain_id – 相关的领域

  • config – 要分配给该领域的配置组/选项的字典

创建一个新的配置,覆盖任何先前的配置(不会生成冲突错误)。

返回值:

包含选项的组字典的字典,已删除任何敏感选项。

引发:

keystone.exception.InvalidDomainConfig – 当配置包含我们不支持的选项时

delete_config(domain_id, group=None, option=None)[source]

删除领域配置,或部分配置。

参数:
  • domain_id – 相关的领域

  • group – 一个可选的特定选项组

  • option – 一个可选的组内的特定选项

如果 group 和 option 都为 None,则删除该领域的所有配置。如果 group 不为 None,则仅删除该选项组。如果 group 和 option 都已指定,则仅删除该选项。

引发:

keystone.exception.InvalidDomainConfig – 当 group/option 参数指定我们不支持的选项或原始配置中不存在的选项时。

driver_namespace: str = 'keystone.resource.domain_config'
get_config(domain_id, group=None, option=None)[source]

获取领域配置,或部分配置。

参数:
  • domain_id – 相关的领域

  • group – 一个可选的特定选项组

  • option – 一个可选的组内的特定选项

返回值:

包含已过滤的选项的组字典的字典,按指定的组和选项过滤。

引发:

一个示例响应

{
    'ldap': {
        'url': 'myurl'
        'user_tree_dn': 'OU=myou'},
    'identity': {
        'driver': 'ldap'}

}
get_config_default(group=None, option=None)[source]

获取默认配置,或部分默认配置。

参数:
  • group – 一个可选的特定选项组

  • option – 一个可选的组内的特定选项

返回值:

包含默认选项的组字典的字典,如果指定了组和选项,则进行过滤。

引发:

keystone.exception.InvalidDomainConfig – 当配置和 group/option 参数指定我们不支持的选项(或未列入白名单的选项)时。

一个示例响应

{
    'ldap': {
        'url': 'myurl',
        'user_tree_dn': 'OU=myou',
        ....},
    'identity': {
        'driver': 'ldap'}

}
get_config_with_sensitive_info(domain_id)[source]

获取包含敏感信息的领域配置。

此方法未通过公共 API 公开,而是由身份管理器用于使用完全形成的配置选项初始化领域。

get_security_compliance_config(domain_id, group, option=None)[source]

从配置中获取完整的或部分的安全合规性配置。

参数:
  • domain_id – 相关的领域

  • group – 一个特定的选项组

  • option – 一个可选的组内的特定选项

返回值:

包含已过滤的选项的组字典的字典,按指定的组和选项过滤。

引发:

keystone.exception.InvalidDomainConfig – 当配置和 group/option 参数指定我们不支持的选项时

一个示例响应

{
    'security_compliance': {
        'password_regex': '^(?=.*\d)(?=.*[a-zA-Z]).{7,}$'
        'password_regex_description':
            'A password must consist of at least 1 letter, '
            '1 digit, and have a minimum length of 7 characters'
        }
}
sensitive_options = {'identity': [], 'ldap': ['password']}
update_config(domain_id, config, group=None, option=None)[source]

更新领域配置,或部分配置。

参数:
  • domain_id – 相关的领域

  • config – 包含要更新的组/选项的配置字典

  • group – 一个可选的特定选项组,如果指定,则必须出现在 config 中,不能有其他组

  • option – 一个可选的组内的特定选项,如果指定,则必须出现在 config 中,不能有其他选项

所提供配置的内容将与该领域的现有配置合并,如果这些选项以前不存在,则更新或创建新选项。如果指定了 group 或 option,则更新将限制为这些指定的项目,并且在所提供配置中包含其他选项将引发异常,同样,如果这些选项在当前配置中不存在的情况也是如此。

返回值:

包含所有已列入白名单选项的组字典

引发:

keystone.exception.InvalidDomainConfig – 当配置和 group/option 参数指定我们不支持的选项或原始配置中不存在的选项时

whitelisted_options = {'identity': ['driver', 'list_limit'], 'ldap': ['url', 'user', 'suffix', 'query_scope', 'page_size', 'alias_dereferencing', 'debug_level', 'chase_referrals', 'user_tree_dn', 'user_filter', 'user_objectclass', 'user_id_attribute', 'user_name_attribute', 'user_mail_attribute', 'user_description_attribute', 'user_pass_attribute', 'user_enabled_attribute', 'user_enabled_invert', 'user_enabled_mask', 'user_enabled_default', 'user_attribute_ignore', 'user_default_project_id_attribute', 'user_enabled_emulation', 'user_enabled_emulation_dn', 'user_enabled_emulation_use_group_config', 'user_additional_attribute_mapping', 'group_tree_dn', 'group_filter', 'group_objectclass', 'group_id_attribute', 'group_name_attribute', 'group_members_are_ids', 'group_member_attribute', 'group_desc_attribute', 'group_attribute_ignore', 'group_additional_attribute_mapping', 'tls_cacertfile', 'tls_cacertdir', 'use_tls', 'tls_req_cert', 'use_pool', 'pool_size', 'pool_retry_max', 'pool_retry_delay', 'pool_connection_timeout', 'pool_connection_lifetime', 'use_auth_pool', 'auth_pool_size', 'auth_pool_connection_lifetime']}
class keystone.resource.core.Manager[source]

继承自: Manager

资源后端的默认枢纽点。

有关此动态调用后端的更多详细信息,请参阅 keystone.common.manager.Manager

assert_domain_enabled(domain_id, domain=None)[source]

断言领域已启用。

引发:

AssertionError – 如果领域已禁用。

assert_domain_not_federated(domain_id, domain)[source]

断言领域名称和 ID 不匹配保留的关键字。

请注意,保留的关键字在配置文件中定义,默认情况下为“Federated”,它也区分大小写。如果配置选项为空,则将使用默认的硬编码值“Federated”。

引发:

AssertionError – 如果领域名称与配置中的值匹配。

assert_project_enabled(project_id, project=None)[source]

断言项目已启用,并且其关联的领域已启用。

引发:

AssertionError – 如果项目或领域已禁用。

check_project_depth(max_depth=None)[source]

检查项目深度是否大于输入值。

create_domain(domain_id, domain, initiator=None)[source]
create_project(project_id, project, initiator=None)[source]
create_project_tag(project_id, tag, initiator=None)[source]

创建一个项目上的新标签。

参数:
  • project_id – 创建标签的项目 ID

  • tag – 要添加的标签的字符串值

返回值:

创建的标签的值

delete_domain(domain_id, initiator=None)[source]
delete_project(project_id, initiator=None, cascade=False)[source]

删除一个项目或一个子树。

参数:

cascade (boolean) – 如果为 true,则删除指定项目及其所有子项目。否则,仅删除指定的项目。

引发:
delete_project_tag(project_id, tag)[source]

从项目删除单个标签。

参数:
  • project_id – 项目的 ID

  • tag – 要删除的标签值

引发:

keystone.exception.ProjectTagNotFound – 如果该标签名称在项目上不存在

driver_namespace: str = 'keystone.resource'
get_domain(domain_id)[source]
get_domain_by_name(domain_name)[source]
get_project(project_id)[source]
get_project_by_name(project_name, domain_id)[source]
get_project_parents_as_ids(project)[source]

获取给定项目父级的 ID。

项目 ID 以结构化字典的形式返回,遍历到顶级项目。例如,考虑以下项目层次结构

  A
  |
+-B-+
|   |
C   D

如果我们查询项目 C 的父级,预期的返回值如下字典

'parents': {
    B['id']: {
        A['id']: None
    }
}
get_project_tag(project_id, tag_name)[source]

返回项目上单个标签的信息。

参数:
  • project_id – 从中检索标签的项目 ID

  • tag_name – 要返回的标签名称

引发:

keystone.exception.ProjectTagNotFound – 如果该标签名称在项目上不存在

返回值:

标签值

get_projects_in_subtree_as_ids(project_id)[source]

获取给定项目子树中的项目 ID。

项目 ID 以结构化字典的形式返回,表示它们的层次结构。例如,考虑以下项目层次结构

  A
  |
+-B-+
|   |
C   D

如果我们查询项目 A 的子树,预期的返回值如下字典

'subtree': {
    B['id']: {
        C['id']: None,
        D['id']: None
    }
}
list_domains(hints=None)[source]
list_domains_from_ids(domain_ids)[source]

列出提供的 ID 列表的域。

参数:

domain_ids – ID 列表

返回值:

一个 domain_refs 列表。

此方法由分配管理器内部用于根据其 ID 大量读取一组域。

list_project_parents(project_id, user_id=None, include_limits=False)[source]
list_project_tags(project_id)[source]

列出项目上的所有标签。

参数:

project_id – 项目的 ID

返回值:

来自项目的标签列表

list_projects(hints=None)[source]
list_projects_acting_as_domain(hints=None)[source]
list_projects_in_domain(domain_id)[source]
list_projects_in_subtree(project_id, user_id=None, include_limits=False)[source]
update_domain(domain_id, domain, initiator=None)[source]
update_project(project_id, project, initiator=None, cascade=False)[source]
update_project_tags(project_id, tags, initiator=None)[source]

更新项目上的所有标签。

参数:
  • project_id – 要更新的项目 ID

  • tags – 要更新到项目上的标签列表

返回值:

标签列表