예제 #1
0
파일: image.py 프로젝트: griddynamics/nova
 def _assert_image_not_larger(self, base, size):
     """
     Asserts that given base image isn't larger than resulting image
     :param base: base image's path
     :param size: target size in bytes, can be None
     """
     # do not perform assertion if size wasn't given
     if not size:
         return
     base_image_size = images.virtual_size(base)
     LOG.debug(_("image_size_bytes=%(base_image_size)d, "
                 "allowed_size_bytes=%(size)d") % locals())
     if base_image_size > size:
         LOG.info(_("Image size %(base_image_size)d exceeded instance_type "
                    "allowed size %(size)d") % locals())
         raise exception.ImageTooLarge()
예제 #2
0
파일: image.py 프로젝트: griddynamics/nova
    def create_from_raw(self, base, size=None):
        """
            Creating volume from raw image.
        """
        self._assert_image_not_larger(base, size)
        if not size:
            size = images.virtual_size(base)
        target = self.path()

        self.create_clean(size)

        LOG.info(_("disk %s converting to lvm volume %s"), (base, self.lv))
        utils.execute('qemu-img', 'convert', base, '-O',
                      'raw', target, run_as_root=True)
        utils.execute('e2fsck', '-fp', target,
                      run_as_root=True, check_exit_code=False)
        utils.execute('resize2fs', target,
                      run_as_root=True, check_exit_code=False)
예제 #3
0
파일: image.py 프로젝트: griddynamics/nova
 def resize(self, size):
     if images.virtual_size(self.path())  != size:
         utils.execute('lvresize', '-f','-L', '%db' % size, self.path(), run_as_root=True)
예제 #4
0
파일: image.py 프로젝트: griddynamics/nova
 def make_snapshot(self, virt_domain, snapshot_name, force_live_snapshot):
     size = images.virtual_size(self._path)
     return LvmSnapshot(virt_domain, self.vg,
                        snapshot_name, size,
                        self.path(), force_live_snapshot)