69173bb120
A script to download the latest puppet modules from source. This works well with the upload-puppet-modules script. There are options to pull the latest source or skip an update if the module already exists. Author: Wes Hayutin <weshayutin@gmail.com> Co-Authored-By: Martin Andre <m.andre@redhat.com> Change-Id: I5ee8ec1e54f02c7b39331a56b9bcc36d5a1055f2
116 lines
3.5 KiB
Bash
Executable File
116 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# Copyright 2017 Red Hat, Inc.
|
|
#
|
|
# 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.
|
|
|
|
#
|
|
# Script to download src puppet modules.
|
|
# This script can be used in conjuction with upload-puppet-modules
|
|
#
|
|
set -eu
|
|
set -o pipefail
|
|
|
|
SCRIPT_NAME=$(basename $0)
|
|
SCRIPT_HOME=$(cd $(dirname $0); pwd)
|
|
|
|
|
|
function show_options {
|
|
echo "Usage: $SCRIPT_NAME "
|
|
echo
|
|
echo "Options:"
|
|
echo " -h, --help -- print this help."
|
|
echo " -d, --directory <directory> -- Puppet modules directory. Required."
|
|
echo " -m, --modules 'ceph oslo' -- Puppet modules. Optional. Must be quoted and space delimited"
|
|
echo " -n, --no-pull -- If the module directory exists do not clone or repull the source"
|
|
echo " -x, --no-extras -- Do not download midonet, pacemaker, tripleo"
|
|
echo
|
|
echo Script to download source puppet modules.
|
|
echo This script can be used in conjuction with upload-puppet-modules
|
|
echo
|
|
echo This script uses a list of puppet modules defined in
|
|
echo https://raw.githubusercontent.com/openstack/puppet-openstack-integration/master/openstack_modules.txt
|
|
echo Extra puppet modules are downloaded by default
|
|
exit
|
|
}
|
|
|
|
TEMP=`getopt -o m:hnxd: -l help,modules:,no-pull,no-extras,directory: -n $SCRIPT_NAME -- "$@"`
|
|
if [ $? != 0 ]; then
|
|
echo "Terminating..." # >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Note the quotes around `$TEMP': they are essential!
|
|
eval set -- "$TEMP"
|
|
|
|
MODULES=
|
|
MODULE_DEFAULT_LIST=
|
|
MODULES_DIRECTORY=
|
|
NO_PULL=
|
|
|
|
# Default module selection
|
|
# openstack_modules.txt is the definitive list of puppet modules
|
|
: ${MODULE_DEFAULT_LIST_URL:="https://raw.githubusercontent.com/openstack/puppet-openstack-integration/master/openstack_modules.txt"}
|
|
|
|
# Additional puppet modules may be required
|
|
: ${MODULES_EXTRAS:="
|
|
midonet
|
|
pacemaker
|
|
tripleo
|
|
"}
|
|
|
|
while true ; do
|
|
case "$1" in
|
|
-h|--help) show_options; 0 >&2;;
|
|
-d|--directory) MODULES_DIRECTORY=$2 ; shift 2;;
|
|
-m|--modules) MODULES=$2 ; shift 2;;
|
|
-n|--no-pull) NO_PULL=1 ; shift ;;
|
|
-x|--no-extras) MODULES_EXTRAS=""; shift ;;
|
|
--) shift ; break;;
|
|
*) echo "Error: unsupported option $1." ; exit 1;;
|
|
esac
|
|
done
|
|
|
|
if [ -z $MODULES_DIRECTORY ]; then
|
|
show_options;
|
|
exit
|
|
fi
|
|
|
|
if [[ $MODULES="" ]]; then
|
|
MODULE_DEFAULT_LIST=`curl -s --connect-timeout 5 $MODULE_DEFAULT_LIST_URL`
|
|
if [ $? != 0 ]; then
|
|
echo "Error getting the list of puppet modules from $MODULE_DEFAULT_LIST_URL"
|
|
fi
|
|
fi
|
|
|
|
: ${MODULES:="$MODULE_DEFAULT_LIST $MODULES_EXTRAS"}
|
|
|
|
modules_directory=${MODULES_DIRECTORY%/}
|
|
|
|
mkdir -p $modules_directory
|
|
pushd $MODULES_DIRECTORY
|
|
|
|
for module in $MODULES; do
|
|
echo "checking $module"
|
|
if [[ -d $module && -z "$NO_PULL" ]]; then
|
|
pushd $module > /dev/null
|
|
git pull
|
|
popd > /dev/null
|
|
elif ! [ -d $module ]; then
|
|
git clone https://git.openstack.org/openstack/puppet-$module $module
|
|
else
|
|
echo "$module already exists and will not be updated"
|
|
fi
|
|
done
|
|
|
|
popd
|