Vitrage 获取拓扑 API¶
https://blueprints.launchpad.net/vitrage/+spec/vitrage-api-get-topology
Vitrage 需要提供一个 API 来列出完整的或部分资源和告警拓扑。
问题描述¶
我们希望能够检索 Vitrage 拓扑,其中将包括资源及其相应的告警
提议的变更¶
创建 API 以检索资源和告警拓扑
检索完整的拓扑。
使用过滤器列出部分拓扑
给定元素的完全连接组件
给定元素的连接组件,根据特定类型(例如标签和属性)的边进行过滤
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
列出版本¶
列出 Vitrage API 支持的版本。
GET /¶
头部¶
X-Auth-Token (字符串, 必需) - Keystone 认证令牌
Accept (字符串) - application/json
路径参数¶
无。
查询参数¶
无。
请求体¶
无。
请求示例¶
GET / HTTP/1.1
Host: 135.248.19.18:8999
X-Auth-Token: 2b8882ba2ec44295bf300aecb2caa4f7
Accept: application/json
响应¶
状态码¶
200 - 确定
响应体¶
返回一个 JSON 对象,其中包含一个 ‘links’ 数组,包含支持版本的链接。
响应示例¶
{
"versions": [
{
"id": "v1.0",
"links": [
{
"href": "http://135.248.19.18:8999/v1/",
"rel": "self"
}
],
"status": "CURRENT",
"updated": "2015-11-29"
}
]
}
获取拓扑¶
获取节点的拓扑。可以过滤边的顶点和图的深度
GET /v1.0/topology/¶
头部¶
X-Auth-Token (字符串, 必需) - Keystone 认证令牌
Accept (字符串) - application/json
路径参数¶
无。
查询参数¶
edges (字符串(255), 可选) - 要过滤的边的名称。
vertices (字符串, 可选) - 要过滤的顶点的名称。
depth (整数, 可选) - 所需的图深度。
graph type ([tree,graph], 可选) - 所需的图类型,默认为 graph
请求体¶
无。
请求示例¶
GET /v1/topology/?graph_type=tree&depth=4&edges=vm&edges=host&edges=zone
&vertices=contains
Host: 135.248.19.18:8999
Content-Type: application/json
X-Auth-Token: 2b8882ba2ec44295bf300aecb2caa4f7
响应¶
状态码¶
200 - 确定
400 - 请求错误
响应体¶
返回一个 JSON 对象,描述一个包含节点和链接的图。如果请求树形表示,则返回一个包含节点和子节点的 Json 树。
如果图不是树,将返回一个无法表示为树的错误。(400 - 请求错误)
响应示例¶
{
"children": [
{
"children": [
{
"children": [
{
"id": 16,
"name": "vm5",
"state": "ERROR"
},
{
"id": 23,
"name": "vm12",
"state": "SUBOPTIMAL"
}
],
"id": 8,
"name": "host4",
"state": "SUBOPTIMAL"
},
{
"children": [
{
"id": 26,
"name": "vm15",
"state": "SUBOPTIMAL"
},
{
"id": 19,
"name": "vm8",
"state": "ERROR"
},
{
"id": 12,
"name": "vm1",
"state": "RUNNING"
}
],
"id": 5,
"name": "host1",
"state": "SUBOPTIMAL"
}
],
"id": 1,
"name": "zone0",
"state": "ERROR"
},
{
"children": [
{
"children": [
{
"id": 21,
"name": "vm10",
"state": "RUNNING"
},
{
"id": 14,
"name": "vm3",
"state": "SUBOPTIMAL"
}
],
"id": 10,
"name": "host6",
"state": "ERROR"
},
{
"children": [
{
"id": 20,
"name": "vm9",
"state": "SUBOPTIMAL"
},
{
"id": 13,
"name": "vm2",
"state": "ERROR"
}
],
"id": 4,
"name": "host0",
"state": "ERROR"
},
{
"children": [
{
"id": 24,
"name": "vm13",
"state": "RUNNING"
},
{
"id": 17,
"name": "vm6",
"state": "SUBOPTIMAL"
}
],
"id": 7,
"name": "host3",
"state": "ERROR"
}
],
"id": 2,
"name": "zone1",
"state": "SUBOPTIMAL"
},
],
"id": 0,
"name": "node1",
"state": "RUNNING"
}
安全影响¶
无
流水线影响¶
无
其他最终用户影响¶
无
性能/可扩展性影响¶
无
其他部署者影响¶
无
开发者影响¶
无
实现¶
负责人¶
- 主要负责人
dan-ofek <dan.ofek@alcatel-lucent.com>
工作项¶
无
未来生命周期¶
无
依赖项¶
取决于图和同步器的蓝图
测试¶
还需要添加 Tempest 测试来测试“获取完整拓扑”和“获取部分拓扑”API。
文档影响¶
新的 api 应该被记录
参考资料¶
无