keystoneauth1.plugin 模块

class keystoneauth1.plugin.BaseAuthPlugin

基类: object

身份验证插件的基本结构。

注意

有关此库提供的插件的描述,请参阅身份验证插件

__annotations__ = {}
__dict__ = mappingproxy({'__module__': 'keystoneauth1.plugin', '__doc__': '身份验证插件的基本结构。\n\n    .. note::\n        有关此库提供的插件的描述,请参阅 :doc:`/authentication-plugins` 。\n\n    ' '__init__': <function BaseAuthPlugin.__init__>, 'get_token': <function BaseAuthPlugin.get_token>, 'get_auth_ref': <function BaseAuthPlugin.get_auth_ref>, 'get_headers': <function BaseAuthPlugin.get_headers>, 'get_endpoint_data': <function BaseAuthPlugin.get_endpoint_data>, 'get_api_major_version': <function BaseAuthPlugin.get_api_major_version>, 'get_all_version_data': <function BaseAuthPlugin.get_all_version_data>, 'get_endpoint': <function BaseAuthPlugin.get_endpoint>, 'get_connection_params': <function BaseAuthPlugin.get_connection_params>, 'invalidate': <function BaseAuthPlugin.invalidate>, 'get_user_id': <function BaseAuthPlugin.get_user_id>, 'get_project_id': <function BaseAuthPlugin.get_project_id>, 'get_sp_auth_url': <function BaseAuthPlugin.get_sp_auth_url>, 'get_sp_url': <function BaseAuthPlugin.get_sp_url>, 'get_cache_id': <function BaseAuthPlugin.get_cache_id>, 'get_auth_state': <function BaseAuthPlugin.get_auth_state>, 'set_auth_state': <function BaseAuthPlugin.set_auth_state>, '__dict__': <attribute '__dict__' of 'BaseAuthPlugin' objects>, '__weakref__': <attribute '__weakref__' of 'BaseAuthPlugin' objects>, '__annotations__': {'_discovery_cache': 'dict[str, discover.Discover]'}})
__doc__ = '身份验证插件的基本结构。\n\n    .. note::\n        有关此库提供的插件的描述,请参阅 :doc:`/authentication-plugins` 。\n\n    '
__init__() None
__module__ = 'keystoneauth1.plugin'
__weakref__

对该对象的弱引用列表

get_all_version_data(session: ks_session.Session, interface: str | list[str] | None = 'public', region_name: str | None = None, service_type: str | None = None) dict[str, dict[str, dict[str, list[VersionData]]]]

获取目录中所有服务的版本数据。

参数:
  • session (keystoneauth1.session.Session) – 可以用于通信的会话对象。

  • interface – 要获取版本数据的端点类型。可以是一个单一值或一个值列表。值为 None 表示应查询所有接口。(可选,默认为 public)

  • region_name (string) – 要获取版本数据的端点区域。值为 None 表示应查询所有区域。(可选,默认为 None)

  • service_type (string) – 限制版本数据到单个服务。(可选,默认为 None)

返回值:

一个字典,键为 region_name,值为包含字典的字典,字典的键为 interface,值为 VersionData 列表。

get_api_major_version(session: ks_session.Session, *, endpoint_override: str | None = None, **kwargs: Any) tuple[int | float, ...] | None

从端点获取 API 主版本。

参数:
  • session (keystoneauth1.session.Session) – 可以用于通信的会话对象。

  • endpoint_override (str) – 用于版本发现的 URL。

  • kwargs – 已忽略。

引发:

keystoneauth1.exceptions.http.HttpError – 来自无效 HTTP 响应的错误。

返回值:

有效的 EndpointData 或不可用的 None。

返回类型:

keystoneauth1.discover.EndpointData 或 None

get_auth_ref(session: ks_session.Session) access.AccessInfo | None

返回身份验证插件的身份验证引用。

参数:

session (keystoneauth1.session.session) – 用于通信的会话对象

返回值:

如果支持,则为访问信息对象。

返回类型:

keystoneauth1.access.AccessInfo 或 None

get_auth_state() object

检索插件当前的身份验证状态。

检索表示已身份验证插件的任何内部状态。

如果不存在,则不应获取任何新数据。

引发:

NotImplementedError – 如果插件不支持此功能。

返回值:

可以移入另一个(相同类型的)插件以具有相同身份验证状态的原始 Python 数据(可 JSON 序列化)。

返回类型:

对象或 None(如果未进行身份验证)。

get_cache_id() str | None

获取唯一标识身份验证选项的标识符。

返回的标识符不必是可分解的,也不必提供任何方式来重新创建插件。它不应包含明文敏感数据。

如果用于唯一标识此插件的任何参数发生更改,则此字符串必须更改。

如果 get_cache_id 返回一个表明支持缓存的 str 值,那么 get_auth_cache 和 set_auth_cache 也必须实现。

返回值:

选项的唯一字符串

返回类型:

str 或如果不支持或不可用则为 None。

get_connection_params(session: ks_session.Session) ConnectionParams

返回插件所需的任何其他连接参数。

参数:

session (keystoneauth1.session.Session) – 该认证插件所属的会话对象。

返回值:

传递给 requests 库的参数。只有 certverify 参数可能会被返回。

返回类型:

dict

get_endpoint(session: ks_session.Session, **kwargs: Any) str | None

为客户端返回一个端点。

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

  • service_type:所需的服务类型。

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

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

  • region_name:端点所在的区域。

参数:
  • session (keystoneauth1.session.Session) – 该认证插件所属的会话对象。

  • kwargs – 已忽略。

返回值:

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

返回类型:

字符串

get_endpoint_data(session: ks_session.Session, *, endpoint_override: str | None = None, discover_versions: bool = True, **kwargs: Any) EndpointData | None

为服务返回有效的端点数据。

参数:
  • session (keystoneauth1.session.Session) – 可以用于通信的会话对象。

  • endpoint_override (str) – 用于版本发现的 URL。

  • discover_versions (bool) – 是否从版本发现文档中获取版本元数据,即使可以从 URL 推断出主要 API 版本信息。 (可选,默认为 True)

  • kwargs – 已忽略。

引发:

keystoneauth1.exceptions.http.HttpError – 来自无效 HTTP 响应的错误。

返回值:

有效的 EndpointData 或不可用的 None。

返回类型:

keystoneauth1.discover.EndpointData 或 None

get_headers(session: ks_session.Session) dict[str, str] | None

获取消息的身份验证头。

这是旧的 get_token 的更通用的替代方案,允许插件指定与 OpenStack 标准“X-Auth-Token”头不同的或额外的身份验证头。

如何获取身份验证头由插件决定。如果头仍然有效,则可以重用、从缓存中检索,或者插件可以调用对服务器的身份验证请求。

get_headers 的默认实现调用 get_token 方法,以使旧式插件能够继续正常运行。子类可以自由地完全覆盖此函数以提供他们想要的头。

返回 None 将指示无法检索到 token,并且授权失败。可以通过返回一个空字典来实现不添加任何身份验证数据。

参数:

session (keystoneauth1.session.Session) – 该认证插件所属的会话对象。

返回值:

用于验证消息的头,或者失败的 None。请注意,空字典是一个有效的、非失败的响应。

返回类型:

dict

get_project_id(session: ks_session.Session) str | None

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

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

参数:

session (keystoneauth1.session.Session) – 一个会话对象,以便插件可以进行 HTTP 调用。

返回值:

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

返回类型:

str

get_sp_auth_url(session: ks_session.Session, sp_id: str) str | None

从服务提供商对象返回 auth_url。

此 URL 用于从远程云获取未作用域的联合 token。

参数:

sp_id (string) – 要查询的服务提供商的 ID。

返回值:

一个服务提供商 auth_url,如果不可用则为 None。

返回类型:

str

get_sp_url(session: ks_session.Session, sp_id: str) str | None

从服务提供商对象返回 sp_url。

此 URL 用于将 SAML2 断言传递到远程云。

参数:

sp_id (str) – 要查询的服务提供商的 ID。

返回值:

一个服务提供商 sp_url,如果不可用则为 None。

返回类型:

str

get_token(session: ks_session.Session) str | None

获取令牌。

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

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

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

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

参数:

session (keystoneauth1.session.Session) – 一个会话对象,以便插件可以进行 HTTP 调用。

返回值:

要使用的令牌。

返回类型:

字符串

get_user_id(session: ks_session.Session) str | None

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

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

参数:

session (keystoneauth1.session.Session) – 一个会话对象,以便插件可以进行 HTTP 调用。

返回值:

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

返回类型:

str

invalidate() bool

使当前的身份验证数据失效。

这应该导致在下次调用时获取新的 token。

如果返回 Unauthorized HTTP 响应以指示 token 可能已被撤销或现在无效,则插件可能会失效。

返回值:

如果插件执行了某些操作以使其失效,则为 True。这意味着尝试再次是有意义的。如果未发生任何事情,则返回 False 以指示放弃。

返回类型:

bool

set_auth_state(data: str) None

安装插件现有的身份验证状态。

获取 get_auth_state 的输出,并将该身份验证状态安装到当前的身份验证插件中。

引发:

NotImplementedError – 如果插件不支持此功能。

class keystoneauth1.plugin.ConnectionParams

Bases: TypedDict

__annotations__ = {'cert': typing.NotRequired[str | tuple[str, str] | None], 'verify': typing.NotRequired[bool | str | None]}
__dict__ = mappingproxy({'__module__': 'keystoneauth1.plugin', '__annotations__': {'cert': typing.NotRequired[str | tuple[str, str] | None], 'verify': typing.NotRequired[bool | str | None]}, '__orig_bases__': (<function TypedDict>,), '__dict__': <attribute '__dict__' of 'ConnectionParams' objects>, '__weakref__': <attribute '__weakref__' of 'ConnectionParams' objects>, '__doc__': None, '__required_keys__': frozenset(), '__optional_keys__': frozenset({'verify', 'cert'}), '__total__': True})
__doc__ = None
__module__ = 'keystoneauth1.plugin'
__optional_keys__ = frozenset({'cert', 'verify'})
__orig_bases__ = (<function TypedDict>,)
__required_keys__ = frozenset({})
__total__ = True
__weakref__

对该对象的弱引用列表

cert: NotRequired[str | tuple[str, str] | None]
verify: NotRequired[bool | str | None]
class keystoneauth1.plugin.FixedEndpointPlugin(endpoint: str | None = None)

基类: BaseAuthPlugin

具有固定端点的插件的基类。

__annotations__ = {}
__doc__ = '具有固定端点的插件的基类。'
__init__(endpoint: str | None = None)
__module__ = 'keystoneauth1.plugin'
get_endpoint(session: ks_session.Session, endpoint_override: str | None = None, **kwargs: Any) str | None

返回提供的端点。

使用此插件,无论传递给插件的参数如何,都会返回相同的端点。endpoint_override 覆盖了构造插件时指定的端点。

get_endpoint_data(session: ks_session.Session, *, endpoint_override: str | None = None, discover_versions: bool = True, **kwargs: Any) EndpointData | None

返回服务有效的端点数据。

参数:
  • session (keystoneauth1.session.Session) – 可以用于通信的会话对象。

  • endpoint_override (str) – 用于版本发现的 URL。

  • discover_versions (bool) – 是否从版本发现文档中获取版本元数据,即使可以从 URL 推断出主要 API 版本信息。 (可选,默认为 True)

  • kwargs – 已忽略。

引发:

keystoneauth1.exceptions.http.HttpError – 来自无效 HTTP 响应的错误。

返回值:

有效的 EndpointData 或不可用的 None。

返回类型:

keystoneauth1.discover.EndpointData 或 None