Reduced code base
This commit is contained in:
@ -32,42 +32,6 @@ get_drives_info() {
|
||||
done
|
||||
}
|
||||
|
||||
get_bay_number() {
|
||||
local drive=$1
|
||||
local drive_name=$(basename "$drive")
|
||||
|
||||
# Search through mappings for this drive
|
||||
while IFS=: read -r path bay device; do
|
||||
if [[ "$drive_name" == "$device" ]]; then
|
||||
echo "$bay"
|
||||
return
|
||||
fi
|
||||
done <<< "${DRIVE_MAPPINGS[medium2]}"
|
||||
}
|
||||
|
||||
get_physical_mapping() {
|
||||
local -A drive_map
|
||||
|
||||
# Map NVMe drives
|
||||
for nvme in /dev/nvme*n1; do
|
||||
if [ -b "$nvme" ]; then
|
||||
drive_map[11]=$(basename "$nvme")
|
||||
fi
|
||||
done
|
||||
|
||||
# Map SATA drives
|
||||
for drive in /dev/sd[a-z]; do
|
||||
if [ -b "$drive" ]; then
|
||||
local bay=$(get_bay_number "$drive")
|
||||
if [[ -n "$bay" ]]; then
|
||||
drive_map[$bay]=$(basename "$drive")
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo "$(declare -p drive_map)"
|
||||
}
|
||||
|
||||
declare -A DRIVE_MAPPINGS=(
|
||||
["medium2"]="
|
||||
pci-0000:0c:00.0-ata-3:3
|
||||
@ -82,7 +46,7 @@ declare -A DRIVE_MAPPINGS=(
|
||||
|
||||
build_drive_map() {
|
||||
local host=$(hostname)
|
||||
local drive_map=()
|
||||
declare -A drive_map
|
||||
|
||||
# Get mapping for current host
|
||||
local mapping=${DRIVE_MAPPINGS[$host]}
|
||||
@ -95,13 +59,18 @@ build_drive_map() {
|
||||
|
||||
if [[ -L "/dev/disk/by-path/$path" ]]; then
|
||||
local drive=$(readlink -f "/dev/disk/by-path/$path" | sed 's/.*\///')
|
||||
drive_map+=("${slot}:${drive}")
|
||||
drive_map[$slot]=$drive
|
||||
fi
|
||||
done <<< "$mapping"
|
||||
fi
|
||||
|
||||
# Make drive_map available globally
|
||||
declare -g -A DRIVE_MAP=()
|
||||
for key in "${!drive_map[@]}"; do
|
||||
DRIVE_MAP[$key]=${drive_map[$key]}
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# Define the ASCII art maps
|
||||
large1='''
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
@ -157,12 +126,13 @@ medium1='''
|
||||
'''
|
||||
|
||||
generate_medium2_layout() {
|
||||
eval "$(get_physical_mapping)"
|
||||
# Build the drive map first
|
||||
build_drive_map
|
||||
|
||||
# USB Section with dynamic mapping
|
||||
printf " External USB [0b:00.0]\n"
|
||||
printf " ┌────────┐ ┌────────┐\n"
|
||||
printf " │ %-6s │ │ %-6s │\n" "${drive_map[usb1]:-EMPTY}" "${drive_map[usb2]:-EMPTY}"
|
||||
printf " │ %-6s │ │ %-6s │\n" "${DRIVE_MAP[usb1]:-EMPTY}" "${DRIVE_MAP[usb2]:-EMPTY}"
|
||||
printf " └────────┘ └────────┘\n\n"
|
||||
|
||||
# Rest of chassis layout with enhanced drive info
|
||||
@ -171,14 +141,14 @@ generate_medium2_layout() {
|
||||
printf "│ │\n"
|
||||
printf "│ NVMe [0d:00.0] Bay 11 │\n"
|
||||
printf "│ ┌────────┐ │\n"
|
||||
printf "│ │ %-6s │ │\n" "${drive_map[11]:-EMPTY}"
|
||||
printf "│ │ %-6s │ │\n" "${DRIVE_MAP[11]:-EMPTY}"
|
||||
printf "│ └────────┘ │\n"
|
||||
printf "│ │\n"
|
||||
printf "│ Front Hot-swap Bays [0c:00.0] │\n"
|
||||
printf "│ ┌────────┐┌────────┐┌────────┐┌────────┐┌────────┐┌────────┐┌────────┐┌────────┐┌────────┐┌────────┐ │\n"
|
||||
|
||||
for bay in {1..10}; do
|
||||
printf "│ │%-2d:%-4s │" "$bay" "${drive_map[$bay]:-EMPTY}"
|
||||
printf "│ │%-2d:%-4s │" "$bay" "${DRIVE_MAP[$bay]:-EMPTY}"
|
||||
done
|
||||
|
||||
printf " │\n"
|
||||
|
||||
Reference in New Issue
Block a user