keystone.server.flask 包

子包

子模块

模块内容

class keystone.server.flask.APIBase(blueprint_url_prefix='', api_url_prefix='', default_mediatype='application/json', decorators=None, errors=None)[源代码]

基类: object

property api
property blueprint
classmethod instantiate_and_register_to_app(flask_app)[源代码]

构建 API 对象并将其注册到传入的 flask_app。

这是一个简化的加载器,它对 blueprint 的加载方式做出了假设。任何超出默认值的内容都应通过正常实例化来显式完成,其中可以通过 __init__() 传递更多值。

返回值:

keystone.server.flask.common.APIBase

abstract property resource_mapping: list[ResourceMap]

一个包含 ResourceMap 可迭代对象的属性。

每个 ResourceMap 是一个 NamedTuple,包含以下元素:

  • resource: 一个 flask_restful.Resource 类或子类

  • url: 一个用于匹配资源的 URL 路由,标准的 Flask

    路由规则适用。任何 URL 变量都将作为参数传递给资源方法。(str)

  • alternate_urls: 一个用于匹配资源的 URL 路由的可迭代对象

    资源,标准的 Flask 路由规则适用。这些路由是为了 API 兼容性而添加到主 URL 之外的(为了 API 兼容性)。任何 URL 变量都将作为参数传递给资源方法。(可迭代对象)

  • json_home_data: JsonHomeData,其中填充了相关

    信息,用于填充 JSON Home 文档或 None。

  • kwargs: 一个字典,包含可以进一步修改

    路由处理的可选值。

    • endpoint: 端点名称(默认为

      Resource.__name__.lower() 可用于在 fields.Url 字段中引用此路由 (str)

    • resource_class_args: 将转发给

      资源构造函数的参数。(tuple)

    • resource_class_kwargs: 将转发给

      资源构造函数的关键字参数。(dict)

    上面未指定的其他关键字参数将按原样传递给 flask.Flask.add_url_rule()

property resources: List[Type[ResourceBase]]
class keystone.server.flask.JsonHomeData(rel, status, path_vars)

基类: tuple

path_vars

字段编号 2 的别名

rel

字段编号 0 的别名

status

字段编号 1 的别名

class keystone.server.flask.ResourceBase[源代码]

基类: Resource

api_prefix: str = ''
property audit_initiator

描述当前已身份验证上下文的 pyCADF 发起者。

作为属性。

property auth_context
static build_driver_hints(supported_filters, default_limit: int | None = None)[源代码]

根据查询字符串构建列表提示。

参数:
  • supported_filters – 支持的过滤器列表,因此会忽略查询字典中不在该列表中的任何键。

  • default_limit – 默认页大小(PROVIDER._get_list_limit)

collection_key: str
classmethod filter_by_attributes(refs, hints)[源代码]

根据过滤值过滤引用列表。

classmethod filter_params(ref)[源代码]

从字典中删除未指定参数。

此函数从字典中删除未指定的参数。此方法仅检查 ref 字典的根级别键。

参数:

ref – 表示反序列化响应以待序列化的字典

classmethod get_token_ref()[源代码]

从认证上下文中检索 KeystoneToken 对象并返回它。

引发:

keystone.exception.Unauthorized – 如果找不到认证上下文。

返回值:

KeystoneToken 对象。

classmethod limit(refs, hints)[源代码]

限制实体列表。

底层驱动程序层可能已经为我们截断了集合,但如果它无法处理截断,我们在此处进行检查。

参数:
  • refs – 集合的成员列表

  • hints – 提示,包含(除其他外)请求的限制

返回值:

布尔值,指示列表是否被截断,以及(如果需要)被截断的实体列表。

member_key: str
method_decorators: list[Callable] = []
property oslo_context
static query_filter_is_true(filter_name)[源代码]

确定布尔查询参数是否为“True”。

我们将其与策略执行方式相同。

{bool_param}=0 被视为 False

任何其他值都被视为等同于 True,包括值的缺失(但作为参数存在)。

参数名为 p 的 False 示例

参数 'p' 的所有其他形式都将导致 True 值,包括:http://host/url?param

property request_body_json
classmethod wrap_collection(refs, hints=None, collection_name=None)[源代码]

包装一个集合,检查过滤和分页。

返回包装后的集合,包括: - 执行任何尚未完成的过滤 - 如果需要,截断到设定的限制 - 在每个成员中添加“self”链接 - 为整个集合添加“next”、“self”和“prev”链接。

参数:
  • refs – 集合的成员列表

  • hints – 列表提示,包含任何相关的过滤器和限制。管理器已满足的任何过滤器都已被移除

  • collection_name – ‘collection key’ 类属性的可选覆盖。用于包装不同 API 的集合时,例如,来自‘trust’ API 的‘roles’。

classmethod wrap_member(ref, collection_name=None, member_name=None)[源代码]
class keystone.server.flask.ResourceMap(resource, url, alternate_urls, kwargs, json_home_data)

基类: tuple

alternate_urls

字段编号 2 的别名

json_home_data

字段号 4 的别名

kwargs

字段号 3 的别名

resource

字段编号 0 的别名

url

字段编号 1 的别名

keystone.server.flask.base_url(path='')[源代码]
keystone.server.flask.construct_json_home_data(rel, status='stable', path_vars=None, resource_relation_func=<function build_v3_resource_relation>)[源代码]
keystone.server.flask.construct_resource_map(resource, url, resource_kwargs, alternate_urls=None, rel=None, status='stable', path_vars=None, resource_relation_func=<function build_v3_resource_relation>)[源代码]

构建 ResourceMap Named Tuple。

参数:
  • resource (ResourceMap) – 实现 API 方法的 flask-RESTful 资源类。

  • url (str) – Flask 标准 URL 路由,所有 Flask URL 路由规则均适用。URL 变量将作为参数传递给 Resource 方法。

  • resource_kwargs

    一个字典,包含可以进一步修改路由处理的可选值。

    • endpoint: 端点名称(默认为

      Resource.__name__.lower() 可用于在 fields.Url 字段中引用此路由 (str)

    • resource_class_args: 将转发给

      资源构造函数的参数。(tuple)

    • resource_class_kwargs: 将转发给

      资源构造函数的(dict)。

    上面未指定的其他关键字参数将按原样传递给 flask.Flask.add_url_rule()

  • alternate_urls – 一个可迭代对象(列表),包含 URL 和关联的 JSON Home REL 数据。每个元素预计是一个字典,其中包含一个 'url' 键和一个可选的 'json_home' 键,用于 'JsonHomeData' named tuple。这些 URL 也将映射到资源。它们用于确保 API 兼容性,当一个“新”路径更符合 API 要求,但旧路径必须继续工作时。例如:/auth/domains/OS-FEDERATION/domains 的新路径。OS-FEDERATION 部分将被列为备用 URL。如果提供了 'json_home' 键,带有新 json_home 数据的原始路径将添加到 JSON Home 文档中。

  • rel (str or None)

  • status (str) – JSON Home API 状态,例如“STABLE”

  • path_vars (dict or None) – JSON Home Path Var 数据(参数)

  • resource_relation_func (callable) – 用于构建预期资源 rel 数据的函数

类型:

可迭代对象或 None

返回值:

keystone.server.flask.full_url(path='')[源代码]
keystone.server.flask.unenforced_api(f)[源代码]

装饰一个资源方法,将其标记为未经强制执行的 API。

显式豁免 API 接收强制 API 检查,特别适用于用户自助密码更改(或其他无需现有令牌即可工作的 API)。

此装饰器也可用于 API 具有扩展的强制逻辑/不同的强制逻辑(例如某些 AUTH 路径)的情况,其中完整的强制将直接在方法内部实现。