为审计添加强制字段

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

引入