autoNAS / scripts / autonas-uninstall.sh
Newer Older
5bf8614 3 months ago History
116 lines | 3.628kb
Bogdan Timofte authored 3 months ago
1
#!/bin/bash
2

            
Bogdan Timofte authored 3 months ago
3
set -euo pipefail
4

            
5
PROJECT_ID="autonas"
6
ORG_ID="xdev"
7
RUNTIME_DIR="/usr/local/lib/${ORG_ID}/${PROJECT_ID}"
8
LEGACY_RUNTIME_DIR="/usr/local/lib/autonas"
9
COMMAND_PATH="/usr/local/sbin/autonas"
10
UNINSTALL_WRAPPER="/usr/local/sbin/${ORG_ID}-${PROJECT_ID}-uninstall"
11
DOC_DIR="/usr/local/share/doc/${ORG_ID}/${PROJECT_ID}"
12
DEFAULTS_PATH="/etc/default/${ORG_ID}-${PROJECT_ID}"
13
CONFIG_DIR="/etc/pve/autonas"
14
ATTACH_UNIT="autonas-attach@.service"
15
MAIN_UNIT="autonas.service"
16
BOOT_SCAN_UNIT="autonas-boot-scan.service"
17
DISK_RULES="99-autonas-disk.rules"
18
INTERFACE_RULES="98-autonas-interfaces.rules"
19
NFS_DROPIN_DIR="/etc/systemd/system/nfs-server.service.d"
20
NFS_DROPIN_FILE="${NFS_DROPIN_DIR}/50-autonas-self-hosted-proxmox.conf"
Bogdan Timofte authored 3 months ago
21

            
Bogdan Timofte authored 3 months ago
22
FORCE_MODE=0
Bogdan Timofte authored 3 months ago
23

            
24
log_message() {
Bogdan Timofte authored 3 months ago
25
    if [[ "${FORCE_MODE}" -eq 0 ]]; then
26
        echo "$@"
Bogdan Timofte authored 3 months ago
27
    fi
28
}
29

            
Bogdan Timofte authored 3 months ago
30
require_root() {
31
    if [[ "${EUID}" -ne 0 ]]; then
32
        echo "ERROR: this script must be run as root" >&2
33
        exit 1
Bogdan Timofte authored 3 months ago
34
    fi
Bogdan Timofte authored 3 months ago
35
}
36

            
37
main() {
38
    while [[ $# -gt 0 ]]; do
39
        case "$1" in
40
            --force)
41
                FORCE_MODE=1
42
                shift
43
                ;;
44
            -h|--help)
45
                echo "Usage: $0 [--force]"
46
                exit 0
47
                ;;
48
            *)
49
                echo "ERROR: unknown option: $1" >&2
50
                exit 1
51
                ;;
52
        esac
53
    done
54

            
55
    require_root
56

            
57
    log_message "=== Uninstalling AutoNAS ==="
58

            
59
    systemctl disable --now autonas-boot-scan.service >/dev/null 2>&1 || true
60
    systemctl disable --now autonas.service >/dev/null 2>&1 || true
61
    systemctl stop "autonas-attach@*.service" >/dev/null 2>&1 || true
62
    systemctl disable "autonas-attach@*.service" >/dev/null 2>&1 || true
63

            
64
    rm -f "/etc/systemd/system/${ATTACH_UNIT}"
65
    rm -f "/etc/systemd/system/${MAIN_UNIT}"
66
    rm -f "/etc/systemd/system/${BOOT_SCAN_UNIT}"
67
    rm -f "${NFS_DROPIN_FILE}"
68
    rmdir "${NFS_DROPIN_DIR}" 2>/dev/null || true
Bogdan Timofte authored 3 months ago
69
    systemctl daemon-reload
Bogdan Timofte authored 3 months ago
70

            
71
    rm -f "/etc/udev/rules.d/${DISK_RULES}"
72
    rm -f "/etc/udev/rules.d/${INTERFACE_RULES}"
73
    udevadm control --reload-rules >/dev/null 2>&1 || true
74

            
75
    rm -f "${UNINSTALL_WRAPPER}"
76
    rm -f "${COMMAND_PATH}"
77
    rm -f "${DEFAULTS_PATH}"
78
    rm -rf "${DOC_DIR}"
79
    rm -rf "${RUNTIME_DIR}"
80

            
81
    rm -f /usr/local/bin/autonas
82
    rm -f /usr/local/bin/autonas.sh
83
    rm -f /usr/local/bin/autonas-core.sh
84
    rm -f /usr/local/bin/autonas-disk-handler.sh
85
    rm -f /usr/local/bin/autonas-udev-wrapper.sh
86
    rm -f /usr/local/bin/autonas-boot-scan.sh
87
    rm -f /usr/local/bin/autonas-network-handler.sh
88
    rm -f /usr/local/bin/autonas-media-importer.sh
89
    rm -f /usr/local/bin/autonas-uninstall.sh
90
    rm -f /usr/local/bin/autonas-interface-debug.sh
91
    rm -f /usr/local/bin/autonas-test-interface-stability.sh
92
    rm -rf "${LEGACY_RUNTIME_DIR}"
93

            
94
    rmdir "/usr/local/lib/${ORG_ID}" 2>/dev/null || true
95
    rmdir "/usr/local/share/doc/${ORG_ID}" 2>/dev/null || true
96

            
97
    log_message "Preserved cluster-shared config:"
98
    log_message "  - ${CONFIG_DIR}/"
99
    if [[ -f "${CONFIG_DIR}/disks.conf" ]]; then
100
        log_message "  - ${CONFIG_DIR}/disks.conf"
Bogdan Timofte authored 3 months ago
101
    fi
Bogdan Timofte authored 3 months ago
102

            
103
    if mount | grep -q "/mnt/autonas/"; then
104
        log_message "Preserved mounted data paths under /mnt/autonas/"
105
    elif [[ -d "/mnt/autonas" ]] && [[ -z "$(ls -A /mnt/autonas 2>/dev/null)" ]]; then
106
        rmdir /mnt/autonas 2>/dev/null || true
Bogdan Timofte authored 3 months ago
107
    fi
Bogdan Timofte authored 3 months ago
108

            
109
    if [[ -f /etc/exports ]] && grep -q "/mnt/autonas/" /etc/exports 2>/dev/null; then
110
        log_message "NFS exports referencing /mnt/autonas/ were preserved for manual review."
Bogdan Timofte authored 3 months ago
111
    fi
Bogdan Timofte authored 3 months ago
112

            
113
    log_message "Uninstall complete."
114
}
115

            
116
main "$@"