diff --git a/tools/install_modules_acceptance.sh b/tools/install_modules_acceptance.sh new file mode 100755 index 0000000000..cc262dc631 --- /dev/null +++ b/tools/install_modules_acceptance.sh @@ -0,0 +1,86 @@ +#!/bin/bash -ex + +# Copyright 2015 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# This script installs the puppet modules required by infra to run acceptance +# tests. It can run in two different contexts. In the first case, it is running +# as part of a zuul driven check/gate queue where it needs to opportunisticly +# install patches to repositories that are not landed yet. In the second case, +# it is running from a base virtual machine by the beaker tooling where it needs +# to install master of all openstack-infra repos and the tagged versions of all +# library modules. + +# This script uses system-config/modules.env as the source of truth for modules +# to install. It detects the presence of zuul-cloner to decide if we are running +# in a zuul environment or not. + +ROOT=$(readlink -fn $(dirname $0)/..) +MODULE_PATH="${ROOT}/modules:/etc/puppet/modules" + +# These arrays are initialized here and populated in modules.env + +# Array of modules to be installed key:value is module:version. +declare -A MODULES + +# Array of modues to be installed from source and without dependency resolution. +# key:value is source location, revision to checkout +declare -A SOURCE_MODULES + +# Array of modues to be installed from source and without dependency resolution from openstack git +# key:value is source location, revision to checkout +declare -A INTEGRATION_MODULES + +install_external() { + PUPPET_INTEGRATION_TEST=1 ${ROOT}/install_modules.sh +} + +install_openstack() { + cat > clonemap.yaml <<EOF +clonemap: + - name: openstack-infra/project-config + dest: /etc/project-config + - name: '(.*?)/puppet-(.*)' + dest: '/etc/puppet/modules/\2' +EOF + + project_names="" + source ${ROOT}/modules.env + for MOD in ${!INTEGRATION_MODULES[*]}; do + project_scope=$(basename `dirname $MOD`) + repo_name=`basename $MOD` + project_names+=" $project_scope/$repo_name" + done + + sudo -E /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \ + git://git.openstack.org \ + openstack-infra/project-config \ + $project_names + +} + +install_all() { + PUPPET_INTEGRATION_TEST=0 ${ROOT}/install_modules.sh + +} + +if [ -e /usr/zuul-env/bin/zuul-cloner ] ; then + install_external + install_openstack +else + install_all +fi + +# Information on what has been installed +puppet module list