Watcher API

API 版本

为了随着时间的推移为用户带来新功能,Watcher API 支持版本控制。Watcher 中有两种类型的版本。

  • ‘’主要版本’’, 它们具有专用的 URL。

  • ‘’微版本’’, 可以使用 OpenStack-API-Version header 请求。

注意

最大微版本取决于发布版本。请参考:API 微版本历史 获取 API 微版本历史详情。

版本 API 资源的工作方式与其他 API 资源不同,因为它们不需要身份验证。

如果 Watcher 收到一个不支持版本的请求,它将响应 406 Not Acceptable,以及它支持的 -Min- 和 -Max- header。

GET
/

列出 API 版本

这将获取部署中所有已知主要 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"
    }
  ]
}
GET
/v1/

显示 v1 API

显示 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 审计模板资源的方法。

审计可以多次使用相同的设置(目标、阈值等)启动。因此,将这些设置保存到某种审计预设对象中是有意义的,该对象被称为审计模板。

审计模板至少包含审计的目标。

POST
/v1/audit_templates

创建审计模板

创建一个新的审计模板资源。

需要在请求体中提供 namegoal 属性。

正常响应代码: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
}
GET
/v1/audit_templates

列出审计模板

返回审计模板资源的列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

goal (可选)

查询

字符串

目标 UUID 或名称。

strategy (可选)

查询

字符串

策略的 UUID 或名称。

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个项目看到的 ID。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

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": []
        }
    ]
}
GET
/v1/audit_templates/detail

列出详细的审计模板

返回包含完整详细信息的审计模板资源的列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

goal (可选)

查询

字符串

目标 UUID 或名称。

strategy (可选)

查询

字符串

策略的 UUID 或名称。

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个项目看到的 ID。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

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
        }
    ]
}
GET
/v1/audit_templates/{audittemplate_ident}

显示审计模板

显示审计模板的详细信息。

正常响应代码: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"
}
PATCH
/v1/audit_templates/{audittemplate_ident}

更新审计模板

使用给定的信息更新审计模板。

正常响应代码: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"
}
DELETE
/v1/audit_templates/{audittemplate_ident}

删除审计模板

删除审计模板。

正常响应代码:204

错误代码:404

请求

名称

入参

类型

描述

audittemplate_ident

路径

字符串

审计模板的 UUID 或名称。

审计

通过 /v1/audits 资源实现了创建、列出、更新和删除 Watcher 审计资源的方法。

在 Watcher 系统中,Audit 是优化 Cluster 的请求。

优化是为了满足给定 Cluster 上的一个 Goal 而完成的。

对于每个 Audit,Watcher 系统都会生成一个 Action Plan

POST
/v1/audits

创建审计

创建一个新的审计资源。

必须提供的属性: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
}
GET
/v1/audits

列出审计

返回审计资源的列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

goal (可选)

查询

字符串

目标 UUID 或名称。

strategy (可选)

查询

字符串

策略的 UUID 或名称。

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个项目看到的 ID。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

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
        }
    ]
}
GET
/v1/audits/detail

列出详细的审计

返回包含完整详细信息的审计资源的列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

goal (可选)

查询

字符串

目标 UUID 或名称。

strategy (可选)

查询

字符串

策略的 UUID 或名称。

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个项目看到的 ID。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

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
        }
    ]
}
GET
/v1/audits/{audit_ident}

显示审计

显示审计的详细信息。

正常响应代码: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
}
PATCH
/v1/audits/{audit_ident}

取消审计

取消一个 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
}
PATCH
/v1/audits/{audit_ident}

更新审计

使用给定的信息更新审计。

正常响应代码: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
}
DELETE
/v1/audits/{audit_ident}

删除审计

删除审计。审计只能从 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 图组成。每个行动可能有父行动,应该在子行动之前执行。

POST
/v1/action_plans/{actionplan_ident}/start

启动行动计划

启动一个创建的行动计划资源。

正常响应代码: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
}
GET
/v1/action_plans

列出行动计划

返回一个行动计划资源列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

audit_uuid (可选)

查询

字符串

可选的审计 UUID,以仅获取该审计的行动。

strategy (可选)

查询

字符串

策略的 UUID 或名称。

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个项目看到的 ID。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

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"
        }
    ]
}
GET
/v1/action_plans/detail

列出详细的行动计划

返回包含完整详细信息的行动计划资源列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

audit_uuid (可选)

查询

字符串

可选的审计 UUID,以仅获取该审计的行动。

strategy (可选)

查询

字符串

策略的 UUID 或名称。

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个项目看到的 ID。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

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
        }
    ]
}
GET
/v1/action_plans/{actionplan_ident}

显示行动计划

显示行动计划的详细信息。

正常响应代码: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
}
PATCH
/v1/action_plans/{actionplan_ident}

取消行动计划

取消一个创建的行动计划资源。

正常响应代码: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
}
DELETE
/v1/action_plans/{actionplan_ident}

删除行动计划

删除一个行动计划。只有在 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 取消

行动 ActionsWatcher Planner 作为审计执行的结果创建。行动 Action 不能被用户创建、修改或删除。

GET
/v1/actions

列出行动

返回一个行动资源列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

action_plan_uuid (可选)

查询

字符串

用于筛选的行动计划的 UUID。

audit_uuid (可选)

查询

字符串

可选的审计 UUID,以仅获取该审计的行动。

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个项目看到的 ID。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

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"
        }
    ]
}
GET
/v1/actions/detail

列出详细的行动

返回包含完整详细信息的行动资源列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

action_plan_uuid (可选)

查询

字符串

用于筛选的行动计划的 UUID。

audit_uuid (可选)

查询

字符串

可选的审计 UUID,以仅获取该审计的行动。

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

marker (可选)

查询

字符串

最后一个项目看到的 ID。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

uuid

body

字符串

资源的 UUID。

action_type

body

字符串

基于特定 API 行动的行动类型。Watcher 中的行动是可插拔的,要查看支持的行动类型列表,请访问 行动插件页面

state

body

字符串

行动状态。

action_plan_uuid

body

字符串

此行动所属的行动计划。

parents

body

数组

父行动的 UUID。

description

body

字符串

行动描述。

input_parameters

body

JSON

由适当的行动类型使用的输入参数。例如,migration 行动会考虑诸如 migration_typedestination_noderesource_idsource_node 等参数。要查看支持的行动类型及其输入参数列表,请访问 行动插件页面

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
        }
    ]
}
GET
/v1/actions/{action_ident}

显示行动

显示行动的详细信息。

正常响应代码: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

由适当的行动类型使用的输入参数。例如,migration 行动会考虑诸如 migration_typedestination_noderesource_idsource_node 等参数。要查看支持的行动类型及其输入参数列表,请访问 行动插件页面

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
}
PATCH
/v1/actions/{action_ident}

跳过行动

通过将其状态更改为 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

由适当的行动类型使用的输入参数。例如,migration 行动会考虑诸如 migration_typedestination_noderesource_idsource_node 等参数。要查看支持的行动类型及其输入参数列表,请访问 行动插件页面

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"
}
PATCH
/v1/actions/{action_ident}

更新行动状态消息

更新已处于 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

由适当的行动类型使用的输入参数。例如,migration 行动会考虑诸如 migration_typedestination_noderesource_idsource_node 等参数。要查看支持的行动类型及其输入参数列表,请访问 行动插件页面

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 的示例

  • 最小化能源消耗

  • 最小化计算节点的数量(整合)

  • 平衡计算节点之间的工作负载

  • 最小化许可成本(某些软件的许可模式基于部署软件的插槽或核心数量)

  • 找到给定主机组(可能是整个可用区)的计划维护的最佳时机:电源更换、冷却系统更换、硬件修改等

GET
/v1/goals

列出目标

返回一个目标资源列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

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"
        }
    ]
}
GET
/v1/goals/detail

列出详细的目标

返回包含完整详细信息的的目标资源列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

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"
        }
    ]
}
GET
/v1/goals/{goal_ident}

显示目标

显示目标的详细信息。

正常响应代码: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)。

GET
/v1/strategies

列出策略

返回策略资源列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

goal (可选)

查询

字符串

目标 UUID 或名称。

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

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"
        }
    ]
}
GET
/v1/strategies/detail

列出策略详情

返回包含完整详情的策略资源列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

goal (可选)

查询

字符串

目标 UUID 或名称。

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

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"
        }
    ]
}
GET
/v1/strategies/{strategy_ident}

显示策略

显示策略资源的详细信息。

正常响应代码: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"
}
GET
/v1/strategies/{strategy_ident}/state

显示策略状态

检索有关策略需求的信息。

正常响应代码: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 服务、其状态以及它们所在的宿主机。

GET
/v1/services

列出服务

返回服务资源列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

id

body

整数

服务的 ID。

name

body

字符串

服务名称,例如 watcher-applier

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"
                }
            ]
        }
    ]
}
GET
/v1/services/detail

列出服务详情

返回包含完整详情的服务资源列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

id

body

整数

服务的 ID。

name

body

字符串

服务名称,例如 watcher-applier

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"
        }
    ]
}
GET
/v1/services/{service_ident}

显示服务

显示服务资源的详细信息。

正常响应代码:200

错误代码:404

请求

名称

入参

类型

描述

service_ident

路径

字符串

服务的 ID 或名称。

响应

名称

入参

类型

描述

id

body

整数

服务的 ID。

name

body

字符串

服务名称,例如 watcher-applier

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) 是一种可执行文件,具有明确的输入、明确的输出,并执行纯粹的数学任务。也就是说,计算不依赖于运行它的环境 - 它会在任何地方产生相同的结果。

由于可能使用多种算法来构建特定的数据模型(因此是评分引擎),因此评分引擎的使用可能会有所不同。元信息字段应该包含给定评分引擎的用户可能需要的任何信息。

GET
/v1/scoring_engines

列出评分引擎

返回评分引擎资源列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

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"
        }
    ]
}
GET
/v1/scoring_engines/detail

列出评分引擎详情

返回包含完整详情的评分引擎资源列表。

正常响应代码:200

错误代码:400,401

请求

名称

入参

类型

描述

limit (可选)

查询

整数

请求一页的项目。返回最多 limit 个项目。使用 limit 参数进行初始有限请求,并在后续有限请求中使用响应中最后一个项目看到的 ID 作为 marker 参数值。

sort_dir (可选)

查询

字符串

按请求的排序方向对响应进行排序。有效值为 asc(升序)或 desc(降序)。默认值为 asc

sort_key (可选)

查询

字符串

按此属性值对响应进行排序。默认值为 id

响应

名称

入参

类型

描述

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": ""
        }
    ]
}
GET
/v1/scoring_engines/{scoring_engine_ident}

显示评分引擎

显示评分引擎资源的详细信息。

正常响应代码: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 轻松查看数据模型。

GET
/v1/data_model

列出数据模型

返回有关数据模型的信息。

正常响应代码: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 版本中添加。

触发基于审计的事件。

POST
/v1/webhooks/{audit_ident}

触发 EVENT 审计

正常响应代码:202

错误代码:400,404

请求

名称

入参

类型

描述

audit_ident

路径

字符串

审计的 UUID 或名称。