* [PATCH 0 of 2 v2] Add vncviewer xm compatibility options
@ 2012-05-15 2:39 Goncalo Gomes
2012-05-15 2:39 ` [PATCH 1 of 2 v2] xl: code motion of vncviewer() and `struct domain_create` Goncalo Gomes
2012-05-15 2:39 ` [PATCH 2 of 2 v2] Introduce vncviewer xm compatibility options Goncalo Gomes
0 siblings, 2 replies; 7+ messages in thread
From: Goncalo Gomes @ 2012-05-15 2:39 UTC (permalink / raw)
To: xen-devel; +Cc: ian.campbell
Changes since v1:
- Removed libxl vncviewer related dependencies
- The vncviewer function was modified to accept a domid instead of domspec;
- main_vncviewer was updated to reflect the new use.
- A domain_create structure is now passed to the parse_config_data where required/feasible (NULL otherwise)
- xl restore now have long options for vncviewer/vncviewer-autopass; docs updated.
- Updated vnc logic to depend on create_domain
tools/libxl/xl_cmdimpl.c | 50 ++++++++++++++++---------------
docs/man/xl.cfg.pod.5 | 4 ++
docs/man/xl.pod.1 | 18 +++++++++++
tools/libxl/xl_cmdimpl.c | 73 ++++++++++++++++++++++++++++++++++++++--------
tools/libxl/xl_cmdtable.c | 15 ++++++---
5 files changed, 118 insertions(+), 42 deletions(-)
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1 of 2 v2] xl: code motion of vncviewer() and `struct domain_create`
2012-05-15 2:39 [PATCH 0 of 2 v2] Add vncviewer xm compatibility options Goncalo Gomes
@ 2012-05-15 2:39 ` Goncalo Gomes
2012-05-15 14:45 ` Ian Campbell
2012-05-15 2:39 ` [PATCH 2 of 2 v2] Introduce vncviewer xm compatibility options Goncalo Gomes
1 sibling, 1 reply; 7+ messages in thread
From: Goncalo Gomes @ 2012-05-15 2:39 UTC (permalink / raw)
To: xen-devel; +Cc: ian.campbell
tools/libxl/xl_cmdimpl.c | 50 ++++++++++++++++++++++++-----------------------
1 files changed, 26 insertions(+), 24 deletions(-)
Signed-off-by: Goncalo Gomes <Goncalo.Gomes@EU.CITRIX.COM>
diff -r cd4dd23a831d -r 380d5f86dfdd tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c Fri May 11 18:59:07 2012 +0100
+++ b/tools/libxl/xl_cmdimpl.c Tue May 15 02:26:51 2012 +0000
@@ -120,6 +120,24 @@ static const char *action_on_shutdown_na
#define SAVEFILE_BYTEORDER_VALUE ((uint32_t)0x01020304UL)
+struct domain_create {
+ int debug;
+ int daemonize;
+ int monitor; /* handle guest reboots etc */
+ int paused;
+ int dryrun;
+ int quiet;
+ int console_autoconnect;
+ const char *config_file;
+ const char *extra_config; /* extra config string */
+ const char *restore_file;
+ int migrate_fd; /* -1 means none */
+ char **migration_domname_r; /* from malloc */
+ int incr_generationid;
+};
+
+
+
static int qualifier_to_id(const char *p, uint32_t *id_r)
{
int i, alldigit;
@@ -186,6 +204,14 @@ static void find_domain(const char *p)
common_domname = was_name ? p : libxl_domid_to_name(ctx, domid);
}
+static int vncviewer(const char *domain_spec, int autopass)
+{
+ find_domain(domain_spec);
+ libxl_vncviewer_exec(ctx, domid, autopass);
+ fprintf(stderr, "Unable to execute vncviewer\n");
+ return 1;
+}
+
static int acquire_lock(void)
{
int rc;
@@ -1399,22 +1425,6 @@ static int preserve_domain(libxl_ctx *ct
return rc == 0 ? 1 : 0;
}
-struct domain_create {
- int debug;
- int daemonize;
- int monitor; /* handle guest reboots etc */
- int paused;
- int dryrun;
- int quiet;
- int console_autoconnect;
- const char *config_file;
- const char *extra_config; /* extra config string */
- const char *restore_file;
- int migrate_fd; /* -1 means none */
- char **migration_domname_r; /* from malloc */
- int incr_generationid;
-};
-
static int freemem(libxl_domain_build_info *b_info)
{
int rc, retries = 3;
@@ -2175,14 +2185,6 @@ int main_console(int argc, char **argv)
return 1;
}
-static int vncviewer(const char *domain_spec, int autopass)
-{
- find_domain(domain_spec);
- libxl_vncviewer_exec(ctx, domid, autopass);
- fprintf(stderr, "Unable to execute vncviewer\n");
- return 1;
-}
-
int main_vncviewer(int argc, char **argv)
{
static const struct option long_options[] = {
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2 of 2 v2] Introduce vncviewer xm compatibility options
2012-05-15 2:39 [PATCH 0 of 2 v2] Add vncviewer xm compatibility options Goncalo Gomes
2012-05-15 2:39 ` [PATCH 1 of 2 v2] xl: code motion of vncviewer() and `struct domain_create` Goncalo Gomes
@ 2012-05-15 2:39 ` Goncalo Gomes
2012-05-15 14:43 ` Ian Campbell
1 sibling, 1 reply; 7+ messages in thread
From: Goncalo Gomes @ 2012-05-15 2:39 UTC (permalink / raw)
To: xen-devel; +Cc: ian.campbell
docs/man/xl.cfg.pod.5 | 4 ++
docs/man/xl.pod.1 | 18 +++++++++++
tools/libxl/xl_cmdimpl.c | 73 ++++++++++++++++++++++++++++++++++++++--------
tools/libxl/xl_cmdtable.c | 15 ++++++---
4 files changed, 92 insertions(+), 18 deletions(-)
Signed-off-by: Goncalo Gomes <Goncalo.Gomes@EU.CITRIX.COM>
diff -r 380d5f86dfdd -r d1c195e989cc docs/man/xl.cfg.pod.5
--- a/docs/man/xl.cfg.pod.5 Tue May 15 02:26:51 2012 +0000
+++ b/docs/man/xl.cfg.pod.5 Tue May 15 02:26:53 2012 +0000
@@ -91,6 +91,10 @@ The following options apply to guests of
Specifies the UUID of the domain. If not specified, a fresh unique
UUID will be generated.
+=item B<vncviewer=BOOLEAN>
+
+Automatically spawn a vncviewer when creating/restoring a guest
+
=item B<pool="CPUPOOLNAME">
Put the guest's vcpus into the named cpu pool.
diff -r 380d5f86dfdd -r d1c195e989cc docs/man/xl.pod.1
--- a/docs/man/xl.pod.1 Tue May 15 02:26:51 2012 +0000
+++ b/docs/man/xl.pod.1 Tue May 15 02:26:53 2012 +0000
@@ -120,6 +120,14 @@ Use the given configuration file.
Leave the domain paused after it is created.
+=item B<-V>, B<--vncviewer>
+
+Attach to domain's VNC server, forking a vncviewer process.
+
+=item B<-A>, B<--vncviewer-autopass>
+
+Pass VNC password to vncviewer via stdin.
+
=item B<-c>
Attach console to the domain as soon as it has started. This is
@@ -433,6 +441,16 @@ See the corresponding option of the I<cr
Enable debug messages.
+=item B<-V>, B<--vncviewer>
+
+Attach to domain's VNC server, forking a vncviewer process.
+
+=item B<-A>, B<--vncviewer-autopass>
+
+Pass VNC password to vncviewer via stdin.
+
+
+
=back
=item B<save> [I<OPTIONS>] I<domain-id> I<CheckpointFile> [I<ConfigFile>]
diff -r 380d5f86dfdd -r d1c195e989cc tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c Tue May 15 02:26:51 2012 +0000
+++ b/tools/libxl/xl_cmdimpl.c Tue May 15 02:26:53 2012 +0000
@@ -127,6 +127,8 @@ struct domain_create {
int paused;
int dryrun;
int quiet;
+ int vnc;
+ int vncautopass;
int console_autoconnect;
const char *config_file;
const char *extra_config; /* extra config string */
@@ -204,9 +206,8 @@ static void find_domain(const char *p)
common_domname = was_name ? p : libxl_domid_to_name(ctx, domid);
}
-static int vncviewer(const char *domain_spec, int autopass)
+static int vncviewer(uint32_t domid, int autopass)
{
- find_domain(domain_spec);
libxl_vncviewer_exec(ctx, domid, autopass);
fprintf(stderr, "Unable to execute vncviewer\n");
return 1;
@@ -549,7 +550,9 @@ vcpp_out:
static void parse_config_data(const char *configfile_filename_report,
const char *configfile_data,
int configfile_len,
- libxl_domain_config *d_config)
+ libxl_domain_config *d_config,
+ struct domain_create *dom_info)
+
{
const char *buf;
long l;
@@ -754,6 +757,13 @@ static void parse_config_data(const char
if (!xlu_cfg_get_long(config, "rtc_timeoffset", &l, 0))
b_info->rtc_timeoffset = l;
+ if (dom_info && !xlu_cfg_get_long(config, "vncviewer", &l, 0)) {
+ /* Command line arguments must take precedence over what's
+ * specified in the configuration file. */
+ if (!dom_info->vnc)
+ dom_info->vnc = l;
+ }
+
xlu_cfg_get_defbool(config, "localtime", &b_info->localtime, 0);
if (!xlu_cfg_get_long (config, "videoram", &l, 0))
@@ -1531,6 +1541,7 @@ static int create_domain(struct domain_c
int daemonize = dom_info->daemonize;
int monitor = dom_info->monitor;
int paused = dom_info->paused;
+ int vncautopass = dom_info->vncautopass;
const char *config_file = dom_info->config_file;
const char *extra_config = dom_info->extra_config;
const char *restore_file = dom_info->restore_file;
@@ -1654,7 +1665,7 @@ static int create_domain(struct domain_c
if (!dom_info->quiet)
printf("Parsing config file %s\n", config_file);
- parse_config_data(config_file, config_data, config_len, &d_config);
+ parse_config_data(config_file, config_data, config_len, &d_config, dom_info);
if (migrate_fd >= 0) {
if (d_config.c_info.name) {
@@ -1741,6 +1752,9 @@ start:
if (!daemonize && !monitor)
goto out;
+ if (dom_info->vnc)
+ vncviewer(domid, vncautopass);
+
if (need_daemon) {
char *fullname, *name;
pid_t child1, got_child;
@@ -1867,7 +1881,7 @@ start:
libxl_domain_config_dispose(&d_config);
libxl_domain_config_init(&d_config);
parse_config_data(config_file, config_data, config_len,
- &d_config);
+ &d_config, dom_info);
/*
* XXX FIXME: If this sleep is not there then domain
@@ -2218,7 +2232,9 @@ int main_vncviewer(int argc, char **argv
return 2;
}
- if (vncviewer(argv[optind], autopass))
+ find_domain(argv[optind]);
+
+ if (vncviewer(domid, autopass))
return 1;
return 0;
}
@@ -2493,7 +2509,7 @@ static void list_domains_details(const l
continue;
CHK_ERRNO(asprintf(&config_file, "<domid %d data>", info[i].domid));
libxl_domain_config_init(&d_config);
- parse_config_data(config_file, (char *)data, len, &d_config);
+ parse_config_data(config_file, (char *)data, len, &d_config, NULL);
printf_info(default_output_format, info[i].domid, &d_config);
libxl_domain_config_dispose(&d_config);
free(data);
@@ -3043,13 +3059,26 @@ int main_restore(int argc, char **argv)
const char *config_file = NULL;
struct domain_create dom_info;
int paused = 0, debug = 0, daemonize = 1, monitor = 1,
- console_autoconnect = 0;
+ console_autoconnect = 0, vnc = 0, vncautopass = 0;
int opt, rc;
-
- while ((opt = def_getopt(argc, argv, "Fcpde", "restore", 1)) != -1) {
+ int option_index = 0;
+ static struct option long_options[] = {
+ {"vncviewer", 0, 0, 'V'},
+ {"vncviewer-autopass", 0, 0, 'A'},
+ {0, 0, 0, 0}
+ };
+
+ while (1) {
+ opt = getopt_long(argc, argv, "FhcpdeVA", long_options, &option_index);
+ if (opt == -1)
+ break;
+
switch (opt) {
case 0: case 2:
return opt;
+ case 'h':
+ help("restore");
+ return 2;
case 'c':
console_autoconnect = 1;
break;
@@ -3066,6 +3095,12 @@ int main_restore(int argc, char **argv)
daemonize = 0;
monitor = 0;
break;
+ case 'V':
+ vnc = 1;
+ break;
+ case 'A':
+ vnc = vncautopass = 1;
+ break;
}
}
@@ -3087,6 +3122,8 @@ int main_restore(int argc, char **argv)
dom_info.config_file = config_file;
dom_info.restore_file = checkpoint_file;
dom_info.migrate_fd = -1;
+ dom_info.vnc = vnc;
+ dom_info.vncautopass = vncautopass;
dom_info.console_autoconnect = console_autoconnect;
dom_info.incr_generationid = 1;
@@ -3394,7 +3431,7 @@ int main_create(int argc, char **argv)
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 = 0, vncautopass = 0;
int opt, rc;
int option_index = 0;
static struct option long_options[] = {
@@ -3402,6 +3439,8 @@ int main_create(int argc, char **argv)
{"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}
};
@@ -3411,7 +3450,7 @@ int main_create(int argc, char **argv)
}
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;
@@ -3444,6 +3483,12 @@ int main_create(int argc, char **argv)
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;
@@ -3473,6 +3518,8 @@ int main_create(int argc, char **argv)
dom_info.config_file = filename;
dom_info.extra_config = extra_config;
dom_info.migrate_fd = -1;
+ dom_info.vnc = vnc;
+ dom_info.vncautopass = vncautopass;
dom_info.console_autoconnect = console_autoconnect;
dom_info.incr_generationid = 0;
@@ -3575,7 +3622,7 @@ int main_config_update(int argc, char **
libxl_domain_config_init(&d_config);
- parse_config_data(filename, config_data, config_len, &d_config);
+ parse_config_data(filename, config_data, config_len, &d_config, NULL);
if (debug || dryrun_only)
printf_info(default_output_format, -1, &d_config);
diff -r 380d5f86dfdd -r d1c195e989cc tools/libxl/xl_cmdtable.c
--- a/tools/libxl/xl_cmdtable.c Tue May 15 02:26:51 2012 +0000
+++ b/tools/libxl/xl_cmdtable.c Tue May 15 02:26:53 2012 +0000
@@ -30,7 +30,10 @@ struct cmd_spec cmd_table[] = {
"-n, --dryrun Dry run - prints the resulting configuration\n"
" (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."
+ "-e Do not wait in the background for the death of the domain.\n"
+ "-V, --vncviewer Connect to the VNC display after the domain is created.\n"
+ "-A, --vncviewer-autopass\n"
+ " Pass VNC password to viewer via stdin."
},
{ "config-update",
&main_config_update, 1,
@@ -144,10 +147,12 @@ struct cmd_spec cmd_table[] = {
&main_restore, 0,
"Restore a domain from a saved state",
"[options] [<ConfigFile>] <CheckpointFile>",
- "-h Print this help.\n"
- "-p Do not unpause domain after restoring it.\n"
- "-e Do not wait in the background for the death of the domain.\n"
- "-d Enable debug messages."
+ "-h Print this help.\n"
+ "-p Do not unpause domain after restoring it.\n"
+ "-e Do not wait in the background for the death of the domain.\n"
+ "-d Enable debug messages.\n"
+ "-V, --vncviewer Connect to the VNC display after the domain is created.\n"
+ "-A, --vncviewer-autopass Pass VNC password to viewer via stdin."
},
{ "migrate-receive",
&main_migrate_receive, 0,
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2 of 2 v2] Introduce vncviewer xm compatibility options
2012-05-15 2:39 ` [PATCH 2 of 2 v2] Introduce vncviewer xm compatibility options Goncalo Gomes
@ 2012-05-15 14:43 ` Ian Campbell
2012-05-15 16:13 ` Goncalo Gomes
0 siblings, 1 reply; 7+ messages in thread
From: Ian Campbell @ 2012-05-15 14:43 UTC (permalink / raw)
To: Goncalo Gomes; +Cc: xen-devel@lists.xensource.com
On Tue, 2012-05-15 at 03:39 +0100, Goncalo Gomes wrote:
> docs/man/xl.cfg.pod.5 | 4 ++
> docs/man/xl.pod.1 | 18 +++++++++++
> tools/libxl/xl_cmdimpl.c | 73 ++++++++++++++++++++++++++++++++++++++--------
> tools/libxl/xl_cmdtable.c | 15 ++++++---
> 4 files changed, 92 insertions(+), 18 deletions(-)
>
>
> Signed-off-by: Goncalo Gomes <Goncalo.Gomes@EU.CITRIX.COM>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
Thanks! I fixed up a context reject in xl_cmdtable.c, relating to the
addition of the "modifies" flag, please do check I did the right thing.
Also I stripped some trailing whitespace.
>
> diff -r 380d5f86dfdd -r d1c195e989cc docs/man/xl.cfg.pod.5
> --- a/docs/man/xl.cfg.pod.5 Tue May 15 02:26:51 2012 +0000
> +++ b/docs/man/xl.cfg.pod.5 Tue May 15 02:26:53 2012 +0000
> @@ -91,6 +91,10 @@ The following options apply to guests of
> Specifies the UUID of the domain. If not specified, a fresh unique
> UUID will be generated.
>
> +=item B<vncviewer=BOOLEAN>
> +
> +Automatically spawn a vncviewer when creating/restoring a guest
> +
> =item B<pool="CPUPOOLNAME">
>
> Put the guest's vcpus into the named cpu pool.
> diff -r 380d5f86dfdd -r d1c195e989cc docs/man/xl.pod.1
> --- a/docs/man/xl.pod.1 Tue May 15 02:26:51 2012 +0000
> +++ b/docs/man/xl.pod.1 Tue May 15 02:26:53 2012 +0000
> @@ -120,6 +120,14 @@ Use the given configuration file.
>
> Leave the domain paused after it is created.
>
> +=item B<-V>, B<--vncviewer>
> +
> +Attach to domain's VNC server, forking a vncviewer process.
> +
> +=item B<-A>, B<--vncviewer-autopass>
> +
> +Pass VNC password to vncviewer via stdin.
> +
> =item B<-c>
>
> Attach console to the domain as soon as it has started. This is
> @@ -433,6 +441,16 @@ See the corresponding option of the I<cr
>
> Enable debug messages.
>
> +=item B<-V>, B<--vncviewer>
> +
> +Attach to domain's VNC server, forking a vncviewer process.
> +
> +=item B<-A>, B<--vncviewer-autopass>
> +
> +Pass VNC password to vncviewer via stdin.
> +
> +
> +
> =back
>
> =item B<save> [I<OPTIONS>] I<domain-id> I<CheckpointFile> [I<ConfigFile>]
> diff -r 380d5f86dfdd -r d1c195e989cc tools/libxl/xl_cmdimpl.c
> --- a/tools/libxl/xl_cmdimpl.c Tue May 15 02:26:51 2012 +0000
> +++ b/tools/libxl/xl_cmdimpl.c Tue May 15 02:26:53 2012 +0000
> @@ -127,6 +127,8 @@ struct domain_create {
> int paused;
> int dryrun;
> int quiet;
> + int vnc;
> + int vncautopass;
> int console_autoconnect;
> const char *config_file;
> const char *extra_config; /* extra config string */
> @@ -204,9 +206,8 @@ static void find_domain(const char *p)
> common_domname = was_name ? p : libxl_domid_to_name(ctx, domid);
> }
>
> -static int vncviewer(const char *domain_spec, int autopass)
> +static int vncviewer(uint32_t domid, int autopass)
> {
> - find_domain(domain_spec);
> libxl_vncviewer_exec(ctx, domid, autopass);
> fprintf(stderr, "Unable to execute vncviewer\n");
> return 1;
> @@ -549,7 +550,9 @@ vcpp_out:
> static void parse_config_data(const char *configfile_filename_report,
> const char *configfile_data,
> int configfile_len,
> - libxl_domain_config *d_config)
> + libxl_domain_config *d_config,
> + struct domain_create *dom_info)
> +
> {
> const char *buf;
> long l;
> @@ -754,6 +757,13 @@ static void parse_config_data(const char
> if (!xlu_cfg_get_long(config, "rtc_timeoffset", &l, 0))
> b_info->rtc_timeoffset = l;
>
> + if (dom_info && !xlu_cfg_get_long(config, "vncviewer", &l, 0)) {
> + /* Command line arguments must take precedence over what's
> + * specified in the configuration file. */
> + if (!dom_info->vnc)
> + dom_info->vnc = l;
> + }
> +
> xlu_cfg_get_defbool(config, "localtime", &b_info->localtime, 0);
>
> if (!xlu_cfg_get_long (config, "videoram", &l, 0))
> @@ -1531,6 +1541,7 @@ static int create_domain(struct domain_c
> int daemonize = dom_info->daemonize;
> int monitor = dom_info->monitor;
> int paused = dom_info->paused;
> + int vncautopass = dom_info->vncautopass;
> const char *config_file = dom_info->config_file;
> const char *extra_config = dom_info->extra_config;
> const char *restore_file = dom_info->restore_file;
> @@ -1654,7 +1665,7 @@ static int create_domain(struct domain_c
> if (!dom_info->quiet)
> printf("Parsing config file %s\n", config_file);
>
> - parse_config_data(config_file, config_data, config_len, &d_config);
> + parse_config_data(config_file, config_data, config_len, &d_config, dom_info);
>
> if (migrate_fd >= 0) {
> if (d_config.c_info.name) {
> @@ -1741,6 +1752,9 @@ start:
> if (!daemonize && !monitor)
> goto out;
>
> + if (dom_info->vnc)
> + vncviewer(domid, vncautopass);
> +
> if (need_daemon) {
> char *fullname, *name;
> pid_t child1, got_child;
> @@ -1867,7 +1881,7 @@ start:
> libxl_domain_config_dispose(&d_config);
> libxl_domain_config_init(&d_config);
> parse_config_data(config_file, config_data, config_len,
> - &d_config);
> + &d_config, dom_info);
>
> /*
> * XXX FIXME: If this sleep is not there then domain
> @@ -2218,7 +2232,9 @@ int main_vncviewer(int argc, char **argv
> return 2;
> }
>
> - if (vncviewer(argv[optind], autopass))
> + find_domain(argv[optind]);
> +
> + if (vncviewer(domid, autopass))
> return 1;
> return 0;
> }
> @@ -2493,7 +2509,7 @@ static void list_domains_details(const l
> continue;
> CHK_ERRNO(asprintf(&config_file, "<domid %d data>", info[i].domid));
> libxl_domain_config_init(&d_config);
> - parse_config_data(config_file, (char *)data, len, &d_config);
> + parse_config_data(config_file, (char *)data, len, &d_config, NULL);
> printf_info(default_output_format, info[i].domid, &d_config);
> libxl_domain_config_dispose(&d_config);
> free(data);
> @@ -3043,13 +3059,26 @@ int main_restore(int argc, char **argv)
> const char *config_file = NULL;
> struct domain_create dom_info;
> int paused = 0, debug = 0, daemonize = 1, monitor = 1,
> - console_autoconnect = 0;
> + console_autoconnect = 0, vnc = 0, vncautopass = 0;
> int opt, rc;
> -
> - while ((opt = def_getopt(argc, argv, "Fcpde", "restore", 1)) != -1) {
> + int option_index = 0;
> + static struct option long_options[] = {
> + {"vncviewer", 0, 0, 'V'},
> + {"vncviewer-autopass", 0, 0, 'A'},
> + {0, 0, 0, 0}
> + };
> +
> + while (1) {
> + opt = getopt_long(argc, argv, "FhcpdeVA", long_options, &option_index);
> + if (opt == -1)
> + break;
> +
> switch (opt) {
> case 0: case 2:
> return opt;
> + case 'h':
> + help("restore");
> + return 2;
> case 'c':
> console_autoconnect = 1;
> break;
> @@ -3066,6 +3095,12 @@ int main_restore(int argc, char **argv)
> daemonize = 0;
> monitor = 0;
> break;
> + case 'V':
> + vnc = 1;
> + break;
> + case 'A':
> + vnc = vncautopass = 1;
> + break;
> }
> }
>
> @@ -3087,6 +3122,8 @@ int main_restore(int argc, char **argv)
> dom_info.config_file = config_file;
> dom_info.restore_file = checkpoint_file;
> dom_info.migrate_fd = -1;
> + dom_info.vnc = vnc;
> + dom_info.vncautopass = vncautopass;
> dom_info.console_autoconnect = console_autoconnect;
> dom_info.incr_generationid = 1;
>
> @@ -3394,7 +3431,7 @@ int main_create(int argc, char **argv)
> 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 = 0, vncautopass = 0;
> int opt, rc;
> int option_index = 0;
> static struct option long_options[] = {
> @@ -3402,6 +3439,8 @@ int main_create(int argc, char **argv)
> {"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}
> };
>
> @@ -3411,7 +3450,7 @@ int main_create(int argc, char **argv)
> }
>
> 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;
>
> @@ -3444,6 +3483,12 @@ int main_create(int argc, char **argv)
> 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;
> @@ -3473,6 +3518,8 @@ int main_create(int argc, char **argv)
> dom_info.config_file = filename;
> dom_info.extra_config = extra_config;
> dom_info.migrate_fd = -1;
> + dom_info.vnc = vnc;
> + dom_info.vncautopass = vncautopass;
> dom_info.console_autoconnect = console_autoconnect;
> dom_info.incr_generationid = 0;
>
> @@ -3575,7 +3622,7 @@ int main_config_update(int argc, char **
>
> libxl_domain_config_init(&d_config);
>
> - parse_config_data(filename, config_data, config_len, &d_config);
> + parse_config_data(filename, config_data, config_len, &d_config, NULL);
>
> if (debug || dryrun_only)
> printf_info(default_output_format, -1, &d_config);
> diff -r 380d5f86dfdd -r d1c195e989cc tools/libxl/xl_cmdtable.c
> --- a/tools/libxl/xl_cmdtable.c Tue May 15 02:26:51 2012 +0000
> +++ b/tools/libxl/xl_cmdtable.c Tue May 15 02:26:53 2012 +0000
> @@ -30,7 +30,10 @@ struct cmd_spec cmd_table[] = {
> "-n, --dryrun Dry run - prints the resulting configuration\n"
> " (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."
> + "-e Do not wait in the background for the death of the domain.\n"
> + "-V, --vncviewer Connect to the VNC display after the domain is created.\n"
> + "-A, --vncviewer-autopass\n"
> + " Pass VNC password to viewer via stdin."
> },
> { "config-update",
> &main_config_update, 1,
> @@ -144,10 +147,12 @@ struct cmd_spec cmd_table[] = {
> &main_restore, 0,
> "Restore a domain from a saved state",
> "[options] [<ConfigFile>] <CheckpointFile>",
> - "-h Print this help.\n"
> - "-p Do not unpause domain after restoring it.\n"
> - "-e Do not wait in the background for the death of the domain.\n"
> - "-d Enable debug messages."
> + "-h Print this help.\n"
> + "-p Do not unpause domain after restoring it.\n"
> + "-e Do not wait in the background for the death of the domain.\n"
> + "-d Enable debug messages.\n"
> + "-V, --vncviewer Connect to the VNC display after the domain is created.\n"
> + "-A, --vncviewer-autopass Pass VNC password to viewer via stdin."
> },
> { "migrate-receive",
> &main_migrate_receive, 0,
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1 of 2 v2] xl: code motion of vncviewer() and `struct domain_create`
2012-05-15 2:39 ` [PATCH 1 of 2 v2] xl: code motion of vncviewer() and `struct domain_create` Goncalo Gomes
@ 2012-05-15 14:45 ` Ian Campbell
2012-05-15 16:07 ` Goncalo Gomes
0 siblings, 1 reply; 7+ messages in thread
From: Ian Campbell @ 2012-05-15 14:45 UTC (permalink / raw)
To: Goncalo Gomes; +Cc: xen-devel@lists.xensource.com
On Tue, 2012-05-15 at 03:39 +0100, Goncalo Gomes wrote:
> tools/libxl/xl_cmdimpl.c | 50 ++++++++++++++++++++++++-----------------------
> 1 files changed, 26 insertions(+), 24 deletions(-)
>
>
> Signed-off-by: Goncalo Gomes <Goncalo.Gomes@EU.CITRIX.COM>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
Thanks!
Not sure what tool you use to send, but it is usual to put the diffstat
after the commit + s-o-b and a "---" marker. This way the standard tools
(e.g. git am) knows not to include it in the commit message. In this
case I've done it by hand. I think hg email is a bit broken in this
regard (puts the diffstat at the top), in which case feel free not to
use the corresponding option next time.
Ian.
>
> diff -r cd4dd23a831d -r 380d5f86dfdd tools/libxl/xl_cmdimpl.c
> --- a/tools/libxl/xl_cmdimpl.c Fri May 11 18:59:07 2012 +0100
> +++ b/tools/libxl/xl_cmdimpl.c Tue May 15 02:26:51 2012 +0000
> @@ -120,6 +120,24 @@ static const char *action_on_shutdown_na
>
> #define SAVEFILE_BYTEORDER_VALUE ((uint32_t)0x01020304UL)
>
> +struct domain_create {
> + int debug;
> + int daemonize;
> + int monitor; /* handle guest reboots etc */
> + int paused;
> + int dryrun;
> + int quiet;
> + int console_autoconnect;
> + const char *config_file;
> + const char *extra_config; /* extra config string */
> + const char *restore_file;
> + int migrate_fd; /* -1 means none */
> + char **migration_domname_r; /* from malloc */
> + int incr_generationid;
> +};
> +
> +
> +
> static int qualifier_to_id(const char *p, uint32_t *id_r)
> {
> int i, alldigit;
> @@ -186,6 +204,14 @@ static void find_domain(const char *p)
> common_domname = was_name ? p : libxl_domid_to_name(ctx, domid);
> }
>
> +static int vncviewer(const char *domain_spec, int autopass)
> +{
> + find_domain(domain_spec);
> + libxl_vncviewer_exec(ctx, domid, autopass);
> + fprintf(stderr, "Unable to execute vncviewer\n");
> + return 1;
> +}
> +
> static int acquire_lock(void)
> {
> int rc;
> @@ -1399,22 +1425,6 @@ static int preserve_domain(libxl_ctx *ct
> return rc == 0 ? 1 : 0;
> }
>
> -struct domain_create {
> - int debug;
> - int daemonize;
> - int monitor; /* handle guest reboots etc */
> - int paused;
> - int dryrun;
> - int quiet;
> - int console_autoconnect;
> - const char *config_file;
> - const char *extra_config; /* extra config string */
> - const char *restore_file;
> - int migrate_fd; /* -1 means none */
> - char **migration_domname_r; /* from malloc */
> - int incr_generationid;
> -};
> -
> static int freemem(libxl_domain_build_info *b_info)
> {
> int rc, retries = 3;
> @@ -2175,14 +2185,6 @@ int main_console(int argc, char **argv)
> return 1;
> }
>
> -static int vncviewer(const char *domain_spec, int autopass)
> -{
> - find_domain(domain_spec);
> - libxl_vncviewer_exec(ctx, domid, autopass);
> - fprintf(stderr, "Unable to execute vncviewer\n");
> - return 1;
> -}
> -
> int main_vncviewer(int argc, char **argv)
> {
> static const struct option long_options[] = {
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1 of 2 v2] xl: code motion of vncviewer() and `struct domain_create`
2012-05-15 14:45 ` Ian Campbell
@ 2012-05-15 16:07 ` Goncalo Gomes
0 siblings, 0 replies; 7+ messages in thread
From: Goncalo Gomes @ 2012-05-15 16:07 UTC (permalink / raw)
To: Ian Campbell; +Cc: xen-devel@lists.xensource.com
On Tue, 15 May 2012, Ian Campbell wrote:
> On Tue, 2012-05-15 at 03:39 +0100, Goncalo Gomes wrote:
> > tools/libxl/xl_cmdimpl.c | 50 ++++++++++++++++++++++++-----------------------
> > 1 files changed, 26 insertions(+), 24 deletions(-)
> >
> >
> > Signed-off-by: Goncalo Gomes <Goncalo.Gomes@EU.CITRIX.COM>
>
> Committed-by: Ian Campbell <ian.campbell@citrix.com>
>
> Thanks!
>
> Not sure what tool you use to send, but it is usual to put the diffstat
> after the commit + s-o-b and a "---" marker. This way the standard tools
> (e.g. git am) knows not to include it in the commit message. In this
> case I've done it by hand. I think hg email is a bit broken in this
> regard (puts the diffstat at the top), in which case feel free not to
> use the corresponding option next time.
Thanks for fixing this by hand, I used hg email, with the '-d' switch
to add the diffstat. I will defer from using it next time.
Goncalo
> Ian.
>
> >
> > diff -r cd4dd23a831d -r 380d5f86dfdd tools/libxl/xl_cmdimpl.c
> > --- a/tools/libxl/xl_cmdimpl.c Fri May 11 18:59:07 2012 +0100
> > +++ b/tools/libxl/xl_cmdimpl.c Tue May 15 02:26:51 2012 +0000
> > @@ -120,6 +120,24 @@ static const char *action_on_shutdown_na
> >
> > #define SAVEFILE_BYTEORDER_VALUE ((uint32_t)0x01020304UL)
> >
> > +struct domain_create {
> > + int debug;
> > + int daemonize;
> > + int monitor; /* handle guest reboots etc */
> > + int paused;
> > + int dryrun;
> > + int quiet;
> > + int console_autoconnect;
> > + const char *config_file;
> > + const char *extra_config; /* extra config string */
> > + const char *restore_file;
> > + int migrate_fd; /* -1 means none */
> > + char **migration_domname_r; /* from malloc */
> > + int incr_generationid;
> > +};
> > +
> > +
> > +
> > static int qualifier_to_id(const char *p, uint32_t *id_r)
> > {
> > int i, alldigit;
> > @@ -186,6 +204,14 @@ static void find_domain(const char *p)
> > common_domname = was_name ? p : libxl_domid_to_name(ctx, domid);
> > }
> >
> > +static int vncviewer(const char *domain_spec, int autopass)
> > +{
> > + find_domain(domain_spec);
> > + libxl_vncviewer_exec(ctx, domid, autopass);
> > + fprintf(stderr, "Unable to execute vncviewer\n");
> > + return 1;
> > +}
> > +
> > static int acquire_lock(void)
> > {
> > int rc;
> > @@ -1399,22 +1425,6 @@ static int preserve_domain(libxl_ctx *ct
> > return rc == 0 ? 1 : 0;
> > }
> >
> > -struct domain_create {
> > - int debug;
> > - int daemonize;
> > - int monitor; /* handle guest reboots etc */
> > - int paused;
> > - int dryrun;
> > - int quiet;
> > - int console_autoconnect;
> > - const char *config_file;
> > - const char *extra_config; /* extra config string */
> > - const char *restore_file;
> > - int migrate_fd; /* -1 means none */
> > - char **migration_domname_r; /* from malloc */
> > - int incr_generationid;
> > -};
> > -
> > static int freemem(libxl_domain_build_info *b_info)
> > {
> > int rc, retries = 3;
> > @@ -2175,14 +2185,6 @@ int main_console(int argc, char **argv)
> > return 1;
> > }
> >
> > -static int vncviewer(const char *domain_spec, int autopass)
> > -{
> > - find_domain(domain_spec);
> > - libxl_vncviewer_exec(ctx, domid, autopass);
> > - fprintf(stderr, "Unable to execute vncviewer\n");
> > - return 1;
> > -}
> > -
> > int main_vncviewer(int argc, char **argv)
> > {
> > static const struct option long_options[] = {
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2 of 2 v2] Introduce vncviewer xm compatibility options
2012-05-15 14:43 ` Ian Campbell
@ 2012-05-15 16:13 ` Goncalo Gomes
0 siblings, 0 replies; 7+ messages in thread
From: Goncalo Gomes @ 2012-05-15 16:13 UTC (permalink / raw)
To: Ian Campbell; +Cc: xen-devel@lists.xensource.com
On Tue, 15 May 2012, Ian Campbell wrote:
> On Tue, 2012-05-15 at 03:39 +0100, Goncalo Gomes wrote:
> > docs/man/xl.cfg.pod.5 | 4 ++
> > docs/man/xl.pod.1 | 18 +++++++++++
> > tools/libxl/xl_cmdimpl.c | 73 ++++++++++++++++++++++++++++++++++++++--------
> > tools/libxl/xl_cmdtable.c | 15 ++++++---
> > 4 files changed, 92 insertions(+), 18 deletions(-)
> >
> >
> > Signed-off-by: Goncalo Gomes <Goncalo.Gomes@EU.CITRIX.COM>
>
> Committed-by: Ian Campbell <ian.campbell@citrix.com>
>
> Thanks! I fixed up a context reject in xl_cmdtable.c, relating to the
> addition of the "modifies" flag, please do check I did the right thing.
>
> Also I stripped some trailing whitespace.
Thanks for stripping the whitespace/fixing the reject in
xl_cmdtable.c. Looks fine to me!
Goncalo
> >
> > diff -r 380d5f86dfdd -r d1c195e989cc docs/man/xl.cfg.pod.5
> > --- a/docs/man/xl.cfg.pod.5 Tue May 15 02:26:51 2012 +0000
> > +++ b/docs/man/xl.cfg.pod.5 Tue May 15 02:26:53 2012 +0000
> > @@ -91,6 +91,10 @@ The following options apply to guests of
> > Specifies the UUID of the domain. If not specified, a fresh unique
> > UUID will be generated.
> >
> > +=item B<vncviewer=BOOLEAN>
> > +
> > +Automatically spawn a vncviewer when creating/restoring a guest
> > +
> > =item B<pool="CPUPOOLNAME">
> >
> > Put the guest's vcpus into the named cpu pool.
> > diff -r 380d5f86dfdd -r d1c195e989cc docs/man/xl.pod.1
> > --- a/docs/man/xl.pod.1 Tue May 15 02:26:51 2012 +0000
> > +++ b/docs/man/xl.pod.1 Tue May 15 02:26:53 2012 +0000
> > @@ -120,6 +120,14 @@ Use the given configuration file.
> >
> > Leave the domain paused after it is created.
> >
> > +=item B<-V>, B<--vncviewer>
> > +
> > +Attach to domain's VNC server, forking a vncviewer process.
> > +
> > +=item B<-A>, B<--vncviewer-autopass>
> > +
> > +Pass VNC password to vncviewer via stdin.
> > +
> > =item B<-c>
> >
> > Attach console to the domain as soon as it has started. This is
> > @@ -433,6 +441,16 @@ See the corresponding option of the I<cr
> >
> > Enable debug messages.
> >
> > +=item B<-V>, B<--vncviewer>
> > +
> > +Attach to domain's VNC server, forking a vncviewer process.
> > +
> > +=item B<-A>, B<--vncviewer-autopass>
> > +
> > +Pass VNC password to vncviewer via stdin.
> > +
> > +
> > +
> > =back
> >
> > =item B<save> [I<OPTIONS>] I<domain-id> I<CheckpointFile> [I<ConfigFile>]
> > diff -r 380d5f86dfdd -r d1c195e989cc tools/libxl/xl_cmdimpl.c
> > --- a/tools/libxl/xl_cmdimpl.c Tue May 15 02:26:51 2012 +0000
> > +++ b/tools/libxl/xl_cmdimpl.c Tue May 15 02:26:53 2012 +0000
> > @@ -127,6 +127,8 @@ struct domain_create {
> > int paused;
> > int dryrun;
> > int quiet;
> > + int vnc;
> > + int vncautopass;
> > int console_autoconnect;
> > const char *config_file;
> > const char *extra_config; /* extra config string */
> > @@ -204,9 +206,8 @@ static void find_domain(const char *p)
> > common_domname = was_name ? p : libxl_domid_to_name(ctx, domid);
> > }
> >
> > -static int vncviewer(const char *domain_spec, int autopass)
> > +static int vncviewer(uint32_t domid, int autopass)
> > {
> > - find_domain(domain_spec);
> > libxl_vncviewer_exec(ctx, domid, autopass);
> > fprintf(stderr, "Unable to execute vncviewer\n");
> > return 1;
> > @@ -549,7 +550,9 @@ vcpp_out:
> > static void parse_config_data(const char *configfile_filename_report,
> > const char *configfile_data,
> > int configfile_len,
> > - libxl_domain_config *d_config)
> > + libxl_domain_config *d_config,
> > + struct domain_create *dom_info)
> > +
> > {
> > const char *buf;
> > long l;
> > @@ -754,6 +757,13 @@ static void parse_config_data(const char
> > if (!xlu_cfg_get_long(config, "rtc_timeoffset", &l, 0))
> > b_info->rtc_timeoffset = l;
> >
> > + if (dom_info && !xlu_cfg_get_long(config, "vncviewer", &l, 0)) {
> > + /* Command line arguments must take precedence over what's
> > + * specified in the configuration file. */
> > + if (!dom_info->vnc)
> > + dom_info->vnc = l;
> > + }
> > +
> > xlu_cfg_get_defbool(config, "localtime", &b_info->localtime, 0);
> >
> > if (!xlu_cfg_get_long (config, "videoram", &l, 0))
> > @@ -1531,6 +1541,7 @@ static int create_domain(struct domain_c
> > int daemonize = dom_info->daemonize;
> > int monitor = dom_info->monitor;
> > int paused = dom_info->paused;
> > + int vncautopass = dom_info->vncautopass;
> > const char *config_file = dom_info->config_file;
> > const char *extra_config = dom_info->extra_config;
> > const char *restore_file = dom_info->restore_file;
> > @@ -1654,7 +1665,7 @@ static int create_domain(struct domain_c
> > if (!dom_info->quiet)
> > printf("Parsing config file %s\n", config_file);
> >
> > - parse_config_data(config_file, config_data, config_len, &d_config);
> > + parse_config_data(config_file, config_data, config_len, &d_config, dom_info);
> >
> > if (migrate_fd >= 0) {
> > if (d_config.c_info.name) {
> > @@ -1741,6 +1752,9 @@ start:
> > if (!daemonize && !monitor)
> > goto out;
> >
> > + if (dom_info->vnc)
> > + vncviewer(domid, vncautopass);
> > +
> > if (need_daemon) {
> > char *fullname, *name;
> > pid_t child1, got_child;
> > @@ -1867,7 +1881,7 @@ start:
> > libxl_domain_config_dispose(&d_config);
> > libxl_domain_config_init(&d_config);
> > parse_config_data(config_file, config_data, config_len,
> > - &d_config);
> > + &d_config, dom_info);
> >
> > /*
> > * XXX FIXME: If this sleep is not there then domain
> > @@ -2218,7 +2232,9 @@ int main_vncviewer(int argc, char **argv
> > return 2;
> > }
> >
> > - if (vncviewer(argv[optind], autopass))
> > + find_domain(argv[optind]);
> > +
> > + if (vncviewer(domid, autopass))
> > return 1;
> > return 0;
> > }
> > @@ -2493,7 +2509,7 @@ static void list_domains_details(const l
> > continue;
> > CHK_ERRNO(asprintf(&config_file, "<domid %d data>", info[i].domid));
> > libxl_domain_config_init(&d_config);
> > - parse_config_data(config_file, (char *)data, len, &d_config);
> > + parse_config_data(config_file, (char *)data, len, &d_config, NULL);
> > printf_info(default_output_format, info[i].domid, &d_config);
> > libxl_domain_config_dispose(&d_config);
> > free(data);
> > @@ -3043,13 +3059,26 @@ int main_restore(int argc, char **argv)
> > const char *config_file = NULL;
> > struct domain_create dom_info;
> > int paused = 0, debug = 0, daemonize = 1, monitor = 1,
> > - console_autoconnect = 0;
> > + console_autoconnect = 0, vnc = 0, vncautopass = 0;
> > int opt, rc;
> > -
> > - while ((opt = def_getopt(argc, argv, "Fcpde", "restore", 1)) != -1) {
> > + int option_index = 0;
> > + static struct option long_options[] = {
> > + {"vncviewer", 0, 0, 'V'},
> > + {"vncviewer-autopass", 0, 0, 'A'},
> > + {0, 0, 0, 0}
> > + };
> > +
> > + while (1) {
> > + opt = getopt_long(argc, argv, "FhcpdeVA", long_options, &option_index);
> > + if (opt == -1)
> > + break;
> > +
> > switch (opt) {
> > case 0: case 2:
> > return opt;
> > + case 'h':
> > + help("restore");
> > + return 2;
> > case 'c':
> > console_autoconnect = 1;
> > break;
> > @@ -3066,6 +3095,12 @@ int main_restore(int argc, char **argv)
> > daemonize = 0;
> > monitor = 0;
> > break;
> > + case 'V':
> > + vnc = 1;
> > + break;
> > + case 'A':
> > + vnc = vncautopass = 1;
> > + break;
> > }
> > }
> >
> > @@ -3087,6 +3122,8 @@ int main_restore(int argc, char **argv)
> > dom_info.config_file = config_file;
> > dom_info.restore_file = checkpoint_file;
> > dom_info.migrate_fd = -1;
> > + dom_info.vnc = vnc;
> > + dom_info.vncautopass = vncautopass;
> > dom_info.console_autoconnect = console_autoconnect;
> > dom_info.incr_generationid = 1;
> >
> > @@ -3394,7 +3431,7 @@ int main_create(int argc, char **argv)
> > 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 = 0, vncautopass = 0;
> > int opt, rc;
> > int option_index = 0;
> > static struct option long_options[] = {
> > @@ -3402,6 +3439,8 @@ int main_create(int argc, char **argv)
> > {"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}
> > };
> >
> > @@ -3411,7 +3450,7 @@ int main_create(int argc, char **argv)
> > }
> >
> > 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;
> >
> > @@ -3444,6 +3483,12 @@ int main_create(int argc, char **argv)
> > 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;
> > @@ -3473,6 +3518,8 @@ int main_create(int argc, char **argv)
> > dom_info.config_file = filename;
> > dom_info.extra_config = extra_config;
> > dom_info.migrate_fd = -1;
> > + dom_info.vnc = vnc;
> > + dom_info.vncautopass = vncautopass;
> > dom_info.console_autoconnect = console_autoconnect;
> > dom_info.incr_generationid = 0;
> >
> > @@ -3575,7 +3622,7 @@ int main_config_update(int argc, char **
> >
> > libxl_domain_config_init(&d_config);
> >
> > - parse_config_data(filename, config_data, config_len, &d_config);
> > + parse_config_data(filename, config_data, config_len, &d_config, NULL);
> >
> > if (debug || dryrun_only)
> > printf_info(default_output_format, -1, &d_config);
> > diff -r 380d5f86dfdd -r d1c195e989cc tools/libxl/xl_cmdtable.c
> > --- a/tools/libxl/xl_cmdtable.c Tue May 15 02:26:51 2012 +0000
> > +++ b/tools/libxl/xl_cmdtable.c Tue May 15 02:26:53 2012 +0000
> > @@ -30,7 +30,10 @@ struct cmd_spec cmd_table[] = {
> > "-n, --dryrun Dry run - prints the resulting configuration\n"
> > " (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."
> > + "-e Do not wait in the background for the death of the domain.\n"
> > + "-V, --vncviewer Connect to the VNC display after the domain is created.\n"
> > + "-A, --vncviewer-autopass\n"
> > + " Pass VNC password to viewer via stdin."
> > },
> > { "config-update",
> > &main_config_update, 1,
> > @@ -144,10 +147,12 @@ struct cmd_spec cmd_table[] = {
> > &main_restore, 0,
> > "Restore a domain from a saved state",
> > "[options] [<ConfigFile>] <CheckpointFile>",
> > - "-h Print this help.\n"
> > - "-p Do not unpause domain after restoring it.\n"
> > - "-e Do not wait in the background for the death of the domain.\n"
> > - "-d Enable debug messages."
> > + "-h Print this help.\n"
> > + "-p Do not unpause domain after restoring it.\n"
> > + "-e Do not wait in the background for the death of the domain.\n"
> > + "-d Enable debug messages.\n"
> > + "-V, --vncviewer Connect to the VNC display after the domain is created.\n"
> > + "-A, --vncviewer-autopass Pass VNC password to viewer via stdin."
> > },
> > { "migrate-receive",
> > &main_migrate_receive, 0,
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-05-15 16:13 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-15 2:39 [PATCH 0 of 2 v2] Add vncviewer xm compatibility options Goncalo Gomes
2012-05-15 2:39 ` [PATCH 1 of 2 v2] xl: code motion of vncviewer() and `struct domain_create` Goncalo Gomes
2012-05-15 14:45 ` Ian Campbell
2012-05-15 16:07 ` Goncalo Gomes
2012-05-15 2:39 ` [PATCH 2 of 2 v2] Introduce vncviewer xm compatibility options Goncalo Gomes
2012-05-15 14:43 ` Ian Campbell
2012-05-15 16:13 ` Goncalo Gomes
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).