OpenStack:400不良请求 - 请求中缺少X-Instance-ID标头



当我使用命令:

进行http post请求时
curl -i -X POST -H "X-Auth-Token: $Token" -H "Content-Type: application/json" -H "Accept: application/json" -d '{"server": {"name": "server", "flavorRef": "1", "imageRef": "Cirros", "security_groups": [{"name": "default" }], "availability_zone": "nova", "networks": "Network1"}}' $OS_AUTH_URL:8775/servers

此消息出现在我身上:

{"message": "X-Instance-ID header is missing from request.<br /><br />nnn", "code": "400 Bad Request", "title": "Bad Request"}

我已经阅读了Nova API文档,但没有找到任何内容。

简短的答案是更改:

$OS_AUTH_URL:8775 to $OS_AUTH_URL:8774/v2/[your_project_id]/servers

端口8774应该是OpenStack Nova服务的默认端口。您也可以使用curl检查端点。因此,除非您有意将端点配置为端口8775,否则端口号应为 8774

答案的较长版本是:

首先,您应该获得Keystone令牌,并且还将从结果中获得项目ID。

curl -s -X POST [your_auth_url]/v2.0/tokens 
  -H "Content-Type: application/json" 
  -d '{"auth": {"tenantName": "'"admin"'", "passwordCredentials":
    {"username": "'"admin"'", "password": "'"password"'"}}}' | python -m json.tool

例如,[your_auth_url] = https://127.0.0.1:5000

P.S。这是使用不推荐使用的v2.0 Keystone auth。对于v3,您需要将v2.0更改为v3,并添加project_domain_nameuser_domain_name以及用户名,密码。详细信息:https://docs.openstack.org/keystone/pike/api_curl_examples.html#v3-api-examples-using-curl

之后,您将获得project_idtoken。您可以列出图像,口味,按键等。

然后,您要启动一个实例:

curl -X POST -H "X-Auth-Token:$1" -H "Content-Type: application/json" -d  '
{       
 "server": {  
   "name": "UsingcUrl",
   "imageRef": "[your_image_id]",
   "flavorRef": "[your_flavor_id]", 
   "key_name" : "[your_keypair_name]"
 }          
}' http://127.0.0.1:8774/v2/[your_project_id]/servers | python -m json.tool

hth。

我正在尝试使用此命令,现在我看到"网络"必须是一个对象。

curl -X POST -H "X-Auth-Token:$Token" -H "Content-Type: application/json" -d  '{{"server": {"name": "UsingcUrl","imageRef": "c6839d78-1bc1-4661-9be3-3e9252f0c227","flavorRef": "e07fb38a-1e23-4b92-a1ff-c2fce2d97963","key_name" : "NEWKEY"}}{"networks": {"name": "89c2d870-1cfe-424a-9095-50d60e7b2538"}}}' http://$AUTH_URL:8774/v2/$ID_PROJECT/servers | python -m json.tool

但我收到此消息:

{
"badRequest": {
    "code": 400,
    "message": "Malformed request body"
}}

最新更新