xref: /spdk/test/openstack/install_devstack.sh (revision eb53c23236cccb6b698b7ca70ee783da1c574b5f)
150113a0bSPawel Kaminski#!/usr/bin/env bash
2*eb53c232Spaul luse#  SPDX-License-Identifier: BSD-3-Clause
3*eb53c232Spaul luse#  Copyright (C) 2019 Intel Corporation
4*eb53c232Spaul luse#  All rights reserved.
5*eb53c232Spaul luse#
650113a0bSPawel Kaminskitestdir=$(readlink -f $(dirname $0))
750113a0bSPawel Kaminskirootdir=$(readlink -f $testdir/../..)
80c25e6fbSMichal Bergersource "$rootdir/test/common/autotest_common.sh"
950113a0bSPawel Kaminski
10844c8ec3SMichal Bergerfunction usage() {
11844c8ec3SMichal Berger	[[ -n $2 ]] && (
12844c8ec3SMichal Berger		echo "$2"
13844c8ec3SMichal Berger		echo ""
14844c8ec3SMichal Berger	)
1550113a0bSPawel Kaminski	echo "Devstack installation script"
1650113a0bSPawel Kaminski	echo "Usage: $(basename $1) [OPTIONS]"
1750113a0bSPawel Kaminski	echo "--branch=BRANCH    Define which version of openstack"
1850113a0bSPawel Kaminski	echo "                   should be installed. Default is master."
1950113a0bSPawel Kaminski	echo "-h, --help         Print help and exit"
2050113a0bSPawel Kaminski
2150113a0bSPawel Kaminski	exit 0
2250113a0bSPawel Kaminski}
2350113a0bSPawel Kaminski
2450113a0bSPawel Kaminskibranch="master"
2550113a0bSPawel Kaminskiwhile getopts 'h-:' optchar; do
2650113a0bSPawel Kaminski	case "$optchar" in
2750113a0bSPawel Kaminski		-)
2850113a0bSPawel Kaminski			case "$OPTARG" in
2950113a0bSPawel Kaminski				help) usage $0 ;;
3050113a0bSPawel Kaminski				branch=*) branch="${OPTARG#*=}" ;;
3150113a0bSPawel Kaminski			esac
3250113a0bSPawel Kaminski			;;
3350113a0bSPawel Kaminski		h) usage $0 ;;
34844c8ec3SMichal Berger		*) usage $0 "Invalid argument '$OPTARG'" ;;
3550113a0bSPawel Kaminski	esac
3650113a0bSPawel Kaminskidone
3750113a0bSPawel Kaminski
380c25e6fbSMichal Bergerif [[ -e /opt/stack/devstack/unstack.sh ]]; then
3950113a0bSPawel Kaminski	cd /opt/stack/devstack
4050113a0bSPawel Kaminski	su -c "./unstack.sh" -s /bin/bash stack
410c25e6fbSMichal Bergerfi
4250113a0bSPawel Kaminski
430c25e6fbSMichal Bergermkdir -p /opt/stack
440c25e6fbSMichal Bergerrm -rf /opt/stack/*
4550113a0bSPawel Kaminski
4602da8ebdSMaciej Wawrykr=0
470c25e6fbSMichal Bergeruntil ((++r >= 20)); do
4850113a0bSPawel Kaminski	if [[ $branch == "master" ]]; then
490c25e6fbSMichal Berger		git clone --depth 1 https://opendev.org/openstack-dev/devstack /opt/stack/devstack && break
5058410e6cSMichal Berger		# FIXME: Workaround for broken requirements with suds-jurko<->setuptools
5158410e6cSMichal Berger		export REQUIREMENTS_BRANCH=stable/xena
5250113a0bSPawel Kaminski	else
530c25e6fbSMichal Berger		git clone --depth 1 https://opendev.org/openstack-dev/devstack -b "stable/$branch" /opt/stack/devstack && break
5450113a0bSPawel Kaminski	fi
5502da8ebdSMaciej Wawrykdone
560c25e6fbSMichal Berger
570c25e6fbSMichal Berger# Check if we reached max retries count
580c25e6fbSMichal Berger((r < 20))
590c25e6fbSMichal Berger
600c25e6fbSMichal Bergergit clone https://github.com/openstack/os-brick.git /opt/stack/os-brick
610c25e6fbSMichal Bergercd /opt/stack/os-brick
620c25e6fbSMichal Bergerpython3 ./setup.py install
630c25e6fbSMichal Berger
6450113a0bSPawel Kaminskicp $rootdir/scripts/vagrant/local.conf /opt/stack/devstack/local.conf
6550113a0bSPawel Kaminski
661cd28b48SMichal Berger# unset PYTHONPATH set by autotest_common.sh - keystone calls to stevedore's caching api and hits sys.path. In
671cd28b48SMichal Berger# our case the list includes $rootdir/scripts which stack user can't access due to lack of permissions.
681cd28b48SMichal Berger# Setting FORCE=yes allows stack.sh to run under distro versions which are not included in SUPPORTED_DISTROS.
691cd28b48SMichal Berger# This allows us to be more relaxed and run under a bit newer|older versions of the same distro (e.g. ubuntu)
701cd28b48SMichal Berger# in our CI.
7150113a0bSPawel Kaminskicd /opt/stack/devstack
720c25e6fbSMichal Berger./tools/create-stack-user.sh
730c25e6fbSMichal Bergerchown -R stack:stack /opt/stack
741cd28b48SMichal Bergersu -c "PYTHONPATH= FORCE=yes ./stack.sh" -s /bin/bash stack
7550113a0bSPawel Kaminskisource openrc admin admin
7650113a0bSPawel Kaminskiopenstack volume type create SPDK --public
7768b6d0efSMichal Berger
7868b6d0efSMichal Bergerif [[ $branch == master ]]; then
7968b6d0efSMichal Berger	# FIXME: For some reason tempest won't work unless neutron has securitygroup enabled
8068b6d0efSMichal Berger	# (even when testing with security_group disabled in tempest.conf). For the time
8168b6d0efSMichal Berger	# being, until someone understands why this seem to be the case, patch the ml2 plugin
8268b6d0efSMichal Berger	# config - instead of touching our local.conf which is still valid for the wallaby -
8368b6d0efSMichal Berger	# to enable the securitygroup right before the tests start.
8468b6d0efSMichal Berger	[[ -e /etc/neutron/plugins/ml2/ml2_conf.ini ]]
8568b6d0efSMichal Berger	sed -i -e "s/enable_security_group = False/enable_security_group = True/g" /etc/neutron/plugins/ml2/ml2_conf.ini
8668b6d0efSMichal Bergerfi
87