Comment 0 for bug 1358552

Revision history for this message
warewang (wangguangcai) wrote :

The logical volume can not be removed when create VM error. I look at the code, found that parameter is a list in the libvirt's lvm, but in imagebackend, parameters passed is a string.

in the Libvirt's LVM
def remove_volumes(paths): ## #the path is list
    """Remove one or more logical volume."""

    errors = []
    for path in paths:
        clear_volume(path)
        lvremove = ('lvremove', '-f', path)
        try:
            utils.execute(*lvremove, attempts=3, run_as_root=True)
        except processutils.ProcessExecutionError as exp:
            errors.append(str(exp))
    if errors:
        raise exception.VolumesNotRemoved(reason=(', ').join(errors))

in the imagebackend's LVM
 @contextlib.contextmanager
    def remove_volume_on_error(self, path):
        try:
            yield
        except Exception:
            with excutils.save_and_reraise_exception():
                lvm.remove_volumes(path) ### the path is string