From 33d7d4b312de92539c40c174a7debb08fb076c34 Mon Sep 17 00:00:00 2001 From: Jimmy Monin Date: Sun, 1 Jul 2018 10:06:14 +0200 Subject: [PATCH] Use Redis helper to use an available database during installation --- scripts/_common.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ scripts/install | 5 +++++ scripts/remove | 7 +++++++ scripts/upgrade | 4 ++++ 4 files changed, 58 insertions(+) diff --git a/scripts/_common.sh b/scripts/_common.sh index 517a1f9..75a06dd 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -651,3 +651,45 @@ ynh_maintenance_mode_OFF () { systemctl reload nginx } + +#================================================= +# REDIS HELPERS +#================================================= + +# get the first available redis database +# +# usage: ynh_redis_get_free_db +# | returns: the database number to use +ynh_redis_get_free_db() { + local result max db + result="$(redis-cli INFO keyspace)" + + # get the num + max=$(cat /etc/redis/redis.conf | grep ^databases | grep -Eow "[0-9]+") + + db=0 + # default Debian setting is 15 databases + for i in $(seq 0 "$max") + do + if ! echo "$result" | grep -q "db$i" + then + db=$i + break 1 + fi + db=-1 + done + + test "$db" -eq -1 && ynh_die "No available Redis databases..." + + echo "$db" +} + +# Create a master password and set up global settings +# Please always call this script in install and restore scripts +# +# usage: ynh_redis_remove_db database +# | arg: database - the database to erase +ynh_redis_remove_db() { + local db=$1 + redis-cli -n "$db" flushall +} diff --git a/scripts/install b/scripts/install index e8ffd05..aa89932 100644 --- a/scripts/install +++ b/scripts/install @@ -148,6 +148,11 @@ ynh_replace_string "smtp_address =" "smtp_address = localhost" "$discourse_confi ynh_replace_string "smtp_domain =" "smtp_domain = $domain" "$discourse_config_file" ynh_replace_string "smtp_enable_start_tls = true" "smtp_enable_start_tls = false" "$discourse_config_file" +# Configure redis +redis_db=$(ynh_redis_get_free_db) +ynh_app_setting_set "$app" redis_db "$redis_db" +ynh_replace_string "redis_db = 0" "redis_db = $redis_db" "$discourse_config_file" + # Calculate and store the config file checksum ynh_store_file_checksum "$discourse_config_file" diff --git a/scripts/remove b/scripts/remove index f9584da..732c003 100644 --- a/scripts/remove +++ b/scripts/remove @@ -18,6 +18,7 @@ app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get $app domain) db_name=$(ynh_app_setting_get $app db_name) final_path=$(ynh_app_setting_get $app final_path) +redis_db=$(ynh_app_setting_get $app redis_db) #================================================= # STANDARD REMOVE @@ -56,6 +57,12 @@ ynh_remove_ruby ynh_psql_remove_db $db_name $db_name +#================================================= +# REMOVE THE REDIS DATABASE +#================================================= + +ynh_redis_remove_db "$redis_db" + #================================================= # REMOVE APP MAIN DIR #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 1041e13..d5ecf77 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -34,6 +34,7 @@ is_public=$(ynh_app_setting_get $app is_public) admin=$(ynh_app_setting_get $app admin) db_name=$(ynh_app_setting_get $app db_name) db_pwd=$(ynh_app_setting_get $app db_pwd) +redis_db=$(ynh_app_setting_get $app redis_db) # Check memory requirements check_memory_requirements_upgrade @@ -130,6 +131,9 @@ if ! ynh_is_upstream_up_to_date ; then ynh_replace_string "smtp_domain =" "smtp_domain = $domain" "$discourse_config_file" ynh_replace_string "smtp_enable_start_tls = true" "smtp_enable_start_tls = false" "$discourse_config_file" + # Configure redis + ynh_replace_string "redis_db = 0" "redis_db = $redis_db" "$discourse_config_file" + # Calculate and store the config file checksum ynh_store_file_checksum "$discourse_config_file"