当我使用命令对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文档,但我找不到任何内容。
答案 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_name
和user_domain_name
以及用户名,密码。详情请见https://docs.openstack.org/keystone/pike/api_curl_examples.html#v3-api-examples-using-curl
在此之后,您将获得project_id
和token
。您可以列出图像,口味,密钥对等。
然后,您想要启动一个实例:
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"
}}