You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用OpenStackSDK获取项目配额限制及解决返回空值问题

问题根因

你当前代码直接实例化了openstack.compute.v2.limits.AbsoluteLimits数据模型类,该类仅用于结构化存储API返回的配额数据,本身不会发起API请求拉取实际配额,因此所有字段默认都是None值。

正确代码示例

1. 获取当前认证项目的计算配额

import openstack

# 初始化OpenStack连接
auth_url_domain = "https://10.6.X.X:13000/v3"
conn = openstack.connect(
    auth_url=auth_url_domain,
    project_name="admin",
    username="admin",
    domain_name="default",
    password="XXXXXX",
    cacert="/root/app/cacrt/cacrt/ca.crt10.6.X.X.pem"
)

# 发起API请求拉取配额数据
limits = conn.compute.get_limits()
# 提取绝对配额字段转为字典输出
absolute_limits = limits.absolute.to_dict()
print(absolute_limits)

2. Admin权限获取所有项目的计算配额

import openstack

# 初始化OpenStack连接
auth_url_domain = "https://10.6.X.X:13000/v3"
conn = openstack.connect(
    auth_url=auth_url_domain,
    project_name="admin",
    username="admin",
    domain_name="default",
    password="XXXXXX",
    cacert="/root/app/cacrt/cacrt/ca.crt10.6.X.X.pem"
)

all_project_quota = []
# 遍历所有项目
for project in conn.identity.projects():
    # 查询指定项目的配额,仅Admin权限可查询其他项目数据
    project_limits = conn.compute.get_limits(project_id=project.id)
    project_quota = {
        "project_id": project.id,
        "project_name": project.name,
        "quota": project_limits.absolute.to_dict()
    }
    all_project_quota.append(project_quota)
    print(f"项目{project.name}配额:", project_quota)

补充说明

  • 若需获取网络、块存储等其他服务的配额,可分别调用conn.network.get_quota_default(project_id=xxx)、conn.block_storage.get_quota_set(project_id=xxx)方法。
  • 跨项目查询配额需要账号拥有Admin权限。

内容的提问来源于stack exchange,提问作者KASHIF IQBAL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:54:03