summaryrefslogtreecommitdiffstats
path: root/tests/lib
diff options
context:
space:
mode:
authorCarlos Goncalves <carlos.goncalves@neclab.eu>2016-11-16 09:55:01 +0000
committerCarlos Goncalves <carlos.goncalves@neclab.eu>2016-12-10 16:18:46 +0000
commit83076cf49ebd8ded4d5d5e9667fcd8e9e9be4172 (patch)
tree0649e9f7e01d3a73b25099396a40c9c26d2d3c2d /tests/lib
parent23f860704776c1be1d71e81580044de4c33d7a93 (diff)
Refactor installers support code
Restructuring tests directory to become more modular, and adding installer helper functions. JIRA: DOCTOR-71 Change-Id: Ib3846c35485cfa4f0a0881beb69811cdc0b8f66f Signed-off-by: Carlos Goncalves <carlos.goncalves@neclab.eu>
Diffstat (limited to 'tests/lib')
-rw-r--r--tests/lib/installer34
-rw-r--r--tests/lib/installers/apex24
-rw-r--r--tests/lib/installers/fuel107
-rw-r--r--tests/lib/installers/local21
4 files changed, 186 insertions, 0 deletions
diff --git a/tests/lib/installer b/tests/lib/installer
new file mode 100644
index 00000000..cdde6eff
--- /dev/null
+++ b/tests/lib/installer
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+INSTALLER_TYPE=${INSTALLER_TYPE:-local}
+INSTALLER_IP=${INSTALLER_IP:-none}
+ssh_opts_cpu="$ssh_opts"
+
+function is_installer_supported {
+ local installer="$1"
+ [[ -f $TOP_DIR/lib/installers/$installer ]]
+}
+
+function is_installer {
+ local installer="$1"
+ [[ $installer == $INSTALLER_TYPE ]]
+}
+
+function setup_installer {
+ if ! is_installer_supported $INSTALLER_TYPE; then
+ die $LINENO"INSTALLER_TYPE=$INSTALLER_TYPE is not supported."
+ fi
+
+ source $TOP_DIR/lib/installers/$INSTALLER_TYPE
+
+ if ! is_set INSTALLER_IP; then
+ get_installer_ip
+ fi
+
+ installer_get_ssh_keys
+ installer_apply_patches
+}
+
+function cleanup_installer {
+ cleanup_installer_$INSTALLER_TYPE
+}
diff --git a/tests/lib/installers/apex b/tests/lib/installers/apex
new file mode 100644
index 00000000..54b3dce2
--- /dev/null
+++ b/tests/lib/installers/apex
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+function get_installer_ip {
+ local instack_mac=$(sudo virsh domiflist instack | awk '/default/{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 {
+ sudo scp $ssh_opts root@"$INSTALLER_IP":/home/stack/.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 {
+ # Noop
+ return
+}
+
+function cleanup_installer_apex {
+ # Noop
+ return
+}
diff --git a/tests/lib/installers/fuel b/tests/lib/installers/fuel
new file mode 100644
index 00000000..34a86922
--- /dev/null
+++ b/tests/lib/installers/fuel
@@ -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
+}
diff --git a/tests/lib/installers/local b/tests/lib/installers/local
new file mode 100644
index 00000000..e7aed14f
--- /dev/null
+++ b/tests/lib/installers/local
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+function get_installer_ip {
+ # Noop
+ return
+}
+
+function installer_get_ssh_keys {
+ echo "INSTALLER_TYPE set to 'local'. Assuming SSH keys already exchanged with $COMPUTE_HOST"
+ return
+}
+
+function installer_apply_patches {
+ # Noop
+ return
+}
+
+function cleanup_installer_local {
+ # Noop
+ return
+}