compass-core/regtest/regtest.sh
zhaoxinyu a044f9f3c5 Install Compass in virtual env
Create virtualenv for compass, point compass site packages to virtualenv,
make virtualenv accessable for apache.
Change compass executable scripts to use python in env to be virtualenv
compatible.
Make progress_update daemon use virtualenv.
Comment out some health checks that use packages not available to pip, eg,
yum, apt since we have other ways to check packages any way.

Conflicts:

	conf/compassd
	install/compass.sh
	install/dependency.sh
	install/prepare.sh
	misc/apache/compass.wsgi
	requirements.txt

Change-Id: Ib48633601bf238ffc660c4694834897edbe45e07
2014-07-31 19:50:49 -07:00

187 lines
5.6 KiB
Bash
Executable File

#!/bin/bash -x
function mac_address_part() {
hex_number=$(printf '%02x' $RANDOM)
number_length=${#hex_number}
number_start=$(expr $number_length - 2)
echo ${hex_number:$number_start:2}
}
function mac_address() {
echo "00:00:$(mac_address_part):$(mac_address_part):$(mac_address_part):$(mac_address_part)"
}
function tear_down_machines() {
virtmachines=$(virsh list --name)
for virtmachine in $virtmachines; do
echo "destroy $virtmachine"
virsh destroy $virtmachine
if [[ "$?" != "0" ]]; then
echo "destroy instance $virtmachine failed"
exit 1
fi
done
virtmachines=$(virsh list --all --name)
for virtmachine in $virtmachines; do
echo "undefine $virtmachine"
virsh undefine $virtmachine
if [[ "$?" != "0" ]]; then
echo "undefine instance $virtmachine failed"
exit 1
fi
done
}
REGTEST_CONF=${REGTEST_CONF:-"regtest.conf"}
REGTEST_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source ${REGTEST_DIR}/${REGTEST_CONF}
source `which virtualenvwrapper.sh`
workon compass-core
declare -A roles_list
machines=''
for roles in ${HOST_ROLES//;/ }; do
roles_list[${#roles_list[@]}]=${roles}
done
echo "role list: ${roles_list[@]}"
roles_offset=0
host_roles_list=''
tear_down_machines
echo "setup $VIRT_NUM virt machines"
for i in `seq $VIRT_NUM`; do
if [[ ! -e /tmp/pxe${i}.raw ]]; then
echo "create image for instance pxe$i"
qemu-img create -f raw /tmp/pxe${i}.raw ${VIRT_DISK}
if [[ "$?" != "0" ]]; then
echo "create image /tmp/pxe${i}.raw failed"
exit 1
fi
else
echo "recreate image for instance pxe$i"
rm -rf /tmp/pxe${i}.raw
qemu-img create -f raw /tmp/pxe${i}.raw ${VIRT_DISK}
if [[ "$?" != "0" ]]; then
echo "create image /tmp/pxe${i}.raw failed"
exit 1
fi
fi
mac=$(mac_address)
echo "virt-install instance pxe$i on mac ${mac}"
virt-install --accelerate --hvm --connect qemu:///system \
--network=bridge:installation,mac=${mac} --pxe \
--network=bridge:installation \
--network=bridge:installation \
--network=bridge:installation \
--name pxe${i} --ram=${VIRT_MEM} \
--disk /tmp/pxe${i}.raw,format=raw \
--vcpus=${VIRT_CPUS} \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole \
--autostart \
--os-type=linux --os-variant=rhel6
if [[ "$?" != "0" ]]; then
echo "install instance pxe${i} failed"
exit 1
fi
echo "make pxe${i} reboot if installation failing."
sed -i "/<boot dev='hd'\/>/ a\ <bios useserial='yes' rebootTimeout='0'\/>" /etc/libvirt/qemu/pxe${i}.xml
echo "check pxe${i} state"
state=$(virsh domstate pxe${i})
if [[ "$state" == "running" ]]; then
echo "pxe${i} is already running"
virsh destroy pxe${i}
if [[ "$?" != "0" ]]; then
echo "detroy intsance pxe${i} failed"
exit 1
fi
fi
echo "start pxe${i}"
virsh start pxe${i}
if [[ "$?" != "0" ]]; then
echo "start instance pxe${i} failed"
exit 1
fi
if [ -z "$machines" ]; then
machines="${mac}"
else
machines="${machines},${mac}"
fi
if [ $roles_offset -lt ${#roles_list[@]} ]; then
host_roles="host${i}=${roles_list[$roles_offset]}"
roles_offset=$(expr $roles_offset + 1)
else
host_roles="host${i}="
fi
if [ -z "$host_roles_list" ]; then
host_roles_list="$host_roles"
else
host_roles_list="${host_roles_list};$host_roles"
fi
done
echo "machines: $machines"
echo "host roles: $host_roles_list"
virsh list
# Avoid infinite relative symbolic links
if [[ ! -L cobbler_logs ]]; then
ln -s /var/log/cobbler/anamon cobbler_logs
fi
if [[ ! -L compass_logs ]]; then
ln -s /var/log/compass compass_logs
fi
CLIENT_SCRIPT=/opt/compass/bin/client.py
/opt/compass/bin/refresh.sh
if [[ "$?" != "0" ]]; then
echo "failed to refresh"
exit 1
fi
if [[ "$USE_POLL_SWITCHES" == "0" || "$USE_POLL_SWITCHES" == "false" ]]; then
POLL_SWITCHES_FLAG="nopoll_switches"
TMP_SWITCH_MACHINE_FILE=$(mktemp)
> ${TMP_SWITCH_MACHINE_FILE}
for switch_ip in ${SWITCH_IPS//,/ }; do
echo "switch,${switch_ip},huawei,${SWITCH_VERSION},${SWITCH_COMMUNITY},under_monitoring" >> ${TMP_SWITCH_MACHINE_FILE}
switch_port=1
for mac in ${machines//,/ }; do
echo "machine,${switch_ip},${switch_port},1,${mac}" >> ${TMP_SWITCH_MACHINE_FILE}
let switch_port+=1
done
break
done
echo "generated switch machine file: $TMP_SWITCH_MACHINE_FILE"
cat $TMP_SWITCH_MACHINE_FILE
echo "======================================================="
/opt/compass/bin/manage_db.py set_switch_machines --switch_machines_file ${TMP_SWITCH_MACHINE_FILE}
else
POLL_SWITCHES_FLAG="poll_switches"
fi
${CLIENT_SCRIPT} --logfile= --loglevel=info --logdir= --networking="${NETWORKING}" --partitions="${PARTITION}" --credentials="${SECURITY}" --host_roles="${host_roles_list}" --dashboard_role="${DASHBOARD_ROLE}" --switch_ips="${SWITCH_IPS}" --machines="${machines}" --switch_credential="${SWITCH_CREDENTIAL}" --deployment_timeout="${DEPLOYMENT_TIMEOUT}" --${POLL_SWITCHES_FLAG}
rc=$?
deactivate
# Tear down machines after the test
if [[ $rc != 0 ]]; then
tear_down_machines
echo "deployment failed"
exit 1
fi
if [[ $tempest == true ]]; then
./tempest_run.sh
if [[ $? != 0 ]]; then
tear_down_machines
echo "tempest failed"
exit 1
fi
tear_down_machines
fi