Gao you were right! see below....
On 12/08/2012 08:21 AM, Gao Yongwei wrote:
2012/12/7 john fisher <john(a)jpfisher.net <mailto:john@jpfisher.net>>
<target dev='vnet0'/>
I think the vnet* can affect the order in vm.
For the benefit of 1) others and 2) me when I forget how this works-
I did find a solution in formatting the xml file.
If you leave the vnets out completely, see file below, the generic xml file will
cooperate with libvirt and qemu and
order the VM's eth devices as they are ordered on the hypervisor.
(note: the macvtap entries seen below may also not be needed, sound and usb not tested)
## sample xml file for libvirt 1.0.0 showing some bridges and some SRIOV ports too ##
<domain type='kvm' id='1'>
<name>sample</name>
<hostname>sample</hostname>
<memory unit='KiB'>524288</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-1.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/oa4-vm-sample-cli.qcow2'/>
<target dev='vda' bus='virtio'/>
<alias name='virtio-disk0'/>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x05' function='0x0'/>
</disk>
<controller type='usb' index='0'>
<alias name='usb0'/>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x01' function='0x2'/>
</controller>
<interface type='bridge'>
<source bridge='br4'/>
<model type='virtio'/>
</interface>
<interface type='bridge'>
<source bridge='br5'/>
<model type='virtio'/>
</interface>
<interface type='bridge'>
<source bridge='br6'/>
<model type='virtio'/>
</interface>
<interface type='bridge'>
<source bridge='br7'/>
<model type='virtio'/>
</interface>
<interface type='bridge'>
<source bridge='br8'/>
<model type='virtio'/>
</interface>
<interface type='bridge'>
<source bridge='br9'/>
<model type='virtio'/>
</interface>
<interface type='bridge'>
<source bridge='br10'/>
<model type='virtio'/>
</interface>
<interface type='bridge'>
<source bridge='br11'/>
<model type='virtio'/>
</interface>
<interface type='bridge'>
<source bridge='br250'/>
<model type='virtio'/>
</interface>
<interface type='hostdev'>
<source dev='eth0' mode='vepa'>
<address type='pci' domain='0x0000'
bus='0x02' slot='0x10' function='0x0'/>
</source>
<target dev='macvtap1'/>
<model type='virtio'/>
</interface>
<interface type='hostdev'>
<source dev='eth1' mode='vepa'>
<address type='pci' domain='0x0000'
bus='0x02' slot='0x10' function='0x1'/>
</source>
<target dev='macvtap1'/>
<model type='virtio'/>
</interface>
<interface type='hostdev'>
<source dev='eth2' mode='vepa'>
<address type='pci' domain='0x0000'
bus='0x16' slot='0x10' function='0x0'/>
</source>
<target dev='macvtap0'/>
</interface>
<interface type='hostdev'>
<source dev='eth3' mode='vepa'>
<address type='pci' domain='0x0000'
bus='0x16' slot='0x10' function='0x1'/>
</source>
<target dev='macvtap0'/>
</interface>
<serial type='pty'>
<source path='/dev/pts/1'/>
<target port='0'/>
<alias name='serial0'/>
</serial>
<console type='pty' tty='/dev/pts/1'>
<source path='/dev/pts/1'/>
<target type='serial' port='0'/>
<alias name='serial0'/>
</console>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5900' autoport='yes'
listen='127.0.0.1'>
<listen type='address' address='127.0.0.1'/>
</graphics>
<sound model='ich6'>
<alias name='sound0'/>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x04' function='0x0'/>
</sound>
<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='virtio'>
<alias name='balloon0'/>
<address type='pci' domain='0x0000' bus='0x00'
slot='0x06' function='0x0'/>
</memballoon>
</devices>
<seclabel type='none'/>
</domain>
--
John Fisher