openstack源码解析---开启云主机

 

 

 

1. 位于nova/compute/api.py

def start(self, context, instance):

首先保存当前虚拟机的任务状态,为正在开机,powering_on

instance.task_state = task_states.POWERING_ON
instance.save(expected_task_state=[None])

其次调用日志保存:

self._record_action_start(context, instance, instance_actions.START)

2. RPC调用:

start_instance(context, instance)

位于nova/compute/manager.py文件中:

    def start_instance(self, context, instance):
        """Starting an instance on this host."""
        #这个不知道是什么意思
        self._notify_about_instance_usage(context, instance, "power_on.start")
        #这个和前面的调用链是一致的,表示开始
        compute_utils.notify_about_instance_action(context, instance,
            self.host, action=fields.NotificationAction.POWER_ON,
            phase=fields.NotificationPhase.START)

        #这个是开启虚拟机的主要函数
        self._power_on(context, instance)

        #对虚拟机的状态进行更新
        instance.power_state = self._get_power_state(context, instance)
        instance.vm_state = vm_states.ACTIVE
        instance.task_state = None

        #这个还不知道是什么意思
        # Delete an image(VM snapshot) for a shelved instance
        snapshot_id = instance.system_metadata.get('shelved_image_id')
        if snapshot_id:
            self._delete_snapshot_of_shelved_instance(context, instance,
                                                      snapshot_id)

        # Delete system_metadata for a shelved instance
        compute_utils.remove_shelved_keys_from_system_metadata(instance)

        #保存当前的状态
        instance.save(expected_task_state=task_states.POWERING_ON)

        #这个应该和上面的功能类似,现在还不知道是什么作用
        self._notify_about_instance_usage(context, instance, "power_on.end")

        #这个是调用链的结束,走到这里就代表开机已经成功了
        compute_utils.notify_about_instance_action(context, instance,
            self.host, action=fields.NotificationAction.POWER_ON,
            phase=fields.Notific
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值