Store VM metadata as JSON
This commit is contained in:
parent
bbd57d8dd2
commit
7af04b7535
11 changed files with 188 additions and 178 deletions
38
rm.sh
38
rm.sh
|
|
@ -13,23 +13,17 @@ Removes VM artifacts from state/ and cleans up TAP and mapped devices.
|
|||
EOF
|
||||
}
|
||||
|
||||
get_prop() {
|
||||
local info="$1"
|
||||
local key="$2"
|
||||
awk -F= -v k="$key" '$1==k {print $2}' "$info"
|
||||
}
|
||||
|
||||
find_vm_info() {
|
||||
find_vm_json() {
|
||||
local query="$1"
|
||||
local info match_count=0 match=""
|
||||
local vm_json match_count=0 match=""
|
||||
|
||||
for info in state/vms/*/info; do
|
||||
[[ -f "$info" ]] || continue
|
||||
for vm_json in state/vms/*/vm.json; do
|
||||
[[ -f "$vm_json" ]] || continue
|
||||
local id name
|
||||
id="$(get_prop "$info" "id")"
|
||||
name="$(get_prop "$info" "name")"
|
||||
id="$(jq -r '.meta.id // empty' "$vm_json")"
|
||||
name="$(jq -r '.meta.name // empty' "$vm_json")"
|
||||
if [[ "$id" == "$query"* || "$name" == "$query"* ]]; then
|
||||
match="$info"
|
||||
match="$vm_json"
|
||||
match_count=$((match_count + 1))
|
||||
fi
|
||||
done
|
||||
|
|
@ -52,15 +46,15 @@ if [[ -z "$QUERY" || "$QUERY" == "-h" || "$QUERY" == "--help" ]]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
INFO_FILE="$(find_vm_info "$QUERY")"
|
||||
VM_DIR="${INFO_FILE%/info}"
|
||||
PID="$(get_prop "$INFO_FILE" "pid")"
|
||||
TAP="$(get_prop "$INFO_FILE" "tap")"
|
||||
API_SOCK="$(get_prop "$INFO_FILE" "api_sock")"
|
||||
BASE_LOOP="$(get_prop "$INFO_FILE" "base_loop")"
|
||||
COW_LOOP="$(get_prop "$INFO_FILE" "cow_loop")"
|
||||
DM_DEV="$(get_prop "$INFO_FILE" "dm_dev")"
|
||||
DM_NAME="$(get_prop "$INFO_FILE" "dm_name")"
|
||||
VM_JSON="$(find_vm_json "$QUERY")"
|
||||
VM_DIR="$(dirname "$VM_JSON")"
|
||||
PID="$(jq -r '.meta.pid // empty' "$VM_JSON")"
|
||||
TAP="$(jq -r '.meta.tap // empty' "$VM_JSON")"
|
||||
API_SOCK="$(jq -r '.meta.api_sock // empty' "$VM_JSON")"
|
||||
BASE_LOOP="$(jq -r '.meta.base_loop // empty' "$VM_JSON")"
|
||||
COW_LOOP="$(jq -r '.meta.cow_loop // empty' "$VM_JSON")"
|
||||
DM_DEV="$(jq -r '.meta.dm_dev // empty' "$VM_JSON")"
|
||||
DM_NAME="$(jq -r '.meta.dm_name // empty' "$VM_JSON")"
|
||||
|
||||
if [[ -n "$PID" ]]; then
|
||||
sudo kill "$PID" 2>/dev/null || true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue