aboutsummaryrefslogtreecommitdiffstats
path: root/deploy/network.sh
blob: 864ec0118978e0df1d9f99b86a9b9c2d151e2af2 (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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
function destroy_nat() {
    sudo virsh net-destroy $1  2>&1
    sudo virsh net-undefine $1 2>&1
    rm -rf $COMPASS_DIR/deploy/work/network/$1.xml
}

function destroy_bridge()
{
    bridge=$1
    nic=$2
    ips=$(ip addr show $bridge | grep 'inet ' | awk -F' ' '{print $2}')
    routes=$(ip route show | grep $bridge)

    ip link set $bridge down

    brctl delbr $bridge

    for ip in $ips; do
        ip addr add $ip dev $nic
    done

    echo "$routes" | while read line; do
        echo $line | sed "s/$bridge/$nic/g" | xargs ip route add | true
    done
}

function create_bridge()
{
    bridge=$1
    nic=$2
    ips=$(ip addr show $nic | grep 'inet ' | awk -F' ' '{print $2}')
    routes=$(ip route show | grep $nic)

    ip addr flush $nic

    brctl addbr $bridge
    brctl addif $bridge $nic
    ip link set $bridge up

    for ip in $ips; do
        ip addr add $ip dev $bridge
    done

    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)}'`
    ip addr add $INSTALL_GW/$mask_len dev $bridge

    echo "$routes" | while read line; do
        echo $line | sed "s/$nic/$bridge/g" | xargs ip route add | true
    done
}

function setup_om_bridge() {
    destroy_bridge br_install $OM_NIC
    create_bridge br_install $OM_NIC
}

function setup_om_nat() {
    destroy_nat install
    # 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_nat mgmt
    # 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
        setup_om_bridge
    fi
}