+
+ @_RpcTimeout(_TMO_NORMAL)
+ def call_x509_cert_create(self, node, validity):
+ """Creates a new X509 certificate for SSL/TLS.
+
+ This is a single-node call.
+
+ @type validity: int
+ @param validity: Validity in seconds
+
+ """
+ return self._SingleNodeCall(node, "x509_cert_create", [validity])
+
+ @_RpcTimeout(_TMO_NORMAL)
+ def call_x509_cert_remove(self, node, name):
+ """Removes a X509 certificate.
+
+ This is a single-node call.
+
+ @type name: string
+ @param name: Certificate name
+
+ """
+ return self._SingleNodeCall(node, "x509_cert_remove", [name])
+
+ @_RpcTimeout(_TMO_NORMAL)
+ def call_import_start(self, node, opts, instance, dest, dest_args):
+ """Starts a listener for an import.
+
+ This is a single-node call.
+
+ @type node: string
+ @param node: Node name
+ @type instance: C{objects.Instance}
+ @param instance: Instance object
+
+ """
+ return self._SingleNodeCall(node, "import_start",
+ [opts.ToDict(),
+ self._InstDict(instance), dest,
+ _EncodeImportExportIO(dest, dest_args)])
+
+ @_RpcTimeout(_TMO_NORMAL)
+ def call_export_start(self, node, opts, host, port,
+ instance, source, source_args):
+ """Starts an export daemon.
+
+ This is a single-node call.
+
+ @type node: string
+ @param node: Node name
+ @type instance: C{objects.Instance}
+ @param instance: Instance object
+
+ """
+ return self._SingleNodeCall(node, "export_start",
+ [opts.ToDict(), host, port,
+ self._InstDict(instance), source,
+ _EncodeImportExportIO(source, source_args)])
+
+ @_RpcTimeout(_TMO_FAST)
+ def call_impexp_status(self, node, names):
+ """Gets the status of an import or export.
+
+ This is a single-node call.
+
+ @type node: string
+ @param node: Node name
+ @type names: List of strings
+ @param names: Import/export names
+ @rtype: List of L{objects.ImportExportStatus} instances
+ @return: Returns a list of the state of each named import/export or None if
+ a status couldn't be retrieved
+
+ """
+ result = self._SingleNodeCall(node, "impexp_status", [names])
+
+ if not result.fail_msg:
+ decoded = []
+
+ for i in result.payload:
+ if i is None:
+ decoded.append(None)
+ continue
+ decoded.append(objects.ImportExportStatus.FromDict(i))
+
+ result.payload = decoded
+
+ return result
+
+ @_RpcTimeout(_TMO_NORMAL)
+ def call_impexp_abort(self, node, name):
+ """Aborts an import or export.
+
+ This is a single-node call.
+
+ @type node: string
+ @param node: Node name
+ @type name: string
+ @param name: Import/export name
+
+ """
+ return self._SingleNodeCall(node, "impexp_abort", [name])
+
+ @_RpcTimeout(_TMO_NORMAL)
+ def call_impexp_cleanup(self, node, name):
+ """Cleans up after an import or export.
+
+ This is a single-node call.
+
+ @type node: string
+ @param node: Node name
+ @type name: string
+ @param name: Import/export name
+
+ """
+ return self._SingleNodeCall(node, "impexp_cleanup", [name])