Files
docview/tests/ubuntu_vm/qmp.py
T
2026-09-21 13:41:40 +09:00

28 lines
1015 B
Python

#!/usr/bin/env python3
"""Read status or pause/resume/power down this dedicated local VM."""
import argparse
import json
import os
from pathlib import Path
import socket
parser = argparse.ArgumentParser()
parser.add_argument('command', choices=['query-status', 'stop', 'cont', 'system_powerdown'])
args = parser.parse_args()
root = Path(os.environ.get('DOCVIEW_VM_WORK', 'build-ubuntu-vm')).resolve()
with socket.socket(socket.AF_UNIX) as stream:
stream.settimeout(5)
stream.connect(str(root / 'qmp.sock'))
reader = stream.makefile('rb')
json.loads(reader.readline())
for operation in ['qmp_capabilities', args.command]:
stream.sendall(json.dumps({'execute': operation}).encode() + b'\n')
while True:
response = json.loads(reader.readline())
if 'return' in response or 'error' in response:
break
if operation == args.command:
print(json.dumps(response))
if 'error' in response:
raise SystemExit(1)