Extend v3 migration protocol to allow app supplied XML for target

This extends the v3 migration protocol such that the
virDomainMigrateBegin3 and virDomainMigratePerform3
methods accept an application supplied XML config for
the target VM.

If the 'xmlin' parameter is NULL, then Begin3 uses the
current guest XML as normal. A driver implementing the
Begin3 method should either reject all non-NULL 'xmlin'
parameters, or strictly validate that the app supplied
XML does not change guest ABI.

The Perform3 method also needed the xmlin parameter to
cope with the Peer2Peer migration sequence.

NB it is not yet possible to use this capability since
neither of the public virDomainMigrate/virDomainMigrateToURI
methods have a way to pass in XML.

* daemon/remote.c, src/remote/remote_driver.c,
  src/remote/remote_protocol.x, src/remote_protocol-structs:
  Add 'remote_string xmlin' parameter to begin3/perform3
  RPC messages
* src/libvirt.c, src/driver.h, src/libvirt_internal.h: Add
  'const char *xmlin' parameter to Begin3/Perform3 methods
* src/qemu/qemu_driver.c, src/qemu/qemu_migration.c,
  src/qemu/qemu_migration.h: Pass xmlin parameter around
  migration methods
This commit is contained in:
Daniel P. Berrange
2011-05-25 11:47:47 -04:00
parent dea64db1d2
commit 7ad4b6b9cc
10 changed files with 75 additions and 21 deletions
+2
View File
@@ -1457,6 +1457,7 @@ struct remote_domain_get_state_ret {
};
struct remote_domain_migrate_begin3_args {
remote_nonnull_domain dom;
remote_string xmlin;
uint64_t flags;
remote_string dname;
uint64_t resource;
@@ -1504,6 +1505,7 @@ struct remote_domain_migrate_prepare_tunnel3_ret {
};
struct remote_domain_migrate_perform3_args {
remote_nonnull_domain dom;
remote_string xmlin;
struct {
u_int cookie_in_len;
char * cookie_in_val;