跳转到: 导航, 搜索

API 特别兴趣小组/当前设计/动作

分析

最一致的地方是所有动作都使用 POST 方法。

Nova 和 Trove 使用 /action,而 Heat 使用 /actions

Nova 中无参数的动作在如何表示无参数方面非常不一致。

有一种情况是 服务器动作 (os-instance-actions) 将动作作为实际资源。

当前设计

Nova

服务器动作

扩展

POST /v2/​{tenant_id}​/servers/​{server_id}​/action
{
    "some_action": {
        "param1": "value1",
        "param2": "value2"
    }
}

或者

{
    "some_action": null
}

或者

{
    "some_action": {}
}

或者

{
    "some_action": "None"
}

服务器动作 (os-instance-actions)

GET /v2/​{tenant_id}​/servers/​{server_id}​/os-instance-actions
GET /v2/​{tenant_id}​/servers/​{server_id}​/os-instance-actions/​{action_id}​

Trove

数据库实例动作 (action)

POST /v1.0/​{accountId}​/instances/​{instanceId}​/action
{
    "some_action": {
        "param1": "value1",
        "param2": "value2"
    }
}

或者

{
    "some_action": {}
}

Heat

堆栈动作

POST /v1/​{tenant_id}​/stacks/​{stack_name}​/​{stack_id}​/actions
{
    "some_action": null
}