cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rohit Yadav <rohit.ya...@shapeblue.com>
Subject Re: libvirt exception
Date Fri, 10 Jul 2015 19:16:30 GMT
Wei - is this issue fixed on 4.5/master?

On 11-May-2015, at 12:32 pm, Wei ZHOU <ustcweizhou@gmail.com<mailto:ustcweizhou@gmail.com>>
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_cloudstack@nusku.net<mailto:mcrosson_cloudstack@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>



Regards,
Rohit Yadav
Software Architect, ShapeBlue


[cid:9DD97B41-04C5-45F0-92A7-951F3E962F7A]


M. +91 88 262 30892 | rohit.yadav@shapeblue.com<mailto:rohit.yadav@shapeblue.com>
Blog: bhaisaab.org<http://bhaisaab.org> | Twitter: @_bhaisaab




Find out more about ShapeBlue and our range of CloudStack related services

IaaS Cloud Design & Build<http://shapeblue.com/iaas-cloud-design-and-build//>
CSForge - rapid IaaS deployment framework<http://shapeblue.com/csforge/>
CloudStack Consulting<http://shapeblue.com/cloudstack-consultancy/>
CloudStack Software Engineering<http://shapeblue.com/cloudstack-software-engineering/>
CloudStack Infrastructure Support<http://shapeblue.com/cloudstack-infrastructure-support/>
CloudStack Bootcamp Training Courses<http://shapeblue.com/cloudstack-training/>

This email and any attachments to it may be confidential and are intended solely for the use
of the individual to whom it is addressed. Any views or opinions expressed are solely those
of the author and do not necessarily represent those of Shape Blue Ltd or related companies.
If you are not the intended recipient of this email, you must neither take any action based
upon its contents, nor copy or show it to anyone. Please contact the sender if you believe
you have received this email in error. Shape Blue Ltd is a company incorporated in England
& Wales. ShapeBlue Services India LLP is a company incorporated in India and is operated
under license from Shape Blue Ltd. Shape Blue Brasil Consultoria Ltda is a company incorporated
in Brasil and is operated under license from Shape Blue Ltd. ShapeBlue SA Pty Ltd is a company
registered by The Republic of South Africa and is traded under license from Shape Blue Ltd.
ShapeBlue is a registered trademark.

Mime
  • Unnamed multipart/related (inline, None, 0 bytes)
View raw message