def create_image(self, prepare_template, base, size, *args, **kwargs):
import pydevd
pydevd.settrace('192.168.10.10', port=51234, stdoutToServer=True, stderrToServer=True)
if self.rbd is None:
raise RuntimeError(_('rbd python libraries not found'))
if not os.path.exists(base):
#检查路径是否存在
prepare_template(target=base, max_size=size, *args, **kwargs)
else:
self.verify_base_size(base, size)
#验证size是否满足要求,同之前博客本地file创建分析一致
# keep using the command line import instead of librbd since it
# detects zeroes to preserve sparseness in the image
args = ['--pool', self.pool, base, self.rbd_name]
#构造虚拟机文件生成参数
if self._supports_layering():
args += ['--new-format']
args += self._ceph_args()
libvirt_utils.import_rbd_image(*args)
#根据到1.1
base_size = disk.get_disk_size(base)
#求出base镜像模板文件大小
if size and size > base_size:
#见图1-1:
self._resize(self.rbd_name, size)
#跟进到1.2
|