为 Watcher 数据模型添加范围¶
https://blueprints.launchpad.net/watcher/+spec/scope-for-watcher-datamodel
问题描述¶
对于像 CERN 这样的大型云基础设施,服务器数量超过 10k,从 Nova 获取数据来构建 Watcher 计算数据模型可能需要很长时间。如果审计只需要对所有节点的一个子集进行,那么从审计需要的节点获取数据会更好。
用例¶
作为 Watcher 用户,我希望 Watcher 在创建审计之前不要构建计算数据模型。作为 Watcher 用户,我希望 Watcher 根据审计的范围构建计算数据模型。
提议的变更¶
目前,Watcher 在启动决策引擎时构建计算数据模型。并且有一个定期任务来重建数据模型。为了避免在创建审计之前构建数据模型,我们需要在构建数据模型之前检查一个标志。例如
def execute(self):
"""Build the compute cluster data model"""
if self._audit_scope_handler is None:
LOG.debug("No audit, Don't Build compute data model")
return
builder = ModelBuilder(self.osc)
return builder.execute(self._data_model_scope)
审计范围是在创建审计时的一个可选参数。如果用户没有设置范围,默认范围为空,这意味着此审计适用于所有节点。审计范围的一个例子
{"compute":
[{"host_aggregates": [
{"id": 1},
{"id": 2},
{"id": 3}]},
{"availability_zones": [
{"name": "AZ1"},
{"name": "AZ2"}]},
}
在根据审计范围构建数据模型时,需要考虑一些情况
没有数据模型,审计范围为空¶
这是第一次构建数据模型。因为审计范围为空,数据模型应该包含所有节点。
没有数据模型,审计范围不为空¶
这是第一次根据审计范围构建数据模型。
现有数据模型,新的审计范围为空¶
如果数据模型已经包含所有节点,则不会重建。
如果数据模型不包含所有节点,则会重建。
现有数据模型,新的审计范围不为空¶
如果范围中指定的节点已经包含在数据模型中,则不会重建。
如果范围中指定的节点未包含在数据模型中,则会重建。
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
这将减少对系统性能的影响,尤其是在大型云基础设施中。
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
<licanwei>
工作项¶
在构建数据模型之前,添加一个检查来创建审计。
在 ModelBuilder 类中添加模型范围来记录审计范围。
根据审计范围更新数据模型。
依赖项¶
无
测试¶
添加单元测试。
文档影响¶
更新 Watcher 开发人员文档。
参考资料¶
无
历史¶
发布名称 |
描述 |
|---|---|
Stein |
引入 |