Watcher API¶
API 版本¶
为了随着时间的推移为用户带来新功能,Watcher API 支持版本控制。Watcher 中有两种类型的版本。
‘’主要版本’’, 它们具有专用的 URL。
‘’微版本’’, 可以使用
OpenStack-API-Versionheader 请求。
注意
最大微版本取决于发布版本。请参考:API 微版本历史 获取 API 微版本历史详情。
版本 API 资源的工作方式与其他 API 资源不同,因为它们不需要身份验证。
如果 Watcher 收到一个不支持版本的请求,它将响应 406 Not Acceptable,以及它支持的 -Min- 和 -Max- header。
这将获取部署中所有已知主要 API 版本的所有信息。将为每个主要 API 版本提供指向更具体信息的链接,以及有关支持的最小和最大微版本的信息。
正常响应代码:200
请求¶
响应示例¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
description |
body |
字符串 |
关于 Watcher 服务的描述性文本。 |
versions |
body |
数组 |
当前支持的版本信息的数组。 |
版本 |
body |
字符串 |
此 API 响应的版本,例如 “1.1”。 |
id |
body |
字符串 |
主要 API 版本,例如 “v1” |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
min_version |
标头 |
字符串 |
此端点支持的最小 API 微版本,例如 “1.0” |
max_version |
标头 |
字符串 |
此端点支持的最大 API 微版本,例如 “1.1” |
{
"default_version": {
"id": "v1",
"links": [
{
"href": "http://controller:9322/v1/",
"rel": "self"
}
],
"min_version": "1.0",
"status": "CURRENT",
"max_version": "1.1"
},
"description": "Watcher is an OpenStack project which aims to improve physical resources usage through better VM placement.",
"name": "OpenStack Watcher API",
"versions": [
{
"id": "v1",
"links": [
{
"href": "http://controller:9322/v1/",
"rel": "self"
}
],
"min_version": "1.0",
"status": "CURRENT",
"max_version": "1.1"
}
]
}
显示 Watcher v1 API 中的所有资源。
正常响应代码:200
请求¶
响应示例¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
id |
body |
字符串 |
主要 API 版本,例如 “v1” |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
OpenStack-API-Version |
标头 |
字符串 |
用于生成此响应的特定 API 微版本。 |
OpenStack-API-Minimum-Version |
标头 |
字符串 |
此端点支持的最小 API 微版本,例如 “1.0” |
OpenStack-API-Maximum-Version |
标头 |
字符串 |
此端点支持的最大 API 微版本,例如 “1.1” |
{
"scoring_engines": [
{
"href": "http://controller:9322/v1/scoring_engines/",
"rel": "self"
},
{
"href": "http://controller:9322/scoring_engines/",
"rel": "bookmark"
}
],
"media_types": [
{
"base": "application/json",
"type": "application/vnd.openstack.watcher.v1+json"
}
],
"links": [
{
"href": "http://controller:9322/v1/",
"rel": "self"
},
{
"href": "https://docs.openstack.org/developer/watcher/dev/api-spec-v1.html",
"type": "text/html",
"rel": "describedby"
}
],
"actions": [
{
"href": "http://controller:9322/v1/actions/",
"rel": "self"
},
{
"href": "http://controller:9322/actions/",
"rel": "bookmark"
}
],
"audit_templates": [
{
"href": "http://controller:9322/v1/audit_templates/",
"rel": "self"
},
{
"href": "http://controller:9322/audit_templates/",
"rel": "bookmark"
}
],
"action_plans": [
{
"href": "http://controller:9322/v1/action_plans/",
"rel": "self"
},
{
"href": "http://controller:9322/action_plans/",
"rel": "bookmark"
}
],
"services": [
{
"href": "http://controller:9322/v1/services/",
"rel": "self"
},
{
"href": "http://controller:9322/services/",
"rel": "bookmark"
}
],
"audits": [
{
"href": "http://controller:9322/v1/audits/",
"rel": "self"
},
{
"href": "http://controller:9322/audits/",
"rel": "bookmark"
}
],
"id": "v1"
}
审计模板¶
通过 /v1/audit_templates 资源实现了创建、列出、更新和删除 Watcher 审计模板资源的方法。
审计可以多次使用相同的设置(目标、阈值等)启动。因此,将这些设置保存到某种审计预设对象中是有意义的,该对象被称为审计模板。
审计模板至少包含审计的目标。
创建一个新的审计模板资源。
需要在请求体中提供 name 和 goal 属性。
正常响应代码:201
错误代码:400,404,409
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
name |
body |
字符串 |
审计模板的名称。 |
goal |
body |
字符串 |
目标 UUID 或名称。 |
strategy (可选) |
body |
字符串 |
策略的 UUID 或名称。 |
description (可选) |
body |
字符串 |
审计模板的简短描述。 |
scope (可选) |
body |
JSON |
审计范围。 |
不指定策略的示例审计模板创建请求
{
"name": "at2",
"goal": "dummy"
}
指定策略的示例审计模板创建请求
{
"name": "at2",
"goal": "dummy",
"strategy": "dummy",
"description": "the second audit template",
"scope": []
}
响应¶
下面的列表和示例代表 API 版本 1 时的响应。
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name |
body |
字符串 |
审计模板的名称。 |
description (可选) |
body |
字符串 |
审计模板的简短描述。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
goal_name |
body |
字符串 |
目标的名称。 |
scope (可选) |
body |
JSON |
审计范围。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
审计模板的示例 JSON 表示
{
"description": null,
"strategy_uuid": null,
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "at3",
"uuid": "b4041d8c-85d7-4224-851d-649fe48b7196",
"goal_name": "dummy",
"scope": [],
"created_at": "2018-04-04T08:38:33.110432+00:00",
"deleted_at": null,
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audit_templates/b4041d8c-85d7-4224-851d-649fe48b7196"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audit_templates/b4041d8c-85d7-4224-851d-649fe48b7196"
}
],
"strategy_name": null,
"updated_at": null
}
返回审计模板资源的列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
goal (可选) |
查询 |
字符串 |
目标 UUID 或名称。 |
strategy (可选) |
查询 |
字符串 |
策略的 UUID 或名称。 |
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
marker (可选) |
查询 |
字符串 |
最后一个项目看到的 ID。使用 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name |
body |
字符串 |
审计模板的名称。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
goal_name |
body |
字符串 |
目标的名称。 |
scope (可选) |
body |
JSON |
审计范围。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
审计模板的示例 JSON 表示
{
"audit_templates":[
{
"strategy_uuid": null,
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "at3",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audit_templates/b4041d8c-85d7-4224-851d-649fe48b7196"
},
{
"rel": "bookmark", "href":
"http://controller:9322/audit_templates/b4041d8c-85d7-4224-851d-649fe48b7196"
}
],
"strategy_name": null,
"uuid": "b4041d8c-85d7-4224-851d-649fe48b7196",
"goal_name": "dummy", "scope": []
}
]
}
返回包含完整详细信息的审计模板资源的列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
goal (可选) |
查询 |
字符串 |
目标 UUID 或名称。 |
strategy (可选) |
查询 |
字符串 |
策略的 UUID 或名称。 |
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
marker (可选) |
查询 |
字符串 |
最后一个项目看到的 ID。使用 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name |
body |
字符串 |
审计模板的名称。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
goal_name |
body |
字符串 |
目标的名称。 |
scope (可选) |
body |
JSON |
审计范围。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
description (可选) |
body |
字符串 |
审计模板的简短描述。 |
审计模板的示例 JSON 表示
{
"audit_templates":[
{
"strategy_uuid": null,
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "at3",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audit_templates/b4041d8c-85d7-4224-851d-649fe48b7196"
},
{
"rel": "bookmark", "href":
"http://controller:9322/audit_templates/b4041d8c-85d7-4224-851d-649fe48b7196"
}
],
"strategy_name": null,
"uuid": "b4041d8c-85d7-4224-851d-649fe48b7196",
"goal_name": "dummy", "scope": [],
"description": null
}
]
}
显示审计模板的详细信息。
正常响应代码:200
错误代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
audittemplate_ident |
路径 |
字符串 |
审计模板的 UUID 或名称。 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name |
body |
字符串 |
审计模板的名称。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
goal_name |
body |
字符串 |
目标的名称。 |
scope (可选) |
body |
JSON |
审计范围。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
description (可选) |
body |
字符串 |
审计模板的简短描述。 |
审计模板的示例 JSON 表示
{
"description": "test 1",
"strategy_uuid": null,
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "at1",
"uuid": "0d100c27-14af-4962-86fb-f6079287c9c6",
"goal_name": "dummy",
"scope": [],
"created_at": "2018-04-04T07:48:36.175472+00:00",
"deleted_at": null,
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audit_templates/0d100c27-14af-4962-86fb-f6079287c9c6"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audit_templates/0d100c27-14af-4962-86fb-f6079287c9c6"
}
],
"strategy_name": null,
"updated_at": "2018-04-05T07:57:55.803650+00:00"
}
使用给定的信息更新审计模板。
正常响应代码:200
错误代码:400,404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
audittemplate_ident |
路径 |
字符串 |
审计模板的 UUID 或名称。 |
更新审计模板的示例 PATCH 文档
[
{
"op": "replace",
"value": "PENDING",
"path": "/state"
}
]
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name |
body |
字符串 |
审计模板的名称。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
goal_name |
body |
字符串 |
目标的名称。 |
scope (可选) |
body |
JSON |
审计范围。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
description (可选) |
body |
字符串 |
审计模板的简短描述。 |
审计模板的示例 JSON 表示
{
"description": "test 1",
"strategy_uuid": null,
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "at11",
"uuid": "0d100c27-14af-4962-86fb-f6079287c9c6",
"goal_name": "dummy",
"scope": [],
"created_at": "2018-04-04T07:48:36.175472+00:00",
"deleted_at": null,
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audit_templates/0d100c27-14af-4962-86fb-f6079287c9c6"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audit_templates/0d100c27-14af-4962-86fb-f6079287c9c6"
}
],
"strategy_name": null,
"updated_at": "2018-04-05T07:57:42.139127+00:00"
}
删除审计模板。
正常响应代码:204
错误代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
audittemplate_ident |
路径 |
字符串 |
审计模板的 UUID 或名称。 |
审计¶
通过 /v1/audits 资源实现了创建、列出、更新和删除 Watcher 审计资源的方法。
在 Watcher 系统中,Audit 是优化 Cluster 的请求。
优化是为了满足给定 Cluster 上的一个 Goal 而完成的。
对于每个 Audit,Watcher 系统都会生成一个 Action Plan。
创建一个新的审计资源。
必须提供的属性:audit_type。
Audit 可以基于现有的 Audit Template 或自行创建。在第一种情况下,还应提供 audit_template_uuid。如果 Audit 是在没有 Audit Template 的情况下创建的,则应提供 goal。
正常响应代码:201
错误代码:400,404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
audit_template_uuid |
body |
字符串 |
审计模板的 UUID。 |
audit_type |
body |
字符串 |
此审计的类型。只能是 ONESHOT 或 CONTINUOUS。 |
name (可选) |
body |
字符串 |
此审计的名称。 |
goal (可选) |
body |
字符串 |
目标 UUID 或名称。 |
strategy (可选) |
body |
字符串 |
策略的 UUID 或名称。 |
parameters (可选) |
body |
JSON |
此审计的策略参数。 |
interval (可选) |
body |
字符串 |
审计执行之间的时间间隔。可以以秒或 cron 语法定义。仅应为 CONTINUOUS 审计定义。 |
auto_trigger (可选) |
body |
布尔值 |
审计成功后自动执行操作计划。 |
start_time (可选) |
body |
字符串 |
审计可以根据间隔执行的时间。它将被 Watcher 转换为 UTC 时间。 版本 1.1 中新增 |
end_time (可选) |
body |
字符串 |
审计不能执行的时间。它将被 Watcher 转换为 UTC 时间。 版本 1.1 中新增 |
force (可选) |
body |
布尔值 |
即使操作计划正在进行,也启动审计。 版本 1.2 中新增 |
不指定策略的示例 ONESHOT 审计创建请求
{
"audit_type": "ONESHOT",
"auto_trigger": false,
"force": true,
"audit_template_uuid": "5e70a156-ced7-4012-b1c6-88fcb02ee0c1"
}
指定策略的示例 CONTINUOUS 审计创建请求
{
"auto_trigger": false,
"force": false,
"audit_template_uuid": "76fddfee-a9c4-40b0-8da0-c19ad6904f09",
"name": "test_audit",
"parameters": {
"metrics": [
"cpu_util"
]
},
"audit_type": "CONTINUOUS",
"interval": "*/2 * * * *",
"start_time":"2018-04-02 20:30:00",
"end_time": "2018-04-04 20:30:00"
}
响应¶
下面的列表和示例代表 API 版本 1 时的响应。
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name (可选) |
body |
字符串 |
此审计的名称。 |
audit_type |
body |
字符串 |
此审计的类型。只能是 ONESHOT 或 CONTINUOUS。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
goal_name |
body |
字符串 |
目标的名称。 |
interval (可选) |
body |
字符串 |
审计执行之间的时间间隔。可以以秒或 cron 语法定义。仅应为 CONTINUOUS 审计定义。 |
next_run_time (可选) |
body |
字符串 |
下一次审计启动时间。仅为 CONTINUOUS 审计定义。 |
parameters (可选) |
body |
JSON |
此审计的策略参数。 |
auto_trigger (可选) |
body |
布尔值 |
审计成功后自动执行操作计划。 |
state |
body |
字符串 |
此审计的状态。要了解有关状态和审计生命周期的更多信息,请访问 审计状态机页面。 |
scope (可选) |
body |
JSON |
审计范围。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
hostname (可选) |
body |
字符串 |
审计正在运行的主机名 |
start_time (可选) |
body |
字符串 |
根据间隔执行审计的时间。 版本 1.1 中新增 |
end_time (可选) |
body |
字符串 |
审计不能执行的时间。 版本 1.1 中新增 |
force (可选) |
body |
布尔值 |
即使操作计划正在进行,也启动审计。 版本 1.2 中新增 |
status_message (可选) |
body |
字符串 |
有关审计状态的附加信息的消息。 版本 1.5 中新增 |
审计的示例 JSON 表示
{
"interval": "*/2 * * * *",
"strategy_uuid": "6b3b3902-8508-4cb0-bb85-67f32866b086",
"goal_uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a",
"name": "test_audit",
"parameters": {
"host_choice": "retry",
"granularity": 300,
"thresholds": {
"cpu_util": 0.2,
"memory.resident": 0.2
},
"periods": {
"node": 600,
"instance": 720
},
"retry_count": 1,
"metrics": [
"cpu_util"
],
"weights": {
"cpu_util_weight": 1.0,
"memory.resident_weight": 1.0
},
"instance_metrics": {
"cpu_util": "compute.node.cpu.percent",
"memory.resident": "hardware.memory.used"
}
},
"auto_trigger": false,
"force": false,
"uuid": "65a5da84-5819-4aea-8278-a28d2b489028",
"goal_name": "workload_balancing",
"scope": [],
"created_at": "2018-04-06T07:27:27.820460+00:00",
"deleted_at": null,
"state": "PENDING",
"audit_type": "CONTINUOUS",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audits/65a5da84-5819-4aea-8278-a28d2b489028"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audits/65a5da84-5819-4aea-8278-a28d2b489028"
}
],
"strategy_name": "workload_stabilization",
"next_run_time": null,
"updated_at": null,
"hostname": null,
"start_time": null,
"end_time": null,
"status_message": null
}
返回审计资源的列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
goal (可选) |
查询 |
字符串 |
目标 UUID 或名称。 |
strategy (可选) |
查询 |
字符串 |
策略的 UUID 或名称。 |
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
marker (可选) |
查询 |
字符串 |
最后一个项目看到的 ID。使用 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name (可选) |
body |
字符串 |
此审计的名称。 |
audit_type |
body |
字符串 |
此审计的类型。只能是 ONESHOT 或 CONTINUOUS。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
goal_name |
body |
字符串 |
目标的名称。 |
interval (可选) |
body |
字符串 |
审计执行之间的时间间隔。可以以秒或 cron 语法定义。仅应为 CONTINUOUS 审计定义。 |
next_run_time (可选) |
body |
字符串 |
下一次审计启动时间。仅为 CONTINUOUS 审计定义。 |
auto_trigger (可选) |
body |
布尔值 |
审计成功后自动执行操作计划。 |
state |
body |
字符串 |
此审计的状态。要了解有关状态和审计生命周期的更多信息,请访问 审计状态机页面。 |
scope (可选) |
body |
JSON |
审计范围。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
审计的示例 JSON 表示
{
"audits": [
{
"interval": null,
"strategy_uuid": "e311727b-b9b3-43ef-a5f7-8bd7ea80df25",
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "dummy-2018-03-26T11:56:07.950400",
"auto_trigger": false,
"uuid": "ccc69a5f-114e-46f4-b15e-a77eaa337b01",
"goal_name": "dummy",
"scope": [],
"state": "SUCCEEDED",
"audit_type": "ONESHOT",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audits/ccc69a5f-114e-46f4-b15e-a77eaa337b01"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audits/ccc69a5f-114e-46f4-b15e-a77eaa337b01"
}
],
"strategy_name": "dummy",
"next_run_time": null
}
]
}
返回包含完整详细信息的审计资源的列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
goal (可选) |
查询 |
字符串 |
目标 UUID 或名称。 |
strategy (可选) |
查询 |
字符串 |
策略的 UUID 或名称。 |
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
marker (可选) |
查询 |
字符串 |
最后一个项目看到的 ID。使用 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name (可选) |
body |
字符串 |
此审计的名称。 |
audit_type |
body |
字符串 |
此审计的类型。只能是 ONESHOT 或 CONTINUOUS。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
goal_name |
body |
字符串 |
目标的名称。 |
interval (可选) |
body |
字符串 |
审计执行之间的时间间隔。可以以秒或 cron 语法定义。仅应为 CONTINUOUS 审计定义。 |
next_run_time (可选) |
body |
字符串 |
下一次审计启动时间。仅为 CONTINUOUS 审计定义。 |
parameters (可选) |
body |
JSON |
此审计的策略参数。 |
auto_trigger (可选) |
body |
布尔值 |
审计成功后自动执行操作计划。 |
state |
body |
字符串 |
此审计的状态。要了解有关状态和审计生命周期的更多信息,请访问 审计状态机页面。 |
scope (可选) |
body |
JSON |
审计范围。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
hostname (可选) |
body |
字符串 |
审计正在运行的主机名 |
start_time (可选) |
body |
字符串 |
根据间隔执行审计的时间。 版本 1.1 中新增 |
end_time (可选) |
body |
字符串 |
审计不能执行的时间。 版本 1.1 中新增 |
force (可选) |
body |
布尔值 |
即使操作计划正在进行,也启动审计。 版本 1.2 中新增 |
status_message (可选) |
body |
字符串 |
有关审计状态的附加信息的消息。 版本 1.5 中新增 |
审计的示例 JSON 表示
{
"audits": [
{
"interval": "*/2 * * * *",
"strategy_uuid": "6b3b3902-8508-4cb0-bb85-67f32866b086",
"goal_uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a",
"name": "test_audit",
"parameters": {
"host_choice": "retry",
"instance_metrics": {
"cpu_util": "compute.node.cpu.percent",
"memory.resident": "hardware.memory.used"
},
"granularity": 300,
"weights": {
"cpu_util_weight": 1.0,
"memory.resident_weight": 1.0
},
"retry_count": 1,
"metrics": [
"cpu_util"
],
"periods": {
"instance": 720,
"node": 600
},
"thresholds": {
"cpu_util": 0.2,
"memory.resident": 0.2
}
},
"auto_trigger": false,
"force": false,
"uuid": "65a5da84-5819-4aea-8278-a28d2b489028",
"goal_name": "workload_balancing",
"scope": [],
"created_at": "2018-04-06T07:27:27.820460+00:00",
"deleted_at": null,
"state": "ONGOING",
"audit_type": "CONTINUOUS",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audits/65a5da84-5819-4aea-8278-a28d2b489028"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audits/65a5da84-5819-4aea-8278-a28d2b489028"
}
],
"strategy_name": "workload_stabilization",
"next_run_time": "2018-04-06T09:46:00",
"updated_at": "2018-04-06T09:44:01.604146+00:00",
"hostname": "controller",
"start_time": null,
"end_time": null,
"status_message": null
}
]
}
显示审计的详细信息。
正常响应代码:200
错误代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
audit_ident |
路径 |
字符串 |
审计的 UUID 或名称。 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name (可选) |
body |
字符串 |
此审计的名称。 |
audit_type |
body |
字符串 |
此审计的类型。只能是 ONESHOT 或 CONTINUOUS。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
goal_name |
body |
字符串 |
目标的名称。 |
interval (可选) |
body |
字符串 |
审计执行之间的时间间隔。可以以秒或 cron 语法定义。仅应为 CONTINUOUS 审计定义。 |
next_run_time (可选) |
body |
字符串 |
下一次审计启动时间。仅为 CONTINUOUS 审计定义。 |
parameters (可选) |
body |
JSON |
此审计的策略参数。 |
auto_trigger (可选) |
body |
布尔值 |
审计成功后自动执行操作计划。 |
state |
body |
字符串 |
此审计的状态。要了解有关状态和审计生命周期的更多信息,请访问 审计状态机页面。 |
scope (可选) |
body |
JSON |
审计范围。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
hostname (可选) |
body |
字符串 |
审计正在运行的主机名 |
start_time (可选) |
body |
字符串 |
根据间隔执行审计的时间。 版本 1.1 中新增 |
end_time (可选) |
body |
字符串 |
审计不能执行的时间。 版本 1.1 中新增 |
force (可选) |
body |
布尔值 |
即使操作计划正在进行,也启动审计。 版本 1.2 中新增 |
status_message (可选) |
body |
字符串 |
有关审计状态的附加信息的消息。 版本 1.5 中新增 |
审计的示例 JSON 表示
{
"interval": "*/2 * * * *",
"strategy_uuid": "6b3b3902-8508-4cb0-bb85-67f32866b086",
"goal_uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a",
"name": "test_audit",
"parameters": {
"host_choice": "retry",
"instance_metrics": {
"cpu_util": "compute.node.cpu.percent",
"memory.resident": "hardware.memory.used"
},
"granularity": 300,
"weights": {
"cpu_util_weight": 1.0,
"memory.resident_weight": 1.0
},
"retry_count": 1,
"metrics": [
"cpu_util"
],
"periods": {
"instance": 720,
"node": 600
},
"thresholds": {
"cpu_util": 0.2,
"memory.resident": 0.2
}
},
"auto_trigger": false,
"force": false,
"uuid": "65a5da84-5819-4aea-8278-a28d2b489028",
"goal_name": "workload_balancing",
"scope": [],
"created_at": "2018-04-06T07:27:27.820460+00:00",
"deleted_at": null,
"state": "ONGOING",
"audit_type": "CONTINUOUS",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audits/65a5da84-5819-4aea-8278-a28d2b489028"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audits/65a5da84-5819-4aea-8278-a28d2b489028"
}
],
"strategy_name": "workload_stabilization",
"next_run_time": "2018-04-06T11:56:00",
"updated_at": "2018-04-06T11:54:01.266447+00:00",
"hostname": "controller",
"start_time": null,
"end_time": null,
"status_message": null
}
取消一个 ONGOING 审计资源。
正常响应代码:200
错误代码:400,404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
audit_ident |
路径 |
字符串 |
审计的 UUID 或名称。 |
示例审计取消请求
[
{
"op": "replace",
"value": "CANCELLED",
"path": "/state"
}
]
响应¶
下面的列表和示例代表 API 版本 1 时的响应。
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name (可选) |
body |
字符串 |
此审计的名称。 |
audit_type |
body |
字符串 |
此审计的类型。只能是 ONESHOT 或 CONTINUOUS。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
goal_name |
body |
字符串 |
目标的名称。 |
interval (可选) |
body |
字符串 |
审计执行之间的时间间隔。可以以秒或 cron 语法定义。仅应为 CONTINUOUS 审计定义。 |
next_run_time (可选) |
body |
字符串 |
下一次审计启动时间。仅为 CONTINUOUS 审计定义。 |
parameters (可选) |
body |
JSON |
此审计的策略参数。 |
auto_trigger (可选) |
body |
布尔值 |
审计成功后自动执行操作计划。 |
state |
body |
字符串 |
此审计的状态。要了解有关状态和审计生命周期的更多信息,请访问 审计状态机页面。 |
scope (可选) |
body |
JSON |
审计范围。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
hostname (可选) |
body |
字符串 |
审计正在运行的主机名 |
start_time (可选) |
body |
字符串 |
根据间隔执行审计的时间。 版本 1.1 中新增 |
end_time (可选) |
body |
字符串 |
审计不能执行的时间。 版本 1.1 中新增 |
force (可选) |
body |
布尔值 |
即使操作计划正在进行,也启动审计。 版本 1.2 中新增 |
status_message (可选) |
body |
字符串 |
有关审计状态的附加信息的消息。 版本 1.5 中新增 |
审计的示例 JSON 表示
{
"interval": "*/2 * * * *",
"strategy_uuid": "6b3b3902-8508-4cb0-bb85-67f32866b086",
"goal_uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a",
"name": "audit1",
"parameters": {
"host_choice": "retry",
"instance_metrics": {
"cpu_util": "compute.node.cpu.percent",
"memory.resident": "hardware.memory.used"
},
"granularity": 300,
"weights": {
"cpu_util_weight": 1.0,
"memory.resident_weight": 1.0
},
"retry_count": 1,
"metrics": [
"cpu_util"
],
"periods": {
"instance": 720,
"node": 600
},
"thresholds": {
"cpu_util": 0.2,
"memory.resident": 0.2
}
},
"auto_trigger": false,
"force": false,
"uuid": "65a5da84-5819-4aea-8278-a28d2b489028",
"goal_name": "workload_balancing",
"scope": [],
"created_at": "2018-04-06T07:27:27.820460+00:00",
"deleted_at": null,
"state": "CANCELLED",
"audit_type": "CONTINUOUS",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audits/65a5da84-5819-4aea-8278-a28d2b489028"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audits/65a5da84-5819-4aea-8278-a28d2b489028"
}
],
"strategy_name": "workload_stabilization",
"next_run_time": "2018-04-06T11:56:00",
"updated_at": "2018-04-06T11:54:01.266447+00:00",
"hostname": "controller",
"start_time": null,
"end_time": null
}
使用给定的信息更新审计。
正常响应代码:200
错误代码:400,404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
audit_ident |
路径 |
字符串 |
审计的 UUID 或名称。 |
示例 PATCH 文档更新审计
[
{
"value": "CANCELLED",
"path": "/state",
"op": "replace"
},
{
"value": "audit1",
"path": "/name",
"op": "replace"
}
]
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name (可选) |
body |
字符串 |
此审计的名称。 |
audit_type |
body |
字符串 |
此审计的类型。只能是 ONESHOT 或 CONTINUOUS。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
goal_name |
body |
字符串 |
目标的名称。 |
interval (可选) |
body |
字符串 |
审计执行之间的时间间隔。可以以秒或 cron 语法定义。仅应为 CONTINUOUS 审计定义。 |
next_run_time (可选) |
body |
字符串 |
下一次审计启动时间。仅为 CONTINUOUS 审计定义。 |
parameters (可选) |
body |
JSON |
此审计的策略参数。 |
auto_trigger (可选) |
body |
布尔值 |
审计成功后自动执行操作计划。 |
state |
body |
字符串 |
此审计的状态。要了解有关状态和审计生命周期的更多信息,请访问 审计状态机页面。 |
scope (可选) |
body |
JSON |
审计范围。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
hostname (可选) |
body |
字符串 |
审计正在运行的主机名 |
start_time (可选) |
body |
字符串 |
根据间隔执行审计的时间。 版本 1.1 中新增 |
end_time (可选) |
body |
字符串 |
审计不能执行的时间。 版本 1.1 中新增 |
force (可选) |
body |
布尔值 |
即使操作计划正在进行,也启动审计。 版本 1.2 中新增 |
status_message (可选) |
body |
字符串 |
有关审计状态的附加信息的消息。 版本 1.5 中新增 |
审计的示例 JSON 表示
{
"interval": "*/2 * * * *",
"strategy_uuid": "6b3b3902-8508-4cb0-bb85-67f32866b086",
"goal_uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a",
"name": "audit1",
"parameters": {
"host_choice": "retry",
"instance_metrics": {
"cpu_util": "compute.node.cpu.percent",
"memory.resident": "hardware.memory.used"
},
"granularity": 300,
"weights": {
"cpu_util_weight": 1.0,
"memory.resident_weight": 1.0
},
"retry_count": 1,
"metrics": [
"cpu_util"
],
"periods": {
"instance": 720,
"node": 600
},
"thresholds": {
"cpu_util": 0.2,
"memory.resident": 0.2
}
},
"auto_trigger": false,
"force": false,
"uuid": "65a5da84-5819-4aea-8278-a28d2b489028",
"goal_name": "workload_balancing",
"scope": [],
"created_at": "2018-04-06T07:27:27.820460+00:00",
"deleted_at": null,
"state": "CANCELLED",
"audit_type": "CONTINUOUS",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audits/65a5da84-5819-4aea-8278-a28d2b489028"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audits/65a5da84-5819-4aea-8278-a28d2b489028"
}
],
"strategy_name": "workload_stabilization",
"next_run_time": "2018-04-06T11:56:00",
"updated_at": "2018-04-06T11:54:01.266447+00:00",
"hostname": "controller",
"start_time": null,
"end_time": null
}
删除审计。审计只能从 FAILED、SUCCEEDED、CANCELLED、SUSPENDED 状态删除。
正常响应代码:204
错误代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
audit_ident |
路径 |
字符串 |
审计的 UUID 或名称。 |
操作计划¶
一个 Action Plan 指定一系列应该执行的 Actions,以满足给定的 Goal。它还包含一个估计的 global efficacy 以及一组 efficacy indicators。
一个 行动计划 Action Plan 由 Watcher 在 审计 Audit 成功时生成,这意味着用于该 审计 Audit 的 策略 Strategy 找到了一个 解决方案 Solution 来实现该 审计 Audit 的 目标 Goal。
在 Watcher 的默认实现中,一个行动计划由一个链接的 行动 Actions 图组成。每个行动可能有父行动,应该在子行动之前执行。
启动一个创建的行动计划资源。
正常响应代码:200
错误代码:400,404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
actionplan_ident |
路径 |
字符串 |
行动计划的 UUID。 |
响应¶
下面的列表和示例代表 API 版本 1 时的响应。
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
state (可选) |
body |
字符串 |
此行动计划的状态。要了解有关状态和行动计划生命周期的更多信息,请访问 行动计划状态机页面。 |
audit_uuid (可选) |
body |
字符串 |
此行动计划所属的审计的 UUID。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
efficacy_indicators (可选) |
body |
数组 |
与此行动计划关联的功效指标列表。 |
global_efficacy (可选) |
body |
数组 |
此行动计划的全局功效。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
hostname (可选) |
body |
字符串 |
运行行动计划的主机名 |
行动计划的示例 JSON 表示
{
"state": "PENDING",
"efficacy_indicators": [],
"strategy_uuid": "7dae0eea-9df7-42b8-bb3e-313958ff2242",
"global_efficacy": [],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
},
{
"rel": "bookmark",
"href": "http://controller:9322/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
}
],
"updated_at": "2018-04-10T11:59:41.602430+00:00",
"strategy_name": "dummy_with_resize",
"uuid": "4cbc4ede-0d25-481b-b86e-998dbbd4f8bf",
"audit_uuid": "7d100b05-0a86-491f-98a7-f93da19b272a",
"created_at": "2018-04-10T11:59:12.592729+00:00",
"deleted_at": null,
"hostname": null
}
返回一个行动计划资源列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
audit_uuid (可选) |
查询 |
字符串 |
可选的审计 UUID,以仅获取该审计的行动。 |
strategy (可选) |
查询 |
字符串 |
策略的 UUID 或名称。 |
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
marker (可选) |
查询 |
字符串 |
最后一个项目看到的 ID。使用 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
state (可选) |
body |
字符串 |
此行动计划的状态。要了解有关状态和行动计划生命周期的更多信息,请访问 行动计划状态机页面。 |
audit_uuid (可选) |
body |
字符串 |
此行动计划所属的审计的 UUID。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
efficacy_indicators (可选) |
body |
数组 |
与此行动计划关联的功效指标列表。 |
global_efficacy (可选) |
body |
数组 |
此行动计划的全局功效。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
行动计划的示例 JSON 表示
{
"action_plans": [
{
"state": "ONGOING",
"efficacy_indicators": [],
"strategy_uuid": "7dae0eea-9df7-42b8-bb3e-313958ff2242",
"global_efficacy": [],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
},
{
"rel": "bookmark",
"href": "http://controller:9322/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
}
],
"updated_at": "2018-04-10T11:59:52.640067+00:00",
"strategy_name": "dummy_with_resize",
"uuid": "4cbc4ede-0d25-481b-b86e-998dbbd4f8bf",
"audit_uuid": "7d100b05-0a86-491f-98a7-f93da19b272a"
}
]
}
返回包含完整详细信息的行动计划资源列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
audit_uuid (可选) |
查询 |
字符串 |
可选的审计 UUID,以仅获取该审计的行动。 |
strategy (可选) |
查询 |
字符串 |
策略的 UUID 或名称。 |
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
marker (可选) |
查询 |
字符串 |
最后一个项目看到的 ID。使用 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
deleted_at |
body |
字符串 |
资源被删除的日期和时间。日期和时间戳格式为 ISO 8601。 |
updated_at |
body |
字符串 |
资源被更新的日期和时间。日期和时间戳格式为 ISO 8601。 |
created_at |
body |
字符串 |
资源被创建的日期和时间。日期和时间戳格式为 ISO 8601。 |
uuid |
body |
字符串 |
资源的 UUID。 |
state (可选) |
body |
字符串 |
此行动计划的状态。要了解有关状态和行动计划生命周期的更多信息,请访问 行动计划状态机页面。 |
audit_uuid (可选) |
body |
字符串 |
此行动计划所属的审计的 UUID。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
efficacy_indicators (可选) |
body |
数组 |
与此行动计划关联的功效指标列表。 |
global_efficacy (可选) |
body |
数组 |
此行动计划的全局功效。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
hostname (可选) |
body |
字符串 |
运行行动计划的主机名 |
status_message (可选) |
body |
字符串 |
有关行动计划状态的附加信息。 版本 1.5 中新增 |
行动计划的示例 JSON 表示
{
"action_plans": [
{
"state": "ONGOING",
"efficacy_indicators": [],
"strategy_uuid": "7dae0eea-9df7-42b8-bb3e-313958ff2242",
"global_efficacy": [],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
},
{
"rel": "bookmark",
"href": "http://controller:9322/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
}
],
"updated_at": "2018-04-10T11:59:52.640067+00:00",
"strategy_name": "dummy_with_resize",
"deleted_at": null,
"uuid": "4cbc4ede-0d25-481b-b86e-998dbbd4f8bf",
"audit_uuid": "7d100b05-0a86-491f-98a7-f93da19b272a",
"created_at": "2018-04-10T11:59:52.640067+00:00",
"hostname": "controller",
"status_message": null
}
]
}
显示行动计划的详细信息。
正常响应代码:200
错误代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
actionplan_ident |
路径 |
字符串 |
行动计划的 UUID。 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
state (可选) |
body |
字符串 |
此行动计划的状态。要了解有关状态和行动计划生命周期的更多信息,请访问 行动计划状态机页面。 |
audit_uuid (可选) |
body |
字符串 |
此行动计划所属的审计的 UUID。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
efficacy_indicators (可选) |
body |
数组 |
与此行动计划关联的功效指标列表。 |
global_efficacy (可选) |
body |
数组 |
此行动计划的全局功效。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
hostname (可选) |
body |
字符串 |
运行行动计划的主机名 |
status_message (可选) |
body |
字符串 |
有关行动计划状态的附加信息。 版本 1.5 中新增 |
审计的示例 JSON 表示
{
"state": "ONGOING",
"efficacy_indicators": [],
"strategy_uuid": "7dae0eea-9df7-42b8-bb3e-313958ff2242",
"global_efficacy": [],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
},
{
"rel": "bookmark",
"href": "http://controller:9322/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
}
],
"updated_at": "2018-04-10T11:59:52.640067+00:00",
"strategy_name": "dummy_with_resize",
"uuid": "4cbc4ede-0d25-481b-b86e-998dbbd4f8bf",
"audit_uuid": "7d100b05-0a86-491f-98a7-f93da19b272a",
"hostname": "controller",
"status_message": null
}
取消一个创建的行动计划资源。
正常响应代码:200
错误代码:400,404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
actionplan_ident |
路径 |
字符串 |
行动计划的 UUID。 |
正在进行中的行动计划取消请求示例
[
{
"op": "replace",
"value": "CANCELLING",
"path": "/state"
}
]
待处理的行动计划取消请求示例
[
{
"op": "replace",
"value": "CANCELLED",
"path": "/state"
}
]
响应¶
下面的列表和示例代表 API 版本 1 时的响应。
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
state (可选) |
body |
字符串 |
此行动计划的状态。要了解有关状态和行动计划生命周期的更多信息,请访问 行动计划状态机页面。 |
audit_uuid (可选) |
body |
字符串 |
此行动计划所属的审计的 UUID。 |
strategy_uuid |
body |
字符串 |
此策略的唯一 UUID。 |
strategy_name |
body |
字符串 |
策略的名称。 |
efficacy_indicators (可选) |
body |
数组 |
与此行动计划关联的功效指标列表。 |
global_efficacy (可选) |
body |
数组 |
此行动计划的全局功效。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
hostname (可选) |
body |
字符串 |
运行行动计划的主机名 |
status_message (可选) |
body |
字符串 |
有关行动计划状态的附加信息。 版本 1.5 中新增 |
行动计划的示例 JSON 表示
{
"state": "PENDING",
"efficacy_indicators": [],
"strategy_uuid": "7dae0eea-9df7-42b8-bb3e-313958ff2242",
"global_efficacy": [],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
},
{
"rel": "bookmark",
"href": "http://controller:9322/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
}
],
"updated_at": "2018-04-10T11:59:41.602430+00:00",
"strategy_name": "dummy_with_resize",
"uuid": "4cbc4ede-0d25-481b-b86e-998dbbd4f8bf",
"audit_uuid": "7d100b05-0a86-491f-98a7-f93da19b272a",
"created_at": "2018-04-10T11:59:12.592729+00:00",
"deleted_at": null,
"hostname": null
}
删除一个行动计划。只有在 SUCCEEDED(成功)、RECOMMENDED(推荐)、FAILED(失败)、SUPERSEDED(已取代)、CANCELLED(已取消)状态下才能删除行动计划。
正常响应代码:204
错误代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
actionplan_ident |
路径 |
字符串 |
行动计划的 UUID。 |
行动¶
一个 行动 Action 是 Watcher 在 审计 Audit 之后改变 集群 Cluster 当前状态的方式。
一个 行动 Action 是一个原子任务,它改变了 OpenStack 集群 Cluster 的目标托管资源的当前状态,例如
使用 Nova 将实例从一个计算节点迁移到另一个计算节点
更改计算节点的电源级别(ACPI 级别,...)
使用 Nova 更改计算节点的当前状态(启用或禁用)
在大多数情况下,一个 行动 Action 会触发对现有 OpenStack 模块(Nova、Neutron、Cinder、Ironic 等)的一些具体命令。
一个 行动 Action 具有生命周期,其当前状态可能是以下之一
PENDING(待处理):
行动 Action尚未由Watcher Applier执行。SKIPPED(已跳过):
行动 Action将不会被执行,因为Watcher Applier发现了一个预定义的跳过条件,或者被管理员 Administrator显式跳过。ONGOING(进行中):
行动 Action正在被Watcher Applier处理。SUCCEEDED(成功):
行动 Action已成功执行FAILED(失败):在尝试执行
行动 Action时发生错误。DELETED(已删除):
行动 Action仍然存储在Watcher 数据库 database中,但不再通过 Watcher API 返回。CANCELLED(已取消):
行动 Action处于 PENDING(待处理) 或 ONGOING(进行中) 状态,并被管理员 Administrator取消
行动 Actions 由 Watcher Planner 作为审计执行的结果创建。行动 Action 不能被用户创建、修改或删除。
返回一个行动资源列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
action_plan_uuid (可选) |
查询 |
字符串 |
用于筛选的行动计划的 UUID。 |
audit_uuid (可选) |
查询 |
字符串 |
可选的审计 UUID,以仅获取该审计的行动。 |
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
marker (可选) |
查询 |
字符串 |
最后一个项目看到的 ID。使用 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
action_type |
body |
字符串 |
基于特定 API 行动的行动类型。Watcher 中的行动是可插拔的,要查看支持的行动类型列表,请访问 行动插件页面。 |
state |
body |
字符串 |
行动状态。 |
action_plan_uuid |
body |
字符串 |
此行动所属的行动计划。 |
parents |
body |
数组 |
父行动的 UUID。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
行动的示例 JSON 表示
{
"actions": [
{
"state": "PENDING",
"parents": [
"8119d16e-b419-4729-b015-fc04c4e45783"
],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/actions/7182a988-e6c4-4152-a0d6-067119475c83"
},
{
"rel": "bookmark",
"href": "http://controller:9322/actions/7182a988-e6c4-4152-a0d6-067119475c83"
}
],
"action_plan_uuid": "c6bba9ed-a7eb-4370-9993-d873e5e22cba",
"uuid": "7182a988-e6c4-4152-a0d6-067119475c83",
"action_type": "sleep"
}
]
}
返回包含完整详细信息的行动资源列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
action_plan_uuid (可选) |
查询 |
字符串 |
用于筛选的行动计划的 UUID。 |
audit_uuid (可选) |
查询 |
字符串 |
可选的审计 UUID,以仅获取该审计的行动。 |
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
marker (可选) |
查询 |
字符串 |
最后一个项目看到的 ID。使用 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
action_type |
body |
字符串 |
基于特定 API 行动的行动类型。Watcher 中的行动是可插拔的,要查看支持的行动类型列表,请访问 行动插件页面。 |
state |
body |
字符串 |
行动状态。 |
action_plan_uuid |
body |
字符串 |
此行动所属的行动计划。 |
parents |
body |
数组 |
父行动的 UUID。 |
description |
body |
字符串 |
行动描述。 |
input_parameters |
body |
JSON |
由适当的行动类型使用的输入参数。例如, |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
status_message (可选) |
body |
字符串 |
有关行动状态的附加信息。当行动转换为 SKIPPED 状态时,可以设置此字段,或者更新已处于 SKIPPED 状态的行动,以提供更详细的说明、修复错别字或扩展初始原因。 版本 1.5 中新增 |
行动的示例 JSON 表示
{
"actions": [
{
"state": "PENDING",
"description": "Wait for a given interval in seconds.",
"parents": [
"8119d16e-b419-4729-b015-fc04c4e45783"
],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/actions/7182a988-e6c4-4152-a0d6-067119475c83"
},
{
"rel": "bookmark",
"href": "http://controller:9322/actions/7182a988-e6c4-4152-a0d6-067119475c83"
}
],
"action_plan_uuid": "c6bba9ed-a7eb-4370-9993-d873e5e22cba",
"uuid": "7182a988-e6c4-4152-a0d6-067119475c83",
"deleted_at": null,
"updated_at": null,
"input_parameters": {
"duration": 3.2
},
"action_type": "sleep",
"created_at": "2018-03-26T11:56:08.235226+00:00",
"status_message": null
}
]
}
显示行动的详细信息。
正常响应代码:200
错误代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
action_ident |
路径 |
字符串 |
行动的 UUID。 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
action_type |
body |
字符串 |
基于特定 API 行动的行动类型。Watcher 中的行动是可插拔的,要查看支持的行动类型列表,请访问 行动插件页面。 |
state |
body |
字符串 |
行动状态。 |
action_plan_uuid |
body |
字符串 |
此行动所属的行动计划。 |
parents |
body |
数组 |
父行动的 UUID。 |
description |
body |
字符串 |
行动描述。 |
input_parameters |
body |
JSON |
由适当的行动类型使用的输入参数。例如, |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
status_message (可选) |
body |
字符串 |
有关行动状态的附加信息。当行动转换为 SKIPPED 状态时,可以设置此字段,或者更新已处于 SKIPPED 状态的行动,以提供更详细的说明、修复错别字或扩展初始原因。 版本 1.5 中新增 |
行动的示例 JSON 表示
{
"state": "SUCCEEDED",
"description": "Logging a NOP message",
"parents": [
"b4529294-1de6-4302-b57a-9b5d5dc363c6"
],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/actions/54acc7a0-91b0-46ea-a5f7-4ae2b9df0b0a"
},
{
"rel": "bookmark",
"href": "http://controller:9322/actions/54acc7a0-91b0-46ea-a5f7-4ae2b9df0b0a"
}
],
"action_plan_uuid": "4cbc4ede-0d25-481b-b86e-998dbbd4f8bf",
"uuid": "54acc7a0-91b0-46ea-a5f7-4ae2b9df0b0a",
"deleted_at": null,
"updated_at": "2018-04-10T11:59:44.026973+00:00",
"input_parameters": {
"message": "Welcome"
},
"action_type": "nop",
"created_at": "2018-04-10T11:59:12.725147+00:00",
"status_message": null
}
通过将其状态更改为 SKIPPED 来跳过一个行动资源。
注意
只有处于 PENDING 状态的行动才能被跳过。该行动必须属于处于 RECOMMENDED 或 PENDING 状态的行动计划。此操作需要 API 微版本 1.5 或更高版本。
正常响应代码:200
错误代码:400、404、403、409
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
action_ident |
路径 |
字符串 |
行动的 UUID。 |
正在进行中的行动跳过请求示例
[
{
"op": "replace",
"value": "SKIPPED",
"path": "/state"
}
]
待处理的行动跳过请求示例,带有自定义状态消息
[
{
"op": "replace",
"value": "SKIPPED",
"path": "/state"
},
{
"op": "replace",
"value": "Skipping due to maintenance window",
"path": "/status_message"
}
]
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
action_type |
body |
字符串 |
基于特定 API 行动的行动类型。Watcher 中的行动是可插拔的,要查看支持的行动类型列表,请访问 行动插件页面。 |
state |
body |
字符串 |
行动状态。 |
action_plan_uuid |
body |
字符串 |
此行动所属的行动计划。 |
parents |
body |
数组 |
父行动的 UUID。 |
description |
body |
字符串 |
行动描述。 |
input_parameters |
body |
JSON |
由适当的行动类型使用的输入参数。例如, |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
status_message (可选) |
body |
字符串 |
有关行动状态的附加信息。当行动转换为 SKIPPED 状态时,可以设置此字段,或者更新已处于 SKIPPED 状态的行动,以提供更详细的说明、修复错别字或扩展初始原因。 版本 1.5 中新增 |
已跳过的行动的示例 JSON 表示
{
"state": "SKIPPED",
"description": "Migrate instance to another compute node",
"parents": [
"b4529294-1de6-4302-b57a-9b5d5dc363c6"
],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/actions/54acc7a0-91b0-46ea-a5f7-4ae2b9df0b0a"
},
{
"rel": "bookmark",
"href": "http://controller:9322/actions/54acc7a0-91b0-46ea-a5f7-4ae2b9df0b0a"
}
],
"action_plan_uuid": "4cbc4ede-0d25-481b-b86e-998dbbd4f8bf",
"uuid": "54acc7a0-91b0-46ea-a5f7-4ae2b9df0b0a",
"deleted_at": null,
"updated_at": "2018-04-10T12:15:44.026973+00:00",
"input_parameters": {
"migration_type": "live",
"destination_node": "compute-2",
"resource_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
},
"action_type": "migrate",
"created_at": "2018-04-10T11:59:12.725147+00:00",
"status_message": "Action skipped by user. Reason:Skipping due to maintenance window"
}
更新已处于 SKIPPED 状态的行动的状态消息。
注意
只能更新当前处于 SKIPPED 状态的行动的 status_message 字段。这允许管理员修复错别字、提供更详细的说明或扩展最初省略的原因。此操作需要 API 微版本 1.5 或更高版本。
正常响应代码:200
错误代码:400、404、403、409
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
action_ident |
路径 |
字符串 |
行动的 UUID。 |
SKIPPED 行动的 status_message 更新请求示例
[
{
"op": "replace",
"value": "Action skipped due to scheduled maintenance window",
"path": "/status_message"
}
]
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
action_type |
body |
字符串 |
基于特定 API 行动的行动类型。Watcher 中的行动是可插拔的,要查看支持的行动类型列表,请访问 行动插件页面。 |
state |
body |
字符串 |
行动状态。 |
action_plan_uuid |
body |
字符串 |
此行动所属的行动计划。 |
parents |
body |
数组 |
父行动的 UUID。 |
description |
body |
字符串 |
行动描述。 |
input_parameters |
body |
JSON |
由适当的行动类型使用的输入参数。例如, |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
status_message (可选) |
body |
字符串 |
有关行动状态的附加信息。当行动转换为 SKIPPED 状态时,可以设置此字段,或者更新已处于 SKIPPED 状态的行动,以提供更详细的说明、修复错别字或扩展初始原因。 版本 1.5 中新增 |
具有更新后的 status_message 的行动的示例 JSON 表示
{
"state": "SKIPPED",
"description": "Migrate instance to another compute node",
"parents": [
"b4529294-1de6-4302-b57a-9b5d5dc363c6"
],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/actions/54acc7a0-91b0-46ea-a5f7-4ae2b9df0b0a"
},
{
"rel": "bookmark",
"href": "http://controller:9322/actions/54acc7a0-91b0-46ea-a5f7-4ae2b9df0b0a"
}
],
"action_plan_uuid": "4cbc4ede-0d25-481b-b86e-998dbbd4f8bf",
"uuid": "54acc7a0-91b0-46ea-a5f7-4ae2b9df0b0a",
"deleted_at": null,
"updated_at": "2018-04-10T12:20:15.123456+00:00",
"input_parameters": {
"migration_type": "live",
"destination_node": "compute-2",
"resource_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef"
},
"action_type": "migrate",
"created_at": "2018-04-10T11:59:12.725147+00:00",
"status_message": "Action skipped by user. Reason: Action skipped due to scheduled maintenance window"
}
目标¶
一个 目标 Goal 是一个人类可读的、可观察的和可衡量的最终结果,具有一个要实现的目标。
以下是一些 目标 Goal 的示例
最小化能源消耗
最小化计算节点的数量(整合)
平衡计算节点之间的工作负载
最小化许可成本(某些软件的许可模式基于部署软件的插槽或核心数量)
找到给定主机组(可能是整个可用区)的计划维护的最佳时机:电源更换、冷却系统更换、硬件修改等
返回一个目标资源列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
efficacy_specification |
body |
数组 |
策略执行结果的功效规范。 |
name |
body |
字符串 |
目标的名称。 |
display_name |
body |
字符串 |
目标的本地化名称。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
目标的示例 JSON 表示
{
"goals": [
{
"efficacy_specification": [],
"uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/goals/e1a5a45b-f251-47cf-9c5f-fa1e66e1286a"
},
{
"rel": "bookmark",
"href": "http://controller:9322/goals/e1a5a45b-f251-47cf-9c5f-fa1e66e1286a"
}
],
"name": "workload_balancing",
"display_name": "Workload Balancing"
},
{
"efficacy_specification": [
{
"description": "The total number of enabled compute nodes.",
"schema": "Range(min=0, max=None, min_included=True, max_included=True, msg=None)",
"name": "compute_nodes_count",
"unit": null
},
{
"description": "The number of compute nodes to be released.",
"schema": "Range(min=0, max=None, min_included=True, max_included=True, msg=None)",
"name": "released_compute_nodes_count",
"unit": null
},
{
"description": "The number of VM migrations to be performed.",
"schema": "Range(min=0, max=None, min_included=True, max_included=True, msg=None)",
"name": "instance_migrations_count",
"unit": null
}
],
"uuid": "cb9afa5e-aec7-4a8c-9261-c15c33f2262b",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/goals/cb9afa5e-aec7-4a8c-9261-c15c33f2262b"
},
{
"rel": "bookmark",
"href": "http://controller:9322/goals/cb9afa5e-aec7-4a8c-9261-c15c33f2262b"
}
],
"name": "server_consolidation",
"display_name": "Server Consolidation"
}
]
}
返回包含完整详细信息的的目标资源列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
efficacy_specification |
body |
数组 |
策略执行结果的功效规范。 |
name |
body |
字符串 |
目标的名称。 |
display_name |
body |
字符串 |
目标的本地化名称。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
目标的示例 JSON 表示
{
"goals": [
{
"efficacy_specification": [],
"uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/goals/e1a5a45b-f251-47cf-9c5f-fa1e66e1286a"
},
{
"rel": "bookmark",
"href": "http://controller:9322/goals/e1a5a45b-f251-47cf-9c5f-fa1e66e1286a"
}
],
"name": "workload_balancing",
"display_name": "Workload Balancing"
},
{
"efficacy_specification": [
{
"description": "The total number of enabled compute nodes.",
"schema": "Range(min=0, max=None, min_included=True, max_included=True, msg=None)",
"name": "compute_nodes_count",
"unit": null
},
{
"description": "The number of compute nodes to be released.",
"schema": "Range(min=0, max=None, min_included=True, max_included=True, msg=None)",
"name": "released_compute_nodes_count",
"unit": null
},
{
"description": "The number of VM migrations to be performed.",
"schema": "Range(min=0, max=None, min_included=True, max_included=True, msg=None)",
"name": "instance_migrations_count",
"unit": null
}
],
"uuid": "cb9afa5e-aec7-4a8c-9261-c15c33f2262b",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/goals/cb9afa5e-aec7-4a8c-9261-c15c33f2262b"
},
{
"rel": "bookmark",
"href": "http://controller:9322/goals/cb9afa5e-aec7-4a8c-9261-c15c33f2262b"
}
],
"name": "server_consolidation",
"display_name": "Server Consolidation"
}
]
}
显示目标的详细信息。
正常响应代码:200
错误代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
goal_ident |
路径 |
字符串 |
目标 UUID 或名称。 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
efficacy_specification |
body |
数组 |
策略执行结果的功效规范。 |
name |
body |
字符串 |
目标的名称。 |
display_name |
body |
字符串 |
目标的本地化名称。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
目标的示例 JSON 表示
{
"efficacy_specification": [],
"name": "saving_energy",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/goals/6f52889a-9dd4-4dbb-8e70-39b56c4836cc"
},
{
"rel": "bookmark",
"href": "http://controller:9322/goals/6f52889a-9dd4-4dbb-8e70-39b56c4836cc"
}
],
"uuid": "6f52889a-9dd4-4dbb-8e70-39b56c4836cc",
"updated_at": null,
"display_name": "Saving Energy",
"created_at": "2018-03-26T11:55:24.365584+00:00",
"deleted_at": null
}
策略¶
策略 (Strategy) 是一种算法实现,能够为给定的目标 (Goal) 找到解决方案 (Solution)。要了解有关随 Watcher 提供的策略的更多信息,请访问 策略页面。
可能有多个潜在的策略能够实现相同的目标 (Goal)。因此,可以配置应该为每个目标使用哪个特定的策略 (Strategy)。
某些策略可能提供更好的优化结果,但可能需要更多时间才能找到最佳解决方案 (Solution)。
返回策略资源列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
goal (可选) |
查询 |
字符串 |
目标 UUID 或名称。 |
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name |
body |
字符串 |
策略的名称。 |
display_name |
body |
字符串 |
策略的本地化名称。 |
goal_name |
body |
字符串 |
目标的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
策略的示例 JSON 表示形式
{
"strategies": [
{
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "dummy",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/strategies/e311727b-b9b3-43ef-a5f7-8bd7ea80df25"
},
{
"rel": "bookmark",
"href": "http://controller:9322/strategies/e311727b-b9b3-43ef-a5f7-8bd7ea80df25"
}
],
"uuid": "e311727b-b9b3-43ef-a5f7-8bd7ea80df25",
"goal_name": "dummy",
"display_name": "Dummy strategy"
}
]
}
返回包含完整详情的策略资源列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
goal (可选) |
查询 |
字符串 |
目标 UUID 或名称。 |
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name |
body |
字符串 |
策略的名称。 |
display_name |
body |
字符串 |
策略的本地化名称。 |
parameters_spec |
body |
JSON |
此策略的参数规范。 |
goal_name |
body |
字符串 |
目标的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
策略的示例 JSON 表示形式
{
"strategies": [
{
"goal_uuid": "cb9afa5e-aec7-4a8c-9261-c15c33f2262b",
"name": "vm_workload_consolidation",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/strategies/6382b2d7-259e-487d-88db-78c852ffea54"
},
{
"rel": "bookmark",
"href": "http://controller:9322/strategies/6382b2d7-259e-487d-88db-78c852ffea54"
}
],
"parameters_spec": {
"properties": {
"granularity": {
"default": 300,
"type": "number",
"description": "The time between two measures in an aggregated timeseries of a metric."
},
"period": {
"default": 3600,
"type": "number",
"description": "The time interval in seconds for getting statistic aggregation"
}
}
},
"uuid": "6382b2d7-259e-487d-88db-78c852ffea54",
"goal_name": "server_consolidation",
"display_name": "VM Workload Consolidation Strategy"
}
]
}
显示策略资源的详细信息。
正常响应代码:200
错误代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
strategy_ident |
路径 |
字符串 |
策略的 UUID 或名称。 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name |
body |
字符串 |
策略的名称。 |
display_name |
body |
字符串 |
策略的本地化名称。 |
parameters_spec |
body |
JSON |
此策略的参数规范。 |
goal_name |
body |
字符串 |
目标的名称。 |
goal_uuid |
body |
字符串 |
此目标的唯一 UUID。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
策略的示例 JSON 表示形式
{
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "dummy",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/strategies/e311727b-b9b3-43ef-a5f7-8bd7ea80df25"
},
{
"rel": "bookmark",
"href": "http://controller:9322/strategies/e311727b-b9b3-43ef-a5f7-8bd7ea80df25"
}
],
"parameters_spec": {
"properties": {
"para2": {
"default": "hello",
"type": "string",
"description": "string parameter example"
},
"para1": {
"maximum": 10.2,
"type": "number",
"minimum": 1.0,
"description": "number parameter example",
"default": 3.2
}
}
},
"uuid": "e311727b-b9b3-43ef-a5f7-8bd7ea80df25",
"goal_name": "dummy",
"display_name": "Dummy strategy"
}
检索有关策略需求的信息。
正常响应代码:200
错误代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
strategy_ident |
路径 |
字符串 |
策略的 UUID 或名称。 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
state |
body |
string 或 JSON |
策略的需求状态。 |
comment |
body |
字符串 |
需求注释。 |
mandatory |
body |
布尔值 |
此需求是否强制。 |
type |
body |
字符串 |
策略的需求类型。 |
策略的示例 JSON 表示形式
[
{
"state": "gnocchi: available",
"comment": "",
"mandatory": true,
"type": "Datasource"
},
{
"state": [
{
"compute.node.cpu.percent": "available"
},
{
"cpu_util": "available"
},
{
"memory.resident": "available"
},
{
"hardware.memory.used": "available"
}
],
"comment": "",
"mandatory": false,
"type": "Metrics"
},
{
"state": [
{
"compute_model": "available"
},
{
"storage_model": "not available"
},
{
"baremetal_model": "not available"
}
],
"comment": "",
"mandatory": true,
"type": "CDM"
},
{
"state": "workload_stabilization",
"mandatory": "",
"comment": "",
"type": "Name"
}
]
服务¶
此资源表示 Watcher 服务、其状态以及它们所在的宿主机。
返回服务资源列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
id |
body |
整数 |
服务的 ID。 |
name |
body |
字符串 |
服务名称,例如 |
host |
body |
字符串 |
服务所在的宿主机名称。 |
status |
body |
字符串 |
服务状态。它可以是 ACTIVE 或 FAILED 状态。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
服务的示例 JSON 表示形式
{
"services": [
{
"id": 1,
"status": "ACTIVE",
"name": "watcher-applier",
"host": "controller",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/services/1"
},
{
"rel": "bookmark",
"href": "http://controller:9322/services/1"
}
]
},
{
"id": 2,
"status": "ACTIVE",
"name": "watcher-decision-engine",
"host": "controller",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/services/2"
},
{
"rel": "bookmark",
"href": "http://controller:9322/services/2"
}
]
}
]
}
返回包含完整详情的服务资源列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
id |
body |
整数 |
服务的 ID。 |
name |
body |
字符串 |
服务名称,例如 |
host |
body |
字符串 |
服务所在的宿主机名称。 |
status |
body |
字符串 |
服务状态。它可以是 ACTIVE 或 FAILED 状态。 |
last_seen_up |
body |
字符串 |
Watcher 服务发送最新心跳的时间。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
服务的示例 JSON 表示形式
{
"services": [
{
"status": "ACTIVE",
"name": "watcher-applier",
"host": "controller",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/services/1"
},
{
"rel": "bookmark",
"href": "http://controller:9322/services/1"
}
],
"id": 1,
"deleted_at": null,
"updated_at": "2018-04-26T08:52:37.652895+00:00",
"last_seen_up": "2018-04-26T08:52:37.648572",
"created_at": "2018-03-26T11:55:24.075093+00:00"
}
]
}
显示服务资源的详细信息。
正常响应代码:200
错误代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
service_ident |
路径 |
字符串 |
服务的 ID 或名称。 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
id |
body |
整数 |
服务的 ID。 |
name |
body |
字符串 |
服务名称,例如 |
host |
body |
字符串 |
服务所在的宿主机名称。 |
status |
body |
字符串 |
服务状态。它可以是 ACTIVE 或 FAILED 状态。 |
last_seen_up |
body |
字符串 |
Watcher 服务发送最新心跳的时间。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
服务的示例 JSON 表示形式
{
"status": "ACTIVE",
"name": "watcher-applier",
"host": "controller",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/services/1"
},
{
"rel": "bookmark",
"href": "http://controller:9322/services/1"
}
],
"id": 1,
"deleted_at": null,
"updated_at": "2018-04-26T09:45:37.653061+00:00",
"last_seen_up": "2018-04-26T09:45:37.649314",
"created_at": "2018-03-26T11:55:24.075093+00:00"
}
评分引擎¶
评分引擎 (Scoring Engine) 是一种可执行文件,具有明确的输入、明确的输出,并执行纯粹的数学任务。也就是说,计算不依赖于运行它的环境 - 它会在任何地方产生相同的结果。
由于可能使用多种算法来构建特定的数据模型(因此是评分引擎),因此评分引擎的使用可能会有所不同。元信息字段应该包含给定评分引擎的用户可能需要的任何信息。
返回评分引擎资源列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name |
body |
字符串 |
评分引擎的名称。 |
description |
body |
字符串 |
评分引擎的人类可读描述。 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
评分引擎的示例 JSON 表示形式
{
"scoring_engines": [
{
"description": "Dummy Scorer calculating the average value",
"uuid": "5a44f007-55b1-423c-809f-6a274a9bd93b",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/scoring_engines/5a44f007-55b1-423c-809f-6a274a9bd93b"
},
{
"rel": "bookmark",
"href": "http://controller:9322/scoring_engines/5a44f007-55b1-423c-809f-6a274a9bd93b"
}
],
"name": "dummy_avg_scorer"
}
]
}
返回包含完整详情的评分引擎资源列表。
正常响应代码:200
错误代码:400,401
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
limit (可选) |
查询 |
整数 |
请求一页的项目。返回最多 |
sort_dir (可选) |
查询 |
字符串 |
按请求的排序方向对响应进行排序。有效值为 |
sort_key (可选) |
查询 |
字符串 |
按此属性值对响应进行排序。默认值为 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name |
body |
字符串 |
评分引擎的名称。 |
description |
body |
字符串 |
评分引擎的人类可读描述。 |
metainfo |
body |
字符串 |
与评分引擎关联的元数据 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
评分引擎的示例 JSON 表示形式
{
"scoring_engines": [
{
"description": "Dummy Scorer calculating the average value",
"uuid": "5a44f007-55b1-423c-809f-6a274a9bd93b",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/scoring_engines/5a44f007-55b1-423c-809f-6a274a9bd93b"
},
{
"rel": "bookmark",
"href": "http://controller:9322/scoring_engines/5a44f007-55b1-423c-809f-6a274a9bd93b"
}
],
"name": "dummy_avg_scorer",
"metainfo": ""
}
]
}
显示评分引擎资源的详细信息。
正常响应代码:200
错误代码:404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
scoring_engine_ident |
路径 |
字符串 |
评分引擎的 UUID 或名称。 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
uuid |
body |
字符串 |
资源的 UUID。 |
name |
body |
字符串 |
评分引擎的名称。 |
description |
body |
字符串 |
评分引擎的人类可读描述。 |
metainfo |
body |
字符串 |
与评分引擎关联的元数据 |
links |
body |
数组 |
一个相对链接列表。包括 self 和 bookmark 链接。 |
评分引擎的示例 JSON 表示形式
{
"description": "Dummy Scorer calculating the maximum value",
"uuid": "1ac42282-4e77-473e-898b-62ea007f1deb",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/scoring_engines/1ac42282-4e77-473e-898b-62ea007f1deb"
},
{
"rel": "bookmark",
"href": "http://controller:9322/scoring_engines/1ac42282-4e77-473e-898b-62ea007f1deb"
}
],
"name": "dummy_max_scorer",
"metainfo": ""
}
数据模型¶
1.3 版本中添加。
数据模型 (Data Model) 对于 Watcher 生成资源优化解决方案非常重要。用户可以通过 API 轻松查看数据模型。
返回有关数据模型的信息。
正常响应代码:200
错误代码:400,401,406
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
audit (可选) |
查询 |
字符串 |
可选的审计 UUID,以仅获取该审计的行动。 |
type (可选) |
查询 |
字符串 |
用户想要列出的数据模型类型。默认类型为 compute。支持的值:compute。未来支持值:storage, baremetal。 |
响应¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
server_watcher_exclude |
body |
布尔值 |
服务器是否从范围中排除。 |
server_name |
body |
字符串 |
服务器的名称。 |
server_state |
body |
字符串 |
服务器的状态。 |
server_memory |
body |
整数 |
服务器的内存。 |
server_disk |
body |
整数 |
服务器的磁盘。 |
server_vcpus |
body |
整数 |
服务器的 Vcpu。 |
server_metadata |
body |
JSON |
与服务器关联的元数据。 |
server_project_id |
body |
字符串 |
服务器的项目 ID。 |
server_locked |
body |
布尔值 |
服务器是否被锁定。 |
server_uuid |
body |
字符串 |
服务器的唯一 UUID。 |
server_pinned_az |
body |
字符串 |
服务器固定的可用区。 1.6 版本中新增 |
server_flavor_extra_specs |
body |
JSON |
服务器的风味附加规格。 1.6 版本中新增 |
node_hostname |
body |
字符串 |
节点的宿主机名称。 |
node_status |
body |
字符串 |
节点的状态。 |
node_disabled_reason |
body |
字符串 |
节点被禁用的原因。 |
node_state |
body |
字符串 |
节点的状态。值为 up 或 down。 |
node_memory |
body |
整数 |
节点的内存(以 MiB 为单位)。 |
node_memory_mb_reserved |
body |
整数 |
节点保留的内存(以 MiB 为单位)。 |
node_disk |
body |
整数 |
节点的磁盘(以 GiB 为单位)。 |
node_disk_gb_reserved |
body |
整数 |
节点保留的磁盘(以 GiB 为单位)。 |
node_vcpus |
body |
整数 |
节点的 Vcpu。 |
node_vcpu_reserved |
body |
整数 |
节点保留的 Vcpu。 |
node_memory_ratio |
body |
float |
节点的内存比率。 |
node_vcpu_ratio |
body |
float |
节点的 Vcpu 比率。 |
node_disk_ratio |
body |
float |
节点的磁盘比率。 |
node_uuid |
body |
字符串 |
节点的唯一 UUID。 |
数据模型的示例 JSON 表示形式
{
"context": [
{
"server_watcher_exclude": false,
"server_name": "chenke-test1",
"server_state": "active",
"server_memory": "512",
"server_disk": "1",
"server_vcpus": "1",
"server_metadata": {},
"server_project_id": "baea342fc74b4a1785b4a40c69a8d958",
"server_locked":false,
"server_uuid": "1bf91464-9b41-428d-a11e-af691e5563bb",
"server_pinned_az": "nova",
"server_flavor_extra_specs": {
"hw_rng:allowed": true
},
"node_hostname": "localhost.localdomain",
"node_status": "enabled",
"node_disabled_reason": null,
"node_state": "up",
"node_memory": "16383",
"node_memory_mb_reserved": "512",
"node_disk": "37",
"node_disk_gb_reserved": "0",
"node_vcpus": "4",
"node_vcpu_reserved": "0",
"node_memory_ratio": "1.5",
"node_vcpu_ratio": "16.0",
"node_disk_ratio": "1.0",
"node_uuid": "253e5dd0-9384-41ab-af13-4f2c2ce26112"
},
{
"server_watcher_exclude": false,
"server_name": "chenke-test2",
"server_state": "active",
"server_memory": "512",
"server_disk": "1",
"server_vcpus": "1",
"server_metadata": {},
"server_project_id": "baea342fc74b4a1785b4a40c69a8d958",
"server_locked": false,
"server_uuid": "e2cb5f6f-fa1d-4ba2-be1e-0bf02fa86ba4",
"server_pinned_az": "nova",
"server_flavor_extra_specs": {},
"node_hostname": "localhost.localdomain",
"node_status": "enabled",
"node_disabled_reason": null,
"node_state": "up",
"node_memory": "16383",
"node_memory_mb_reserved": "512",
"node_disk": "37",
"node_disk_gb_reserved": "0",
"node_vcpus": "4",
"node_vcpu_reserved": "0",
"node_memory_ratio": "1.5",
"node_vcpu_ratio": "16.0",
"node_disk_ratio": "1.0",
"node_uuid": "253e5dd0-9384-41ab-af13-4f2c2ce26112"
}
]
}
Webhooks¶
1.4 版本中添加。
触发基于审计的事件。
正常响应代码:202
错误代码:400,404
请求¶
名称 |
入参 |
类型 |
描述 |
|---|---|---|---|
audit_ident |
路径 |
字符串 |
审计的 UUID 或名称。 |