Add support for domain migrations

This adds basic support for domain migrations from one hypervisor to
another. Migration options, e.g., live, tunneled, compressed, etc..,
are specified by the constants described `constants.Migrate*`.

Two unknowns remain, Libvirt specifies `RemoteParameters` and `CookieIn`.
In testing both values are always set to 0 by `virsh` and the source
does not provide clear definitions of their purpose. For now, using
the same zero'd values used by `virsh` will be Good Enough.
This commit is contained in:
Ben LeMasurier
2016-08-19 12:31:59 -06:00
parent 0b294fc010
commit 128bc7d448
4 changed files with 157 additions and 1 deletions

View File

@@ -94,6 +94,19 @@ var testDisconnectReply = []byte{
0x00, 0x00, 0x00, 0x00, // status
}
var testMigrateReply = []byte{
0x00, 0x00, 0x00, 0x20, // length
0x20, 0x00, 0x80, 0x86, // program
0x00, 0x00, 0x00, 0x01, // version
0x00, 0x00, 0x01, 0x31, // procedure
0x00, 0x00, 0x00, 0x01, // type
0x00, 0x00, 0x00, 0x00, // serial
0x00, 0x00, 0x00, 0x00, // status
// cookie out: 0
0x00, 0x00, 0x00, 0x00,
}
var testRunReply = []byte{
0x00, 0x00, 0x00, 0x74, // length
0x20, 0x00, 0x80, 0x87, // program
@@ -262,6 +275,8 @@ func (m *MockLibvirt) handleRemote(procedure uint32, conn net.Conn) {
conn.Write(m.reply(testDomainsReply))
case constants.ProcDomainMigrateSetMaxSpeed:
conn.Write(m.reply(testSetSpeedReply))
case constants.ProcMigratePerformParams:
conn.Write(m.reply(testMigrateReply))
}
}