blob: 9ff9e724c34e6d50ed399bdc0c0aef7ab21640a9 (
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#!/bin/bash
if [[ "congress " == "$INSPECTOR_TYPE" ]]; then
die $LINENO "fuel does not support congress yet..."
fi
function get_installer_ip {
ssh_opts_cpu="$ssh_opts -i instack_key"
is_set INSTALLER_IP && return
local instack_mac
instack_mac=$(sudo virsh domiflist fuel-master | awk '/fuel1/{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 get_controller_ips {
is_set CONTROLLER_IPS && return
get_installer_ip
CONTROLLER_IPS=$(ssh $ssh_opts_cpu root@$INSTALLER_IP \
"fuel node | grep controller | cut -d '|' -f 5|xargs")
die_if_not_set $LINENO CONTROLLER_IPS "No controller IPs"
}
function installer_get_ssh_keys {
if [[ -e instack_key ]]; then
echo "test existing instack_key..."
ssh $ssh_opts_cpu root@${INSTALLER_IP} "hostname" && return
fi
echo "getting instack_key from fuel node..."
sshpass -p r00tme scp $ssh_opts root@${INSTALLER_IP}:.ssh/id_rsa instack_key
sudo chown $(whoami):$(whoami) instack_key
chmod 400 instack_key
}
function installer_apply_patches {
if ! openstack flavor show $VM_FLAVOR ; then
openstack flavor create --ram 512 --disk 1 $VM_FLAVOR \
&& touch created_doctor_flavor
fi
# TODO(r-mibu): fix the followings in upstream (fuel)
get_controller_ips
for node in $CONTROLLER_IPS;do
echo "check controller configuration for doctor ($node)"
ssh $ssh_opts_cpu "root@$node" '
set -x
date
echo "### apply patches (installer=fuel)"
ep_conf=/etc/ceilometer/event_pipeline.yaml
entry="- notifier://?topic=alarm.all"
if ! grep -q -e "$entry" $ep_conf; then
echo "modify the ceilometer config"
echo " $entry # added by doctor script" >> $ep_conf
service ceilometer-agent-notification restart
fi
# TODO(r-mibu): enable this section once congress 4.0.0 is available
if false; then
co_conf=/etc/congress/congress.conf
entry="congress.datasources.doctor_driver.DoctorDriver"
if ! grep -q -e "^drivers.*$entry" $co_conf; then
echo "modify the congress config"
sed -i -e "/^drivers/s/$/,$entry # added by doctor script/" \
$co_conf
service congress-server restart
fi
rule="-m multiport -p tcp --dports 1789"
rule+=" -m comment --comment doctor-congress"
rule+=" -j ACCEPT"
if ! iptables -C INPUT $rule; then
iptables -I INPUT $rule
fi
ha_conf=/etc/haproxy/conf.d/180-congress.cfg
if [[ ! -e $ha_conf ]]; then
sed -e "1i# generated by doctor script" \
-e "s/9696/1789/" \
-e "s/neutron/congress/" \
/etc/haproxy/conf.d/085-neutron.cfg > $ha_conf
ip netns exec haproxy /usr/lib/ocf/resource.d/fuel/ns_haproxy restart
fi
fi
' > installer_apply_patches_$node.log 2>&1
done
}
function cleanup_installer_fuel {
if [[ -e created_doctor_flavor ]] && openstack flavor show $VM_FLAVOR ; then
openstack flavor delete $VM_FLAVOR && rm -f created_doctor_flavor
fi
# TODO(r-mibu): fix the followings in upstream (fuel)
get_controller_ips
for node in $CONTROLLER_IPS;do
echo "restore controller configuration if touched ($node)"
ssh $ssh_opts_cpu "root@$node" '
set -x
echo "### revert patches (installer=fuel)"
date
# TODO(r-mibu): enable this section once congress 4.0.0 is available
if false; then
ha_conf=/etc/haproxy/conf.d/180-congress.cfg
if grep -q "# generated by doctor script" $ha_conf; then
rm -f $ha_conf
ip netns exec haproxy /usr/lib/ocf/resource.d/fuel/ns_haproxy restart
fi
rule="-m multiport -p tcp --dports 1789"
rule+=" -m comment --comment doctor-congress"
rule+=" -j ACCEPT"
if iptables -C INPUT $rule; then
iptables -D INPUT $rule
fi
co_conf=/etc/congress/congress.conf
entry="congress.datasources.doctor_driver.DoctorDriver"
if grep -q -e "^drivers.*$entry # added by doctor script" $co_conf; then
echo "modify the congress config"
sed -i -e "/^drivers/s/^\(.*\),$entry/\1/" $co_conf
service congress-server restart
fi
fi
ep_conf=/etc/ceilometer/event_pipeline.yaml
if grep -q "# added by doctor script" $ep_conf; then
sed -ie "/# added by doctor script/d" $ep_conf
service ceilometer-agent-notification restart
fi
' >> installer_apply_patches_$node.log 2>&1
done
}
|