Migration support
[handlervirt.git] / node / migrate.c
blobb2c944e98232301e1f55d2593bc10ad4e170e2e5
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>
11 #include <stdio.h>
12 #include <string.h>
13 #include <stdlib.h>
15 #include <libvirt/libvirt.h>
17 #include "../handler_virt_tender.h"
19 int migrate_domain(AvahiClient *client, virDomainPtr dom) {
20 int ret = -1;
21 unsigned long memory;
22 char *target;
23 char destination[1024];
24 virConnectPtr dconn;
26 memory = virDomainGetMaxMemory(dom);
27 target = create_tender(client, NULL, virDomainGetName(dom), virDomainGetMaxMemory(dom));
29 snprintf(destination, 1022, "xen://%s/", target);
30 destination[1023] = '\0';
31 free(target);
33 dconn = virConnectOpen(destination);
35 if (dconn) {
36 virDomainPtr desDom;
38 desDom = virDomainMigrate(dom, dconn, VIR_MIGRATE_LIVE, NULL, NULL, 1000);
40 if (desDom) {
41 ret = 0;
42 virDomainFree(desDom);
45 virConnectClose(dconn);
48 return ret;