speed up the installation of compass
[genesis.git] / compass / deploy / network.sh
diff --git a/compass/deploy/network.sh b/compass/deploy/network.sh
new file mode 100755 (executable)
index 0000000..c60607e
--- /dev/null
@@ -0,0 +1,70 @@
+function destroy_nets() {
+    sudo virsh net-destroy mgmt > /dev/null 2>&1
+    sudo virsh net-undefine mgmt > /dev/null 2>&1
+    
+    sudo virsh net-destroy install > /dev/null 2>&1
+    sudo virsh net-undefine install > /dev/null 2>&1
+    rm -rf $COMPASS_DIR/deploy/work/network/*.xml
+}
+
+function setup_om_bridge() {
+    local device=$1
+    local gw=$2
+    ip link set br_install down
+    ip addr flush $device
+    brctl delbr br_install
+
+    brctl addbr br_install
+    brctl addif br_install $device
+    ip link set br_install up
+
+    shift;shift
+    for ip in $*;do
+        ip addr add $ip dev br_install
+    done
+
+    route add default gw $gw
+}
+
+function setup_om_nat() {
+    # create install network
+    sed -e "s/REPLACE_BRIDGE/br_install/g" \
+        -e "s/REPLACE_NAME/install/g" \
+        -e "s/REPLACE_GATEWAY/$INSTALL_GW/g" \
+        -e "s/REPLACE_MASK/$INSTALL_MASK/g" \
+        -e "s/REPLACE_START/$INSTALL_IP_START/g" \
+        -e "s/REPLACE_END/$INSTALL_IP_END/g" \
+        $COMPASS_DIR/deploy/template/network/nat.xml \
+        > $WORK_DIR/network/install.xml
+    
+    sudo virsh net-define $WORK_DIR/network/install.xml
+    sudo virsh net-start install
+}
+
+function create_nets() {
+    destroy_nets
+    
+    # create mgmt network
+    sed -e "s/REPLACE_BRIDGE/br_mgmt/g" \
+        -e "s/REPLACE_NAME/mgmt/g" \
+        -e "s/REPLACE_GATEWAY/$MGMT_GW/g" \
+        -e "s/REPLACE_MASK/$MGMT_MASK/g" \
+        -e "s/REPLACE_START/$MGMT_IP_START/g" \
+        -e "s/REPLACE_END/$MGMT_IP_END/g" \
+        $COMPASS_DIR/deploy/template/network/nat.xml \
+        > $WORK_DIR/network/mgmt.xml
+    
+    sudo virsh net-define $WORK_DIR/network/mgmt.xml
+    sudo virsh net-start mgmt
+    
+    # create install network
+    if [[ ! -z $VIRT_NUMBER ]];then
+        setup_om_nat
+    else
+        mask=`echo $INSTALL_MASK | awk -F'.' '{print ($1*(2^24)+$2*(2^16)+$3*(2^8)+$4)}'`
+        mask_len=`echo "obase=2;${mask}"|bc|awk -F'0' '{print length($1)}'`
+        setup_om_bridge $OM_NIC $OM_GW $INSTALL_GW/$mask_len $OM_IP
+    fi
+
+}
+