diff options
| author | Ryan Hallisey <rhallise@redhat.com> | 2015-05-26 21:44:56 -0400 |
|---|---|---|
| committer | Ryan Hallisey <rhallise@redhat.com> | 2015-06-24 10:47:21 -0400 |
| commit | 01e90ec2e575e4545037cb9c2953fd5347bfb875 (patch) | |
| tree | 3f6c93d5b851c1b6f7ff0b93551993e203124c48 /tools | |
| parent | 214ac7e6084583f703041fdfd19d67dda9417274 (diff) | |
| download | kolla-01e90ec2e575e4545037cb9c2953fd5347bfb875.tar.gz kolla-01e90ec2e575e4545037cb9c2953fd5347bfb875.zip | |
Auto generate minimal environment variables doc
This script will generate the minimal-environment-variables doc
based on the what each services has in the check_required_var field.
Anytime that field is changed run this script and commit the changes.
Since Neutron is a thick container, the script will get a few duplicates
in the neutron-agents field. When Neutron is thinned out, this script
will function normally.
Closes-bug: #1459347
Co-Authored-By: Lon Hohberger <lhh@redhat.com>
Change-Id: I1ba6bd5148af12cacfd872591b3c7b84a8dccba2
Diffstat (limited to 'tools')
| -rwxr-xr-x | tools/min-env.sh | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/tools/min-env.sh b/tools/min-env.sh new file mode 100755 index 000000000..403a43c34 --- /dev/null +++ b/tools/min-env.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash +# +# This script generates the minimal environment variable doc + +# Move to top level directory +REAL_PATH=$(python -c "import os,sys;print os.path.realpath('$0')") +cd "$(dirname "$REAL_PATH")/.." + +DOC=docs/minimal-environment-vars.md +DOCKERDIR="docker" +# BASE and TYPE can be hard coded to centos and rdo since the required vars will always be the same +BASE="centos" +TYPE="rdo" + +function write_header { + local header=$1 + header=${header^} + header=$(echo ${header} | sed -e 's/-app//') + echo -e "\n# $header\n" >> "$DOC" +} + +function write_env_var { + local env_var=$1 + if [ -z "$env_var" ]; then + echo "" >> "$DOC" + else + env_var=${env_var%=*} + echo " $env_var" >> "$DOC" + fi +} + +function find_vars { + local img_location=$1 + local empty=true + scripts=$(find ${img_location} -name *.sh | sort -t / -k 4) + + for script in $scripts; do + local vars=$(awk '/^\s*check_required_vars/,/([^\\]\s*$)/' $script) + vars=$(echo "$vars" | sed 's/check_required_vars//' | sed 's/\\//g') + + if [ ! -z "$vars" ]; then + empty=false + for v in $vars; do + write_env_var $v + done + fi + done + + if $empty; then + echo " None" >> "$DOC" + fi +} + +cat > $DOC <<EOF +# Environment Variables + +In order for each service to function, there is a minimum set of required variables that need to be plugged into the environment. Below is the list of variables that is needed for each service to run in a minimal setting. +EOF + +declare -a startsh +startsh=$(find "${DOCKERDIR}/${BASE}/${TYPE}/" -name Dockerfile | sort -t / -k 4 | grep -v data) + +for start_script in $startsh; do + if [ ! "$(dirname $start_script | xargs basename)" == "base" ]; then + write_header $(dirname $start_script | xargs basename) + find_vars $(dirname $start_script) $(dirname $start_script | xargs basename) + fi +done |
