Finish Schoolhouse programming submission flow
This commit is contained in:
34
home/doris-schoolhouse/bin/backup-to-serenity.sh
Executable file
34
home/doris-schoolhouse/bin/backup-to-serenity.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SERENITY_NFS_EXPORT="${SERENITY_NFS_EXPORT:-10.5.1.5:/mnt/user/data}"
|
||||
SERENITY_MOUNT_POINT="${SERENITY_MOUNT_POINT:-/mnt/serenity-data}"
|
||||
SCHOOLHOUSE_DATA_ROOT="${SCHOOLHOUSE_DATA_ROOT:-/opt/doris-schoolhouse/data}"
|
||||
SERENITY_BACKUP_SUBDIR="${SERENITY_BACKUP_SUBDIR:-backups/nomad/doris-schoolhouse}"
|
||||
RSYNC_BIN="${RSYNC_BIN:-/usr/bin/rsync}"
|
||||
SUDO_BIN="${SUDO_BIN:-/usr/bin/sudo}"
|
||||
MOUNT_BIN="${MOUNT_BIN:-/usr/bin/mount}"
|
||||
DATE_BIN="${DATE_BIN:-/usr/bin/date}"
|
||||
HOSTNAME_BIN="${HOSTNAME_BIN:-/usr/bin/hostname}"
|
||||
|
||||
if [[ ! -d "$SCHOOLHOUSE_DATA_ROOT" ]]; then
|
||||
echo "Schoolhouse data root missing: $SCHOOLHOUSE_DATA_ROOT" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
"$SUDO_BIN" mkdir -p "$SERENITY_MOUNT_POINT"
|
||||
if ! mountpoint -q "$SERENITY_MOUNT_POINT"; then
|
||||
"$SUDO_BIN" "$MOUNT_BIN" -t nfs -o rw,nfsvers=4 "$SERENITY_NFS_EXPORT" "$SERENITY_MOUNT_POINT"
|
||||
fi
|
||||
|
||||
dest_root="$SERENITY_MOUNT_POINT/$SERENITY_BACKUP_SUBDIR"
|
||||
mkdir -p "$dest_root/data"
|
||||
|
||||
"$RSYNC_BIN" -rlt --delete --omit-dir-times --no-perms --no-owner --no-group "$SCHOOLHOUSE_DATA_ROOT/" "$dest_root/data/"
|
||||
|
||||
stamp="$("$DATE_BIN" -u +%Y-%m-%dT%H:%M:%SZ)"
|
||||
host_name="$("$HOSTNAME_BIN")"
|
||||
printf '%s\n' "$stamp" > "$dest_root/last_success_utc.txt"
|
||||
printf '%s\n' "$host_name" > "$dest_root/source_host.txt"
|
||||
|
||||
echo "Schoolhouse backup synced to $dest_root at $stamp"
|
||||
@@ -1,21 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
if [ "$#" -lt 2 ]; then
|
||||
echo "usage: $0 <file> <class_name> [assignment_name]" >&2
|
||||
echo "usage: $0 <file> [more_files ...] <class_name> [assignment_name]" >&2
|
||||
exit 1
|
||||
fi
|
||||
FILE="$1"
|
||||
CLASS_NAME="$2"
|
||||
ASSIGNMENT_NAME="${3:-Sample Assignment}"
|
||||
|
||||
ARGS=("$@")
|
||||
COUNT=$#
|
||||
if [ "$COUNT" -eq 2 ]; then
|
||||
FILES=("${ARGS[0]}")
|
||||
CLASS_NAME="${ARGS[1]}"
|
||||
ASSIGNMENT_NAME="Sample Assignment"
|
||||
elif [ "$COUNT" -eq 3 ]; then
|
||||
FILES=("${ARGS[0]}")
|
||||
CLASS_NAME="${ARGS[1]}"
|
||||
ASSIGNMENT_NAME="${ARGS[2]}"
|
||||
else
|
||||
FILES=("${ARGS[@]:0:$COUNT-2}")
|
||||
CLASS_NAME="${ARGS[$COUNT-2]}"
|
||||
ASSIGNMENT_NAME="${ARGS[$COUNT-1]}"
|
||||
fi
|
||||
|
||||
TARGET="${N8N_BASE_URL:-https://n8n.example.com}${SCHOOLHOUSE_N8N_ASSIGNMENT_WEBHOOK:-/webhook/school/intake/upload}"
|
||||
cat <<MSG
|
||||
Dry-run assignment handoff preview
|
||||
Target: $TARGET
|
||||
Command:
|
||||
curl -X POST "$TARGET" \\
|
||||
-F "document=@$FILE" \\
|
||||
-F "class_name=$CLASS_NAME" \\
|
||||
-F "assignment_name=$ASSIGNMENT_NAME" \\
|
||||
-F "submission_kind=assignment_turn_in" \\
|
||||
-F "source=doris-schoolhouse"
|
||||
MSG
|
||||
|
||||
echo "Dry-run assignment handoff preview"
|
||||
echo "Target: $TARGET"
|
||||
echo "Command:"
|
||||
echo "curl -X POST \"$TARGET\" \\"
|
||||
for file in "${FILES[@]}"; do
|
||||
echo " -F \"document=@$file\" \\"
|
||||
done
|
||||
echo " -F \"class_name=$CLASS_NAME\" \\"
|
||||
echo " -F \"assignment_name=$ASSIGNMENT_NAME\" \\"
|
||||
echo " -F \"submission_kind=assignment_turn_in\" \\"
|
||||
echo " -F \"source=doris-schoolhouse\""
|
||||
|
||||
Reference in New Issue
Block a user