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 – 一个可选的组内的特定选项
- 返回值:
包含已过滤的选项的组字典的字典,按指定的组和选项过滤。
- 引发:
keystone.exception.DomainConfigNotFound – 当未找到与 domain_id、group 和 option 匹配的配置时
keystone.exception.InvalidDomainConfig – 当配置和 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_not_federated(domain_id, domain)[source]¶
断言领域名称和 ID 不匹配保留的关键字。
请注意,保留的关键字在配置文件中定义,默认情况下为“Federated”,它也区分大小写。如果配置选项为空,则将使用默认的硬编码值“Federated”。
- 引发:
AssertionError – 如果领域名称与配置中的值匹配。
- assert_project_enabled(project_id, project=None)[source]¶
断言项目已启用,并且其关联的领域已启用。
- 引发:
AssertionError – 如果项目或领域已禁用。
- create_project_tag(project_id, tag, initiator=None)[source]¶
创建一个项目上的新标签。
- 参数:
project_id – 创建标签的项目 ID
tag – 要添加的标签的字符串值
- 返回值:
创建的标签的值
- delete_project(project_id, initiator=None, cascade=False)[source]¶
删除一个项目或一个子树。
- 参数:
cascade (boolean) – 如果为 true,则删除指定项目及其所有子项目。否则,仅删除指定的项目。
- 引发:
keystone.exception.ValidationError – 如果项目是域
keystone.exception.Forbidden – 如果项目不是叶子节点
- delete_project_tag(project_id, tag)[source]¶
从项目删除单个标签。
- 参数:
project_id – 项目的 ID
tag – 要删除的标签值
- 引发:
keystone.exception.ProjectTagNotFound – 如果该标签名称在项目上不存在
- driver_namespace: str = 'keystone.resource'¶
- 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 } }