mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-11-02 11:21:12 +00:00
fae0da5c13
Introduces several new public API options for migration - VIR_MIGRATE_PEER2PEER: With this flag the client only invokes the virDomainMigratePerform method, expecting the source host driver to do whatever is required to complete the entire migration process. - VIR_MIGRATE_TUNNELLED: With this flag the actual data for migration will be tunnelled over the libvirtd RPC channel. This requires that VIR_MIGRATE_PEER2PEER is also set. - virDomainMigrateToURI: This is variant of the existing virDomainMigrate method which does not require any virConnectPtr for the destination host. Given suitable driver support, this allows for all the same modes as virDomainMigrate() The URI for VIR_MIGRATE_PEER2PEER must be a valid libvirt URI. For non-p2p migration a hypervisor specific migration URI is used. virDomainMigrateToURI without a PEER2PEER flag is only support for Xen currently, and it involves XenD talking directly to XenD, no libvirtd involved at all. * include/libvirt/libvirt.h.in: Add VIR_MIGRATE_PEER2PEER flag for migration * src/libvirt_internal.h: Add feature flags for peer to peer migration (VIR_FEATURE_MIGRATE_P2P) and direct migration (VIR_MIGRATE_PEER2PEER mode) * src/libvirt.c: Implement support for VIR_MIGRATE_PEER2PEER and virDomainMigrateToURI APIs. * src/xen/xen_driver.c: Advertise support for DIRECT migration * src/xen/xend_internal.c: Add TODO item for p2p migration * src/libvirt_public.syms: Export virDomainMigrateToURI method * src/qemu/qemu_driver.c: Add support for PEER2PEER and migration, and adapt TUNNELLED migration. * tools/virsh.c: Add --p2p and --direct args and use the new virDomainMigrateToURI method where possible.
119 lines
4.5 KiB
C
119 lines
4.5 KiB
C
/*
|
|
* libvirt.h: publically exported APIs, not for public use
|
|
*
|
|
* Copyright (C) 2006-2008 Red Hat, Inc.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*
|
|
* NB This file is ABI sensitive. Things here impact the wire
|
|
* protocol ABI in the remote driver. Same rules as for things
|
|
* include/libvirt/libvirt.h apply. ie this file is *append* only
|
|
*/
|
|
|
|
#ifndef __LIBVIRT_H_
|
|
#define __LIBVIRT_H_
|
|
|
|
#include "internal.h"
|
|
|
|
#ifdef WITH_LIBVIRTD
|
|
int virStateInitialize(int privileged);
|
|
int virStateCleanup(void);
|
|
int virStateReload(void);
|
|
int virStateActive(void);
|
|
#endif
|
|
|
|
/* Feature detection. This is a libvirt-private interface for determining
|
|
* what features are supported by the driver.
|
|
*
|
|
* The remote driver passes features through to the real driver at the
|
|
* remote end unmodified, except if you query a VIR_DRV_FEATURE_REMOTE*
|
|
* feature.
|
|
*
|
|
*/
|
|
enum {
|
|
/* Driver supports V1-style virDomainMigrate, ie. domainMigratePrepare/
|
|
* domainMigratePerform/domainMigrateFinish.
|
|
*/
|
|
VIR_DRV_FEATURE_MIGRATION_V1 = 1,
|
|
|
|
/* Driver is not local. */
|
|
VIR_DRV_FEATURE_REMOTE = 2,
|
|
|
|
/* Driver supports V2-style virDomainMigrate, ie. domainMigratePrepare2/
|
|
* domainMigratePerform/domainMigrateFinish2.
|
|
*/
|
|
VIR_DRV_FEATURE_MIGRATION_V2 = 3,
|
|
|
|
/* Driver supports peer-2-peer virDomainMigrate ie source host
|
|
* does all the prepare/perform/finish steps directly
|
|
*/
|
|
VIR_DRV_FEATURE_MIGRATION_P2P = 4,
|
|
|
|
/* Driver supports migration with only the source host involved,
|
|
* no libvirtd connetions on the destination at all, only the
|
|
* perform step is used.
|
|
*/
|
|
VIR_DRV_FEATURE_MIGRATION_DIRECT = 5,
|
|
};
|
|
|
|
|
|
int virDrvSupportsFeature (virConnectPtr conn, int feature);
|
|
|
|
int virDomainMigratePrepare (virConnectPtr dconn,
|
|
char **cookie,
|
|
int *cookielen,
|
|
const char *uri_in,
|
|
char **uri_out,
|
|
unsigned long flags,
|
|
const char *dname,
|
|
unsigned long resource);
|
|
int virDomainMigratePerform (virDomainPtr domain,
|
|
const char *cookie,
|
|
int cookielen,
|
|
const char *uri,
|
|
unsigned long flags,
|
|
const char *dname,
|
|
unsigned long resource);
|
|
virDomainPtr virDomainMigrateFinish (virConnectPtr dconn,
|
|
const char *dname,
|
|
const char *cookie,
|
|
int cookielen,
|
|
const char *uri,
|
|
unsigned long flags);
|
|
int virDomainMigratePrepare2 (virConnectPtr dconn,
|
|
char **cookie,
|
|
int *cookielen,
|
|
const char *uri_in,
|
|
char **uri_out,
|
|
unsigned long flags,
|
|
const char *dname,
|
|
unsigned long resource,
|
|
const char *dom_xml);
|
|
virDomainPtr virDomainMigrateFinish2 (virConnectPtr dconn,
|
|
const char *dname,
|
|
const char *cookie,
|
|
int cookielen,
|
|
const char *uri,
|
|
unsigned long flags,
|
|
int retcode);
|
|
int virDomainMigratePrepareTunnel(virConnectPtr dconn,
|
|
virStreamPtr st,
|
|
unsigned long flags,
|
|
const char *dname,
|
|
unsigned long resource,
|
|
const char *dom_xml);
|
|
|
|
#endif
|