#!/bin/bash source _common.sh source /usr/share/yunohost/helpers #================================================= # RETRIEVE ARGUMENTS #================================================= data_dir=$(ynh_app_setting_get $app data_dir) secret_node_id=$(ynh_app_setting_get $app data_dir) if ! system_is_inside_container then nbd_index=$(cat $data_dir/nbd_index) fi set__weight() { if system_is_inside_container then systemctl stop $app old_weight="$(ynh_app_setting_get --app=$app --key=weight)" if [ $old_weight -le $weight ] then qemu-img resize $data_dir/garage_data.qcow2 "$weight"G qemu-nbd --connect /dev/nbd$nbd_index $data_dir/garage_data.qcow2 e2fsck -f -y /dev/nbd$nbd_index resize2fs /dev/nbd$nbd_index qemu-nbd --disconnect /dev/nbd$nbd_index else e2fsck -f -y /dev/nbd0 resize2fs /dev/nbd$nbd_index $weightG qemu-nbd --disconnect /dev/nbd$nbd_index qemu-img resize --shrink $data_dir/garage_data.qcow2 "$weight"G fi $install_dir/umount_disk.sh systemctl start $app sleep 3 fi $garage layout assign $secret_node_id -c $weight 2>/dev/null garage_layout_apply ynh_app_setting_set --app=$app --key=weight --value=$weight } set__bootstrap_peers() { garage_connect "$bootstrap_peers" 2>/dev/null garage_layout_apply ynh_app_setting_set --app=$app --key=bootstrap_peers --value=$bootstrap_peers } get__node() { cat << EOF ask: en: "**Node Id** : $($garage node id -q) \n *This id is a sensitive information and should not be shared with anyone else than other nodes of the cluster*" style: "info" EOF } get__status() { status=$($garage status 2> /dev/null | sed -E 's/([a-z0-9]{16})/\n**\1**/g') cat << EOF ask: en: "**Current garage layout**: \n $status" EOF if echo "$status" | grep -q "FAILED NODES\|garage layout show" then cat << EOF style: "danger" EOF else cat << EOF style: "success" EOF fi } #================================================= # GENERIC FINALIZATION #================================================= ynh_app_config_run $1