
- With Ubuntu bionic based deckhand docker image, uswsi crashes with segmentation fault when it tries to load psycopg2 library, causing the deckhand service become unavailable. The root cause of this problem seems to be that uwsgi and psycopg2 binary wheels are built with different ssl libraries. To address this issue, upgrading psycopg2 to the latest release to the latest binary release. - For opensuse 15.1 image build, python3-six was updated to address package not found issue. - Updated gating ansbile playbooks to address non-voting gate failures. Change-Id: I7be920e16e6114eb2bdbc052a6761f29008baf81
174 lines
4.9 KiB
Bash
Executable File
174 lines
4.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Script intended for running Deckhand integration tests, where integration
|
|
# is defined as the interaction between Deckhand and Keystone and Barbican.
|
|
# Installation dependency is openstack-helm-infra.
|
|
#
|
|
# USAGE: ./tools/integration-tests.sh <test-regex>
|
|
|
|
# TODO(fmontei): Use Ansible for all this.
|
|
# NOTE(fmontei): May have to automate the following installation guide for CI:
|
|
# https://docs.openstack.org/openstack-helm/latest/install/developer/requirements-and-host-config.html#host-configuration
|
|
|
|
set -xe
|
|
|
|
CURRENT_DIR="$(pwd)"
|
|
: ${OSH_INFRA_PATH:="../openstack-helm-infra"}
|
|
: ${OSH_PATH:="../openstack-helm"}
|
|
|
|
|
|
function deploy_barbican {
|
|
set -xe
|
|
|
|
# Pull images and lint chart
|
|
make pull-images barbican
|
|
|
|
# Deploy command
|
|
helm upgrade --install barbican ./barbican \
|
|
--namespace=openstack
|
|
|
|
# Wait for deploy
|
|
./tools/deployment/common/wait-for-pods.sh openstack
|
|
|
|
# Validate deployment info
|
|
helm status barbican
|
|
}
|
|
|
|
|
|
function deploy_osh_keystone_barbican {
|
|
set -xe
|
|
|
|
if [ ! -d "$OSH_INFRA_PATH" ]; then
|
|
git clone https://git.openstack.org/openstack/openstack-helm-infra.git ../openstack-helm-infra
|
|
fi
|
|
|
|
if [ ! -d "$OSH_PATH" ]; then
|
|
git clone https://git.openstack.org/openstack/openstack-helm.git ../openstack-helm
|
|
fi
|
|
|
|
cd ${OSH_PATH}
|
|
# Deploy required packages
|
|
./tools/deployment/common/install-packages.sh
|
|
# Deploy Kubernetes
|
|
sudo modprobe br_netfilter
|
|
./tools/deployment/common/deploy-k8s.sh
|
|
|
|
cd ${CURRENT_DIR}
|
|
sudo -H -E pip install -r test-requirements.txt
|
|
|
|
# remove systemd-resolved local stub dns from resolv.conf
|
|
sudo sed -i.bkp '/^nameserver.*127.0.0.1/d
|
|
w /dev/stdout' /etc/resolv.conf
|
|
# add external nameservers
|
|
echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.conf
|
|
echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolv.conf
|
|
cat /etc/resolv.conf
|
|
|
|
cd ${OSH_PATH}
|
|
# Setup clients on the host and assemble the charts
|
|
./tools/deployment/common/setup-client.sh
|
|
# Deploy the ingress controller
|
|
./tools/deployment/component/common/ingress.sh
|
|
# Deploy NFS Provisioner
|
|
./tools/deployment/component/nfs-provisioner/nfs-provisioner.sh
|
|
# Deploy MariaDB
|
|
./tools/deployment/component/common/mariadb.sh
|
|
# Deploy RabbitMQ
|
|
./tools/deployment/component/common/rabbitmq.sh
|
|
# Deploy Memcached
|
|
./tools/deployment/component/common/memcached.sh
|
|
# Deploy Keystone
|
|
./tools/deployment/component/keystone/keystone.sh
|
|
|
|
deploy_barbican
|
|
}
|
|
|
|
|
|
function deploy_deckhand {
|
|
set -xe
|
|
|
|
export OS_CLOUD=openstack_helm
|
|
|
|
cd ${CURRENT_DIR}
|
|
|
|
# TODO(fmontei): Use Keystone bootstrap override instead.
|
|
interfaces=("admin" "public" "internal")
|
|
deckhand_endpoint="http://127.0.0.1:9000"
|
|
|
|
if [ -z "$( openstack service list --format value | grep deckhand )" ]; then
|
|
openstack service create --enable --name deckhand deckhand
|
|
fi
|
|
|
|
for iface in ${interfaces[@]}; do
|
|
if [ -z "$( openstack endpoint list --format value | grep deckhand | grep $iface )" ]; then
|
|
openstack endpoint create --enable \
|
|
--region RegionOne \
|
|
deckhand $iface $deckhand_endpoint/api/v1.0
|
|
fi
|
|
done
|
|
|
|
openstack service list | grep deckhand
|
|
openstack endpoint list | grep deckhand
|
|
|
|
gen_config false $deckhand_endpoint
|
|
gen_paste false
|
|
|
|
log_section "Running Deckhand via uwsgi."
|
|
|
|
source ${CURRENT_DIR}/entrypoint.sh alembic upgrade head &
|
|
# Give time for migrations to complete.
|
|
sleep 10
|
|
|
|
source ${CURRENT_DIR}/entrypoint.sh server &
|
|
# Give the server a chance to come up. Better to poll a health check.
|
|
sleep 10
|
|
|
|
# NOTE(fmontei): Generate an admin token instead of hacking a policy
|
|
# file with no permissions to test authN as well as authZ.
|
|
export TEST_AUTH_TOKEN=$( openstack token issue --format value -c id )
|
|
local test_barbican_url=$( openstack endpoint list --format value | grep barbican | grep public | awk '{print $7}' )
|
|
|
|
if [[ $test_barbican_url == */ ]]; then
|
|
test_barbican_url=$( echo $test_barbican_url | sed 's/.$//' )
|
|
fi
|
|
|
|
export TEST_BARBICAN_URL=$test_barbican_url
|
|
}
|
|
|
|
|
|
function run_tests {
|
|
set +e
|
|
|
|
export DECKHAND_TEST_DIR=${CURRENT_DIR}/deckhand/tests/integration/gabbits
|
|
|
|
posargs=$@
|
|
if [ ${#posargs} -ge 1 ]; then
|
|
stestr --test-path deckhand/tests/common/ run --serial --slowest --force-subunit-trace --color $1
|
|
else
|
|
stestr --test-path deckhand/tests/common/ run --serial --slowest --force-subunit-trace --color
|
|
fi
|
|
TEST_STATUS=$?
|
|
|
|
set -e
|
|
|
|
if [ "x$TEST_STATUS" = "x0" ]; then
|
|
log_section Done SUCCESS
|
|
else
|
|
log_section Done FAILURE
|
|
exit $TEST_STATUS
|
|
fi
|
|
}
|
|
|
|
|
|
source ${CURRENT_DIR}/tools/common-tests.sh
|
|
|
|
export AIRSHIP_DECKHAND_DATABASE_URL=${PIFPAF_POSTGRESQL_URL}
|
|
|
|
# Clone openstack-helm-infra and setup host and k8s.
|
|
deploy_osh_keystone_barbican
|
|
|
|
# Deploy Deckhand.
|
|
deploy_deckhand
|
|
|
|
run_tests "$@"
|