为审计添加强制字段¶
https://blueprints.launchpad.net/watcher/+spec/add-force-field-to-audit
问题描述¶
目前,当存在进行中的行动计划时,Watcher 不允许启动新的审计。这是因为如果新的审计具有与进行中的行动计划相同的数据模型,新的审计可能会创建错误的行动计划。但如果数据模型范围不同,我们应该允许新的审计运行。
用例¶
作为 Watcher 用户,我希望即使存在进行中的行动计划也能启动审计。
提议的变更¶
我们需要在审计表中添加一个新的字段 force。如果 force 为 True,Watcher 将执行审计,即使存在其他行动计划正在进行。
def pre_execute(self, audit, request_context):
LOG.debug("Trigger audit %s", audit.uuid)
if audit.force is False:
self.check_ongoing_action_plans(request_context)
# Write hostname that will execute this audit.
audit.hostname = CONF.host
# change state of the audit to ONGOING
self.update_audit_state(audit, objects.audit.State.ONGOING)
默认值为 False。我们还需要在审计后 API 中添加一个选项,以便用户可以设置 force 字段的值。使用 force 创建审计的 CLI 示例
$ watcher audit create -g dummy --force
备选方案¶
无
数据模型影响¶
在审计表中添加新的 force 字段
REST API 影响¶
需要在 Audits APIs 中添加新的 force 参数。
安全影响¶
无
通知影响¶
将 force 添加到 AuditPayload
audit.create
{
"priority": "INFO",
"payload": {
"watcher_object.data": {
"audit_type": "ONESHOT",
"parameters": {
"para2": "hello",
"para1": 3.2
},
"state": "PENDING",
"updated_at": null,
"deleted_at": null,
"interval": null,
"scope": [],
"force": False,
"created_at": "2016-11-04T16:29:20Z",
"uuid": "4a97b9dd-2023-43dc-b713-815bdd94d4d6"
},
"watcher_object.name": "AuditCreatePayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"publisher_id": "infra-optim:localhost",
"timestamp": "2016-11-04 16:31:36.264673 ",
"event_type": "audit.create",
"message_id": "cbcf9f2c-7c53-4b4d-91ec-db49cca024b6"
}
其他最终用户影响¶
需要在 CLI ‘watcher audit create’ 中添加 force
还需要更新 watcher-dashboard
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
licanwei
工作项¶
更新架构文档以添加新字段
在审计表中添加新的 force 字段
在运行审计之前检查 force 的值
更新 Watcher API 版本
更新 notification AuditPayload
更新 python-watcherclient
更新 watcher-dashboard
依赖项¶
无
测试¶
所有更改的单元测试
文档影响¶
更新架构文档以添加新字段。
参考资料¶
无
历史¶
发布名称 |
描述 |
|---|---|
Train |
引入 |