Openstack:400错误请求 - 请求

时间:2017-11-21 15:18:54

标签: http-post openstack bad-request openstack-nova

当我使用命令对openstack发送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 />\n\n\n", "code": "400 Bad Request", "title": "Bad Request"}

我已阅读nova api文档,但我找不到任何内容。

2 个答案:

答案 0 :(得分:0)

简短的回答是改变:

$OS_AUTH_URL:8775$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。

答案 1 :(得分:0)

我现在试图使用此命令,因为我看到了&#34; networks&#34;必须是一个对象。

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"
}}