From 81fafee93325b3c7fbb1c7f01b7dda76f379065e Mon Sep 17 00:00:00 2001 From: Syspretor <32930733+Syspretor@users.noreply.github.com> Date: Tue, 30 Jul 2024 20:56:09 +0800 Subject: [PATCH] Feat:support subpath in juicefs volume dynamic-mount (#4241) Signed-off-by: jiuyu Co-authored-by: jiuyu --- addons/dynamic-mount/juicefs/docker/mount.sh | 28 +++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/addons/dynamic-mount/juicefs/docker/mount.sh b/addons/dynamic-mount/juicefs/docker/mount.sh index 8db1475ed46..2c8e06a4568 100644 --- a/addons/dynamic-mount/juicefs/docker/mount.sh +++ b/addons/dynamic-mount/juicefs/docker/mount.sh @@ -7,17 +7,37 @@ if [[ $# -ne 4 ]]; then exit 1 fi -mount_src=$1 # e.g. juicefs://mybucket +mount_src=$1 # e.g. juicefs://volume-name/subpath mount_target=$2 # e.g. /runtime-mnt/thin/default/thin-demo/thin-fuse/mybucket fs_type=$3 mount_opt_file=$4 # e.g. /etc/fluid/mount-opts/mybucket.opts (mount options in json format) -filesystem_name=${mount_src#juicefs://} +# Check if the mount_src starts with juicefs:// +if [[ "$mount_src" == juicefs://* ]]; then + juicefs_volume_path=${mount_src#juicefs://} +else + echo "Error: mount_src does not start with juicefs://" + exit 1 +fi + +if [[ "$juicefs_volume_path" == *"/"* ]]; then + volume_name="${juicefs_volume_path%%/*}" + volume_subpath="${juicefs_volume_path#*/}" +else + volume_name=$juicefs_volume_path +fi + token_file=$(cat ${mount_opt_file} | jq -r '.["token"]') access_key_file=$(cat ${mount_opt_file} | jq -r '.["access-key"]') secret_key_file=$(cat ${mount_opt_file} | jq -r '.["secret-key"]') bucket=$(cat ${mount_opt_file} | jq -r '.["bucket"]') -juicefs auth $filesystem_name --token `cat $token_file` --access-key `cat $access_key_file` --secret-key `cat $secret_key_file` --bucket "$bucket" +juicefs auth $volume_name --token `cat $token_file` --access-key `cat $access_key_file` --secret-key `cat $secret_key_file` --bucket "$bucket" -exec juicefs mount -f $filesystem_name $mount_target \ No newline at end of file +if [[ -z "$volume_subpath" ]]; then +# e.g. juicefs://volume-name/ || juicefs://volume-name + exec juicefs mount -f $volume_name $mount_target +else +# e.g. juicefs://volume-name/subpath-1 || juicefs://volume-name/subpath-1/subpath-2/.../ + exec juicefs mount -f $volume_name $mount_target --subdir="/"$volume_subpath +fi