选择目标地过滤器

包含您的 Launchpad 蓝图的 URL

https://blueprints.launchpad.net/watcher/+spec/select-destinations-filter

Watcher 旨在提供一个开放的解决方案,用于审计任何资源池并优化它,通过推荐的 动作

此蓝图旨在处理在进行实时迁移时找到最佳目标主机的能力,作为 Watcher 的一个动作。 目前,主机过滤的动作是在 策略 内部完成的,但应该作为所有策略的通用函数来完成。

这项工作将允许代码重构,并使维护更容易,如果 Nova 方法 select_destinations(self, context, spec_obj) 演进的话。

问题描述

目前,在虚拟机迁移的情况下,目标主机的过滤是在策略中完成的,但此函数应该作为 Watcher 中的一个独立函数提供,以便任何策略开发者都可以依赖于一个过滤函数。 该函数将由 Watcher 团队维护,并与 Nova 中的 select_destinations(self, context, spec_obj) 方法密切相关。

用例

这是一项纯粹的重构工作,用于清理所有代码并将其从基本的整合策略移动到一个通用的 select_destinations(self, hypervisors) 方法。

项目优先级

不相关,因为 Watcher 目前不在大型帐篷内。

提议的变更

将方法 check_migration(self, model, src_hypervisor, dest_hypervisor, vm_to_mig)) 的代码从 watcher/decision_engine/strategy/strategies/basic_consolidation.py 移出策略实现,以便能够从 Watcher 中可用的任何策略中使用它。

将此方法重命名为 select_destinations(self, hypervisors) 并更新它以处理一个可能的计算节点列表作为输入,该列表将根据每个计算节点的可用容量进行过滤。

提供一种方便的方法来添加 select_destinations(self, hypervisors) 的新实现。

备选方案

一种替代方案是直接通过 RPC 调用 Nova 的 select_destinations(self, context, spec_obj) 方法,但在与 Nova 团队通过 IRC [1] 的讨论之后,由于 Nova 侧的性能问题,这不是一个可行的解决方案。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

策略开发者必须依赖这个新方法来处理在迁移情况下目标主机的过滤作为一项动作。

实现

负责人

主要负责人

<launchpad-id 或 None>

其他贡献者

<launchpad-id 或 None>

工作项

  • 将方法 score_of_nodes(self, current_model, score) 的代码从 watcher/decision_engine/strategy/strategies/basic_consolidation.py 移出策略实现,以便能够从 Watcher 中可用的任何策略中使用它。

  • 将该方法重命名为 select_destinations(self, hypervisors)

  • 提供一个 stevedore 扩展来动态加载 select_destinations(self, hypervisors) 的实现。

  • 重构现有策略以使用 select_destinations(self, hypervisors) 方法。

  • 使其可供每个策略开发者使用。

依赖项

测试

  • 在将该方法移出基本整合策略后,现有的单元测试应该继续通过。

  • 我们还应该从另一个策略加载 select_destinations(self, hypervisors) 并验证主机过滤是否仍然有效。

  • 需要单元测试来动态加载 select_destinations(self, hypervisors) 实现,使用 stevedore。

  • 还必须提供单元测试来执行 select_destinations(self, hypervisors)

文档影响

生成的文档的 构建新的优化策略 页面必须更新,以解释如何在实现新策略时使用 select_destinations(self, hypervisors) 方法。

参考资料

历史