添加 Show Datamodel API¶
https://blueprints.launchpad.net/watcher/+spec/show-datamodel-api
问题描述¶
数据模型对于 Watcher 生成资源优化方案非常重要。目前,只能通过查看日志文件找到它,这非常不方便。因此,有必要添加一个 API,以便用户能够快速查看内存中的当前数据模型。
用例¶
作为 Watcher 用户,我希望使用“显示数据模型 API”来查看指定范围内实例的信息。
提议的变更¶
我们可以参考 “策略列表” 命令,在 python-watcherclient 中添加命令行界面。收到请求后,watcher-api 调用 watcher-decision-engine 来检索有关数据模型的信息,然后解析并返回。
watcherclient 中使用的命令行界面可以如下所示
openstack optimize datamodel list [–audit <audit_uuid>]
[–type <type>] [–detail]
在 watcherclient 中,我们可以添加 “data_model.py,data_model_shell.py” 来发送数据模型列表请求并接收结果。
在 watcher-api 中,我们可以添加 “data_model.py” 来接收 python-watcherclient 的请求并调用 watcher-decision-engine 模块。
在 watcher-decision-engine 中,我们可以根据指定的范围和类型获取数据模型数据,然后解析数据模型并返回给 watcher-api。
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
添加以下 数据模型 REST
GET /v1/data_model
正常的 http 响应代码(200)
预期的错误 http 响应代码 (400,401)
请求
audit_uuid (可选):审计的 UUID
type (可选):用户想要列出的数据模型类型
响应
server_uuid:服务器的 UUID
server_name:服务器名称
server_vcpus:服务器 vcpu 数量
server_memory:服务器内存
server_disk:服务器磁盘
server_state:服务器状态
node_uuid:节点的 UUID
node_hostname:节点名称
node_vcpus:节点 vcpu 数量
node_vcpu_ratio:节点的 vcpu 比率
node_memory:节点内存
node_memory_ratio:节点的内存比率
node_disk:节点磁盘
node_disk_ratio:节点的磁盘比率
node_state:节点状态
计算数据模型的示例 JSON 表示
{
"context": [
{
"server_uuid": "1bf91464-9b41-428d-a11e-af691e5563bb",
"server_name": "chenke-test1",
"server_vcpus": "1",
"server_memory": "512",
"server_disk": "1",
"server_state": "active",
"node_uuid": "253e5dd0-9384-41ab-af13-4f2c2ce26112",
"node_hostname": "localhost.localdomain",
"node_vcpus": "4",
"node_vcpu_ratio": "16.0",
"node_memory": "16383",
"node_memory_ratio": "1.5",
"node_disk": "37"
"node_disk_ratio": "1.0",
"node_state": "up",
},
{
"server_uuid": "e2cb5f6f-fa1d-4ba2-be1e-0bf02fa86ba4",
"server_name": "chenke-test2",
"server_vcpus": "1",
"server_memory": "512",
"server_disk": "1",
"server_state": "active",
"node_uuid": "253e5dd0-9384-41ab-af13-4f2c2ce26112",
"node_hostname": "localhost.localdomain",
"node_vcpus": "4",
"node_vcpu_ratio": "16.0",
"node_memory": "16383",
"node_memory_ratio": "1.5",
"node_disk": "37"
"node_disk_ratio": "1.0",
"node_state": "up",
}
]
}
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
用户可以通过以下命令在 python-watcherclient 中查看数据模型
watcher datamodel list
并添加 audit 参数以过滤指定范围内的 datamodel
watcher datamodel list [–audit <audit_uuid>]
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
<chenker>
- 其他贡献者
<li-canwei2> , <yumeng-bao>
工作项¶
在 watcherclient 中添加 watcher datamodel list 命令行界面。
在 watcher-api 中添加对来自 watcherclient 的请求的验证和处理。
在 watcher-decision-engine 中添加数据模型的解析、封装和返回。
依赖项¶
无
测试¶
对 watcher-decision-engine、python-watcherclient、watcher-api 进行单元测试。
文档影响¶
一份解释如何使用 watcher datamodel list [–audit <audit_uuid>] [–type <type>] [–detail] 的文档
更新 API 参考
更新 REST API 版本历史记录
参考资料¶
无
历史¶
发布名称 |
描述 |
|---|---|
Stein |
引入 |
Train |
更新 |