is /etc/libvirt/hooks/qemu executable? 2015-05-11 18:08 GMT+02:00 Mike C <mcrosson_cloudst...@nusku.net>:
> On 2015-05-11 03:02, Wei ZHOU wrote: > >> 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 >> >> > Wei, > > I've applied the patch manually (git apply failed) and the error persists. > Below you'll find the contents of /etc/libvirt/hooks/qemu (I've removed the > licensing / header for brevity). > > I've even stopped/started the router in case the patched script only runs > when a VM is first started. I've included the domain.toxml() output below > as well. > > -- Mike > > import sys > from xml.dom.minidom import parse > from cloudutils.configFileOps import configFileOps > from cloudutils.networkConfig import networkConfig > def isOldStyleBridge(brName): > if brName.find("cloudVirBr") == 0: > 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.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 isOldStyleBridge(bridge): > vlanId = bridge.replace("cloudVirBr","") > elif isNewStyleBridge(bridge): > vlanId = re.sub(r"br(\w+)-","",bridge) > else: > continue > phyDev = getGuestNetworkDevice() > newBrName="br" + phyDev + "-" + vlanId > source.setAttribute("bridge", newBrName) > print(domain.toxml()) > except: > pass > if __name__ == '__main__': > if len(sys.argv) != 5: > sys.exit(0) > > if sys.argv[2] == "migrate" and sys.argv[3] == "begin": > handleMigrateBegin() > > > > 2015-05-11 12:04:36,831 DEBUG [kvm.resource.LibvirtComputingResource] > (agentRequest-Handler-2:null) starting r-93-VM: <domain type='k > vm'> > <name>r-93-VM</name> > <uuid>5269e919-564a-4986-92c1-07464e99e3ce</uuid> > <description>Debian GNU/Linux 7(64-bit)</description> > <clock offset='utc'> > </clock> > <features> > <pae/> > <apic/> > <acpi/> > </features> > <devices> > <emulator>/usr/bin/kvm-spice</emulator> > <interface type='bridge'> > <source bridge='brbond0-1208'/> > <mac address='02:00:6b:5b:00:03'/> > <model type='e1000'/> > <bandwidth> > <inbound average='25600' peak='25600'/> > <outbound average='25600' peak='25600'/> > </bandwidth> > </interface> > <interface type='bridge'> > <source bridge='cloud0'/> > <mac address='0e:00:a9:fe:01:68'/> > <model type='e1000'/> > </interface> > <interface type='bridge'> > <source bridge='cloudbr0'/> > <mac address='06:13:ca:00:00:36'/> > <model type='e1000'/> > <bandwidth> > <inbound average='25600' peak='25600'/> > <outbound average='25600' peak='25600'/> > </bandwidth> > </interface> > <serial type='pty'> > <target port='0'/> > </serial> > <graphics type='vnc' autoport='yes' listen='172.16.16.30' > passwd='2b74e551cba07566'/> > <disk device='disk' type='file'> > <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'/> > </disk> > <disk device='cdrom' type='file'> > <driver name='qemu' type='raw' cache='none' /> > <source file='/usr/share/cloudstack-common/vms/systemvm.iso'/> > <target dev='hdc' bus='ide'/> > </disk> > <console type='pty'> > <target port='0'/> > </console> > <input type='tablet' bus='usb'/> > <channel type='unix'> > <source mode='bind' path='/var/lib/libvirt/qemu/r-93-VM.agent'/> > <target type='virtio' name='r-93-VM.vport'/> > <address type='virtio-serial'/> > </channel> > </devices> > <memory>262144</memory> > <devices> > <memballoon model='none'/> > </devices> > <vcpu>1</vcpu> > <os> > <type arch='x86_64' machine='pc'>hvm</type> > <boot dev='cdrom'/> > <boot dev='hd'/> > </os> > <cputune> > <shares>500</shares> > </cputune> > <cpu></cpu><on_reboot>restart</on_reboot> > <on_poweroff>destroy</on_poweroff> > <on_crash>destroy</on_crash> > </domain> >