diff options
author | Alon Levy <alevy@redhat.com> | 2011-10-12 14:52:54 +0200 |
---|---|---|
committer | Alon Levy <alevy@redhat.com> | 2011-10-12 14:52:54 +0200 |
commit | 92c879fea4cb09a8a3a15f88ee23f87e4b6cdaae (patch) | |
tree | 5ab6be49c6bc99da2edc3bdbcd9af735b68fa30f | |
parent | c3af1eef2382a251b3509c0eef7d64f15fed9cd5 (diff) |
give qxl secondaries ids, --qmp-path, drive if,...
drive if defaults to ide
qmp-path - let you use unix paths (when the network is screwing with you
and doesn't allow you to connect to localhost, unix domain sockets still
works).
-rwxr-xr-x | spice2 | 38 |
1 files changed, 24 insertions, 14 deletions
@@ -12,8 +12,6 @@ import time import shutil import itertools -import qmp_helpers - try: import argparse except: @@ -473,16 +471,22 @@ def build_qemu_cmdline_and_env(args): cmdline = [qemu_exec, "-chardev", "stdio,id=muxstdio,mux=on", "-mon", "chardev=muxstdio,mode=readline", "-vga", args.vga, - "-drive", "file=%s,cache=%s" % (args.image_fullpath, args.cache), + "-drive", "file=%s,cache=%s,if=%s,readonly=%s" % (args.image_fullpath, + args.cache, args.block_if, args.read_only), "-enable-kvm", "-L", bios_dir, "-m", str(args.memory), "-cpu", str(args.cpu)] + build_spice_option(args) - if args.qmp_port: + if args.qmp_port or args.qmp_path: # TODO - make it both ipv6 and ipv4? didn't test, but if no ipv4 is given # the socket may only be ipv6, which complicates a lot of python code needlessly. + if args.qmp_path: + addr = 'path=%s' % args.qmp_path + args.qmp_port = 0 + else: + addr = 'host=localhost,port=%s' % args.qmp_port cmdline.extend(["-chardev", - "socket,id=qmpmon,host=localhost,port=%s,server,nowait,ipv4" % args.qmp_port, + "socket,id=qmpmon,%s,server,nowait,ipv4" % addr, "-mon", "chardev=qmpmon,mode=control"]) if args.snapshot: cmdline.append("-snapshot") @@ -498,7 +502,7 @@ def build_qemu_cmdline_and_env(args): cmdline.extend(['-global', 'qxl-vga.cmdlog=%d' % args.cmdlog]) if args.qxl_ram: cmdline.extend(['-global', 'qxl-vga.ram_size=%s' % args.qxl_ram]) - if args.qxl_vram: + if args.qxl_vram != None: cmdline.extend(['-global', 'qxl-vga.vram_size=%s' % args.qxl_vram]) if args.qxl > 1: device_params = [ @@ -511,7 +515,8 @@ def build_qemu_cmdline_and_env(args): device_params.append('ram_size=%d' % args.qxl_ram) if args.qxl_vram: device_params.append('vram_size=%s' % args.qxl_vram) - cmdline.extend((['-device', ','.join(device_params)]) * (args.qxl - 1)) + for i in xrange(1, args.qxl): + cmdline.extend(['-device', ','.join(device_params) + ',id=qxl%d' % i]) if args.sound == 'intel-hda': # -soundhw hda not in RHEL? #cmdline.extend(['-soundhw', 'hda']) @@ -520,8 +525,10 @@ def build_qemu_cmdline_and_env(args): environment.append(('QEMU_AUDIO_DRV', 'spice')) if args.revision: cmdline.extend(['-global', 'qxl-vga.revision=%d' % args.revision]) + if args.tablet or args.smartcard: + cmdline.extend(['-usb']) if args.tablet: - cmdline.extend(['-usb', '-device', 'usb-tablet']) + cmdline.extend(['-device', 'usb-tablet']) need_virtio_serial = args.vdagent or args.kdvirtserial if need_virtio_serial: cmdline.extend(['-device', 'virtio-serial,multifunction=on']) @@ -671,7 +678,7 @@ def rpdb2_break(): rpdb2.rpdb2.start_embedded_debugger('a') def get_client_exe(client): - return spicec_exe if client == 'spicec' else spicy_exe + return {'spicec': spicec_exe, 'spicy': spicy_exe}.get(client, client) def run_with_display(f): def wrapper(*args, **kw): @@ -804,6 +811,8 @@ def parseargs(): qemu_group.add_argument('--bios-dir', default=None) qemu_group.add_argument('--bios', default=None) disk_group.add_argument('--image', default=image) + disk_group.add_argument('--block-if', default='ide', choices=['acpi', 'ide', 'virtio']) + disk_group.add_argument('--read-only', default='off', action='store_const', const='on') disk_group.add_argument('--snapshot', action='store_true', default=True) disk_group.add_argument('--no-snapshot', dest='snapshot', action='store_false') disk_group.add_argument('--cdrom', default=None) @@ -816,7 +825,7 @@ def parseargs(): disk_group.add_argument('--cache', choices=['unsafe','off','writeback','writethrough'], default='unsafe') disk_group.add_argument('--runonce') disk_group.add_argument('--clear-runonce', default=False, action='store_true') - client_group.add_argument('--client', choices=['spicec', 'spicy'], default='spicec') + client_group.add_argument('--client', default='spicec') client_group.add_argument('--clients', default=0, type=int) client_group.add_argument('--port', dest='spice_port', type=int, action='store') client_group.add_argument('--host', dest='spice_host', default='127.0.0.1') @@ -916,7 +925,8 @@ def parseargs(): tests_group.add_argument('--replay-file', dest='replay_file') tests_group.add_argument('--print-events', action='store_true', default=False) tests_group.add_argument('--reset-on-shutdown', action='store_true', default=False) - tests_group.add_argument('--qmp-port', type=int, default=default_qmp_port) + tests_group.add_argument('--qmp-port', default=default_qmp_port) + tests_group.add_argument('--qmp-path', default=None) # extract extra parameters, those after "--", from default_args # the same is done for sys.argv[1:] by parse_known_args default_rest = [] @@ -935,9 +945,7 @@ def parseargs(): if not args.root: args.root = defaults[image]['root'] elif not args.image: - print("image not provided. use --image") - parser.print_usage() - sys.exit(1) + args.image = '/dev/null' # tls arguments if args.x509_dir: args.ca_cert = os.path.join(args.x509_dir, 'ca-cert.pem') @@ -1074,6 +1082,7 @@ def cleanup(): for p in processes: print("killing pid %s" % p.pid) try: + p.send_signal(signal.SIGUSR1) p.kill() p.kill() # qemu started with --no-shutdown, needs two signals p.wait() @@ -1120,6 +1129,7 @@ def block_until_file_exists(filename): time.sleep(1) def main(): + import qmp_helpers args, rest = parseargs() # remove first instance of '--' from rest if '--' in rest: |