#!/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 }