2014-08-19 00:32:54 |
warewang |
description |
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 |
The logical volume can not be removed when delete 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 |
|