summaryrefslogtreecommitdiffstats
path: root/tests/lib/installers/fuel
blob: 34a86922838583cd1715f8dfd0d3a5a8808216ed (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
97
98
99
100
101
102
103
104
105
106
107
#!/bin/bash

function get_installer_ip {
    local instack_mac=$(sudo virsh domiflist fuel-opnfv | awk '/pxebr/{print $5}')
    INSTALLER_IP=$(/usr/sbin/arp -e | grep ${instack_mac} | awk '{print $1}')
    die_if_not_set $LINENO $INSTALLER_IP "No installer IP"
}

function installer_get_ssh_keys {
    sshpass -p r00tme scp $ssh_opts root@${INSTALLER_IP}:.ssh/id_rsa instack_key
    sudo chown $(whoami):$(whoami) instack_key
    chmod 400 instack_key
    ssh_opts_cpu+=" -i instack_key"
}

function installer_apply_patches {
    cat > set_conf.sh << 'END_TXT'
#!/bin/bash
if [ -e /etc/ceilometer/event_pipeline.yaml ]; then
    if ! grep -q '^ *- notifier://?topic=alarm.all$' /etc/ceilometer/event_pipeline.yaml; then
        sed -i 's|- notifier://|- notifier://?topic=alarm.all|' /etc/ceilometer/event_pipeline.yaml
        echo "modify the ceilometer config"
        service ceilometer-agent-notification restart
    fi
else
    echo "ceilometer event_pipeline.yaml file does not exist"
    exit 1
fi
if [ -e /etc/nova/nova.conf ]; then
    if ! grep -q '^notification_driver=messaging$' /etc/nova/nova.conf; then
        sed -i -r 's/notification_driver=/notification_driver=messaging/g' /etc/nova/nova.conf
        echo "modify nova config"
        service nova-api restart
    fi
else
    echo "nova.conf file does not exist"
    exit 1
fi
exit 0
END_TXT

    chmod +x set_conf.sh
    CONTROLLER_IP=$(sshpass -p r00tme ssh 2>/dev/null $ssh_opts root@${INSTALLER_IP} \
         "fuel node | grep controller | cut -d '|' -f 5|xargs")
    for node in $CONTROLLER_IP;do
        scp $ssh_opts_cpu set_conf.sh "root@$node:"
        ssh $ssh_opts_cpu "root@$node" './set_conf.sh > set_conf.log 2>&1 &'
        sleep 1
        scp $ssh_opts_cpu "root@$node:set_conf.log" set_conf_$node.log
    done

    if grep -q "modify the ceilometer config" set_conf_*.log ; then
        NEED_TO_RESTORE_CEILOMETER=true
    fi
    if grep -q "modify nova config" set_conf_*.log ; then
        NEED_TO_RESTORE_NOVA=true
    fi

    echo "waiting service restart..."
    sleep 60

}

function cleanup_installer_fuel {
   if ! ($NEED_TO_RESTORE_CEILOMETER || $NEED_TO_RESTORE_NOVA) ; then
       echo "Don't need to restore config"
       exit 0
   fi

   echo "restore the configuration..."
   cat > restore_conf.sh << 'END_TXT'
#!/bin/bash
if @NEED_TO_RESTORE_CEILOMETER@ ; then
    if [ -e /etc/ceilometer/event_pipeline.yaml ]; then
        if grep -q '^ *- notifier://?topic=alarm.all$' /etc/ceilometer/event_pipeline.yaml; then
            sed -i 's|- notifier://?topic=alarm.all|- notifier://|' /etc/ceilometer/event_pipeline.yaml
            service ceilometer-agent-notification restart
        fi
    else
        echo "ceilometer event_pipeline.yaml file does not exist"
        exit 1
    fi
fi
if @NEED_TO_RESTORE_NOVA@ ; then
    if [ -e /etc/nova/nova.conf ]; then
        if grep -q '^notification_driver=messaging$' /etc/nova/nova.conf; then
            sed -i -r 's/notification_driver=messaging/notification_driver=/g' /etc/nova/nova.conf
            service nova-api restart
        fi
    else
        echo "nova.conf file does not exist"
        exit 1
    fi
fi
exit 0
END_TXT
   sed -i -e "s/@NEED_TO_RESTORE_CEILOMETER@/$NEED_TO_RESTORE_CEILOMETER/" restore_conf.sh
   sed -i -e "s/@NEED_TO_RESTORE_NOVA@/$NEED_TO_RESTORE_NOVA/" restore_conf.sh
   chmod +x restore_conf.sh
   for node in $CONTROLLER_IP;do
       scp $ssh_opts_cpu restore_conf.sh "root@$node:"
       ssh $ssh_opts_cpu "root@$node" './restore_conf.sh > restore_conf.log 2>&1 &'
   done

   echo "waiting service restart..."
   sleep 60
}