use ovs network instead of macvtap for virtual deploy 43/5243/2
authorcarey.xu <carey.xuhan@huawei.com>
Fri, 25 Dec 2015 14:07:37 +0000 (22:07 +0800)
committercarey xu <carey.xuhan@huawei.com>
Sat, 26 Dec 2015 03:25:13 +0000 (03:25 +0000)
JIRA: COMPASS-218

Change-Id: I3fdfa71e9f94be964c9bc5ec7313b6fbea9b46dd
Signed-off-by: carey.xu <carey.xuhan@huawei.com>
deploy/network.sh
deploy/prepare.sh
deploy/template/network/bridge_ovs.xml [new file with mode: 0644]

index ac0a73e..836af0f 100755 (executable)
@@ -16,6 +16,44 @@ function setup_bridge_net()
     sudo virsh net-start $net_name
 }
 
+function save_network_info()
+{
+    sudo ovs-vsctl list-br |grep br-external
+    br_exist=$?
+    external_nic=`ip route |grep '^default'|awk '{print $NF}'`
+    route_info=`ip route |grep -Eo '^default via [^ ]+'`
+    ip_info=`ip addr show $external_nic|grep -Eo '[^ ]+ brd [^ ]+ '`
+    if [ $br_exist -eq 0 ]; then
+        if [ "$external_nic" != "br-external" ]; then
+            sudo ovs-vsctl --may-exist add-port br-external $external_nic
+            sudo ip addr flush $external_nic
+            sudo ip addr add $ip_info dev br-external
+            sudo ip route add $route_info dev br-external
+        fi
+    else
+        sudo ovs-vsctl add-br br-external
+        sudo ovs-vsctl add-port br-external $external_nic
+        sudo ip addr flush $external_nic
+        sudo ip addr add $ip_info dev br-external
+        sudo ip route add $route_info dev br-external
+    fi
+}
+
+function setup_bridge_external()
+{
+    sudo virsh net-destroy external
+    sudo virsh net-undefine external
+
+    save_network_info
+    sed -e "s/REPLACE_NAME/external/g" \
+        -e "s/REPLACE_OVS/br-external/g" \
+    $COMPASS_DIR/deploy/template/network/bridge_ovs.xml \
+    > $WORK_DIR/network/external.xml
+
+    sudo virsh net-define $WORK_DIR/network/external.xml
+    sudo virsh net-start external
+}
+
 function setup_nat_net() {
     net_name=$1
     gw=$2
@@ -50,5 +88,5 @@ function create_nets() {
     fi
 
     # create external network
-    setup_bridge_net external $EXTERNAL_NIC
+    setup_bridge_external
 }
index ce8b7ac..e8b2103 100755 (executable)
@@ -19,7 +19,7 @@ function download_iso()
 function prepare_env() {
     export PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages
     sudo apt-get update -y
-    sudo apt-get install -y --force-yes mkisofs bc curl ipmitool
+    sudo apt-get install -y --force-yes mkisofs bc curl ipmitool openvswitch-switch
     sudo apt-get install -y --force-yes git python-pip python-dev
     sudo apt-get install -y --force-yes libxslt-dev libxml2-dev libvirt-dev build-essential qemu-utils qemu-kvm libvirt-bin virtinst libmysqld-dev
     sudo pip install --upgrade pip
diff --git a/deploy/template/network/bridge_ovs.xml b/deploy/template/network/bridge_ovs.xml
new file mode 100644 (file)
index 0000000..cf01a5d
--- /dev/null
@@ -0,0 +1,6 @@
+ <network ipv6='no'>
+   <name>REPLACE_NAME</name>
+   <bridge name='REPLACE_OVS'/>
+   <forward mode='bridge'/>
+   <virtualport type='openvswitch'/>
+ </network>