为 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