On 2015-05-19 04:13, Rohit Yadav wrote:
Were able to fix the issue? Do we need to update
agent/bindir/libvirtqemuhook.in with Wei’s fix?
I can confirm the below patch fixes the issue I was having. Thank you
for the help in getting this resolved.
Forgive the delay on my response, work got crazy and I had to drop
testing for awhile.
-- Mike Crosson
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
--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>