Files
portfolio/infra-run/scripts/bash/veritas/04_init_vxvm_disks.sh
T

57 lines
1.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o 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 disks
missing=0
for cmd in vxdisk vxdisksetup awk; do
require_cmd "$cmd" || missing=1
done
if (( missing != 0 )); then
exit 2
fi
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
info="$(disk_status_line "$disk")"
disk_status="${info#*|}"
if [[ "$disk_status" != *"online invalid"* ]]; then
critical "disk '$disk' is not safe to initialize; status is '${disk_status:-unknown}', expected 'online invalid'"
status=1
continue
fi
ok "disk '$disk' validated as online invalid"
done
if (( status != 0 )); then
critical "one or more disks failed validation; no initialization attempted"
exit 1
fi
confirm_execute "This will initialize VxVM metadata on disk(s): $DISKS"
for disk in $DISKS; do
run_cmd "Initialize VxVM disk $disk" vxdisksetup -i "$disk"
done
for disk in $DISKS; do
capture_cmd "Post-initialization VxVM disk state for $disk" vxdisk list "$disk"
done
ok "disk initialization step completed"