keystone.common.manager 模块

class keystone.common.manager.Manager(driver_name)[source]

基类: object

中间请求层的基类。

Manager 层存在是为了支持应用于服务暴露的所有或某些方法,且不特定于 HTTP 接口的附加逻辑。

它还提供了一个稳定的动态后端入口点。

一个可能的用例示例是记录所有调用。

driver_namespace: str
keystone.common.manager.load_driver(namespace, driver_name, *args)[source]
keystone.common.manager.response_truncated(f)[source]

截断被包装函数返回的列表。

这旨在包装 Manager list_{entity} 方法,以确保定义的任何列表限制都传递到驱动程序层。如果提供了 hints 列表,则包装器会将相关的限制插入到 hints 中,以便底层驱动程序调用可以尝试遵守它。如果驱动程序截断了响应,它将更新 hints 列表中“limit”条目中的“truncated”属性,从而使此函数的调用者能够知道是否发生了截断。但是,如果驱动程序层无法执行截断,则“limit”条目将简单地保留在 hints 列表中,供调用者处理。

对象类层次结构中需要存在一个 _get_list_limit() 方法,该方法返回我们将要截断的此后端的限制。

如果在被包装调用的参数中未提供 hints 列表,则配置文件中设置的任何限制都将被忽略。这允许在内部使用此类包装的方法,其中整个数据集需要作为其他 API 计算的输入(例如,获取给定项目的角色分配)。