diff --git a/lib/backend.py b/lib/backend.py index d9dce471df24aca75a0a19734a449f166a374bc4..b06e1f62b07cb8560a8d782dac0f3a38db7d059f 100644 --- a/lib/backend.py +++ b/lib/backend.py @@ -1979,11 +1979,12 @@ def RemoveExport(export): """ target = os.path.join(constants.EXPORT_DIR, export) - shutil.rmtree(target) - # TODO: catch some of the relevant exceptions and provide a pretty - # error message if rmtree fails. + try: + shutil.rmtree(target) + except EnvironmentError, err: + _Fail("Error while removing the export: %s", err, exc=True) - return True + return True, None def BlockdevRename(devlist): diff --git a/lib/cmdlib.py b/lib/cmdlib.py index a83393bd85ffc2b13e84711adf4f76449d87c768..28e4abfad5ef7b473975243cc73a66657045c163 100644 --- a/lib/cmdlib.py +++ b/lib/cmdlib.py @@ -6516,15 +6516,17 @@ class LUExportInstance(LogicalUnit): # on one-node clusters nodelist will be empty after the removal # if we proceed the backup would be removed because OpQueryExports # substitutes an empty list with the full cluster node list. + iname = instance.name if nodelist: exportlist = self.rpc.call_export_list(nodelist) for node in exportlist: if exportlist[node].RemoteFailMsg(): continue - if instance.name in exportlist[node].payload: - if not self.rpc.call_export_remove(node, instance.name): + if iname in exportlist[node].payload: + msg = self.rpc.call_export_remove(node, iname).RemoteFailMsg() + if msg: self.LogWarning("Could not remove older export for instance %s" - " on node %s", instance.name, node) + " on node %s: %s", iname, node, msg) class LURemoveExport(NoHooksLU): @@ -6569,9 +6571,10 @@ class LURemoveExport(NoHooksLU): if instance_name in exportlist[node].payload: found = True result = self.rpc.call_export_remove(node, instance_name) - if result.failed or not result.data: + msg = result.RemoteFailMsg() + if msg: logging.error("Could not remove export for instance %s" - " on node %s", instance_name, node) + " on node %s: %s", instance_name, node, msg) if fqdn_warn and not found: feedback_fn("Export not found. If trying to remove an export belonging"