Files
portfolio/infra-run/scripts/bash/veritas/05_extend_diskgroup.sh
T
Mateusz Suski ca5a876d03
lint / shell-yaml-ansible (push) Failing after 21s
Improve infra-run portfolio credibility
2026-05-08 21:18:22 +00:00

69 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=00_env.sh
source "$SCRIPT_DIR/00_env.sh"
parse_common_args "$@"
require_inputs dg disks
missing=0
for cmd in vxdg vxdisk vxprint tr; do
require_cmd "$cmd" || missing=1
done
if (( missing != 0 )); then
exit 2
fi
if ! vxdg list "$DISKGROUP" >/dev/null 2>&1; then
critical "diskgroup not found: $DISKGROUP"
exit 1
fi
ok "diskgroup exists: $DISKGROUP"
status=0
for disk in $DISKS; do
if ! vxdisk list "$disk" >/dev/null 2>&1; then
critical "disk not found in vxdisk list: $disk"
status=1
continue
fi
summary="$(vxdisk list 2>/dev/null | awk -v disk="$disk" '$1 == disk {print $0}')"
if [[ -z "$summary" ]]; then
warning "unable to find summary row for $disk; using detailed status only"
elif printf '%s\n' "$summary" | awk '{print $3}' | grep -qv '^-'; then
critical "disk '$disk' appears to belong to a diskgroup: $summary"
status=1
continue
fi
info="$(disk_status_line "$disk")"
disk_status="${info#*|}"
if [[ "$disk_status" == *"online invalid"* ]]; then
critical "disk '$disk' is still online invalid; initialize it before adding to a diskgroup"
status=1
continue
fi
ok "disk '$disk' appears initialized and unassigned"
done
if (( status != 0 )); then
critical "one or more disks failed validation; diskgroup extension not attempted"
exit 1
fi
confirm_execute "This will add disk(s) '$DISKS' to VxVM diskgroup '$DISKGROUP'."
for disk in $DISKS; do
alias_base="$(printf '%s_%s' "$DISKGROUP" "$disk" | tr -c 'A-Za-z0-9_' '_')"
run_cmd "Add disk $disk to diskgroup $DISKGROUP as $alias_base" vxdg -g "$DISKGROUP" adddisk "${alias_base}=${disk}"
done
capture_cmd "Diskgroup details after extension" vxdg list "$DISKGROUP"
capture_cmd "VxVM layout after diskgroup extension" vxprint -g "$DISKGROUP" -ht
ok "diskgroup extension step completed"