openstack-helm-infra/tools/deployment/common/get-values-overrides.sh
Tin Lam ac18e6acf9 Fix feature gate envvar overriding
Currently using envsubst to perform substitution of value overrides in
the feature gate caused conflicts as gotpl gets templated into those
overrides. This adds in '%%%REPLACE_${var}%%%' and uses sed to perform
the substitution instead to address the issue.

Change-Id: I9d3d630b53a2f3d828866229a5072bb04440ae15
Signed-off-by: Tin Lam <tin@irrational.io>
2019-12-07 12:22:16 -06:00

74 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
#
# 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.
set -e
HELM_CHART="$1"
: "${HELM_CHART_ROOT_PATH:="../openstack-helm-infra"}"
: "${CONTAINER_DISTRO_NAME:="ubuntu"}"
: "${CONTAINER_DISTRO_VERSION:="xenial"}"
: "${FEATURE_GATES:=""}"
OSH_INFRA_FEATURE_MIX="${FEATURE_GATES},${CONTAINER_DISTRO_NAME}_${CONTAINER_DISTRO_VERSION},${CONTAINER_DISTRO_NAME}"
function echoerr () {
echo "$@" 1>&2;
}
function generate_awk_exp_from_mask () {
local POSITION=1
for VALUE in $@; do
[ "${VALUE}" -eq 1 ] && echo -n "print \$${POSITION};"
POSITION=$((POSITION+1))
done
echo -e "\n"
}
function combination () {
POWER=$((2**$#))
BITS="$(awk "BEGIN { while (c++ < $#) printf \"0\" }")"
while [ "${POWER}" -gt 1 ];do
POWER=$((POWER-1))
BIN="$(bc <<< "obase=2; ${POWER}")"
MASK="$(echo "${BITS}" | sed -e "s/0\{${#BIN}\}$/$BIN/" | grep -o .)"
#NOTE: This line is odd, but written to support both BSD and GNU utils
awk -v ORS="-" "{$(generate_awk_exp_from_mask "$MASK")}" <<< "$@" | awk 1 | sed 's/-$//'
done
}
function replace_variables() {
for key in $(env); do
local arr=( $(echo $key | awk -F'=' '{ print $1, $2}') )
sed -i "s#%%%REPLACE_${arr[0]}%%%#${arr[1]}#g" $@
done
}
function override_file_args () {
OVERRIDE_ARGS=""
echoerr "We will attempt to use values-override files with the following paths:"
for FILE in $(combination ${1//,/ } | uniq | tac); do
FILE_PATH="${HELM_CHART_ROOT_PATH}/${HELM_CHART}/values_overrides/${FILE}.yaml"
if [ -f "${FILE_PATH}" ]; then
replace_variables ${FILE_PATH}
OVERRIDE_ARGS+=" --values=${FILE_PATH} "
fi
echoerr "${FILE_PATH}"
done
echo "${OVERRIDE_ARGS}"
}
echoerr "We are going to deploy the service ${HELM_CHART} using ${CONTAINER_DISTRO_NAME} (${CONTAINER_DISTRO_VERSION}) distribution containers."
source ${HELM_CHART_ROOT_PATH}/tools/deployment/common/env-variables.sh
override_file_args "${OSH_INFRA_FEATURE_MIX}"