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