oslo_limit.limit 模块¶
- class oslo_limit.limit.Enforcer(usage_callback, cache=True)¶
基类:
object- calculate_usage(project_id, resources_to_check)¶
计算 resources_to_check 的资源使用情况和限制。
从 resources_to_check 列表中,我们收集每个资源的项目的限制和当前使用情况,就像 enforce() 一样。这对于在不需要强制执行的情况下报告当前项目的使用情况和限制非常有用。
这不应该用于进行自定义强制执行,而仅用于报告。
- 参数:
project_id (string) – 要检查使用情况和限制的项目,或 None。
resources_to_check (list) – 要查询的资源名称列表。
- 返回值:
针对提供的项目,请求名称的 name:limit.ProjectUsage 字典。
- enforce(project_id, deltas)¶
检查 deltas 中资源的使用情况是否超过限制
从 deltas 中提取需要对其强制执行限制的资源类型列表。
从 keystone 获取与此 project_id(如果不是 None)以及配置中指定的端点相关的限制。
使用创建 enforcer 时指定的 usage_callback,我们获取现有的使用情况。
然后我们将现有使用情况添加到提供的 deltas 中,以获得总的建议使用情况。然后将此总的建议使用情况与所有适用的限制进行比较。
请注意,如果对于给定的资源类型没有注册的限制,我们将以与默认限制为零相同的方式使 enforce 失败,即不允许使用没有注册限制的资源类型。
请注意,如果提供了 None 的 project_id,我们只是与注册的限制进行比较(即,将其用于非项目范围的限制)
- 参数:
project_id (string) – 要检查使用情况并强制执行限制的项目(或 None)。
deltas (dictionary) – 一个字典,其中包含资源名称作为键,以及请求的资源数量作为正整数。我们仅检查 deltas 中的资源的限制。指定数量为零以检查当前使用情况。
- 引发:
exception.ClaimExceedsLimit – 当超过限制时
- get_project_limits(project_id, resources_to_check)¶
- get_registered_limits(resources_to_check)¶