more updates
[handlervirt.git] / node / migrate.c
blobbea12f34f1bcfa0b5e493b1d4fd6b9836e6c379b
1 #include <avahi-client/publish.h>
2 #include <avahi-client/lookup.h>
4 #include <avahi-common/alternative.h>
5 #include <avahi-common/simple-watch.h>
6 #include <avahi-common/malloc.h>
7 #include <avahi-common/error.h>
8 #include <avahi-common/timeval.h>
9 #include <avahi-common/strlst.h>
10 #include <avahi-common/thread-watch.h>
12 #include <stdio.h>
13 #include <string.h>
14 #include <stdlib.h>
16 #include <libvirt/libvirt.h>
18 #include "../handler_virt_tender.h"
20 int migrate_domain(AvahiClient *client, AvahiThreadedPoll *threaded_poll, virDomainPtr dom) {
21 int ret = -1;
22 unsigned long memory;
23 char *target;
24 char destination[1024];
25 virConnectPtr dconn;
27 memory = virDomainGetMaxMemory(dom);
28 target = create_tender(client, threaded_poll, virDomainGetName(dom), virDomainGetMaxMemory(dom));
30 snprintf(destination, 1022, "xen://%s/", target);
31 destination[1023] = '\0';
32 free(target);
34 dconn = virConnectOpen(destination);
36 if (dconn) {
37 virDomainPtr desDom;
39 desDom = virDomainMigrate(dom, dconn, VIR_MIGRATE_LIVE, NULL, NULL, 0);
41 if (desDom) {
42 ret = 0;
43 virDomainFree(desDom);
46 virConnectClose(dconn);
49 return ret;