diff options
Diffstat (limited to 'kernel/networking/openvswitch/libvirt/add_interface/runtest.sh')
-rwxr-xr-x | kernel/networking/openvswitch/libvirt/add_interface/runtest.sh | 40 |
1 files changed, 17 insertions, 23 deletions
diff --git a/kernel/networking/openvswitch/libvirt/add_interface/runtest.sh b/kernel/networking/openvswitch/libvirt/add_interface/runtest.sh index b9a14d3..c724acf 100755 --- a/kernel/networking/openvswitch/libvirt/add_interface/runtest.sh +++ b/kernel/networking/openvswitch/libvirt/add_interface/runtest.sh @@ -35,42 +35,36 @@ rpm -q $PACKAGE || fail "$PACKAGE not installed" find_free_slot() { - # FIXME: We should parse the guest xml and find the next available slot - echo '0x06' + local guest=$1 + slot=$(cat $guest | awk '/<address/ { print }' | sed -e "s/.*slot='0x\([^']*\)'.*/\1/" | sort | tail -n 1 | tr '[:lower:]' '[:upper:]') + printf "0x%02x\n" $(($(echo "ibase=16; $slot" | bc) +1 )) } add_interface() { local guest=$1 local switch=$2 - local slot=$(find_free_slot) - sed -ie "/<\/interface>/ a \<interface type='bridge'>\n\<source bridge='$switch'\/>\n\<virtualport type='openvswitch'\/>\n\<model type='virtio'\/>\n\<address type='pci' domain='0x0000' bus='0x00' slot='$slot' function='0x0'\/>\n\<\/interface>" $guest - virsh define --file $guest + local slot=$(find_free_slot $guest) + sed -ie "/<\/interface>/ a \<interface type='bridge'>\n\<source bridge='$switch'\/>\n\<virtualport type='openvswitch'\/>\n\<model type='virtio'\/>\n\<address type='pci' domain='0x0000' bus='0x00' slot='0x$slot' function='0x0'\/>\n\<\/interface>" $guest return $? } -add_vlan() +add_tag() { local guest=$1 local switch=$2 - local vlan=$(echo $3| sed -e 's/vlan//') - sed -ie "/<source bridge='$switch'\/>/ a \<vlan>\n<tag id='$vlan'\/>\n<\/vlan>" $guest - virsh define --file $guest + local tag=$3 + sed -ie "/<source bridge='$switch'\/>/ a \<vlan>\n<tag id='$tag'\/>\n<\/vlan>" $guest return $? } -set | grep -i vlan - -for switch in $SWITCHES; do - if [ -n "VLANS_$switch" ]; then - for vlan in $(eval echo \$VLANS_$switch); do - for guest in $(eval echo \$$vlan); do - add_interface /etc/libvirt/qemu/${guest}.xml $switch && report_result $TEST/$guest/$switch PASS 0 || report_result $TEST/$guest/$switch FAIL 1 - add_vlan /etc/libvirt/qemu/${guest}.xml $switch $vlan && report_result $TEST/$guest/$vlan PASS 0 || report_result $TEST/$guest/$vlan FAIL 1 - done - done - fi - for guest in $(eval echo \$$switch); do - add_interface /etc/libvirt/qemu/${guest}.xml $switch && report_result $TEST/$guest/$switch PASS 0 || report_result $TEST/$guest/$switch FAIL 1 - done +for guest in $GUESTS; do + for config in $(eval echo \$$guest); do + switch=$(echo $config| sed -e 's/.*switch=\([^\;]*\).*/\1/') + tag=$(echo $config| sed -e 's/.*tag=\([^\;]*\).*/\1/') + add_interface /etc/libvirt/qemu/${guest}.xml $switch + if [ -n "$tag" ];then + add_tag /etc/libvirt/qemu/${guest}.xml $switch $tag + fi + virsh define --file /etc/libvirt/qemu/${guest}.xml && report_result $TEST/$guest/$config PASS 0 || report_result $TEST/$guest/$config FAIL 1 done |