keystone.server.flask.common 模块

class keystone.server.flask.common.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 是一个具有以下元素的命名元组

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

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

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

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

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

  • json_home_data: JsonHomeData,填充了相关

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

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

    路由的处理。

    • endpoint: 端点名称(默认为

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

    • resource_class_args: 将转发给

      资源的构造函数的参数。(元组)

    • resource_class_kwargs: 将转发给

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

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

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

基类: tuple

path_vars

字段编号 2 的别名

rel

字段编号 0 的别名

status

字段编号 1 的别名

class keystone.server.flask.common.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,包括值的缺失(但作为参数存在)。

False 示例(参数名为 p

参数“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.common.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.common.base_url(path='')[源]
keystone.server.flask.common.construct_json_home_data(rel, status='stable', path_vars=None, resource_relation_func=<function build_v3_resource_relation>)[源]
keystone.server.flask.common.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 命名元组。

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

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

  • resource_kwargs

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

    • endpoint: 端点名称(默认为

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

    • resource_class_args: 将转发给

      资源的构造函数的参数。(元组)

    • resource_class_kwargs: 将转发给

      资源的构造函数的参数。(字典)

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

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

  • rel (strNone)

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

  • path_vars (dictNone) – JSON Home 路径变量数据(参数)。

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

类型:

可迭代对象或 None

返回值:

keystone.server.flask.common.full_url(path='')[源]
keystone.server.flask.common.set_unenforced_ok()[源]
keystone.server.flask.common.unenforced_api(f)[源]

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

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

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