Skip to content

Commit 3628594

Browse files
authored
Initial extensions persistence impl for CodeEditor (#582)
1 parent da6992f commit 3628594

File tree

2 files changed

+41
-3
lines changed

2 files changed

+41
-3
lines changed

template/v2/dirs/usr/local/bin/start-code-editor

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,24 @@ copy_user_settings() {
3939
fi
4040
}
4141

42+
install_prepackaged_extensions() {
43+
local prepackaged_extensions_dir="${default_settings_folder}/extensions"
44+
local persistent_extensions_dir="${persistent_settings_folder}/extensions"
45+
46+
# if extensions directory doesn't exist then this is the first time opening the app
47+
if [ ! -d "${persistent_extensions_dir}" ]; then
48+
mkdir -p $persistent_extensions_dir
49+
50+
# find all pre-packaged extensions folders, symlink them to the persistent volume
51+
find "$prepackaged_extensions_dir" -mindepth 1 -maxdepth 1 -type d | while read -r dir; do
52+
dir_name=$(basename "$dir")
53+
54+
ln -s "$dir" "${persistent_extensions_dir}/${dir_name}"
55+
echo "Added extension: $dir"
56+
done
57+
fi
58+
}
59+
4260
eval "$(micromamba shell hook --shell=bash)"
4361

4462
# Activate conda environment 'base', which is the default environment for sagemaker-distribution
@@ -49,17 +67,18 @@ if [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ]; then
4967
# SAGEMAKER_APP_TYPE is set, indicating the server is running within a SageMaker app.
5068
override_machine_settings
5169
copy_user_settings
70+
install_prepackaged_extensions
5271
# Configure the base url to be `/<app-type-in-lower-case>/default`.
5372
sagemaker-code-editor --host 0.0.0.0 --port 8888 \
5473
--without-connection-token \
5574
--base-path "/$SAGEMAKER_APP_TYPE_LOWERCASE/default" \
5675
--server-data-dir $persistent_settings_folder \
57-
--extensions-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions \
76+
--extensions-dir ${persistent_settings_folder}/extensions \
5877
--user-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-user-data
5978
else
6079
sagemaker-code-editor --host 0.0.0.0 --port 8888 \
6180
--without-connection-token \
6281
--server-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data \
6382
--extension-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions \
6483
--user-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-user-data
65-
fi
84+
fi

template/v3/dirs/usr/local/bin/start-code-editor

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,24 @@ copy_user_settings() {
3939
fi
4040
}
4141

42+
install_prepackaged_extensions() {
43+
local prepackaged_extensions_dir="${default_settings_folder}/extensions"
44+
local persistent_extensions_dir="${persistent_settings_folder}/extensions"
45+
46+
# if extensions directory doesn't exist then this is the first time opening the app
47+
if [ ! -d "${persistent_extensions_dir}" ]; then
48+
mkdir -p $persistent_extensions_dir
49+
50+
# find all pre-packaged extensions folders, symlink them to the persistent volume
51+
find "$prepackaged_extensions_dir" -mindepth 1 -maxdepth 1 -type d | while read -r dir; do
52+
dir_name=$(basename "$dir")
53+
54+
ln -s "$dir" "${persistent_extensions_dir}/${dir_name}"
55+
echo "Added extension: $dir"
56+
done
57+
fi
58+
}
59+
4260
eval "$(micromamba shell hook --shell=bash)"
4361

4462
# Activate conda environment 'base', which is the default environment for sagemaker-distribution
@@ -49,12 +67,13 @@ if [ -n "$SAGEMAKER_APP_TYPE_LOWERCASE" ]; then
4967
# SAGEMAKER_APP_TYPE is set, indicating the server is running within a SageMaker app.
5068
override_machine_settings
5169
copy_user_settings
70+
install_prepackaged_extensions
5271
# Configure the base url to be `/<app-type-in-lower-case>/default`.
5372
sagemaker-code-editor --host 0.0.0.0 --port 8888 \
5473
--without-connection-token \
5574
--base-path "/$SAGEMAKER_APP_TYPE_LOWERCASE/default" \
5675
--server-data-dir $persistent_settings_folder \
57-
--extensions-dir /opt/amazon/sagemaker/sagemaker-code-editor-server-data/extensions \
76+
--extensions-dir ${persistent_settings_folder}/extensions \
5877
--user-data-dir /opt/amazon/sagemaker/sagemaker-code-editor-user-data
5978
else
6079
sagemaker-code-editor --host 0.0.0.0 --port 8888 \

0 commit comments

Comments
 (0)