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

OpenStack Stein版本API无法返回实例数据问题求助

解决OpenStack Nova API返回空实例列表的问题

问题原因

你在认证时使用了无作用域(unscoped)的token,OpenStack Nova API默认只会返回当前token作用域内项目的实例。你的CLI是在keystone_admin项目上下文下执行的,因此能看到实例,但API请求未指定项目范围,导致返回空列表。

解决方案

方法1:认证时指定项目作用域

修改认证请求参数,添加项目作用域信息,确保获取的token包含keystone_admin项目的上下文:

import requests, json

identity = {
    "methods": ["password"],
    "password": {
        "user": {
            "name": "admin",
            "domain": {"id": "default"},
            "password": "xxxxxxxxxxxxxxx"
        }
    }
}

OS_AUTH_URL = 'http://x.x.x.x:5000/v3'
# 新增项目作用域配置
data = {
    'auth': {
        'identity': identity,
        'scope': {
            'project': {
                'domain': {'id': 'default'},
                'name': 'keystone_admin'  # 对应CLI环境中的项目名称
            }
        }
    }
}
# 移除headers中的无效scope字段,作用域需在请求体中定义
HEADERS = {'Content-Type': 'application/json'}

r = requests.post(
    OS_AUTH_URL + '/auth/tokens',
    headers=HEADERS,
    json=data,
    verify=False
)
auth_token = r.headers['X-Subject-Token']

# 调用Nova API获取实例列表
NOVA_URL = "http://x.x.x.x:8774/v2.1"
HEADERS = {"X-Auth-Token": str(auth_token)}
r = requests.get(
    NOVA_URL + '/servers',
    headers=HEADERS,
)
r.raise_for_status()
print(json.dumps(r.json(), indent=2))

方法2:在Nova API请求中指定项目ID

若不想修改认证流程,可先通过Keystone API获取keystone_admin项目的ID,再将其添加到Nova API的请求路径中:

# 先获取keystone_admin项目的ID
HEADERS = {'Content-Type': 'application/json', 'X-Auth-Token': auth_token}
project_r = requests.get(
    OS_AUTH_URL + '/projects?name=keystone_admin&domain_id=default',
    headers=HEADERS,
    verify=False
)
project_id = project_r.json()['projects'][0]['id']

# 用项目ID拼接Nova API请求路径
r = requests.get(
    NOVA_URL + f'/{project_id}/servers',
    headers=HEADERS,
)
r.raise_for_status()
print(json.dumps(r.json(), indent=2))

验证说明

修改后重新运行代码,即可获取与CLI一致的3个实例数据。你也可以通过调用GET /auth/tokens(携带X-Auth-Token头部)验证token的作用域,确认其包含正确的项目上下文。

内容的提问来源于stack exchange,提问作者Kavin Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:50:28