Howdy all!
So in working with libvirt-qpid, I've come to realize that it imposes a
new difficulty in doing migrations. Traditionally you would connect
out to each individual libvirt instance from a central location and be
able to pass the destination connection pointer to the virDomainMigrate
function. However in libvirt-qpids case, since it's running on each
physical host, it does not necessarily have access to the destination
host due to authentication requirements.
So I'd like to discuss possible ways of resolving this issue. I'm not
sure how much support libvirt proper wants to extend to allowing this
case to work, but I'm hoping we can figure something out that will make
everyone happy.
I see that in the implementation of virDomainMigrate, it is already
split up into prepare and preform functions. I'm thinking that, if
agreeable by the libvirt team, it'd be nice to have an API which
allowed us to call into destination and source nodes separately.
Something like:
char * virConnectMigratePrepare(virConnectPtr conn,
unsigned long flags,
const char *dname);
which would set up the destination node to receive a migrating domain
and return an xml document containing the information required to
perform the migration (host name, port, maybe even capabilities and/or
encryption keys in the future etc.), coupled with:
int virDomainMigratePerform(virDomainPtr dom,
const char *prepare_description,
unsigned long bandwidth);
which would initiate the transfer of the domain to the destination host.
Or something along those lines.. this is just off the top of my head
but I wanted to get the discussion going. Note I'm using the same
internal names prepare/perform but we can rename them if appropriate.
Anyway this would allow us to hook these up in qpid where we have
access to both systems and call them in sequence.
Let me know what you think.
Thanks,
Ian
Show replies by date