#!/bin/bash # AutoNAS Manager - System integration for udev/systemd events # This script is called by udev rules when disks are attached/detached # Uses autonas-core.sh for all business logic # Load the AutoNAS core library SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${SCRIPT_DIR}/autonas-core.sh" || { echo "Error: Cannot load AutoNAS core library" >&2 exit 1 } # Set LOG_TAG for this component LOG_TAG="autonas-disk-handler" # Main script logic case "$1" in "attach") if [ -z "$2" ]; then log_message "Error: UUID required for attach operation" "err" exit 1 fi log_message "AutoNAS attach operation started for UUID: $2" "info" handle_attach "$2" ;; "attach-deferred") if [ -z "$2" ]; then log_message "Error: UUID required for deferred attach operation" "err" exit 1 fi log_message "AutoNAS deferred attach operation started for UUID: $2" "info" # Ignore unconfigured disks discovered by udev without marking the # systemd unit as failed. Boot disks and random removable media should # not create failed autonas-attach@... units just because AutoNAS does # not manage them. if ! resolve_config_identifier "$2" >/dev/null; then log_message "No configuration found for identifier: $2 - deferred attach skipped" "info" log_message "This is normal for disks not managed by AutoNAS" "info" exit 0 fi handle_attach "$2" ;; "detach") if [ -z "$2" ]; then log_message "Error: UUID, disk name, or mount point required for detach operation" "err" exit 1 fi log_message "AutoNAS detach operation started for identifier: $2" "info" if ! handle_detach "$2"; then log_message "No configuration found for identifier: $2 - detach skipped" "info" log_message "This may be normal if the disk was not configured for AutoNAS" "info" exit 0 fi ;; "import") if [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ]; then log_message "Error: UUID, mount_point, and destination required for import operation" "err" exit 1 fi log_message "AutoNAS background import operation started for UUID: $2" "info" run_background_import "$2" "$3" "$4" "$5" ;; "reload") handle_reload ;; *) echo "Usage: $0 {attach|attach-deferred|detach|import|reload} [args...]" echo " attach - Attach disk by UUID (direct)" echo " attach-deferred - Attach disk by UUID (via systemd)" echo " detach - Detach configured disk" echo " import [script] - Run background camera import" echo "This script is typically called by udev rules or systemd" log_message "Invalid arguments provided: $*" "err" exit 1 ;; esac