diff --git a/addons/postgresql/reloader/update-parameter.sh b/addons/postgresql/reloader/update-parameter.sh index dea8d9522..5b1267877 100644 --- a/addons/postgresql/reloader/update-parameter.sh +++ b/addons/postgresql/reloader/update-parameter.sh @@ -1,65 +1,49 @@ -#!/bin/bash -set -euo pipefail +#!/bin/sh +set -eu parse_yaml_array() { - local file="$1" - [[ -f "$file" ]] && grep "^- " "$file" | sed 's/^- //' | sed 's/^["'\'']//' | sed 's/["'\'']$//' + file="$1" + [ -f "$file" ] && grep "^- " "$file" | sed 's/^- //' | sed 's/^["'\'']//' | sed 's/["'\'']$//' } in_array() { - local target="$1" + target="$1" shift - for item in "$@"; do - [[ "$item" == "$target" ]] && return 0 - done - return 1 -} - -build_json_with_jq() { - local json="{}" + items="$*" - for key in "${!patroni_dict[@]}"; do - json=$(echo "$json" | jq --arg k "$key" --arg v "${patroni_dict[$key]}" '. + {($k): $v}') + for item in $items; do + [ "$item" = "$target" ] && return 0 done - - if [[ ${#postgresql_dict[@]} -gt 0 ]]; then - local pg_params="{}" - for key in "${!postgresql_dict[@]}"; do - pg_params=$(echo "$pg_params" | jq --arg k "$key" --arg v "${postgresql_dict[$key]}" '. + {($k): $v}') - done - json=$(echo "$json" | jq --argjson params "$pg_params" '. + {postgresql: {parameters: $params}}') - fi - - echo "$json" + return 1 } -BOOTSTRAP_FILE="./restart-parameter.yaml" -PATRONI_PARAMS_FILE="./patroni-parameter.yaml" +SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) +BOOTSTRAP_FILE="${SCRIPT_DIR}/restart-parameter.yaml" +PATRONI_PARAMS_FILE="${SCRIPT_DIR}/patroni-parameter.yaml" -mapfile -t restart_params < <(parse_yaml_array "$BOOTSTRAP_FILE") -mapfile -t patroni_params < <(parse_yaml_array "$PATRONI_PARAMS_FILE") +restart_params=$(parse_yaml_array "$BOOTSTRAP_FILE") +patroni_params=$(parse_yaml_array "$PATRONI_PARAMS_FILE") command="reload" paramName="${1:?missing param name}" paramValue="${2:?missing value}" -paramValue="${paramValue//\'/}" +paramValue=$(echo "$paramValue" | sed "s/'//g") -declare -A patroni_dict -declare -A postgresql_dict -if in_array "$paramName" "${patroni_params[@]}"; then - patroni_dict["$paramName"]="$paramValue" +json_params="{}" +if in_array "$paramName" "$patroni_params"; then + json_params=$(echo "$json_params" | jq --arg k "$paramName" --arg v "$paramValue" '. + {($k): $v}') else - postgresql_dict["$paramName"]="$paramValue" + pg_params=$(echo "{}" | jq --arg k "$paramName" --arg v "$paramValue" '. + {($k): $v}') + json_params=$(echo "$json_params" | jq --argjson params "$pg_params" '. + {postgresql: {parameters: $params}}') fi -in_array "$paramName" "${restart_params[@]}" && command="restart" +in_array "$paramName" "$restart_params" && command="restart" -json_params=$(build_json_with_jq) curl -s -X PATCH -H "Content-Type: application/json" \ --data "$json_params" \ "http://localhost:8008/config" -if [[ "$command" == "restart" ]]; then +if [ "$command" = "restart" ]; then curl -s -X POST "http://localhost:8008/restart" else curl -s -X POST "http://localhost:8008/reload" diff --git a/addons/postgresql/templates/paramsdef.yaml b/addons/postgresql/templates/paramsdef.yaml index 5bb08d366..12c0ee8fb 100644 --- a/addons/postgresql/templates/paramsdef.yaml +++ b/addons/postgresql/templates/paramsdef.yaml @@ -20,12 +20,7 @@ spec: scriptConfig: scriptConfigMapRef: {{ include "postgresql.patroniReloadScriptsTemplate" $ }} namespace: {{ $.Release.Namespace }} - toolsSetup: - mountPoint: /kb_tools - toolConfigs: - - name: kb-tools - image: {{ $.Values.image.registry | default "docker.io" }}/{{ $.Values.image.repository }}:{{ (index .minors 0).tag }} - asContainerImage: true + ## update patroni master targetPodSelector: matchLabels: