summaryrefslogtreecommitdiffstats
path: root/compass/deploy/network.sh
blob: c60607e8ef4781f53e17dedd3cf6b1a494cee31c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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

}