aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-06-24 15:35:02 +0000
committerGerrit Code Review <review@openstack.org>2015-06-24 15:35:02 +0000
commitb9d8dc63fd3dc1b959ed842e5333d1d680807e8d (patch)
tree5dea9d15f473df291bdcc0e13e5fe1e9d40da161 /tools
parent6766632b9ca2aa081464aebec4855c1a6c8d4163 (diff)
parent01e90ec2e575e4545037cb9c2953fd5347bfb875 (diff)
downloadkolla-b9d8dc63fd3dc1b959ed842e5333d1d680807e8d.tar.gz
kolla-b9d8dc63fd3dc1b959ed842e5333d1d680807e8d.zip
Merge "Auto generate minimal environment variables doc"
Diffstat (limited to 'tools')
-rwxr-xr-xtools/min-env.sh68
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