keystoneclient 包

子包

子模块

keystoneclient.access 模块

class keystoneclient.access.AccessInfo(*args, **kwargs)

Bases: dict

封装来自 keystone 的原始身份验证令牌。

提供从该令牌中提取有用值的辅助方法。

property audit_chain_id

如果存在,则返回审计链 ID。

如果令牌被重新作用域,则此 ID 将是初始令牌的 audit_id。如果不存在值,则返回 None。

返回值:

str 或 None。

property audit_id

如果存在,则返回审计 ID。

返回值:

str 或 None。

property auth_token

返回与身份验证请求关联的 token_id。

用于在 OpenStack API 请求中进行身份验证的标头。

返回值:

str

property auth_url

返回标识符 URL 的元组。

标识符 URL 来自与授权请求关联的服务目录中的服务“identity”的 publicURL 和 adminURL。如果身份验证请求未作用域到租户(项目),则此属性将返回 None。

已弃用:这不能正确处理区域名称。您应该自己从服务目录中获取它。这可能在 2.0.0 版本中删除。

返回值:

urls 的元组

property domain_id

返回与身份验证请求关联的域 ID。

返回值:

str 或 None(如果令牌没有关联域)

property domain_name

返回与身份验证请求关联的域名称。

返回值:

str 或 None(如果令牌没有关联域)

property domain_scoped

如果身份验证令牌限定到域,则返回 True。

返回值:

bool

property expires

返回令牌过期时间(作为 datetime 对象)。

返回值:

datetime

classmethod factory(resp=None, body=None, region_name=None, auth_token=None, **kwargs)

创建新的 AccessInfo 对象的工厂函数。

通过成功的身份验证响应和正文或用户提供的字典创建 AccessInfo 对象。

警告

从 1.7.0 版本开始,region_name 参数的使用已弃用,并可能在 2.0.0 版本中删除。

has_service_catalog()

如果身份验证令牌具有服务目录,则返回 true。

返回值:

布尔值

property initial_audit_id

最初请求的令牌的审计 ID。

如果存在,则为 audit_chain_id,否则为 audit_id

property is_federated

如果使用联合身份验证获取令牌,则返回 True。

返回值:

布尔值

classmethod is_valid(body, **kwargs)

确定是处理有效的 v2 还是 v3 令牌。

从身份验证正文或用户提供的字典进行验证。

返回值:

如果身份验证正文与实现类匹配,则为 true

返回类型:

布尔值

property issued

返回令牌签发时间(作为 datetime 对象)。

返回值:

datetime

property management_url

返回标识符终结点的第一个 adminURL。

标识符终结点来自与身份验证请求关联的服务目录,如果身份验证请求未作用域到租户(项目),则为 None。

已弃用:这不能正确处理区域名称。您应该自己从服务目录中获取它。这可能在 2.0.0 版本中删除。

返回值:

urls 的元组

property oauth_access_token_id

如果使用 OAuth 身份验证,则返回访问令牌 ID。

返回值:

str 或 None。

property oauth_consumer_id

如果使用 OAuth 身份验证,则返回消费者 ID。

返回值:

str 或 None。

property project_domain_id

返回与身份验证请求关联的项目域 ID。

对于 v2,如果项目已作用域,则返回“default”,否则返回 None,这可能与 keystone 配置不同。

返回值:

str

property project_domain_name

返回与身份验证请求关联的项目域名称。

对于 v2,如果项目已作用域,则返回“Default”,否则返回 None,这可能与 keystone 配置不同。

返回值:

str

property project_id

返回与身份验证请求关联的项目 ID。

如果身份验证令牌未限定到项目,则返回 None。

返回值:

字符串或 None(如果令牌未关联项目)

property project_name

返回与身份验证请求关联的项目名称。

返回值:

字符串或 None(如果令牌未关联项目)

property project_scoped

如果身份验证令牌已作用域到租户(项目),则返回 true。

返回值:

bool

property role_ids

返回与身份验证请求关联的用户角色 ID 列表。

返回值:

角色 ID 字符串列表

property role_names

返回与身份验证请求关联的用户角色名称列表。

返回值:

角色名称字符串列表

property scoped

如果身份验证令牌已限定范围,则返回 True。

如果作用域到租户(项目)或域,并包含已填充的服务目录,则返回 true。

警告

从 1.7.0 版本开始,此属性已弃用,使用 project_scoped 代替,并可能在 2.0.0 版本中删除。

返回值:

bool

property tenant_id

project_id 的同义词。

property tenant_name

project_name 的同义词。

property trust_id

返回与身份验证请求关联的信任 ID。

返回值:

字符串或 None(如果令牌未关联信任)

property trust_scoped

如果身份验证令牌来自委托信任,则返回 True。

信任委托通过 OS-TRUST v3 扩展实现。

返回值:

bool

property trustee_user_id

返回与信任关联的委托人用户 ID。

返回值:

字符串或 None(如果令牌未关联信任)

property trustor_user_id

返回与信任关联的信托人用户 ID。

返回值:

字符串或 None(如果令牌未关联信任)

property user_domain_id

返回与身份验证请求关联的用户域 ID。

对于 v2,它始终返回“default”,这可能与 Keystone 配置不同。

返回值:

str

property user_domain_name

返回与身份验证请求关联的用户域名称。

对于 v2,它始终返回“Default”,这可能与 Keystone 配置不同。

返回值:

str

property user_id

返回与身份验证请求关联的用户 ID。

返回值:

str

property username

返回与身份验证请求关联的用户名。

遵循 V2 API 中定义的模式,首先查找“name”,如果可用则返回该名称,否则回退到“username”。

返回值:

str

property version

从身份服务返回身份验证令牌的版本。

返回值:

str

will_expire_soon(stale_duration=None)

确定是否即将过期。

返回值:

如果过期时间在给定的持续时间内,则返回 True

返回类型:

布尔值

class keystoneclient.access.AccessInfoV2(*args, **kwargs)

Bases: AccessInfo

一个对象,用于封装来自身份服务的原始 v2 身份验证令牌。

property audit_chain_id

如果存在,则返回审计链 ID。

如果令牌被重新作用域,则此 ID 将是初始令牌的 audit_id。如果不存在值,则返回 None。

返回值:

str 或 None。

property audit_id

如果存在,则返回审计 ID。

返回值:

str 或 None。

property auth_token

返回与身份验证请求关联的 token_id。

用于在 OpenStack API 请求中进行身份验证的标头。

返回值:

str

property auth_url

自 1.7.0 版本弃用。

请使用 service_catalog.get_urls()。它可能在 2.0.0 版本中删除。

property domain_id

返回与身份验证请求关联的域 ID。

返回值:

str 或 None(如果令牌没有关联域)

property domain_name

返回与身份验证请求关联的域名称。

返回值:

str 或 None(如果令牌没有关联域)

property domain_scoped

如果身份验证令牌限定到域,则返回 True。

返回值:

bool

property expires

返回令牌过期时间(作为 datetime 对象)。

返回值:

datetime

has_service_catalog()

如果身份验证令牌具有服务目录,则返回 true。

返回值:

布尔值

property is_federated

如果使用联合身份验证获取令牌,则返回 True。

返回值:

布尔值

classmethod is_valid(body, **kwargs)

确定是处理有效的 v2 还是 v3 令牌。

从身份验证正文或用户提供的字典进行验证。

返回值:

如果身份验证正文与实现类匹配,则为 true

返回类型:

布尔值

property issued

返回令牌签发时间(作为 datetime 对象)。

返回值:

datetime

property management_url

自 1.7.0 版本弃用。

请使用 service_catalog.get_urls()。它可能在 2.0.0 版本中删除。

property oauth_access_token_id

如果使用 OAuth 身份验证,则返回访问令牌 ID。

返回值:

str 或 None。

property oauth_consumer_id

如果使用 OAuth 身份验证,则返回消费者 ID。

返回值:

str 或 None。

property project_domain_id

返回与身份验证请求关联的项目域 ID。

对于 v2,如果项目已作用域,则返回“default”,否则返回 None,这可能与 keystone 配置不同。

返回值:

str

property project_domain_name

返回与身份验证请求关联的项目域名称。

对于 v2,如果项目已作用域,则返回“Default”,否则返回 None,这可能与 keystone 配置不同。

返回值:

str

property project_id

返回与身份验证请求关联的项目 ID。

如果身份验证令牌未限定到项目,则返回 None。

返回值:

字符串或 None(如果令牌未关联项目)

property project_name

返回与身份验证请求关联的项目名称。

返回值:

字符串或 None(如果令牌未关联项目)

property project_scoped

如果身份验证令牌已作用域到租户(项目),则返回 true。

返回值:

bool

property role_ids

返回与身份验证请求关联的用户角色 ID 列表。

返回值:

角色 ID 字符串列表

property role_names

返回与身份验证请求关联的用户角色名称列表。

返回值:

角色名称字符串列表

property scoped

自 1.7.0 版本弃用。

请使用 project_scoped 代替。它可能在 2.0.0 版本中删除。

property trust_id

返回与身份验证请求关联的信任 ID。

返回值:

字符串或 None(如果令牌未关联信任)

property trust_scoped

如果身份验证令牌来自委托信任,则返回 True。

信任委托通过 OS-TRUST v3 扩展实现。

返回值:

bool

property trustee_user_id

返回与信任关联的委托人用户 ID。

返回值:

字符串或 None(如果令牌未关联信任)

property trustor_user_id

返回与信任关联的信托人用户 ID。

返回值:

字符串或 None(如果令牌未关联信任)

property user_domain_id

返回与身份验证请求关联的用户域 ID。

对于 v2,它始终返回“default”,这可能与 Keystone 配置不同。

返回值:

str

property user_domain_name

返回与身份验证请求关联的用户域名称。

对于 v2,它始终返回“Default”,这可能与 Keystone 配置不同。

返回值:

str

property user_id

返回与身份验证请求关联的用户 ID。

返回值:

str

property username

返回与身份验证请求关联的用户名。

遵循 V2 API 中定义的模式,首先查找“name”,如果可用则返回该名称,否则回退到“username”。

返回值:

str

class keystoneclient.access.AccessInfoV3(token, *args, **kwargs)

Bases: AccessInfo

一个对象,封装来自身份服务的原始 v3 身份验证令牌。

property audit_chain_id

如果存在,则返回审计链 ID。

如果令牌被重新作用域,则此 ID 将是初始令牌的 audit_id。如果不存在值,则返回 None。

返回值:

str 或 None。

property audit_id

如果存在,则返回审计 ID。

返回值:

str 或 None。

property auth_url

自 1.7.0 版本弃用。

请使用 service_catalog.get_urls()。它可能在 2.0.0 版本中删除。

property domain_id

返回与身份验证请求关联的域 ID。

返回值:

str 或 None(如果令牌没有关联域)

property domain_name

返回与身份验证请求关联的域名称。

返回值:

str 或 None(如果令牌没有关联域)

property domain_scoped

如果身份验证令牌限定到域,则返回 True。

返回值:

bool

property expires

返回令牌过期时间(作为 datetime 对象)。

返回值:

datetime

has_service_catalog()

如果身份验证令牌具有服务目录,则返回 true。

返回值:

布尔值

property is_federated

如果使用联合身份验证获取令牌,则返回 True。

返回值:

布尔值

classmethod is_valid(body, **kwargs)

确定是处理有效的 v2 还是 v3 令牌。

从身份验证正文或用户提供的字典进行验证。

返回值:

如果身份验证正文与实现类匹配,则为 true

返回类型:

布尔值

property issued

返回令牌签发时间(作为 datetime 对象)。

返回值:

datetime

property management_url

自 1.7.0 版本弃用。

请使用 service_catalog.get_urls()。它可能在 2.0.0 版本中删除。

property oauth_access_token_id

如果使用 OAuth 身份验证,则返回访问令牌 ID。

返回值:

str 或 None。

property oauth_consumer_id

如果使用 OAuth 身份验证,则返回消费者 ID。

返回值:

str 或 None。

property project_domain_id

返回与身份验证请求关联的项目域 ID。

对于 v2,如果项目已作用域,则返回“default”,否则返回 None,这可能与 keystone 配置不同。

返回值:

str

property project_domain_name

返回与身份验证请求关联的项目域名称。

对于 v2,如果项目已作用域,则返回“Default”,否则返回 None,这可能与 keystone 配置不同。

返回值:

str

property project_id

返回与身份验证请求关联的项目 ID。

如果身份验证令牌未限定到项目,则返回 None。

返回值:

字符串或 None(如果令牌未关联项目)

property project_name

返回与身份验证请求关联的项目名称。

返回值:

字符串或 None(如果令牌未关联项目)

property project_scoped

如果身份验证令牌已作用域到租户(项目),则返回 true。

返回值:

bool

property role_ids

返回与身份验证请求关联的用户角色 ID 列表。

返回值:

角色 ID 字符串列表

property role_names

返回与身份验证请求关联的用户角色名称列表。

返回值:

角色名称字符串列表

property scoped

自 1.7.0 版本弃用。

请使用 project_scoped 代替。它可能在 2.0.0 版本中删除。

property trust_id

返回与身份验证请求关联的信任 ID。

返回值:

字符串或 None(如果令牌未关联信任)

property trust_scoped

如果身份验证令牌来自委托信任,则返回 True。

信任委托通过 OS-TRUST v3 扩展实现。

返回值:

bool

property trustee_user_id

返回与信任关联的委托人用户 ID。

返回值:

字符串或 None(如果令牌未关联信任)

property trustor_user_id

返回与信任关联的信托人用户 ID。

返回值:

字符串或 None(如果令牌未关联信任)

property user_domain_id

返回与身份验证请求关联的用户域 ID。

对于 v2,它始终返回“default”,这可能与 Keystone 配置不同。

返回值:

str

property user_domain_name

返回与身份验证请求关联的用户域名称。

对于 v2,它始终返回“Default”,这可能与 Keystone 配置不同。

返回值:

str

property user_id

返回与身份验证请求关联的用户 ID。

返回值:

str

property username

返回与身份验证请求关联的用户名。

遵循 V2 API 中定义的模式,首先查找“name”,如果可用则返回该名称,否则回退到“username”。

返回值:

str

keystoneclient.adapter 模块

class keystoneclient.adapter.Adapter(session, service_type=None, service_name=None, interface=None, region_name=None, endpoint_override=None, version=None, auth=None, user_agent=None, connect_retries=None, logger=None)

基类: object

一个包含本地变量的会话实例。

会话是一个全局对象,在许多客户端之间共享。因此,它包含对每个人都很重要的状态。有很多状态,如服务类型和 region_name,只与使用会话的特定客户端相关。适配器提供了一个围绕全局会话对象的客户端本地数据包装器。

参数:
  • session (keystoneclient.session.Session) – 要包装的会话对象。

  • service_type (str) – URL 发现的默认 service_type。

  • service_name (str) – URL 发现的默认 service_name。

  • interface (str) – URL 发现的默认 interface。

  • region_name (str) – URL 发现的默认 region_name。

  • endpoint_override (str) – 对于此客户端的请求,始终使用此终结点 URL。

  • version (tuple) – 此 API 目标版本。

  • auth (keystoneclient.auth.base.BaseAuthPlugin) – 用于代替会话插件的身份验证插件。

  • user_agent (str) – 要设置的 User-Agent 字符串。

  • connect_retries (int) – 应为连接错误尝试的最大重试次数。默认值为 None - 使用会话默认值,即不重试。

  • logger (logging.Logger) – 用于通过此适配器进行的请求的日志记录对象。

delete(url, **kwargs)
get(url, **kwargs)
get_endpoint(auth=None, **kwargs)

获取由认证插件提供的端点。

参数:

auth (keystoneclient.auth.base.BaseAuthPlugin) – 用于令牌的身份验证插件。覆盖会话上的插件。(可选)

引发:

keystoneclient.exceptions.MissingAuthPlugin – 如果插件不可用。

返回值:

如果可用,则返回端点,否则返回 None。

返回类型:

字符串

get_project_id(auth=None)

返回由认证插件提供的已认证的项目 ID。

参数:

auth (keystoneclient.auth.base.BaseAuthPlugin) – 用于令牌的身份验证插件。覆盖会话上的插件。(可选)

引发:
返回值:

当前 project_id 或 None(如果插件不支持)。

返回类型:

字符串

get_token(auth=None)

返回由认证插件提供的令牌。

参数:

auth (keystoneclient.auth.base.BaseAuthPlugin) – 用于令牌的身份验证插件。覆盖会话上的插件。(可选)

引发:

keystoneclient.exceptions.AuthorizationFailure – 如果新的令牌获取失败。

返回值:

一个有效的 token。

返回类型:

字符串

get_user_id(auth=None)

返回由认证插件提供的已认证的用户 ID。

参数:

auth (keystoneclient.auth.base.BaseAuthPlugin) – 用于令牌的身份验证插件。覆盖会话上的插件。(可选)

引发:
返回值:

当前 user_id 或 None(如果插件不支持)。

返回类型:

字符串

head(url, **kwargs)
invalidate(auth=None)

使认证插件失效。

patch(url, **kwargs)
post(url, **kwargs)
put(url, **kwargs)
request(url, method, **kwargs)
class keystoneclient.adapter.LegacyJsonAdapter(session, service_type=None, service_name=None, interface=None, region_name=None, endpoint_override=None, version=None, auth=None, user_agent=None, connect_retries=None, logger=None)

Bases: Adapter

模拟旧的 HTTPClient。

使用适配器的一个常见情况是,我们想要一个类似于旧 HTTPClient 的接口,它也以 JSON 格式返回正文。

如果你从头开始,你可能不需要这个。

request(*args, **kwargs)

keystoneclient.base 模块

构建 API 操作管理器和对象的基础工具。

class keystoneclient.base.CrudManager(client)

Bases: Manager

用于操作 Keystone 实体的基类管理器。

此类子类应定义 collection_keykey

  • collection_key: 通常是约定俗成的复数名词(例如 entities);用于在 URL(例如 /v3/entities)和包含成员资源列表的 JSON 对象(例如 {‘entities’: [{}, {}, {}]})中引用集合。

  • key: 通常是约定俗成的单数名词(例如 entity);用于引用集合的单个成员。

base_url = None
build_key_only_query(params_list)

构建一个不包含值、仅包含键的查询。

Identity API 有一些调用定义了没有值的查询,这无法通过使用 urllib.parse.urlencode() 来实现。此方法仅使用键构建查询。

build_url(dict_args_in_out=None)

为给定的 kwargs 构建资源 URL。

给定一个示例集合,其中 collection_key = ‘entities’key = ‘entity’,可以生成以下 URL。

默认情况下,URL 将表示一个实体集合,例如:

/entities

如果 kwargs 包含 entity_id,则 URL 将表示一个特定的成员,例如:

/entities/{entity_id}

如果提供了 base_url,则生成的 URL 将附加到其末尾。

如果提供了“tail”,它将附加到 URL 的末尾。

collection_key = None
create(**kwargs)
delete(**kwargs)
find(**kwargs)

查找与 **kwargs 匹配属性的单个项目。

get(**kwargs)
head(**kwargs)
key = None
list(fallback_to_auth=False, **kwargs)
put(**kwargs)
update(**kwargs)
class keystoneclient.base.Manager(client)

基类: object

提供通用操作的基本管理器类型。

管理器与特定类型的 API(服务器、风味、镜像等)交互,并为其提供 CRUD 操作。

参数:

client – 用于 HTTP 请求的 BaseClient 后代实例

property api

客户端。

警告

从 1.7.0 版本开始,此属性已弃用,使用 client() 代替,并可能在 2.0.0 版本中删除。

resource_class = None
class keystoneclient.base.ManagerWithFind(client)

Bases: Manager

具有附加 find()/findall() 方法的管理器。

find(**kwargs)

查找与 **kwargs 匹配属性的单个项目。

效率不高:它加载整个列表,然后在 Python 端进行筛选。

findall(**kwargs)

查找与 **kwargs 匹配属性的所有项目。

效率不高:它加载整个列表,然后在 Python 端进行筛选。

abstractmethod list()
class keystoneclient.base.Resource(manager, info, loaded=False)

基类: object

OpenStack 资源(租户、用户等)的基本类。

这基本上只是一个属性包。

HUMAN_ID = False
NAME_ATTR = 'name'
delete()
get()

支持延迟加载详细信息。

一些客户端,例如 novaclient 具有延迟加载详细信息的选项,这些详细信息可以使用此函数加载。

property human_id

人类可读的 ID,可用于 bash 完成。

is_loaded()
set_loaded(val)
to_dict()
class keystoneclient.base.Response(http_response, data)

基类: object

keystoneclient.base.filter_kwargs(f)
keystoneclient.base.filter_none(**kwargs)

移除字典中值为 None 的条目。

keystoneclient.base.getid(obj)

如果参数是 Resource,则返回 id。

抽象了在处理关系时,允许将对象或对象的 ID(UUID)作为参数的常见模式。

keystoneclient.baseclient 模块

class keystoneclient.baseclient.Client(session)

基类: object

delete(url, **kwargs)
get(url, **kwargs)
head(url, **kwargs)
patch(url, **kwargs)
post(url, **kwargs)
put(url, **kwargs)
request(url, method, **kwargs)

keystoneclient.client 模块

keystoneclient.client.Client(version=None, unstable=False, session=None, **kwargs)

用于创建新的身份服务客户端的工厂函数。

返回的客户端将是 V3 或 V2 客户端。使用 version 属性或实例的类(使用 isinstance)来检查版本。

参数:
  • version (tuple) – 身份 API 的必需版本。如果指定,将选择一个客户端,使其主版本号相同,并且该端点至少提供指定的次版本号。例如,要指定 3.1 API,请使用 (3, 1)。(可选)

  • unstable (bool) – 接受未标记为“稳定”的端点。(可选)

  • session (keystoneclient.session.Session) – 用于通信的会话对象。如果未提供,将从提供的 kwargs 中构建。(可选)

  • kwargs – 其他参数将传递给正在创建的客户端。

返回值:

新的 keystone 客户端对象。

返回类型:

keystoneclient.v3.client.Clientkeystoneclient.v2_0.client.Client

引发:
class keystoneclient.client.HTTPClient

Bases: HTTPClient

keystoneclient.httpclient.HTTPClient 的已弃用别名。

此类的弃用版本为 1.7.0,推荐使用 keystoneclient.httpclient.HTTPClient,并可能在 2.0.0 版本中移除。

keystoneclient.discover 模块

class keystoneclient.discover.Discover(session=None, authenticated=None, **kwargs)

Bases: Discover

发现和创建客户端的方式。

客户端的创建取决于服务器支持的 API 版本。

服务器的查询在对象创建时完成,之后每个方法都操作检索到的数据。

与此方法关联的连接参数与客户端使用的参数格式和名称相同(参见 keystoneclient.v2_0.client.Clientkeystoneclient.v3.client.Client)。如果后续方法未覆盖,它们也将是传递给已创建客户端的内容。

如果提供了 auth_url 和 endpoint,则 auth_url 将根据客户端的操作方式使用。

警告

从 1.7.0 版本开始,在不使用 session 参数的情况下创建此类的实例已被弃用,并可能在 2.0.0 版本中移除。

参数:
  • session (keystoneclient.session.Session) – 用于通信的会话对象。客户端也将使用此会话进行构建。

  • auth_url (string) – 用于授权的身份服务终结点。(可选)

  • endpoint (string) – 用户提供的身份服务终结点 URL。(可选)

  • original_ip (string) – 请求用户的原始 IP,将作为“Forwarded”头发送到身份服务。(可选)如果提供了 session,则忽略此参数。从 1.7.0 版本开始弃用,并可能在 2.0.0 版本中移除。

  • debug (boolean) – 启用对所有发送到身份服务的请求和响应的调试日志记录。默认为 False。(可选)如果提供了 session,则忽略此参数。从 1.7.0 版本开始弃用,并可能在 2.0.0 版本中移除。

  • cacert (string) – 包含信任的证书颁发机构 X.509 证书的 PEM 文件路径,这些证书是建立与身份服务的 SSL 连接所必需的。(可选)如果提供了 session,则忽略此参数。从 1.7.0 版本开始弃用,并可能在 2.0.0 版本中移除。

  • key (string) – 包含建立与身份服务双向 SSL 连接所必需的未加密客户端私钥的 PEM 文件路径。(可选)如果提供了 session,则忽略此参数。从 1.7.0 版本开始弃用,并可能在 2.0.0 版本中移除。

  • cert (string) – 包含对应 X.509 客户端证书的 PEM 文件路径,这些证书是建立与身份服务的双向 SSL 连接所必需的。(可选)如果提供了 session,则忽略此参数。从 1.7.0 版本开始弃用,并可能在 2.0.0 版本中移除。

  • insecure (boolean) – 在建立与身份服务的 SSL 连接时,不执行 X.509 证书验证。默认为:False。(可选)如果提供了 session,则忽略此参数。从 1.7.0 版本开始弃用,并可能在 2.0.0 版本中移除。

  • authenticated (bool) – 是否应使用令牌执行初始发现操作。默认为:None(如果提供了认证插件,则附加一个令牌)。

available_versions(**kwargs)

返回服务器上可用的身份 API 列表。

返回的列表包含与之相关的数据。

警告

此方法已从 1.7.0 版本开始弃用,推荐使用 raw_version_data(),并可能在 2.0.0 版本中移除。

参数:
  • unstable (bool) – 接受未标记为“稳定”的端点。(可选)相当于设置 allow_experimental 和 allow_unknown 为 True。

  • allow_experimental (bool) – 允许实验性版本端点。

  • allow_deprecated (bool) – 允许已弃用的版本端点。

  • allow_unknown (bool) – 允许状态未知的端点。

返回值:

服务器提供的字典列表。每个字典将包含版本号和用于该版本号的 URL。它是身份 API 所呈现布局的直接表示。

create_client(version=None, unstable=False, **kwargs)

用于创建新的身份服务客户端的工厂函数。

参数:
  • version (tuple) – 身份 API 的必需版本。如果指定,将选择一个客户端,使其主版本号相同,并且该端点至少提供指定的次版本号。例如,要指定 3.1 API,请使用 (3, 1)。(可选)

  • unstable (bool) – 接受未标记为“稳定”的端点。(可选)

  • kwargs – 其他参数将覆盖传递给此对象构造函数的参数。

返回值:

已实例化的身份客户端对象。

引发:
raw_version_data(unstable=False, **kwargs)

从 URL 获取原始版本信息。

原始数据表明只对数据进行了最小的验证处理,因此此处返回的数据将与从端点接收到的数据格式相同。

参数:
  • unstable (bool) – 相当于设置 allow_experimental 和 allow_unknown。此参数已从 1.7.0 版本开始弃用,并可能在 2.0.0 版本中移除。

  • allow_experimental (bool) – 允许实验性版本端点。

  • allow_deprecated (bool) – 允许已弃用的版本端点。

  • allow_unknown (bool) – 允许状态未知的端点。

返回值:

从服务器返回的与条件匹配的端点。

返回类型:

列表

示例

>>> from keystoneclient import discover
>>> disc = discover.Discovery(auth_url='https://:5000')
>>> disc.raw_version_data()
    [{'id': 'v3.0',
        'links': [{'href': 'http://127.0.0.1:5000/v3/',
                   'rel': 'self'}],
      'media-types': [
          {'base': 'application/json',
           'type': 'application/vnd.openstack.identity-v3+json'},
          {'base': 'application/xml',
           'type': 'application/vnd.openstack.identity-v3+xml'}],
      'status': 'stable',
      'updated': '2013-03-06T00:00:00Z'},
     {'id': 'v2.0',
      'links': [{'href': 'http://127.0.0.1:5000/v2.0/',
                 'rel': 'self'},
                {'href': '...',
                 'rel': 'describedby',
                 'type': 'application/pdf'}],
      'media-types': [
          {'base': 'application/json',
           'type': 'application/vnd.openstack.identity-v2.0+json'},
          {'base': 'application/xml',
           'type': 'application/vnd.openstack.identity-v2.0+xml'}],
      'status': 'stable',
      'updated': '2013-03-06T00:00:00Z'}]
keystoneclient.discover.add_catalog_discover_hack(service_type, old, new)

为特定服务添加一个版本移除规则。

最初,OpenStack 的部署会在服务目录中包含一个版本化的端点。例如,身份服务可能看起来像 https://:5000/v2.0。当我们要使用 v3.0 等不同版本时,这是一个问题,因为没有办法知道它的位置。我们也无法仅仅更改所有服务目录,所以必须有一种方法来处理旧样式的目录。

此函数为给定的服务类型添加一条规则,如果 URL 的一部分与 *old* 中的给定正则表达式匹配,则将其替换为 *new* 的值。这将替换所有出现的 old 为 new。因此,它应该包含一个正则表达式锚点。

例如,包含的规则是

add_catalog_version_hack('identity', re.compile('/v2.0/?$'), '/')

所以,如果目录检索到一个以 /v2.0 或 /v2.0/ 结尾的 *identity* URL,它将被简单地替换为 / 以修复用户目录。

参数:
  • service_type (str) – 目录中定义的规则将应用于的服务类型。

  • old (re.RegexObject) – 要搜索并替换(如果找到)的正则表达式。

  • new (str) – 用于替换模式的新字符串。

keystoneclient.discover.available_versions(url, session=None, **kwargs)

从 URL 检索原始版本数据。

keystoneclient.discover.normalize_version_number(version)

将版本表示转换为元组。

接受字符串、元组或浮点数,这些表示我们能够处理的版本格式,并将它们转换为我们实际可用于发现的 (major, minor) 版本元组。

例如:'v3.3' 给出 (3, 3)

3.1 给出 (3, 1)

参数:

version – 要尝试转换的输入版本号。

返回值:

可用的版本元组

返回类型:

tuple

引发:

TypeError – 如果输入的版本无法转换为元组。

keystoneclient.discover.version_match(required, candidate)

测试可用版本是否满足所需版本。

要合格,版本的主版本号必须与所需的版本相同,并且次要/补丁级别至少匹配。

例如:3.3 与所需的 3.1 匹配,但 4.1 不匹配。

参数:
  • required (tuple) – 必须满足的版本。

  • candidate (tuple) – 将要针对 required 进行测试的版本。

返回值:

如果 candidate 合适则返回 True,否则返回 False。

返回类型:

bool

keystoneclient.exceptions 模块

异常定义。

exception keystoneclient.exceptions.AmbiguousEndpoints(endpoints=None)

Bases: CatalogException

在服务目录中找到多个匹配的端点。

exception keystoneclient.exceptions.AuthPluginOptionsMissing(opt_names)

Bases: AuthorizationFailure

认证插件缺少一些选项。

exception keystoneclient.exceptions.AuthSystemNotFound(auth_system)

Bases: AuthorizationFailure

用户指定了一个未安装的认证系统。

exception keystoneclient.exceptions.AuthorizationFailure(message: str | None = None)

Bases: ClientException

无法授权 API 客户端。

keystoneauth1.exceptions.auth.AuthorizationFailure 的别名。

message = 'Cannot authorize API client.'
exception keystoneclient.exceptions.BadGateway(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HttpServerError

HTTP 502 - Bad Gateway。

服务器充当网关或代理,并从上游服务器收到无效响应。 keystoneauth1.exceptions.http.BadGateway 的别名。

http_status = 502
message = 'Bad Gateway'
exception keystoneclient.exceptions.BadRequest(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 400 - Bad Request。

请求因语法错误而无法完成。 keystoneauth1.exceptions.http.BadRequest 的别名。

http_status = 400
message = 'Bad Request'
exception keystoneclient.exceptions.CMSError(output)

基类: Exception

读取证书时出错。

exception keystoneclient.exceptions.CertificateConfigError(output)

基类: Exception

读取证书时出错。

exception keystoneclient.exceptions.ClientException(message: str | None = None)

基类: Exception

此库引发的所有异常的基类。

keystoneauth1.exceptions.base.ClientException 的别名。

message = 'ClientException'
exception keystoneclient.exceptions.CommandError(message: str | None = None)

Bases: ClientException

CLI 工具中的错误。

exception keystoneclient.exceptions.Conflict(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 409 - Conflict。

表示由于请求冲突(如编辑冲突)而无法处理请求。 keystoneauth1.exceptions.http.Conflict 的别名。

http_status = 409
message = 'Conflict'
exception keystoneclient.exceptions.ConnectionError(message: str | None = None)

Bases: ClientException

无法连接到 API 服务。

keystoneauth1.exceptions.connection.ConnectionError 的别名。

message = 'Cannot connect to API service.'
keystoneclient.exceptions.ConnectionRefused

尝试连接到 API 服务时连接被拒绝。

keystoneauth1.exceptions.connection.ConnectFailure 的别名。

exception keystoneclient.exceptions.DiscoveryFailure(message: str | None = None)

Bases: ClientException

发现客户端版本失败。

keystoneauth1.exceptions.discovery.DiscoveryFailure 的别名。

message = 'Discovery of client versions failed.'
exception keystoneclient.exceptions.EmptyCatalog(message: str | None = None)

Bases: EndpointNotFound

服务目录为空。

keystoneauth1.exceptions.catalog.EmptyCatalog 的别名。

message = 'The service catalog is empty.'
keystoneclient.exceptions.EndpointException

服务目录中有些东西不对劲。

keystoneauth1.exceptions.catalog.CatalogException 的别名。

exception keystoneclient.exceptions.EndpointNotFound(message: str | None = None)

Bases: CatalogException

无法在服务目录中找到请求的端点。

keystoneauth1.exceptions.catalog.EndpointNotFound 的别名。

message = 'Could not find requested endpoint in Service Catalog.'
exception keystoneclient.exceptions.ExpectationFailed(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 417 - Expectation Failed。

服务器无法满足 Expect 请求头字段的要求。 keystoneauth1.exceptions.http.ExpectationFailed 的别名。

http_status = 417
message = 'Expectation Failed'
exception keystoneclient.exceptions.Forbidden(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 403 - 禁止访问。

请求是有效的,但服务器拒绝响应。 keystoneauth1.exceptions.http.Forbidden 的别名。

http_status = 403
message = 'Forbidden'
exception keystoneclient.exceptions.GatewayTimeout(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HttpServerError

HTTP 504 - 网关超时。

服务器充当网关或代理,未及时收到上游服务器的响应。 keystoneauth1.exceptions.http.GatewayTimeout 的别名。

http_status = 504
message = 'Gateway Timeout'
exception keystoneclient.exceptions.Gone(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 410 - 已消失。

表示请求的资源已不再可用,并且将不再可用。 keystoneauth1.exceptions.http.Gone 的别名

http_status = 410
message = 'Gone'
exception keystoneclient.exceptions.HTTPClientError(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HttpError

客户端 HTTP 错误。

表示客户端似乎出错了。 keystoneauth1.exceptions.http.HTTPClientError 的别名

message = 'HTTP Client Error'
exception keystoneclient.exceptions.HTTPRedirection(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HttpError

HTTP 重定向。

message = 'HTTP Redirection'
exception keystoneclient.exceptions.HttpError(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: ClientException

所有 HTTP 异常的基类。

一个 keystoneauth1.exceptions.http.HttpError 的别名

http_status = 0
message = 'HTTP Error'
exception keystoneclient.exceptions.HttpNotImplemented(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HttpServerError

HTTP 501 - 未实现。

服务器不识别请求方法,或者服务器没有能力完成请求。 keystoneauth1.exceptions.http.HttpNotImplemented 的别名

http_status = 501
message = 'Not Implemented'
exception keystoneclient.exceptions.HttpServerError(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HttpError

服务器端 HTTP 错误。

服务器意识到自身出错或无法执行请求。 keystoneauth1.exceptions.http.HttpServerError 的别名

message = 'HTTP Server Error'
exception keystoneclient.exceptions.HttpVersionNotSupported(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HttpServerError

HTTP 505 - HTTP 版本不受支持。

服务器不支持请求中使用的 HTTP 协议版本。 keystoneauth1.exceptions.http.HttpVersionNotSupported 的别名

http_status = 505
message = 'HTTP Version Not Supported'
exception keystoneclient.exceptions.InternalServerError(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HttpServerError

HTTP 500 - 内部服务器错误。

一个通用的错误消息,当没有更具体的错误消息时使用。 keystoneauth1.exceptions.http.InternalServerError 的别名

http_status = 500
message = 'Internal Server Error'
exception keystoneclient.exceptions.InvalidResponse(response)

Bases: ClientException

服务器的响应对于此请求无效。

exception keystoneclient.exceptions.LengthRequired(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 411 - 需要长度。

请求未指定内容的长度,而这是所请求资源所必需的。 keystoneauth1.exceptions.http.LengthRequired 的别名

http_status = 411
message = 'Length Required'
exception keystoneclient.exceptions.MethodNotAllowed(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 405 - 方法不允许。

对某个资源发起了不支持该资源请求方法的方法。 keystoneauth1.exceptions.http.MethodNotAllowed 的别名

http_status = 405
message = 'Method Not Allowed'
exception keystoneclient.exceptions.MethodNotImplemented(message: str | None = None)

Bases: ClientException

keystoneclient API 未实现的方法。

exception keystoneclient.exceptions.MissingAuthPlugin(message: str | None = None)

基类: AuthPluginException

需要身份验证请求,但没有可用的插件。

一个 keystoneauth1.exceptions.auth_plugins.MissingAuthPlugin 的别名

message = 'An authenticated request is required but no plugin available.'
exception keystoneclient.exceptions.MultipleChoices(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPRedirection

HTTP 300 - 多重选择。

指示客户端可以遵循资源的多个选项。

http_status = 300
message = 'Multiple Choices'
exception keystoneclient.exceptions.NoMatchingPlugin(name: str)

基类: AuthPluginException

根据提供的参数,没有可以创建的身份验证插件。

一个 keystoneauth1.exceptions.auth_plugins.NoMatchingPlugin 的别名

exception keystoneclient.exceptions.NoUniqueMatch(message: str | None = None)

Bases: ClientException

找到多个实体而不是一个。

exception keystoneclient.exceptions.NotAcceptable(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 406 - 不可接受。

所请求的资源只能生成不符合请求中发送的Accept头信息的响应内容。是 keystoneauth1.exceptions.http.NotAcceptable的别名

http_status = 406
message = 'Not Acceptable'
exception keystoneclient.exceptions.NotFound(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 404 - 未找到。

找不到所请求的资源,但未来可能再次可用。是 keystoneauth1.exceptions.http.NotFound的别名

http_status = 404
message = 'Not Found'
exception keystoneclient.exceptions.PaymentRequired(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 402 - 需要付款。

保留供将来使用。是 keystoneauth1.exceptions.http.PaymentRequired的别名

http_status = 402
message = 'Payment Required'
exception keystoneclient.exceptions.PreconditionFailed(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 412 - 前置条件失败。

服务器未能满足请求者对请求设置的某个先决条件。是 keystoneauth1.exceptions.http.PreconditionFailed的别名

http_status = 412
message = 'Precondition Failed'
exception keystoneclient.exceptions.ProxyAuthenticationRequired(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 407 - 需要代理身份验证。

客户端必须首先使用代理进行身份验证。是 keystoneauth1.exceptions.http.ProxyAuthenticationRequired的别名

http_status = 407
message = 'Proxy Authentication Required'
exception keystoneclient.exceptions.RequestEntityTooLarge(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 413 - 请求实体过大。

请求体比服务器愿意或能够处理的要大。是 keystoneauth1.exceptions.http.RequestEntityTooLarge的别名

http_status = 413
message = 'Request Entity Too Large'
exception keystoneclient.exceptions.RequestTimeout(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 408 - 请求超时。

服务器超时等待请求。是 keystoneauth1.exceptions.http.RequestTimeout的别名

http_status = 408
message = 'Request Timeout'
exception keystoneclient.exceptions.RequestUriTooLong(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 414 - 请求 URI 过长。

提供的URI对于服务器来说太长,无法处理。是 keystoneauth1.exceptions.http.RequestUriTooLong的别名

http_status = 414
message = 'Request-URI Too Long'
exception keystoneclient.exceptions.RequestedRangeNotSatisfiable(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 416 - 请求范围不可满足。

客户端请求了文件的一部分,但服务器无法提供该部分。是 keystoneauth1.exceptions.http.RequestedRangeNotSatisfiable的别名

http_status = 416
message = 'Requested Range Not Satisfiable'
exception keystoneclient.exceptions.SSLError(message: str | None = None)

Bases: ConnectionError

发生了SSL错误。

keystoneauth1.exceptions.connection.SSLError的别名

message = 'An SSL error occurred.'
exception keystoneclient.exceptions.ServiceUnavailable(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HttpServerError

HTTP 503 - 服务不可用。

服务器当前不可用。是 keystoneauth1.exceptions.http.ServiceUnavailable的别名

http_status = 503
message = 'Service Unavailable'
exception keystoneclient.exceptions.Unauthorized(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 401 - 未授权。

与403 Forbidden类似,但专门用于身份验证失败或尚未提供身份验证的情况。是 keystoneauth1.exceptions.http.Unauthorized的别名

http_status = 401
message = 'Unauthorized'
exception keystoneclient.exceptions.UnprocessableEntity(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 422 - 无法处理的实体。

请求格式正确,但由于语义错误而无法执行。是 keystoneauth1.exceptions.http.UnprocessableEntity的别名

http_status = 422
message = 'Unprocessable Entity'
exception keystoneclient.exceptions.UnsupportedMediaType(message: str | None = None, details: str | None = None, response: Response | None = None, request_id: str | None = None, url: str | None = None, method: str | None = None, http_status: int | None = None, retry_after: int = 0)

Bases: HTTPClientError

HTTP 415 - 不支持的媒体类型。

请求实体具有服务器或资源不支持的媒体类型。是 keystoneauth1.exceptions.http.UnsupportedMediaType的别名

http_status = 415
message = 'Unsupported Media Type'
exception keystoneclient.exceptions.UnsupportedParameters(names)

Bases: ClientException

提供的或返回的参数不受支持。

参数:

names (List(str)) – 不支持的参数的名称。

names

不支持的参数的名称。

exception keystoneclient.exceptions.UnsupportedVersion(message: str | None = None)

Bases: ClientException

用户尝试使用不受支持的 API 版本。

exception keystoneclient.exceptions.ValidationError(message: str | None = None)

Bases: ClientException

API 客户端侧验证错误。

exception keystoneclient.exceptions.VersionNotAvailable(message: str | None = None)

Bases: DiscoveryFailure

发现失败,因为您请求的版本不可用。

keystoneauth1.exceptions.discovery.VersionNotAvailable的别名

message = 'Discovery failed. Requested version is not available.'
keystoneclient.exceptions.from_response(response: Response, method: str, url: str) HttpError | MissingAuthMethods

根据响应返回一个 `HttpError` 或其子类的实例。

`keystoneauth1.exceptions.http.from_response()` 的别名。

keystoneclient.httpclient 模块

OpenStack 客户端接口。处理 REST 调用和响应。

class keystoneclient.httpclient.HTTPClient(username=None, tenant_id=None, tenant_name=None, password=None, auth_url=None, region_name=None, endpoint=None, token=None, auth_ref=None, use_keyring=False, force_new_token=False, stale_duration=None, user_id=None, user_domain_id=None, user_domain_name=None, domain_id=None, domain_name=None, project_id=None, project_name=None, project_domain_id=None, project_domain_name=None, trust_id=None, session=None, service_name=None, interface='default', endpoint_override=None, auth=None, user_agent='python-keystoneclient', connect_retries=None, **kwargs)

基类: Client, BaseAuthPlugin

HTTP 客户端。

警告

从 1.7.0 版本开始,在不使用 session 参数的情况下创建此类的实例已被弃用,并可能在 2.0.0 版本中移除。

参数:
  • user_id (string) – 认证用的用户 ID。(可选)

  • username (字符串) – 用于身份验证的用户名。(可选)

  • user_domain_id (string) – 认证用的用户所属域 ID。(可选)

  • user_domain_name (string) – 认证用的用户所属域名称。(可选)

  • password (字符串) – 用于身份验证的密码。(可选)

  • domain_id (string) – 域作用域的域 ID。(可选)

  • domain_name (string) – 域作用域的域名称。(可选)

  • project_id (string) – 项目作用域的项目 ID。(可选)

  • project_name (string) – 项目作用项目的项目名称。(可选)

  • project_domain_id (string) – 项目作用域的项目所属域 ID。(可选)

  • project_domain_name (string) – 项目作用域的项目所属域名称。(可选)

  • auth_url (string) – 授权的身份服务端点。

  • region_name (字符串) – 从服务目录中选择端点时要选择的区域名称。

  • timeout (integer) – 此参数已在 1.7.0 版本中弃用,转而使用 session,并可能在 2.0.0 版本中移除。(可选)

  • endpoint (string) – 用户提供的身份服务的端点 URL。如果实例化时设置了 endpoint,API 服务调用可能支持延迟认证。(可选)

  • token (字符串) – 用于身份验证的令牌。(可选)

  • cacert (string) – 此参数已在 1.7.0 版本中弃用,转而使用 session,并可能在 2.0.0 版本中移除。(可选)

  • key (string) – 此参数已在 1.7.0 版本中弃用,转而使用 session,并可能在 2.0.0 版本中移除。(可选)

  • cert (string) – 此参数已在 1.7.0 版本中弃用,转而使用 session,并可能在 2.0.0 版本中移除。(可选)

  • insecure (boolean) – 此参数已在 1.7.0 版本中弃用,转而使用 session,并可能在 2.0.0 版本中移除。(可选)

  • original_ip (string) – 此参数已在 1.7.0 版本中弃用,转而使用 session,并可能在 2.0.0 版本中移除。(可选)

  • auth_ref (dict) – 允许客户端使用者管理自己的缓存策略,您可以初始化一个带有先前捕获的 auth_reference(token)的客户端。如果 auth_ref 中存在与传入的关键字参数同名的参数,则以参数的值为准。

  • use_keyring (boolean) – 启用将 auth_ref 缓存到 keyring。默认值:False。(可选)

  • force_new_token (boolean) – 与 keyring 相关的参数,强制请求新 token。默认值:False。(可选)

  • stale_duration (integer) – 以秒为单位的时间间隔,用于确定 keyring 中的 token 是否即将过期。默认值:30。(可选)

  • tenant_name (string) – 租户名称。(可选)tenant_name 关键字参数已在 1.7.0 版本中弃用,转而使用 project_name,并可能在 2.0.0 版本中移除。

  • tenant_id (string) – 租户 ID。(可选)tenant_id 关键字参数已在 1.7.0 版本中弃用,转而使用 project_id,并可能在 2.0.0 版本中移除。

  • trust_id (string) – 信任作用域的信任 ID。(可选)

  • session (keystoneclient.session.Session) – 用于与身份服务通信的 Session 对象。

  • service_name (string) – URL 发现的默认 service_name。默认值:None。(可选)

  • interface (string) – URL 发现的默认 interface。默认值:admin (v2), public (v3)。(可选)

  • endpoint_override (string) – 始终为此客户端的请求使用此端点 URL。(可选)

  • auth (keystoneclient.auth.base.BaseAuthPlugin) – 使用的认证插件,代替 session 中的认证插件。(可选)

  • user_agent (string) – 要设置的 User-Agent 字符串。默认值:python-keystoneclient。(可选)

  • connect_retries (int) – 尝试连接错误的最多重试次数。默认值为 None - 使用 session 默认值,即不重试。(可选)

property auth_token
authenticate(username=None, password=None, tenant_name=None, tenant_id=None, auth_url=None, token=None, user_id=None, domain_name=None, domain_id=None, project_name=None, project_id=None, user_domain_id=None, user_domain_name=None, project_domain_id=None, project_domain_name=None, trust_id=None, region_name=None)

认证用户。

使用实例化时提供的数据与身份服务进行认证。这可能使用用户名和密码,或者 token 进行认证。如果提供了租户名称或 ID,则生成的认证客户端将作用于该租户,并包含可用端点的服务目录。

使用 v2.0 API 时,如果未提供租户名称或 ID,则返回的认证 token 将是“未作用域”的,并在获取完全作用域的 token 之前功能受限。

使用 v3 API 时,如果提供了域名称或 ID,则生成的认证客户端将作用于该域。如果未提供项目名称或 ID,并且认证用户已配置默认项目,则返回的认证 token 将作用于默认项目。否则,返回的认证 token 将是“未作用域”的,并在获取完全作用域的 token 之前功能受限。

使用 v3 API 时,在 OS-TRUST 扩展启用时,可以提供 trust_id 来允许用户之间的项目特定角色委派。

如果成功,将使用返回的 token 设置 self.auth_ref 和 self.auth_token。如果尚未设置,还将从 token 中提供的详细信息设置 self.management_url。

返回值:

如果认证成功,则返回 `True`。

引发:

如果使用 keyring,则 token 将从 keyring 中检索。仅当满足以下任一条件时,才需要进行认证:

  • 未启用 keyring

  • 如果在 keyring 中未找到 token

  • 如果从 keyring 检索到的 token 已过期或即将过期(由 stale_duration 确定)

  • 如果 force_new_token 为 true

delete(url, **kwargs)

执行经过认证的 DELETE 请求。

这会调用 `request()` 方法,并将 `method` 设置为 `DELETE`,并在可用时包含认证 token。

警告

已弃用:此函数不再使用,已在 1.7.0 版本中弃用,并可能在 2.0.0 版本中移除。它被设计为仅供管理器使用,而管理器现在接收一个适配器,因此此函数不再是标准的请求路径。此函数可能在 2.0.0 版本中移除。

deprecated_adapter_variables = {'region_name': None}
deprecated_session_variables = {'cert': None, 'original_ip': None, 'timeout': None, 'verify_cert': 'verify'}
get(url, **kwargs)

执行经过认证的 GET 请求。

这会调用 `request()` 方法,并将 `method` 设置为 `GET`,并在可用时包含认证 token。

警告

已弃用:此函数不再使用,已在 1.7.0 版本中弃用,并可能在 2.0.0 版本中移除。它被设计为仅供管理器使用,而管理器现在接收一个适配器,因此此函数不再是标准的请求路径。此函数可能在 2.0.0 版本中移除。

get_auth_ref_from_keyring(**kwargs)

从 keyring 中检索 auth_ref。

如果在 keyring 中找到 auth_ref,则返回 (keyring_key, auth_ref)。否则,返回 (keyring_key, None)。

返回值:

(keyring_key, auth_ref) 或 (keyring_key, None)

返回值:

或者 (None, None) 如果对象中未设置 use_keyring。

get_endpoint(session, interface=None, **kwargs)

为客户端返回一个端点。

get_endpoint 中没有必需的关键字参数,因为插件实现应尽最大努力使用可用信息来确定端点。但是,有一些标准选项将由客户端生成,并且应由插件使用

  • service_type:所需的服务类型。

  • service_name:目录中的服务名称。

  • interface:端点应具有的可见性。

  • region_name:端点所在的区域。

参数:

session (keystoneclient.session.Session) – auth_plugin 所属的 session 对象。

返回值:

将用于与所需服务通信的基本 URL,如果不可用则为 None。

返回类型:

字符串

get_project_id(session, **kwargs)

返回插件认证到的项目 ID。

只要可能,项目 ID 应该从 token 推断出来,但是某些 URL 和其他地方需要访问当前认证的项目 ID。

参数:

session (keystoneclient.session.Session) – 一个 session 对象,以便插件可以发出 HTTP 调用。

返回值:

一个项目标识符,如果不可用则为 None。

返回类型:

str

get_raw_token_from_identity_service(auth_url, username=None, password=None, tenant_name=None, tenant_id=None, token=None, user_id=None, user_domain_id=None, user_domain_name=None, domain_id=None, domain_name=None, project_id=None, project_name=None, project_domain_id=None, project_domain_name=None, trust_id=None)

向身份 API 进行认证并获取 token。

此处未实现,因为认证协议应特定于 API 版本。

预期会认证或验证已与客户端关联的现有认证引用。调用此调用 *始终* 会向身份服务发起调用。

返回值:

(resp, body)

get_token(session, **kwargs)

获取令牌。

令牌的获取方式由插件决定。如果它仍然有效,则可以重用、从缓存中检索或调用服务器上的身份验证请求。

没有必需的 kwargs。它们直接传递给认证插件,并且是特定于实现的。

返回 None 将指示无法检索到令牌。

此函数放置不当,因为它仅应需要使用“X-Auth-Token”标头的身份验证插件。但是,由于插件的演变方式,此方法是必需的,并且通常被调用以触发新插件上的身份验证请求。

在实现新插件时,建议您实现此方法,但是,如果您不需要“X-Auth-Token”标头,请改写 get_headers 方法。

参数:

session (keystoneclient.session.Session) – 一个 session 对象,以便插件可以发出 HTTP 调用。

返回值:

要使用的令牌。

返回类型:

字符串

get_user_id(session, **kwargs)

返回插件的唯一用户标识符。

只要可能,用户 ID 应该从 token 推断出来,但是某些 URL 和其他地方需要访问当前认证的用户 ID。

参数:

session (keystoneclient.session.Session) – 一个 session 对象,以便插件可以发出 HTTP 调用。

返回值:

一个用户标识符,如果不可用则为 None。

返回类型:

str

has_service_catalog()

如果此客户端提供服务目录,则返回 True。

head(url, **kwargs)

执行经过认证的 HEAD 请求。

这会调用 `request()` 方法,并将 `method` 设置为 `HEAD`,并在可用时包含认证 token。

警告

已弃用:此函数不再使用,已在 1.7.0 版本中弃用,并可能在 2.0.0 版本中移除。它被设计为仅供管理器使用,而管理器现在接收一个适配器,因此此函数不再是标准的请求路径。此函数可能在 2.0.0 版本中移除。

property management_url
patch(url, **kwargs)

执行经过认证的 PATCH 请求。

这会调用 `request()` 方法,并将 `method` 设置为 `PATCH`,并在可用时包含认证 token。

警告

已弃用:此函数不再使用,已在 1.7.0 版本中弃用,并可能在 2.0.0 版本中移除。它被设计为仅供管理器使用,而管理器现在接收一个适配器,因此此函数不再是标准的请求路径。此函数可能在 2.0.0 版本中移除。

post(url, **kwargs)

执行经过认证的 POST 请求。

这会调用 `request()` 方法,并将 `method` 设置为 `POST`,并在可用时包含认证 token。

警告

已弃用:此函数不再使用,已在 1.7.0 版本中弃用,并可能在 2.0.0 版本中移除。它被设计为仅供管理器使用,而管理器现在接收一个适配器,因此此函数不再是标准的请求路径。此函数可能在 2.0.0 版本中移除。

process_token(region_name=None)

从新的 auth_ref 中提取和处理信息。

并设置相关的认证信息。

put(url, **kwargs)

执行经过认证的 PUT 请求。

这会调用 `request()` 方法,并将 `method` 设置为 `PUT`,并在可用时包含认证 token。

警告

已弃用:此函数不再使用,已在 1.7.0 版本中弃用,并可能在 2.0.0 版本中移除。它被设计为仅供管理器使用,而管理器现在接收一个适配器,因此此函数不再是标准的请求路径。此函数可能在 2.0.0 版本中移除。

request(*args, **kwargs)

使用指定的特征发送 HTTP 请求。

封装 requests.request,用于处理设置头部、JSON 编码/解码和错误处理等任务。

警告

已弃用:此函数不再使用。它被设计为仅供管理器使用,而管理器现在接收一个适配器,因此此函数不再是标准的请求路径。此函数可能在 2.0.0 版本中移除。

serialize(entity)
property service_catalog

返回此客户端的服务目录。

store_auth_ref_into_keyring(keyring_key)

将 auth_ref 存储到 keyring 中。

property tenant_id

提供 tenant_id 的只读向后兼容性。

警告

此参数已在 1.7.0 版本中弃用,转而使用 project_id,并可能在 2.0.0 版本中移除。

property tenant_name

提供 tenant_name 的只读向后兼容性。

警告

此参数已在 1.7.0 版本中弃用,转而使用 project_name,并可能在 2.0.0 版本中移除。

version = None
keystoneclient.httpclient.USER_AGENT = 'python-keystoneclient'

默认用户代理字符串。

此属性已在 1.7.0 版本中弃用,转而使用 `keystoneclient.session.USER_AGENT`,并可能在 2.0.0 版本中移除。

keystoneclient.httpclient.request(*args, **kwargs)

发起请求。

此函数已在 1.7.0 版本中弃用,转而使用 `keystoneclient.session.request()`,并可能在 2.0.0 版本中移除。

keystoneclient.i18n 模块

oslo.i18n 集成模块。

请参阅 https://docs.openstack.org/oslo.i18n/2025.2/user/index.html

keystoneclient.service_catalog 模块

class keystoneclient.service_catalog.ServiceCatalog(region_name=None)

基类: object

用于处理 Keystone 服务目录的辅助方法。

警告

设置 region_name 已在 1.7.0 版本中弃用,转而将 region 名称作为参数传递给对服务目录的调用,并可能在 2.0.0 版本中移除。

classmethod factory(resource_dict, token=None, region_name=None)

给定一个认证 token 创建 ServiceCatalog 对象。

警告

设置 region_name 已在 1.7.0 版本中弃用,转而将 region 名称作为参数传递给对服务目录的调用,并可能在 2.0.0 版本中移除。

abstractmethod get_data()

获取原始目录结构。

获取版本相关的目录结构,即它在资源中呈现的方式。

返回值:

包含原始目录数据条目的列表或 None

get_endpoints(service_type=None, endpoint_type=None, region_name=None, service_name=None)

获取并过滤指定服务的端点。

返回指定服务(或所有)、包含指定类型(或所有)、区域(或所有)和服务名称的端点。

如果服务目录中没有名称,则会跳过 service_name 检查。这允许与在目录中名称可用之前存在的服务兼容。

abstractmethod get_token()

从服务目录获取 token 详细信息。

返回一个包含以下内容的字典

- `id`: Token's ID
- `expires`: Token's expiration
- `user_id`: Authenticated user's ID
- `tenant_id`: Authorized project's ID
- `domain_id`: Authorized domain's ID
abstractmethod get_urls(attr=None, filter_value=None, service_type='identity', endpoint_type='publicURL', region_name=None, service_name=None)

从服务目录获取端点 URL。

从服务目录获取特定端点属性的端点。如果未提供属性,则返回指定类型下的第一个端点。

参数:
  • attr (string) – 端点属性名称。

  • filter_value (string) – 端点属性值。

  • service_type (string) – 端点的服务类型。

  • endpoint_type (string) – 端点类型。可能的值:public 或 publicURL,internal 或 internalURL,admin 或 adminURL

  • region_name (string) – 端点的区域。

  • service_name (string) – 服务的分配名称。

返回值:

URL 元组或 None(如果没有找到匹配项)

property region_name

区域名称。

警告

region_name 已在 1.7.0 版本中弃用,转而将 region 名称作为参数传递给对服务目录的调用,并可能在 2.0.0 版本中移除。

url_for(attr=None, filter_value=None, service_type='identity', endpoint_type='publicURL', region_name=None, service_name=None)

从服务目录获取一个端点。

从服务目录获取特定端点属性的指定端点。如果未提供属性,则返回指定类型下的第一个端点。

有效的端点类型:publicpublicURL

internalinternalURLadmin 或 ‘adminURL`

参数:
  • attr (string) – 端点属性名称。

  • filter_value (string) – 端点属性值。

  • service_type (string) – 端点的服务类型。

  • endpoint_type (string) – 端点类型。

  • region_name (string) – 端点的区域。

  • service_name (string) – 服务的分配名称。

class keystoneclient.service_catalog.ServiceCatalogV2(resource_dict, region_name=None)

基类: ServiceCatalog

封装 v2 服务目录的对象。

该对象使用来自 Keystone 的原始 v2 认证 token 创建。

get_data()

获取原始目录结构。

获取版本相关的目录结构,即它在资源中呈现的方式。

返回值:

包含原始目录数据条目的列表或 None

get_token()

从服务目录获取 token 详细信息。

返回一个包含以下内容的字典

- `id`: Token's ID
- `expires`: Token's expiration
- `user_id`: Authenticated user's ID
- `tenant_id`: Authorized project's ID
- `domain_id`: Authorized domain's ID
get_urls(attr=None, filter_value=None, service_type='identity', endpoint_type='publicURL', region_name=None, service_name=None)

从服务目录获取端点 URL。

从服务目录获取特定端点属性的端点。如果未提供属性,则返回指定类型下的第一个端点。

参数:
  • attr (string) – 端点属性名称。

  • filter_value (string) – 端点属性值。

  • service_type (string) – 端点的服务类型。

  • endpoint_type (string) – 端点类型。可能的值:public 或 publicURL,internal 或 internalURL,admin 或 adminURL

  • region_name (string) – 端点的区域。

  • service_name (string) – 服务的分配名称。

返回值:

URL 元组或 None(如果没有找到匹配项)

classmethod is_valid(resource_dict)
class keystoneclient.service_catalog.ServiceCatalogV3(token, resource_dict, region_name=None)

基类: ServiceCatalog

封装 v3 服务目录的对象。

该对象使用来自 Keystone 的原始 v3 认证 token 创建。

get_data()

获取原始目录结构。

获取版本相关的目录结构,即它在资源中呈现的方式。

返回值:

包含原始目录数据条目的列表或 None

get_token()

从服务目录获取 token 详细信息。

返回一个包含以下内容的字典

- `id`: Token's ID
- `expires`: Token's expiration
- `user_id`: Authenticated user's ID
- `tenant_id`: Authorized project's ID
- `domain_id`: Authorized domain's ID
get_urls(attr=None, filter_value=None, service_type='identity', endpoint_type='public', region_name=None, service_name=None)

从服务目录获取端点 URL。

从服务目录获取特定端点属性的端点。如果未提供属性,则返回指定类型下的第一个端点。

参数:
  • attr (string) – 端点属性名称。

  • filter_value (string) – 端点属性值。

  • service_type (string) – 端点的服务类型。

  • endpoint_type (string) – 端点类型。可能的值:public 或 publicURL,internal 或 internalURL,admin 或 adminURL

  • region_name (string) – 端点的区域。

  • service_name (string) – 服务的分配名称。

返回值:

URL 元组或 None(如果没有找到匹配项)

classmethod is_valid(resource_dict)

keystoneclient.session 模块

class keystoneclient.session.Session(auth=None, session=None, original_ip=None, verify=True, cert=None, timeout=None, user_agent=None, redirect=30)

基类: object

维护客户端通信状态和通用功能。

尽可能地,此类参数反映并直接传递给 requests 库。

参数:
  • auth (keystoneclient.auth.base.BaseAuthPlugin) – 用于向 session 进行身份验证的认证插件。(可选,默认为 None)

  • session (requests.Session) – 可用于发出请求的 requests session 对象。(可选)

  • original_ip (string) – 请求用户的原始 IP,将发送到身份服务的“Forwarded”头部。(可选)

  • verify – 传递给 requests 的验证参数。这些参数与 requests 期望的格式相同,因此 True 或 False 表示验证(或不验证)系统证书,或者是一个指向 bundle 或 CA 证书的路径,或 None 表示 requests 尝试查找并使用证书。(可选,默认为 True)

  • cert – 传递给 requests 的客户端证书。这些参数与 requests 期望的格式相同。可以是一个包含证书和密钥的单个文件名,也可以是一个包含证书路径然后是密钥路径的元组。(可选)

  • timeout (float) – 传递给 requests 的超时值。应为表示一定时间(或分数)秒的数值,或 0 表示无超时。(可选,默认为 0)

  • user_agent (string) – 用于请求的用户代理头部字符串。如果未提供,则使用默认值。(可选,默认为 ‘python-keystoneclient’)

  • redirect (int/bool) – 控制请求可以遵循的最大重定向次数。可以是整数表示特定次数,也可以是 True/False 表示无限/从不。(可选,默认为 30)

DEFAULT_REDIRECT_LIMIT = 30

此属性已在 1.7.0 版本中弃用,并可能在 2.0.0 版本中移除。

REDIRECT_STATUSES = (301, 302, 303, 305, 307)

此属性已在 1.7.0 版本中弃用,并可能在 2.0.0 版本中移除。

classmethod construct(kwargs)

处理从旧参数和新参数构建 session。

支持从旧的 `HTTPClient` 参数以及新的 request 风格参数构建 session。

警告

*已在 1.7.0 版本中弃用*:此函数仅用于弥合旧客户端参数与它们相关的 session 参数之间的差距。它不打算用作通用 Session 工厂。此函数可能在 2.0.0 版本中移除。

此函数会故意修改输入的 kwargs 字典,以便其余的 kwargs 字典可以被重用并传递给其他没有 session 参数的函数。

delete(url, **kwargs)

执行 DELETE 请求。

这会调用 `request()` 方法,并将 `method` 设置为 `DELETE`。

get(url, **kwargs)

执行 GET 请求。

这会调用 `request()` 方法,并将 `method` 设置为 `GET`。

get_auth_connection_params(auth=None, **kwargs)

返回由认证插件提供的认证连接参数。

认证插件可以为请求指定连接参数,例如提供用于通信的客户端证书。

我们限制此函数返回的值,以防止认证插件覆盖与连接参数无关的值。目前接受的值是:

  • cert:指向客户端证书的路径,或者是一个包含客户端证书和密钥对的元组,与此请求一起使用。

  • verify:一个布尔值,指示是否针对系统 CA 验证 SSL 证书,或者是一个用于验证的 CA 文件路径。

这些值将被传递给 requests 库,在那里可以找到有关接受值进一步的信息。

参数:

auth (keystoneclient.auth.base.BaseAuthPlugin) – 用于 token 的认证插件。覆盖 session 中的插件。(可选)

引发:
返回值:

认证头部或 None(如果失败)。

返回类型:

dict

get_auth_headers(auth=None, **kwargs)

返回由认证插件提供的认证头部。

参数:

auth (keystoneclient.auth.base.BaseAuthPlugin) – 用于令牌的身份验证插件。覆盖会话上的插件。(可选)

引发:
返回值:

认证头部或 None(如果失败)。

返回类型:

dict

classmethod get_conf_options(deprecated_opts=None)

获取 `Session` 对象所需的 oslo_config 选项。

这些可能对配置文件的生成或用于在注册它们之前操作选项很有用,而无需注册。

设置的选项是
cafile:

证书颁发机构文件名。

certfile:

将要呈现的客户端证书文件。

keyfile:

客户端证书的密钥。

insecure:

是否忽略 SSL 验证。

timeout:

HTTP 连接的最大等待时间。

参数:

deprecated_opts (dict) –

应包含在新选项定义中的弃用选项。这应该是一个从新选项名称到对应于新选项的 oslo.DeprecatedOpts 列表的字典。(可选)

例如,为了支持指向新 `cafile` 选项名称的 `ca_file` 选项:

old_opt = oslo_cfg.DeprecatedOpt('ca_file', 'old_group')
deprecated_opts={'cafile': [old_opt]}

返回值:

一个 oslo_config 选项列表。

get_endpoint(auth=None, **kwargs)

获取由认证插件提供的端点。

参数:

auth (keystoneclient.auth.base.BaseAuthPlugin) – 用于令牌的身份验证插件。覆盖会话上的插件。(可选)

引发:

keystoneclient.exceptions.MissingAuthPlugin – 如果插件不可用。

返回值:

如果可用,则返回端点,否则返回 None。

返回类型:

字符串

get_project_id(auth=None)

返回由认证插件提供的已认证的项目 ID。

参数:

auth (keystoneclient.auth.base.BaseAuthPlugin) – 用于令牌的身份验证插件。覆盖会话上的插件。(可选)

引发:
返回字符串:

当前 project_id,如果插件不支持,则为 None。

get_token(auth=None)

返回由认证插件提供的令牌。

参数:

auth (keystoneclient.auth.base.BaseAuthPlugin) – 用于令牌的身份验证插件。覆盖会话上的插件。(可选)

引发:

警告

此方法已在 1.7.0 版本中弃用,转而使用 `get_auth_headers()`,并可能在 2.0.0 版本中移除。此方法假设用于认证消息的唯一头部是 'X-Auth-Token',但这可能不正确。

返回值:

一个有效的 token。

返回类型:

字符串

get_user_id(auth=None)

返回由认证插件提供的已认证的用户 ID。

参数:

auth (keystoneclient.auth.base.BaseAuthPlugin) – 用于令牌的身份验证插件。覆盖会话上的插件。(可选)

引发:
返回字符串:

当前 user_id,如果插件不支持,则为 None。

head(url, **kwargs)

执行 HEAD 请求。

这会调用 `request()` 方法,并将 `method` 设置为 `HEAD`。

invalidate(auth=None)

使认证插件失效。

参数:

auth (keystoneclient.auth.base.BaseAuthPlugin) – 要使之无效的认证插件。覆盖 session 中的插件。(可选)

classmethod load_from_cli_options(args, **kwargs)

从 CLI 参数创建 `Session` 对象。

CLI 参数必须已使用 `register_cli_options()` 注册。

参数:

args (Namespace) – 解析后的参数结果。

返回值:

一个新 session 对象。

返回类型:

Session

classmethod load_from_conf_options(conf, group, **kwargs)

从 oslo_config 对象创建 session 对象。

这些选项必须先前使用 register_conf_options 注册。

参数:
  • conf (oslo_config.Cfg) – 要注册的配置对象。

  • group (string) – 注册选项的 ini 组。

  • kwargs (dict) – 传递给 session 构造函数的其他参数。

返回值:

一个新 session 对象。

返回类型:

Session

patch(url, **kwargs)

执行 PATCH 请求。

此调用使用 `PATCH` 作为 `method` 参数调用 request()

post(url, **kwargs)

执行 POST 请求。

此调用使用 `POST` 作为 `method` 参数调用 request()

put(url, **kwargs)

执行 PUT 请求。

此调用使用 `PUT` 作为 `method` 参数调用 request()

static register_cli_options(parser)

注册会话所需的 argparse 参数。

参数:

parser (argparse.ArgumentParser) – 要添加到的解析器。

classmethod register_conf_options(conf, group, deprecated_opts=None)

注册会话所需的 oslo_config 选项。

设置的选项是
cafile:

证书颁发机构文件名。

certfile:

将要呈现的客户端证书文件。

keyfile:

客户端证书的密钥。

insecure:

是否忽略 SSL 验证。

timeout:

HTTP 连接的最大等待时间。

参数:
  • conf (oslo_config.Cfg) – 要注册的配置对象。

  • group (string) – 注册选项的 ini 组。

  • deprecated_opts (dict) –

    应包含在新选项定义中的弃用选项。这应该是一个从新选项名称到对应于新选项的 oslo.DeprecatedOpts 列表的字典。(可选)

    例如,为了支持指向新 `cafile` 选项名称的 `ca_file` 选项:

    old_opt = oslo_cfg.DeprecatedOpt('ca_file', 'old_group')
    deprecated_opts={'cafile': [old_opt]}
    

返回值:

已注册的选项列表。

request(url, method, json=None, original_ip=None, user_agent=None, redirect=None, authenticated=None, endpoint_filter=None, auth=None, requests_auth=None, raise_exc=True, allow_reauth=True, log=True, endpoint_override=None, connect_retries=0, logger=<Logger keystoneclient.session (WARNING)>, **kwargs)

使用指定特性发送 HTTP 请求。

requests.Session.request 的封装,用于处理诸如设置标头、JSON 编码/解码和错误处理之类的任务。

未处理的参数将传递给 requests 库。

参数:
  • url (string) – HTTP 请求的路径或完全限定 URL。如果仅提供路径,则还必须提供 endpoint_filter,以便确定基本 URL。如果提供完全限定 URL,则将忽略 endpoint_filter。

  • method (string) – 要使用的 http 方法。(例如,'GET'、'POST')

  • original_ip (string) – 将此请求标记为转发给此 IP。(可选)

  • headers (dict) – 要包含在请求中的标头。(可选)

  • json – 要表示为 JSON 的一些数据。(可选)

  • user_agent (string) – 要用于此请求的用户代理。如果存在,将覆盖标头中存在的值。(可选)

  • redirect (int/bool) – 请求可以跟随的最大重定向次数。可以是整数以指定具体次数,或 True/False 表示无限/从不。(可选)

  • connect_retries (int) – 尝试连接错误的最大重试次数。(可选,默认为 0 - 从不重试)。

  • authenticated (bool) – 如果应将令牌附加到此请求,则为 True,否则为 False,或如果可用 auth_plugin 则为 None 以附加。(可选,默认为 None)

  • endpoint_filter (dict) – 要提供给 auth 插件的数据,以便它能够确定此请求要使用的端点。如果未提供,则 URL 预计为完全限定 URL。(可选)

  • endpoint_override (str) – 要使用的 URL,而不是在 auth 插件中查找端点。如果提供了完全限定 URL,则此参数将被忽略,但它将优先于 endpoint_filter。(可选)

  • auth (keystoneclient.auth.base.BaseAuthPlugin) – 认证此请求时要使用的 auth 插件。这将覆盖附加到会话的插件(如果存在)。(可选)

  • requests_auth (requests.auth.AuthBase) – requests 库的一个 auth 插件,不能通过 kwarg 传递,因为 `auth` kwarg 与我们自己的 auth 插件冲突。(可选)

  • raise_exc (bool) – 如果为 True,则为失败的 HTTP 请求引发适当的异常。如果为 False,则返回请求对象。(可选,默认为 True)

  • allow_reauth (bool) – 允许在收到 401 Unauthorized 响应时获取新令牌并重试请求。(可选,默认为 True)

  • log (bool) – 如果为 True,则将请求和响应数据记录到调试日志。(可选,默认为 True)

  • logger (logging.Logger) – 用于记录请求和响应的 logger 对象。如果未提供,将使用 keystoneclient.session 的默认 logger。

  • kwargs – 可以传递给 requests.Session.request 的任何其他参数(例如 `headers`)。例外:`data` 将被 `json` 参数中的数据覆盖。`allow_redirects` 被忽略,因为重定向由会话处理。

引发:

keystoneclient.exceptions.ClientException – 用于连接失败,或指示错误响应代码。

返回值:

请求的响应。

user_agent = None
class keystoneclient.session.TCPKeepAliveAdapter(pool_connections=10, pool_maxsize=10, max_retries=0, pool_block=False)

继承自 HTTPAdapter

用于在所有连接上设置 TCP Keep-Alive 的自定义适配器。

此适配器还保留了 Requests 禁用 Nagle 算法的默认行为。另请参阅:http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx

init_poolmanager(*args, **kwargs)

初始化一个 urllib3 PoolManager。

此方法不应从用户代码调用,仅用于继承 HTTPAdapter 时使用。

参数:
  • connections – 要缓存的 urllib3 连接池数量。

  • maxsize – 要保存在池中的最大连接数。

  • block – 当没有可用空闲连接时阻塞。

  • pool_kwargs – 初始化 Pool Manager 时使用的额外关键字参数。

keystoneclient.session.request(url, method='GET', **kwargs)

keystoneclient.utils 模块

keystoneclient.utils.find_resource(manager, name_or_id)

用于 _find_* 方法的辅助函数。

keystoneclient.utils.hash_signed_token(signed_text, mode='md5')
keystoneclient.utils.isotime(at=None, subsecond=False)

以 ISO 8601 格式字符串化时间。

keystoneclient.utils.prompt_for_password()

如果未提供密码,则提示用户输入密码。

使用提示是为了避免密码出现在 bash 历史记录中。

keystoneclient.utils.prompt_user_password()

提示用户输入密码。

如果 stdin 是 tty,则提示输入密码。

keystoneclient.utils.strtime(at=None)

模块内容