深挖Openstack Nova - 实例创建(2)

本文深入探讨了OpenStack Nova在实例创建过程中的细节,重点关注show方法的分析,包括设置glance客户端版本、调用call方法连接glance、验证及转换image数据,以及处理location信息。同时,文章还剖析了call方法中的异常处理和重试机制,详细解释了如何建立和使用正确的glance客户端。
摘要由CSDN通过智能技术生成

--------------- 紧接上篇 nova实例创建(1) --------------------


3. 分析show方法

在2.1中的image = self.image_service.show(context, internal_id)中,由于S3是EC2的存储平台,所以调用/nova/image/s3.py的show方法

def show(self, context, image_id):
    # 参数image_id:实例镜像的ID值,是由ec2_id值变换格式后而来
    # id_to_glance_id:根据实例镜像image_id,查询数据库,找到匹配的S3Image的表信息
    # 获取它的S3Image.uuid并返回,赋值给image_uuid
    image_uuid = ec2utils.id_to_glance_id(context, image_id)

    # 这里的service是获取的service或者是GlanceImageService的对象
    #(由glance.get_default_image_service()而来)
    iamge = self.service.show(context, image_uuid)

    # 转换镜像中的image_uuid到image_id
    # 更新image当中的相关属性,返回更新后的image数据
    return self._translate_uuid_to_id(context, image)

其中,在image = self.service.show(context, image_uuid)中可查到:

self.service = service or glance.get_default_image_service()

这里的get_default_image_service()对应的是/nova/image/glance.py文件。

可以看到,这里的service获取的类GlanceImageService的实例对象,调用的是该对象里面的show方法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值