本文分享自天翼云开发者社区《创建云主机你不知道的那些事》,作者:乐道
在界面上简简单单点击了一下创建云主机,但是后台发生了什么?大家清楚吗?本文将详细为大家讲述整个云主机创建的流程
1、根据资源ID查询云主机基础信息表,如果该表里面存在云主机相关信息,会抛出异常(应该只是针对云主机名称重复场景)
2、上述云主机表查询云主机信息不存在,之后便会会生成云主机名称和云主机展示名称信息,同时生成云主机的一些其他基础信息(这块是创建云主机传入的一些参数信息)
3、前置校验如果走到克隆场景,克隆的话会校验被克隆的云主机是否存在(即云主机A是否存在),云主机A不存在抛异常
4、前置校验image镜像是否存在,不存在抛异常
5、前置校验flavor规格是否存在,不存在抛异常
6、根据image镜像和flavor规格,来更新云主机基础信息表
7、调用底层余量校验查询,如果余量不足的话,会抛异常,如果余量查询服务有问题,忽略继续往下进行(不会因为余量查询服务异常导致最终创建云主机失败)
8、网卡创建,调用网络的接口
9、前置系统盘创建,调用存储的接口
9.1、是否存在vm_clone参数,如果这个参数为1,说明走的是克隆流程,需要先创建云主机快照,如果vm_clone参数为0,说明非克隆流程(其中克隆云主机和通过快照创建云主机基本流程一致,唯一的区别是克隆云主机是先创建快照,再通过快照创建云主机,之后再删除快照)
9.2、判断入参是否有快照id或者是否为克隆场景,如果均不是的话,说明就是普通的云主机创建场景或者备份创建云主机场景
9.3、判断入参是否有系统盘id,有的话就是普通云主机创建场景,没有的话就是备份创建云主机场景
9.4、判断入参是否有备份id,有的话通过备份id创建系统盘
10、网卡和系统盘创建完之后,会通过是否有网卡和数据盘来决定only_define参数的值,当only_define=true,创建完云主机后需要将云主机关机,再挂载网卡和数据盘,之后再开机,如果only_define=false,创建完云主机就直接开机
11、之后判断入参是否有云主机组,有的话将云主机加入到云主机组中,更新云主机基础信息表
12、查询网卡信息,更新网卡信息表
13、根据传入的安全组,对云主机进行绑定和解绑安全组
14、创建并绑定eip
15、数据盘创建和绑定,关机情况下挂载数据盘
16、判断是否为克隆云主机场景,是的话,删除快照,然后再开机,如果不是克隆场景,继续往下走
截止到这块,云主机就创建出来了,大家都懂了吗?