summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2011-10-12 14:52:54 +0200
committerAlon Levy <alevy@redhat.com>2011-10-12 14:52:54 +0200
commit92c879fea4cb09a8a3a15f88ee23f87e4b6cdaae (patch)
tree5ab6be49c6bc99da2edc3bdbcd9af735b68fa30f
parentc3af1eef2382a251b3509c0eef7d64f15fed9cd5 (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-xspice238
1 files changed, 24 insertions, 14 deletions
diff --git a/spice2 b/spice2
index 3197fe6..99402c1 100755
--- a/spice2
+++ b/spice2
@@ -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: