为每个 CDM 定义定制的 Scoper

https://blueprints.launchpad.net/watcher/+spec/cdm-scoping

问题描述

存储集群数据模型是在 Pike 周期中引入的。由于该模型与计算数据模型不同,当前的单个 CDM scoper 对该模型不起作用。

用例

作为 Watcher 用户,我希望限制存储集群数据模型的范围。

提议的变更

  • 在 BaseClusterDataModelCollector 中添加 _audit_scope 实例属性,并在实例化时进行初始化。

  • 从当前的 BaseStrategy 中移除 audit_scope_handler,并将其移动到 BaseClusterDataModelCollector 中。

  • 将 audit_scope 参数添加到 CollectorManager 的 get_cluster_model_collector 方法中。

  • 更改 compute_model 方法以使用 Collector 的 audit_scope_handler。

  • 更改原始 DefaultScope。

    • get_scoped_model 简单地返回 cluster_model。

    • 为了表示 JSON schema 的多数据模型,我们将 DEFAULT_SCHEMA 更改为如下所示

      DEFAULT_SCHEMA = {
          "$schema": "https://schema.json.js.cn/draft-04/schema#",
          "type": "object",
          "properties": {
              "compute": {
                  # current JSON schema moved to NovaClusterDataModelCollector
                  # retrieved from NovaClusterDataModelCollector
              },
              "storage": {
                  # retrieved from CinderClusterDatamodelCollector
              },
              .......
          }
      }
      

      属性将从 collector 插件中动态检索。

    • 根据上述更改更新 AuditTemplatePostType 中的 validate 方法。

  • 将 DefaultScope 重命名为 ComputeScope,并在 Compute Collector 中覆盖 audit_scope_handler 属性。

  • 更改 python-watcherclient 中的 audit template 帮助消息。

备选方案

数据模型影响

REST API 影响

根据 DEFAULT_SCHEMA 的更改,来自请求体的 audit template POST 数据的 Scope JSON schema 定义将被更改。

安全影响

通知影响

其他最终用户影响

最终用户通过在每个 audit template 中指定带有 –scope 选项的 yaml 或 json 文件来定义 audit 范围。文件格式将根据 JSON schema 的更改而更改。

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

<nakamura-h>

其他贡献者

<None>

工作项

  • 在基类中添加或移除 audit_scope 和 audit_scope_handler。

  • 更改原始 DefaultScope。

  • 更改 Compute Collector 以使用 ComputeScope 代替 DefaultScope。

  • 更改 python-watcherclient。

依赖项

测试

将更新单元测试。

文档影响

没有,但最好添加更多。

参考资料