From 7be0b047dc668a0095d0c7e51948edf83b66d5b8 Mon Sep 17 00:00:00 2001 From: Dean Troyer Date: Wed, 12 Dec 2012 12:50:38 -0600 Subject: [PATCH] Create tools/install_prereqs.sh * Factor system package prereq installs out to tools/install_prereqs.sh * Set minimum time between runs with PREREQ_RERUN_HOURS default = 2 hours * Create re_export_proxy_variables Change-Id: I4a182b1da685f403d6abdd8540d2114796c01682 --- functions | 21 +++++++++++ stack.sh | 20 +---------- tools/install_prereqs.sh | 78 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+), 19 deletions(-) create mode 100755 tools/install_prereqs.sh diff --git a/functions b/functions index 3ee43d3d05..7de5a44f82 100644 --- a/functions +++ b/functions @@ -710,6 +710,27 @@ function restart_service() { } +# HTTP and HTTPS proxy servers are supported via the usual environment variables [1] +# ``http_proxy``, ``https_proxy`` and ``no_proxy``. They can be set in +# ``localrc`` or on the command line if necessary:: +# +# [1] http://www.w3.org/Daemon/User/Proxies/ProxyClients.html +# +# http_proxy=http://proxy.example.com:3128/ no_proxy=repo.example.net ./stack.sh + +function re_export_proxy_variables() { + if [[ -n "$http_proxy" ]]; then + export http_proxy=$http_proxy + fi + if [[ -n "$https_proxy" ]]; then + export https_proxy=$https_proxy + fi + if [[ -n "$no_proxy" ]]; then + export no_proxy=$no_proxy + fi +} + + # Helper to launch a service in a named screen # screen_it service "command-line" function screen_it { diff --git a/stack.sh b/stack.sh index da0faed0d3..c8b8db447c 100755 --- a/stack.sh +++ b/stack.sh @@ -644,25 +644,7 @@ set -o xtrace # Install package requirements echo_summary "Installing package prerequisites" -if is_ubuntu; then - install_package $(get_packages $FILES/apts) -elif is_fedora; then - install_package $(get_packages $FILES/rpms) -elif is_suse; then - install_package $(get_packages $FILES/rpms-suse) -else - exit_distro_not_supported "list of packages" -fi - -if [[ $SYSLOG != "False" ]]; then - if is_ubuntu || is_fedora; then - install_package rsyslog-relp - elif is_suse; then - install_package rsyslog-module-relp - else - exit_distro_not_supported "rsyslog-relp installation" - fi -fi +$TOP_DIR/tools/install_prereqs.sh if is_service_enabled rabbit; then # Install rabbitmq-server diff --git a/tools/install_prereqs.sh b/tools/install_prereqs.sh new file mode 100755 index 0000000000..0bf217b3ae --- /dev/null +++ b/tools/install_prereqs.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +# **install_prereqs.sh** + +# Install system package prerequisites +# +# install_prereqs.sh [-f] +# +# -f Force an install run now + + +if [[ -n "$1" && "$1" = "-f" ]]; then + FORCE=1 +fi + +# Keep track of the devstack directory +TOP_DIR=$(cd $(dirname "$0")/.. && pwd) + +# Import common functions +source $TOP_DIR/functions + +# Determine what system we are running on. This provides ``os_VENDOR``, +# ``os_RELEASE``, ``os_UPDATE``, ``os_PACKAGE``, ``os_CODENAME`` +# and ``DISTRO`` +GetDistro + +# Needed to get ``ENABLED_SERVICES`` +source $TOP_DIR/stackrc + +# Prereq dirs are here +FILES=$TOP_DIR/files + +# Minimum wait time +PREREQ_RERUN_MARKER=${PREREQ_RERUN_MARKER:-$TOP_DIR/.prereqs} +PREREQ_RERUN_HOURS=${PREREQ_RERUN_HOURS:-2} +PREREQ_RERUN_SECONDS=$((60*60*$PREREQ_RERUN_HOURS)) + +NOW=$(date "+%s") +LAST_RUN=$(head -1 $PREREQ_RERUN_MARKER 2>/dev/null || echo "0") +DELTA=$(($NOW - $LAST_RUN)) +if [[ $DELTA -lt $PREREQ_RERUN_SECONDS && -z "$FORCE" ]]; then + echo "Re-run time has not expired ($(($PREREQ_RERUN_SECONDS - $DELTA)) seconds remaining); exiting..." + exit 0 +fi + +# Make sure the proxy config is visible to sub-processes +re_export_proxy_variables + +# Install Packages +# ================ + +# Install package requirements +if is_ubuntu; then + install_package $(get_packages $FILES/apts) +elif is_fedora; then + install_package $(get_packages $FILES/rpms) +elif is_suse; then + install_package $(get_packages $FILES/rpms-suse) +else + exit_distro_not_supported "list of packages" +fi + +if [[ -n "$SYSLOG" && "$SYSLOG" != "False" ]]; then + if is_ubuntu || is_fedora; then + install_package rsyslog-relp + elif is_suse; then + install_package rsyslog-module-relp + else + exit_distro_not_supported "rsyslog-relp installation" + fi +fi + + +# Mark end of run +# --------------- + +date "+%s" >$PREREQ_RERUN_MARKER +date >>$PREREQ_RERUN_MARKER