为 smth 添加无限轮询超时

https://blueprints.launchpad.net/sahara/+spec/add-timeouts-for-polling

Sahara 代码中存在针对 smth 的无限轮询过程。为它的执行添加超时会很有帮助

问题描述

在创建集群时,集群状态可能会卡在 Waiting 状态,并且如果网络配置错误,将始终等待网络。我们可以为所有可能的轮询过程添加可配置的超时时间。

提议的变更

您可以在此处找到 Sahara 代码中所有轮询过程的列表

对于 service 模块

  • volumes._await_attach_volumes

  • volumes._create_attach_volume

  • volumes._detach_volume

  • engine._wait_until_accessible

  • engine._await_networks

  • direct_engine._await_active

  • direct_engine._await_deleted

  • edp.job_manager.cancel_job

对于 utils 模块

  • openstack.heat.wait_stack_completion

对于 cdh 插件

  • cloudera_utils.await_agents

  • plugin_utils.start_cloudera_manager

对于 hdp 插件

  • _wait_for_async_request 对于插件的两个版本

  • wait_for_host_registrations 对于插件的两个版本

  • decommission_cluster_instances 对于 2.0.6 版本handler

对于 spark 插件

  • scaling.decommission_dn

对于 vanilla 插件

  • hadoop2.scaling._check_decommission

  • hadoop2.await_datanodes

  • v1_2_1.scaling.decommission_dn

  • v1_2_1.versionhandler._await_datanodes

提议的更改将包含以下步骤

  • 在 sahara/utils 中添加新的模块 polling_utils,用于注册来自 service 和 utils 模块的轮询过程的新超时选项。它还将包含一个用于轮询的特定通用工具。例如,它可以从 https://github.com/openstack/sahara/blob/master/sahara/utils/general.py#L175 移动。

  • 在 sahara.conf.sample 中添加一个新部分,其中包含所有超时时间。

  • 所有插件特定的选项将仅与该插件相关,并且也将可配置。用户还能够在创建集群模板期间配置所有插件特定的选项。

替代方案

数据模型影响

此更改不需要任何数据模型修改。

REST API 影响

此更改不需要任何 REST API 修改。

其他最终用户影响

用户将能够单独配置所有超时时间。一些选项可以通过 sahara.conf.sample 进行配置,其他选项可以在创建集群模板期间从插件进行配置。

部署者影响

开发者影响

Sahara-image-elements impact

Sahara-dashboard / Horizon 影响

在创建集群模板期间,用户将能够从 UI 配置插件特定的选项。

实现

负责人

主要负责人

vgridnev

工作项

  • 将通用轮询工具添加到 sahara/utils/polling_utils

  • 将这些更改应用于所有插件和 Sahara 引擎。

依赖项

取决于当前 Openstack 数据处理需求。

测试

此更改需要添加单元测试。此更改还将手动进行测试。

文档影响

需要在 sahara/userdoc/configuration.guide 中记录此功能。

参考资料

[1] https://bugs.launchpad.net/sahara/+bug/1402903 [2] https://bugs.launchpad.net/sahara/+bug/1319079