Hi Mike, Please apply the following patch to cloudstack, and copy the file agent/bindir/libvirtqemuhook.in to repace /etc/libvirt/hooks/qemu on your hosts
--start------------ diff --git a/agent/bindir/libvirtqemuhook.in b/agent/bindir/ libvirtqemuhook.in index 7bf9634..a895280 100755 --- a/agent/bindir/libvirtqemuhook.in +++ b/agent/bindir/libvirtqemuhook.in @@ -16,6 +16,7 @@ # specific language governing permissions and limitations # under the License. import sys +import re from xml.dom.minidom import parse from cloudutils.configFileOps import configFileOps from cloudutils.networkConfig import networkConfig @@ -24,21 +25,29 @@ def isOldStyleBridge(brName): return True else: return False +def isNewStyleBridge(brName): + if re.match(r"br(\w+)-(\d+)", brName) == None: + return False + else: + return True def getGuestNetworkDevice(): netlib = networkConfig() cfo = configFileOps("/etc/cloudstack/agent/agent.properties") guestDev = cfo.getEntry("guest.network.device") enslavedDev = netlib.getEnslavedDev(guestDev, 1) - return enslavedDev + return enslavedDev.split(".")[0] def handleMigrateBegin(): try: domain = parse(sys.stdin) for interface in domain.getElementsByTagName("interface"): source = interface.getElementsByTagName("source")[0] bridge = source.getAttribute("bridge") - if not isOldStyleBridge(bridge): + if isOldStyleBridge(bridge): + vlanId = bridge.replace("cloudVirBr","") + elif isNewStyleBridge(bridge): + vlanId = re.sub(r"br(\w+)-","",bridge) + else: continue - vlanId = bridge.replace("cloudVirBr","") phyDev = getGuestNetworkDevice() newBrName="br" + phyDev + "-" + vlanId source.setAttribute("bridge", newBrName) -----end------------- Kind regards, Wei 2015-05-10 7:35 GMT+02:00 Mike C <mcrosson_cloudst...@nusku.net>: > On 2015-05-08 20:07, Marcus wrote: > >> Can you confirm that those bridges and bond devices exist prior to >> attempting migration, and that the VMs are attached to them and work? >> Perhaps a 'brctl show' and 'virsh dumpxml'. Those look like they should be >> cloudstack-generated guest network bridges and libvirt is complaining they >> don't exist >> > Everything as far as I can tell is working minus this migration. I have a > few virtual routers running on this machine and VMs, each environment > running on the box seems to be doing working just fine. The base mgmtbr0, > cloudbr0, cloudbr1 all come up at boot prior to CloudStack and are working. > > Command output is below. > > Also: the router seems to have been restarted and was allocated on the > machine I was trying to migrate it to. Trying to migrate it back resulted > in the same error message. > > -- Mike > > > # brctl show > bridge name bridge id STP enabled interfaces > breth0-1209 8000.6805ca095d7f no eth0.1209 > breth0-1221 8000.6805ca095d7f no eth0.1221 > vnet0 > vnet3 > cloud0 8000.fe00a9fe0380 no vnet1 > cloudbr0 8000.6805ca095d7f no eth0.1100 > vnet2 > cloudbr1 8000.6805ca095d7f no eth0.1200 > mgmtbr0 8000.002564b522ef no eth1 > virbr0 8000.000000000000 yes > > # virsh dumpxml r-93-XML > <domain type='kvm' id='18'> > <name>r-93-VM</name> > <uuid>5269e919-564a-4986-92c1-07464e99e3ce</uuid> > <description>Debian GNU/Linux 7(64-bit)</description> > <memory unit='KiB'>262144</memory> > <currentMemory unit='KiB'>262144</currentMemory> > <vcpu placement='static'>1</vcpu> > <cputune> > <shares>500</shares> > </cputune> > <resource> > <partition>/machine</partition> > </resource> > <os> > <type arch='x86_64' machine='pc-i440fx-trusty'>hvm</type> > <boot dev='cdrom'/> > <boot dev='hd'/> > </os> > <features> > <acpi/> > <apic/> > <pae/> > </features> > <cpu> > </cpu> > <clock offset='utc'/> > <on_poweroff>destroy</on_poweroff> > <on_reboot>restart</on_reboot> > <on_crash>destroy</on_crash> > <devices> > <emulator>/usr/bin/kvm-spice</emulator> > <disk type='file' device='disk'> > <driver name='qemu' type='qcow2' cache='none'/> > <source > file='/mnt/d5174632-721e-39ed-b93b-462539f63c77/c1b45654-5e74-420e-bf91-5beb745546f8'/> > <target dev='hda' bus='ide'/> > <alias name='ide0-0-0'/> > <address type='drive' controller='0' bus='0' target='0' unit='0'/> > </disk> > <disk type='file' device='cdrom'> > <driver name='qemu' type='raw' cache='none'/> > <source file='/usr/share/cloudstack-common/vms/systemvm.iso'/> > <target dev='hdc' bus='ide'/> > <readonly/> > <alias name='ide0-1-0'/> > <address type='drive' controller='0' bus='1' target='0' unit='0'/> > </disk> > <controller type='usb' index='0'> > <alias name='usb0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x01' > function='0x2'/> > </controller> > <controller type='pci' index='0' model='pci-root'> > <alias name='pci.0'/> > </controller> > <controller type='ide' index='0'> > <alias name='ide0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x01' > function='0x1'/> > </controller> > <controller type='virtio-serial' index='0'> > <alias name='virtio-serial0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x06' > function='0x0'/> > </controller> > <interface type='bridge'> > <mac address='02:00:6b:5b:00:03'/> > <source bridge='breth0-1221'/> > <bandwidth> > <inbound average='25600' peak='25600'/> > <outbound average='25600' peak='25600'/> > </bandwidth> > <target dev='vnet0'/> > <model type='e1000'/> > <alias name='net0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x03' > function='0x0'/> > </interface> > <interface type='bridge'> > <mac address='0e:00:a9:fe:03:80'/> > <source bridge='cloud0'/> > <target dev='vnet1'/> > <model type='e1000'/> > <alias name='net1'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x04' > function='0x0'/> > </interface> > <interface type='bridge'> > <mac address='06:13:ca:00:00:36'/> > <source bridge='cloudbr0'/> > <bandwidth> > <inbound average='25600' peak='25600'/> > <outbound average='25600' peak='25600'/> > </bandwidth> > <target dev='vnet2'/> > <model type='e1000'/> > <alias name='net2'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x05' > function='0x0'/> > </interface> > <serial type='pty'> > <source path='/dev/pts/0'/> > <target port='0'/> > <alias name='serial0'/> > </serial> > <console type='pty' tty='/dev/pts/0'> > <source path='/dev/pts/0'/> > <target type='serial' port='0'/> > <alias name='serial0'/> > </console> > <channel type='unix'> > <source mode='bind' path='/var/lib/libvirt/qemu/r-93-VM.agent'/> > <target type='virtio' name='r-93-VM.vport'/> > <alias name='channel0'/> > <address type='virtio-serial' controller='0' bus='0' port='1'/> > </channel> > <input type='tablet' bus='usb'> > <alias name='input0'/> > </input> > <input type='mouse' bus='ps2'/> > <input type='keyboard' bus='ps2'/> > <graphics type='vnc' port='5900' autoport='yes' listen='172.16.16.31'> > <listen type='address' address='172.16.16.31'/> > </graphics> > <video> > <model type='cirrus' vram='9216' heads='1'/> > <alias name='video0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x02' > function='0x0'/> > </video> > <memballoon model='none'> > <alias name='balloon0'/> > </memballoon> > </devices> > <seclabel type='none'/> > </domain> > >