"""
path = params[0]
- einfo = backend.ExportInfo(path)
- if einfo is None:
- return einfo
- return einfo.Dumps()
+ return backend.ExportInfo(path)
@staticmethod
def perspective_export_list(params):
if (not config.has_section(constants.INISECT_EXP) or
not config.has_section(constants.INISECT_INS)):
- return None
+ _Fail("Export info file doesn't have the required fields")
- return config
+ return True, config.Dumps()
def ImportOSIntoInstance(instance, src_node, src_images, cluster_name):
_CheckNodeOnline(self, src_node)
result = self.rpc.call_export_info(src_node, src_path)
- result.Raise()
- if not result.data:
- raise errors.OpPrereqError("No export found in dir %s" % src_path)
+ msg = result.RemoteFailMsg()
+ if msg:
+ raise errors.OpPrereqError("No export or invalid export found in"
+ " dir %s: %s" % (src_path, msg))
- export_info = result.data
+ export_info = objects.SerializableConfigParser.Loads(str(result.payload))
if not export_info.has_section(constants.INISECT_EXP):
raise errors.ProgrammerError("Corrupted export config")
This is a single-node call.
"""
- result = self._SingleNodeCall(node, "export_info", [path])
- if not result.failed and result.data:
- result.data = objects.SerializableConfigParser.Loads(str(result.data))
- return result
+ return self._SingleNodeCall(node, "export_info", [path])
def call_instance_os_import(self, node, inst, src_node, src_images,
cluster_name):