上篇文章我们分析了update_available_resourced定时任务,这篇文章我们来继续分析Nova Compute定时任务——report_driver_status和publish_service_capabilities定时任务。
一、report_driver_status定时任务
report_driver_status定时任务的主要功能是定时更新ComputeManager对象缓存的计算节点的capabilities信息。一个计算节点上的capabilities信息包括节点的硬件资源信息和hypervisor支持的特性。report_driver_status定时任务对应于ComputeManager类的_report_driver_status周期方法,该方法的定义如下
class ComputeManager(manager.SchedulerDependentManager):
@manager.periodic_task
def _report_driver_status(self, context):
#获取当前时间
curr_time = time.time()
#如果ComputeManager对象缓存的capabilities已经过期
if curr_time - self._last_host_check > CONF.host_state_interval:
self._last_host_check = curr_time
#获取最新的capabilities信息
capabilities = self.driver.get_host_stats(refresh=True)
for capability in (capabilities if isinstance(capabilities, list)