def create_image(self, prepare_template, base, size, *args, **kwargs):
        @utils.synchronized(base, external=True, lock_path=self.lock_path)
        def create_lvm_image(base, size):
            base_size = disk.get_disk_size(base)
            self.verify_base_size(base, size, base_size=base_size)
            resize = size > base_size
            size = size if resize else base_size
            libvirt_utils.create_lvm_image(self.vg, self.lv,
                                           size, sparse=self.sparse)
            images.convert_image(base, self.path, 'raw', run_as_root=True)
            if resize:
                disk.resize2fs(self.path, run_as_root=True)

        generated = 'ephemeral_size' in kwargs

        #Generate images with specified size right on volume
        if generated and size:
            libvirt_utils.create_lvm_image(self.vg, self.lv,
                                           size, sparse=self.sparse)
            with self.remove_volume_on_error(self.path):
                prepare_template(target=self.path, *args, **kwargs)
        else:
            prepare_template(target=base, max_size=size, *args, **kwargs)
            with self.remove_volume_on_error(self.path):
                create_lvm_image(base, size)
Example #2
0
    def create_image(self, prepare_template, base, size, *args, **kwargs):
        @lockutils.synchronized(base, 'nova-', external=True,
                                lock_path=self.lock_path)
        def create_lvm_image(base, size):
            base_size = disk.get_disk_size(base)
            resize = size > base_size
            size = size if resize else base_size
            libvirt_utils.create_lvm_image(self.vg, self.lv,
                                           size, sparse=self.sparse)
            cmd = ('dd', 'if=%s' % base, 'of=%s' % self.path, 'bs=4M')
            utils.execute(*cmd, run_as_root=True)
            if resize:
                disk.resize2fs(self.path)

        generated = 'ephemeral_size' in kwargs

        #Generate images with specified size right on volume
        if generated and size:
            libvirt_utils.create_lvm_image(self.vg, self.lv,
                                           size, sparse=self.sparse)
            with self.remove_volume_on_error(self.path):
                prepare_template(target=self.path, *args, **kwargs)
        else:
            prepare_template(target=base, *args, **kwargs)
            with self.remove_volume_on_error(self.path):
                create_lvm_image(base, size)
    def create_image(self, prepare_template, base, size, *args, **kwargs):
        @utils.synchronized(base, external=True, lock_path=self.lock_path)
        def create_lvm_image(base, size):
            base_size = disk.get_disk_size(base)
            self.verify_base_size(base, size, base_size=base_size)
            resize = size > base_size
            size = size if resize else base_size
            libvirt_utils.create_lvm_image(self.vg,
                                           self.lv,
                                           size,
                                           sparse=self.sparse)
            images.convert_image(base, self.path, 'raw', run_as_root=True)
            if resize:
                disk.resize2fs(self.path, run_as_root=True)

        generated = 'ephemeral_size' in kwargs

        #Generate images with specified size right on volume
        if generated and size:
            libvirt_utils.create_lvm_image(self.vg,
                                           self.lv,
                                           size,
                                           sparse=self.sparse)
            with self.remove_volume_on_error(self.path):
                prepare_template(target=self.path, *args, **kwargs)
        else:
            if not os.path.exists(base):
                prepare_template(target=base, max_size=size, *args, **kwargs)
            with self.remove_volume_on_error(self.path):
                create_lvm_image(base, size)
Example #4
0
    def create_image(self, prepare_template, base, size, *args, **kwargs):
        @lockutils.synchronized(base,
                                'nova-',
                                external=True,
                                lock_path=self.lock_path)
        def create_lvm_image(base, size):
            base_size = disk.get_disk_size(base)
            resize = size > base_size
            size = size if resize else base_size
            libvirt_utils.create_lvm_image(self.vg,
                                           self.lv,
                                           size,
                                           sparse=self.sparse)
            cmd = ('dd', 'if=%s' % base, 'of=%s' % self.path, 'bs=4M')
            utils.execute(*cmd, run_as_root=True)
            if resize:
                disk.resize2fs(self.path, run_as_root=True)

        generated = 'ephemeral_size' in kwargs

        #Generate images with specified size right on volume
        if generated and size:
            libvirt_utils.create_lvm_image(self.vg,
                                           self.lv,
                                           size,
                                           sparse=self.sparse)
            with self.remove_volume_on_error(self.path):
                prepare_template(target=self.path, *args, **kwargs)
        else:
            prepare_template(target=base, *args, **kwargs)
            with self.remove_volume_on_error(self.path):
                create_lvm_image(base, size)
Example #5
0
    def _stub_disk(self, nova_disk, size=None):
        disk_file = nova_disk.path
        source_type = nova_disk.source_type

        disk_dir = os.path.dirname(disk_file)
        if source_type == 'file':
            # We need to make sure that the file & directory exists as the
            # openstack user
            mkdir_as(disk_dir, self.openstack_uid)
            touch_as(disk_file, self.openstack_uid)
            os.chown(disk_file, self.openstack_uid, self.openstack_gid)

        elif source_type == 'block':
            # Note(dscannell) it is a requirement for nova that the volume group already
            # exists. However we need to create the LVM
            if size != None:
                libvirt_utils.create_lvm_image(nova_disk.vg,
                                               nova_disk.lv,
                                               size,
                                               sparse=nova_disk.sparse)
            else:
                LOG.warn(
                    _("Unable to determine the size for the lvm %s") %
                    (disk_file))
        else:
            raise exception.NovaException("Unsupported disk type %s" %
                                          (source_type))

        return disk_file
Example #6
0
 def create_lvm_image(base, size):
     base_size = disk.get_disk_size(base)
     resize = size > base_size
     size = size if resize else base_size
     libvirt_utils.create_lvm_image(self.vg, self.lv, size, sparse=self.sparse)
     images.convert_image(base, self.path, "raw", run_as_root=True)
     if resize:
         disk.resize2fs(self.path, run_as_root=True)
Example #7
0
 def create_lvm_image(base, size):
     base_size = disk.get_disk_size(base)
     resize = size > base_size
     size = size if resize else base_size
     libvirt_utils.create_lvm_image(self.vg, self.lv,
                                    size, sparse=self.sparse)
     images.convert_image(base, self.path, 'raw', run_as_root=True)
     if resize:
         disk.resize2fs(self.path, run_as_root=True)
Example #8
0
 def create_lvm_image(base, size):
     base_size = libvirt_utils.get_disk_size(base)
     resize = size > base_size
     size = size if resize else base_size
     libvirt_utils.create_lvm_image(self.vg, self.lv, size, sparse=self.sparse)
     cmd = ("dd", "if=%s" % base, "of=%s" % self.path, "bs=4M")
     utils.execute(*cmd, run_as_root=True)
     if resize:
         disk.resize2fs(self.path)
Example #9
0
 def create_lvm_image(base, size):
     base_size = disk.get_disk_size(base)
     resize = size > base_size
     size = size if resize else base_size
     libvirt_utils.create_lvm_image(self.vg, self.lv,
                                    size, sparse=self.sparse)
     cmd = ('dd', 'if=%s' % base, 'of=%s' % self.path, 'bs=4M')
     utils.execute(*cmd, run_as_root=True)
     if resize:
         disk.resize2fs(self.path)
Example #10
0
 def create_lvm_image(base, size):
     base_size = disk.get_disk_size(base)
     resize = size > base_size
     size = size if resize else base_size
     libvirt_utils.create_lvm_image(self.vg, self.lv,
                                    size, sparse=self.sparse)
     cmd = ('dd', 'if=%s' % base, 'of=%s' % self.path, 'bs=4M')
     utils.execute(*cmd, run_as_root=True)
     if resize:
         disk.resize2fs(self.path, run_as_root=True)
Example #11
0
    def create_image(self, prepare_template, base, size, *args, **kwargs):
        @utils.synchronized(base)
        def create_lvm_image(base, size):
            base_size = libvirt_utils.get_disk_size(base)
            resize = size > base_size
            size = size if resize else base_size
            libvirt_utils.create_lvm_image(self.vg, self.lv, size, sparse=self.sparse)
            cmd = ("dd", "if=%s" % base, "of=%s" % self.path, "bs=4M")
            utils.execute(*cmd, run_as_root=True)
            if resize:
                disk.resize2fs(self.path)

        generated = "ephemeral_size" in kwargs

        # Generate images with specified size right on volume
        if generated and size:
            libvirt_utils.create_lvm_image(self.vg, self.lv, size, sparse=self.sparse)
            with self.remove_volume_on_error(self.path):
                prepare_template(target=self.path, *args, **kwargs)
        else:
            prepare_template(target=base, *args, **kwargs)
            with self.remove_volume_on_error(self.path):
                create_lvm_image(base, size)
Example #12
0
    def _stub_disk(self, nova_disk, size=None):
        disk_file = nova_disk.path
        source_type = nova_disk.source_type

        disk_dir = os.path.dirname(disk_file)
        if source_type == 'file':
            # We need to make sure that the file & directory exists as the
            # openstack user
            mkdir_as(disk_dir, self.openstack_uid)
            touch_as(disk_file, self.openstack_uid)
            os.chown(disk_file, self.openstack_uid, self.openstack_gid)

        elif source_type == 'block':
            # Note(dscannell) it is a requirement for nova that the volume group already
            # exists. However we need to create the LVM
            if size != None:
                libvirt_utils.create_lvm_image(nova_disk.vg, nova_disk.lv,
                    size, sparse=nova_disk.sparse)
            else:
                LOG.warn(_("Unable to determine the size for the lvm %s") %(disk_file))
        else:
            raise exception.NovaException("Unsupported disk type %s" %(source_type))

        return disk_file