OpenStack之Nova分析——创建虚拟机(二)

接着上篇文章,我们来继续分析_create_instance方法。这个方法定义在nova/nova/compute/api.py中。

class API(base.Base):
    def _create_instance(self,context,instance_type,
                         ...):
        ...
        #验证客户端传入参数,做虚拟机创建前的准备工作
        (instances,request_spec,filter_properties) = self._validate_and_provision_instance(context,
                                                                                           instance_type,
                                                                                           ...)
        for instance in instances:
            #更新InstanceAction表记录
            self._record_action_start(context,instance,instance_actions.CREATE)
        #向Nova Scheduler服务发送RPC请求,创建虚拟机
        self.scheduler_rpcapi.run_instance(context,...)
        return (instances,reservation_id)
可以看到_create_instance方法包括三个步骤:1.调用_validate_and_provision_instance方法完成虚拟机创建的准备工作。2.调用_record_action_start方法更新数据库中InstanceAction表的记录,将虚拟机状态改为“开始创建”。3.调用scheduler_rpcapi.run_instance方法,向Nova Scheduler服务发送RPC请求,将虚拟机创建请求交给Nova Scheduler服务处理。

1. _validate_and_provision_instance

这个方法非常重要,它主要完成的是对输入的各个参数的检验,其中完成了一个非常重要的任务,就是资源的配额管理。该方法的定义如下。

class API(base.Base):
    def _validate_and_provision_instance(self,context,instance_type,
                                         ...):
        #一些参数的验证和初始化
        if not metadata:
            metadata = {}
        if not security_group:
            security_group = 'default'
        ...
        #如果客户端没有指定虚拟机规格,则使用默认的格式
        if not instance_type:
            instance_type = instance_type.get_default_instance_type()
        ...
        #根据配额资源限制计算所要建立实例的数目,并获取了分配好的资源(块存储)的UUID的列表
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值