forked from tim/k3s-ansible
feat(ci): optimize Molecule VM creation
- reuse validated runner-owned Vagrant linked-clone masters\n- create the default guests in bounded two-machine batches\n- capture create timing and runner utilization diagnostics
This commit is contained in:
committed by
Techno Tim
parent
57f234c8da
commit
10bde4eff0
Executable
+4
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -Eeuo pipefail
|
||||
[[ "${1:-}" =~ ^[0-9]+$ ]]
|
||||
Executable
+27
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -Eeuo pipefail
|
||||
|
||||
printf '%s\n' "$*" >> "$MOCK_VAGRANT_LOG"
|
||||
case "${1:-}" in
|
||||
up)
|
||||
counter_file="$MOCK_VBOX_STATE/counter"
|
||||
counter=0
|
||||
[[ ! -r "$counter_file" ]] || counter="$(cat "$counter_file")"
|
||||
counter=$((counter + 1))
|
||||
printf '%s\n' "$counter" > "$counter_file"
|
||||
uuid="00000000-0000-4000-8000-$(printf '%012d' "$counter")"
|
||||
vm_dir="$MOCK_VBOX_ROOT/master-$counter"
|
||||
mkdir -p -- "$vm_dir"
|
||||
: > "$vm_dir/master.vbox"
|
||||
: > "$vm_dir/master.vdi"
|
||||
printf '%s\n' \
|
||||
'VMState="poweroff"' \
|
||||
'groups="/"' \
|
||||
"CfgFile=\"$vm_dir/master.vbox\"" \
|
||||
"SATA-0-0=\"$vm_dir/master.vdi\"" > "$MOCK_VBOX_STATE/vm-$uuid"
|
||||
printf '%s\n' "$uuid" > "$MOCK_BOX_DIR/master_id"
|
||||
;;
|
||||
destroy) ;;
|
||||
*) exit 2 ;;
|
||||
esac
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -Eeuo pipefail
|
||||
|
||||
printf '%s\n' "$*" >> "$MOCK_VBOX_LOG"
|
||||
command_name="${1:-}"
|
||||
uuid="${2:-}"
|
||||
|
||||
case "$command_name" in
|
||||
showvminfo)
|
||||
[[ -r "$MOCK_VBOX_STATE/vm-$uuid" ]] || exit 1
|
||||
cat "$MOCK_VBOX_STATE/vm-$uuid"
|
||||
;;
|
||||
getextradata)
|
||||
key_slug="${3//\//_}"
|
||||
if [[ ! -r "$MOCK_VBOX_STATE/extra-$uuid-$key_slug" ]]; then
|
||||
printf '%s\n' 'No value set!'
|
||||
exit 0
|
||||
fi
|
||||
printf 'Value: '
|
||||
cat "$MOCK_VBOX_STATE/extra-$uuid-$key_slug"
|
||||
;;
|
||||
modifyvm)
|
||||
[[ "${3:-}" == --groups ]]
|
||||
awk -v groups="${4:-}" '
|
||||
$1 !~ /^groups=/ { print }
|
||||
END { printf "groups=\"%s\"\n", groups }
|
||||
' "$MOCK_VBOX_STATE/vm-$uuid" > "$MOCK_VBOX_STATE/vm-$uuid.tmp"
|
||||
mv "$MOCK_VBOX_STATE/vm-$uuid.tmp" "$MOCK_VBOX_STATE/vm-$uuid"
|
||||
;;
|
||||
setextradata)
|
||||
key_slug="${3//\//_}"
|
||||
printf '%s\n' "${4:-}" > "$MOCK_VBOX_STATE/extra-$uuid-$key_slug"
|
||||
;;
|
||||
unregistervm|closemedium)
|
||||
printf '%s\n' 'destructive VirtualBox command invoked' >&2
|
||||
exit 99
|
||||
;;
|
||||
*) exit 2 ;;
|
||||
esac
|
||||
Reference in New Issue
Block a user