Refactor installers support code
[doctor.git] / tests / lib / installers / fuel
diff --git a/tests/lib/installers/fuel b/tests/lib/installers/fuel
new file mode 100644 (file)
index 0000000..34a8692
--- /dev/null
@@ -0,0 +1,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
+}