多个全局效能指标

https://blueprints.launchpad.net/watcher/+spec/multiple-global-efficacy-indicator

问题描述

Watcher 目前将全局效能计算为一个单一值,并使用可用的效能指标。这对于仅优化单个 OpenStack 资源的策略非常有用。对于优化多个资源的策略,需要多个全局效能指标,因为每个全局效能指标将代表一种资源。例如,有两个策略同时优化存储和计算,云管理员会检查这两个策略的全局效能值,并选择较高的那个。但实际上,云管理员可能希望选择计算优化效果更好的策略,由于全局效能是一个单一实体,它无法仅反映计算优化效果。有可能用户会选择全局效能更高的策略,但实际上其值更高是因为存储效能。因此,最好为每个资源提供多个全局效能指标。

用例

作为 Watcher 用户,为了更好地选择策略,我希望拥有多个全局效能指标,每个指标代表一种资源。

提议的变更

  • 在 Efficacy 类中将全局效能初始化为列表。

  • 从 EfficacySpecification 返回以下格式的全局效能。它将是 efficacy.Indicator 类的对象列表

    [(efficacy.Indicator(name='', description='', unit='', value='')),
     (efficacy.Indicator(name='', description='', unit='', value='')),
    ]
    
  • 更改 python-watcherclient 中的 format_global_efficacy 方法的解析方式

  • 更改 ActionPlan 数据模型,因为全局效能之前是 JSONEncodedDict,现在将是 JSONEncodedList。

备选方案

我们可以将全局效能保持为单一实体,让用户使用效能指标基于资源计算多个值。

数据模型影响

REST API 影响

全局效能 JSON 模式将会改变。它将影响以下 API:

GET /v1/action_plans/(action_plan_uuid)
GET /v1/action_plans/detail
GET /v1/action_plans

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

<adi-sky>

其他贡献者

<None>

工作项

  • 在 watcher.decision_engine.solution.efficacy.Efficacy 中将 global_efficacy 初始化为列表

  • 更新 ActionPlan 数据模型。

  • 更新 watcher.decision_engine.goal.efficacy.specs.ServerConsolidation 中的 get_global_efficacy_indicator 方法

  • 在 python-watcherclient 中更新。

依赖项

测试

将更新单元测试。

文档影响

更新目标插件的贡献者指南。 https://docs.openstack.org/watcher/latest/contributor/plugin/goal-plugin.html#implementation

参考资料