(prefix, utils.TimestampForFilename())))
-def StartImportExportDaemon(mode, opts, host, port, instance, ieio, ieioargs):
+def StartImportExportDaemon(mode, opts, host, port, instance, component,
+ ieio, ieioargs):
"""Starts an import or export daemon.
@param mode: Import/output mode
@param port: Remote port for export (None for import)
@type instance: L{objects.Instance}
@param instance: Instance object
+ @type component: string
+ @param component: which part of the instance is transferred now,
+ e.g. 'disk/0'
@param ieio: Input/output type
@param ieioargs: Input/output arguments
if not os.path.exists(i):
_Fail("File '%s' does not exist" % i)
- status_dir = _CreateImportExportStatusDir(prefix)
+ status_dir = _CreateImportExportStatusDir("%s-%s" % (prefix, component))
try:
status_file = utils.PathJoin(status_dir, _IES_STATUS_FILE)
pid_file = utils.PathJoin(status_dir, _IES_PID_FILE)
"""
return self._lu.rpc.call_import_start(self.node_name, self._opts,
- self._instance,
+ self._instance, self._component,
self._dest, self._dest_args)
def CheckListening(self):
"""
return self._lu.rpc.call_export_start(self.node_name, self._opts,
self._dest_host, self._dest_port,
- self._instance, self._source,
- self._source_args)
+ self._instance, self._component,
+ self._source, self._source_args)
def CheckListening(self):
"""Checks whether the daemon is listening.
return self._SingleNodeCall(node, "x509_cert_remove", [name])
@_RpcTimeout(_TMO_NORMAL)
- def call_import_start(self, node, opts, instance, dest, dest_args):
+ def call_import_start(self, node, opts, instance, component,
+ dest, dest_args):
"""Starts a listener for an import.
This is a single-node call.
@param node: Node name
@type instance: C{objects.Instance}
@param instance: Instance object
+ @type component: string
+ @param component: which part of the instance is being imported
"""
return self._SingleNodeCall(node, "import_start",
[opts.ToDict(),
- self._InstDict(instance), dest,
+ self._InstDict(instance), component, dest,
_EncodeImportExportIO(dest, dest_args)])
@_RpcTimeout(_TMO_NORMAL)
def call_export_start(self, node, opts, host, port,
- instance, source, source_args):
+ instance, component, source, source_args):
"""Starts an export daemon.
This is a single-node call.
@param node: Node name
@type instance: C{objects.Instance}
@param instance: Instance object
+ @type component: string
+ @param component: which part of the instance is being imported
"""
return self._SingleNodeCall(node, "export_start",
[opts.ToDict(), host, port,
- self._InstDict(instance), source,
+ self._InstDict(instance),
+ component, source,
_EncodeImportExportIO(source, source_args)])
@_RpcTimeout(_TMO_FAST)
"""Starts an import daemon.
"""
- (opts_s, instance, dest, dest_args) = params
+ (opts_s, instance, component, dest, dest_args) = params
opts = objects.ImportExportOptions.FromDict(opts_s)
return backend.StartImportExportDaemon(constants.IEM_IMPORT, opts,
None, None,
objects.Instance.FromDict(instance),
- dest,
+ component, dest,
_DecodeImportExportIO(dest,
dest_args))
"""Starts an export daemon.
"""
- (opts_s, host, port, instance, source, source_args) = params
+ (opts_s, host, port, instance, component, source, source_args) = params
opts = objects.ImportExportOptions.FromDict(opts_s)
return backend.StartImportExportDaemon(constants.IEM_EXPORT, opts,
host, port,
objects.Instance.FromDict(instance),
- source,
+ component, source,
_DecodeImportExportIO(source,
source_args))