# HG changeset patch # User Goncalo Gomes # Date 1332257809 0 # Node ID 46f8afe643dee8de2c592c65204567fbad657616 # Parent 4e1d091d10d83130842170cd61f1194e5459f2aa Add vncviewer xm compatibility options the 'xl create' command Signed-off-by: Goncalo Gomes diff -r 4e1d091d10d8 -r 46f8afe643de tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Fri Mar 16 15:24:25 2012 +0000 +++ b/tools/libxl/xl_cmdimpl.c Tue Mar 20 15:36:49 2012 +0000 @@ -1347,6 +1347,8 @@ int dryrun; int quiet; int console_autoconnect; + int vncviewer; + int vncviewer_autopass; const char *config_file; const char *extra_config; /* extra config string */ const char *restore_file; @@ -3306,11 +3308,12 @@ int main_create(int argc, char **argv) { const char *filename = NULL; + char *dom = NULL; char *p; char extra_config[1024]; struct domain_create dom_info; int paused = 0, debug = 0, daemonize = 1, console_autoconnect = 0, - quiet = 0, monitor = 1; + quiet = 0, monitor = 1, vnc = 1, vncautopass = 1; int opt, rc; int option_index = 0; static struct option long_options[] = { @@ -3318,6 +3321,9 @@ {"quiet", 0, 0, 'q'}, {"help", 0, 0, 'h'}, {"defconfig", 1, 0, 'f'}, + {"vncviewer", 0, 0, 'V'}, + {"vncviewer-autopass", 0, 0, 'A'}, + {0, 0, 0, 0} }; @@ -3327,7 +3333,7 @@ } while (1) { - opt = getopt_long(argc, argv, "Fhnqf:pcde", long_options, &option_index); + opt = getopt_long(argc, argv, "Fhnqf:pcdeVA", long_options, &option_index); if (opt == -1) break; @@ -3360,6 +3366,12 @@ case 'q': quiet = 1; break; + case 'v': + vnc = 1; + break; + case 'a': + vnc = vncautopass = 1; + break; default: fprintf(stderr, "option `%c' not supported.\n", optopt); break; @@ -3391,12 +3403,40 @@ dom_info.migrate_fd = -1; dom_info.console_autoconnect = console_autoconnect; dom_info.incr_generationid = 0; + dom_info.vncviewer = vnc; + dom_info.vncviewer_autopass = vncautopass; + rc = create_domain(&dom_info); if (rc < 0) return -rc; - return 0; + if (vnc && dryrun) { + printf("vncviewer not being executed for a dryrun\n"); + goto out; + } + + if (vnc) { + dom = libxl_domid_to_name(&ctx, rc); + if (dom) { + rc = vncviewer(dom, vncautopass); + if (!rc) { + goto cleanup; + } else { + rc = 1; + goto out; + } + } + } + +cleanup: + if (dom) { + free(dom); + dom = NULL; + } + +out: + return rc; } static void button_press(const char *p, const char *b) diff -r 4e1d091d10d8 -r 46f8afe643de tools/libxl/xl_cmdtable.c --- a/tools/libxl/xl_cmdtable.c Fri Mar 16 15:24:25 2012 +0000 +++ b/tools/libxl/xl_cmdtable.c Tue Mar 20 15:36:49 2012 +0000 @@ -31,6 +31,11 @@ " (deprecated in favour of global -N option).\n" "-d Enable debug messages.\n" "-e Do not wait in the background for the death of the domain." + "-V, --vncviewer Connect to the VNC display after the domain is created.\n" + "-A, --vncviewer-autopass\n" + " Pass VNC password to viewer via stdin and -autopass.\n" + "--autopass (xm compatibility)\n" + }, { "list", &main_list, 0,