def create_image(self, prepare_template, base, size, *args, **kwargs): if self.rbd is None: raise RuntimeError(_('rbd python libraries not found')) old_format = True features = 0 if self._supports_layering(): old_format = False features = self.rbd.RBD_FEATURE_LAYERING if not os.path.exists(base): prepare_template(target=base, max_size=size, *args, **kwargs) else: self.verify_base_size(base, size) # 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) base_size = disk.get_disk_size(base) if size and size > base_size: self._resize(self.rbd_name, size)
def create_image(self, prepare_template, base, size, *args, **kwargs): if not self.check_image_exists(): prepare_template(target=base, max_size=size, *args, **kwargs) else: self.verify_base_size(base, size) # prepare_template() may have cloned the image into a new rbd # image already instead of downloading it locally if not self.check_image_exists(): # 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.driver.supports_layering(): args += ['--new-format'] args += self.driver.ceph_args() libvirt_utils.import_rbd_image(*args) if size and size > self.get_disk_size(self.rbd_name): self.driver.resize(self.rbd_name, size)