From: Wei Yongjun <yjwei@cn.fujitsu.com>
To: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: [PATCH] xl: use help table to describe command help information
Date: Mon, 10 May 2010 15:10:43 +0800 [thread overview]
Message-ID: <4BE7B173.6000806@cn.fujitsu.com> (raw)
In-Reply-To: <4BE7B0E3.5030604@cn.fujitsu.com>
This patch generate a help table to describe command help
information.
Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
diff -r ac61c50eb031 -r 9530370da103 tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c Mon May 10 14:50:48 2010 +0800
+++ b/tools/libxl/xl_cmdimpl.c Mon May 10 15:03:03 2010 +0800
@@ -1164,111 +1164,15 @@
for (i = 0; i < cmdtable_len; i++)
printf(" %-20s%s\n",
cmd_table[i].cmd_name, cmd_table[i].cmd_desc);
- } else if(!strcmp(command, "create")) {
- printf("Usage: xl create <ConfigFile> [options] [vars]\n\n");
- printf("Create a domain based on <ConfigFile>.\n\n");
- printf("Options:\n\n");
- printf("-h Print this help.\n");
- printf("-p Leave the domain paused after it is created.\n");
- printf("-c Connect to the console after the domain is created.\n");
- printf("-d Enable debug messages.\n");
- printf("-e Do not wait in the background for the death of the domain.\n");
- } else if(!strcmp(command, "list")) {
- printf("Usage: xl list [-v] [Domain]\n\n");
- printf("List information about all/some domains.\n\n");
- } else if(!strcmp(command, "pci-attach")) {
- printf("Usage: xl pci-attach <Domain> <BDF> [Virtual Slot]\n\n");
- printf("Insert a new pass-through pci device.\n\n");
- } else if(!strcmp(command, "pci-detach")) {
- printf("Usage: xl pci-detach <Domain> <BDF>\n\n");
- printf("Remove a domain's pass-through pci device.\n\n");
- } else if(!strcmp(command, "pci-list")) {
- printf("Usage: xl pci-list <Domain>\n\n");
- printf("List pass-through pci devices for a domain.\n\n");
- } else if(!strcmp(command, "pause")) {
- printf("Usage: xl pause <Domain>\n\n");
- printf("Pause execution of a domain.\n\n");
- } else if(!strcmp(command, "unpause")) {
- printf("Usage: xl unpause <Domain>\n\n");
- printf("Unpause a paused domain.\n\n");
- } else if(!strcmp(command, "save")) {
- printf("Usage: xl save [options] <Domain> <CheckpointFile> [<ConfigFile>]\n\n");
- printf("Save a domain state to restore later.\n\n");
- printf("Options:\n\n");
- printf("-h Print this help.\n");
- printf("-c Leave domain running after creating the snapshot.\n");
- } else if(!strcmp(command, "restore")) {
- printf("Usage: xl restore [options] [<ConfigFile>] <CheckpointFile>\n\n");
- printf("Restore a domain from a saved state.\n\n");
- printf("Options:\n\n");
- printf("-h Print this help.\n");
- printf("-p Do not unpause domain after restoring it.\n");
- printf("-e Do not wait in the background for the death of the domain.\n");
- printf("-d Enable debug messages.\n");
- } else if(!strcmp(command, "migrate")) {
- printf("Usage: xl migrate [options] <Domain> <host>\n\n");
- printf("Save a domain state to restore later.\n\n");
- printf("Options:\n\n");
- printf("-h Print this help.\n");
- printf("-C <config> Send <config> instead of config file from creation.\n");
- printf("-s <sshcommand> Use <sshcommand> instead of ssh. String will be passed to sh. If empty, run <host> instead of ssh <host> xl migrate-receive [-d -e]\n");
- printf("-e Do not wait in the background (on <host>) for the death of the domain.\n");
- } else if(!strcmp(command, "migrate-receive")) {
- printf("Usage: xl migrate-receive - for internal use only");
- } else if(!strcmp(command, "restore")) {
- printf("Usage: xl restore [options] [<ConfigFile>] <CheckpointFile>\n\n");
- printf("Restore a domain from a saved state.\n\n");
- printf("Options:\n\n");
- printf("-h Print this help.\n");
- printf("-O Old (configless) xl save format.\n");
- printf("-p Do not unpause domain after restoring it.\n");
- printf("-e Do not wait in the background for the death of the domain.\n");
- } else if(!strcmp(command, "destroy")) {
- printf("Usage: xl destroy <Domain>\n\n");
- printf("Terminate a domain immediately.\n\n");
- } else if (!strcmp(command, "console")) {
- printf("Usage: xl console <Domain>\n\n");
- printf("Attach to domain's console.\n\n");
- } else if (!strcmp(command, "cd-insert")) {
- printf("Usage: xl cd-insert <Domain> <VirtualDevice> <type:path>\n\n");
- printf("Insert a cdrom into a guest's cd drive.\n\n");
- } else if (!strcmp(command, "cd-eject")) {
- printf("Usage: xl cd-eject <Domain> <VirtualDevice>\n\n");
- printf("Eject a cdrom from a guest's cd drive.\n\n");
- } else if (!strcmp(command, "mem-set")) {
- printf("Usage: xl mem-set <Domain> <MemKB>\n\n");
- printf("Set the current memory usage for a domain.\n\n");
- } else if (!strcmp(command, "button-press")) {
- printf("Usage: xl button-press <Domain> <Button>\n\n");
- printf("Indicate <Button> press to a domain.\n");
- printf("<Button> may be 'power' or 'sleep'.\n\n");
- } else if (!strcmp(command, "vcpu-list")) {
- printf("Usage: xl vcpu-list [Domain, ...]\n\n");
- printf("List the VCPUs for all/some domains.\n\n");
- } else if (!strcmp(command, "vcpu-pin")) {
- printf("Usage: xl vcpu-pin <Domain> <VCPU|all> <CPUs|all>\n\n");
- printf("Set which CPUs a VCPU can use.\n\n");
- } else if (!strcmp(command, "vcpu-set")) {
- printf("Usage: xl vcpu-set <Domain> <vCPUs>\n\n");
- printf("Set the number of active VCPUs for allowed for the domain.\n\n");
- } else if(!strcmp(command, "info")) {
- printf("Usage: xl info\n\n");
- printf("Get information about Xen host.\n\n");
- } else if (!strcmp(command, "sched-credit")) {
- printf("Usage: xl sched-credit [-d <Domain> [-w[=WEIGHT]|-c[=CAP]]]\n\n");
- printf("Get/set credit scheduler parameters.\n");
- printf(" -d DOMAIN, --domain=DOMAIN Domain to modify\n");
- printf(" -w WEIGHT, --weight=WEIGHT Weight (int)\n");
- printf(" -c CAP, --cap=CAP Cap (int)\n");
- } else if (!strcmp(command, "domid")) {
- printf("Usage: xl domid <DomainName>\n\n");
- printf("Convert a domain name to domain id.\n");
- } else if (!strcmp(command, "domname")) {
- printf("Usage: xl domname <DomainId>\n\n");
- printf("Convert a domain id to domain name.\n");
- } else if (!strcmp(command, "rename")) {
- printf("Usage: xl rename <Domain> <NewDomainName>\n\n");
- printf("Rename a domain.\n");
+ } else {
+ for (i = 0; cmd_htable[i].cmd_name != NULL; i++)
+ if (!strcmp(command, cmd_htable[i].cmd_name)) {
+ printf("%s", cmd_htable[i].cmd_help);
+ break;
+ }
+
+ if (!cmd_htable[i].cmd_name)
+ printf("no help information for command %s\n", command);
}
}
diff -r ac61c50eb031 -r 9530370da103 tools/libxl/xl_cmdtable.c
--- a/tools/libxl/xl_cmdtable.c Mon May 10 14:50:48 2010 +0800
+++ b/tools/libxl/xl_cmdtable.c Mon May 10 15:03:03 2010 +0800
@@ -14,6 +14,142 @@
#include "xl_cmdtable.h"
+struct cmd_help cmd_htable[] = {
+ { "create",
+ "Usage: xl create <ConfigFile> [options] [vars]\n\n"
+ "Create a domain based on <ConfigFile>.\n\n"
+ "Options:\n\n"
+ "-h Print this help.\n"
+ "-p Leave the domain paused after it is created.\n"
+ "-c Connect to the console after the domain is created.\n"
+ "-d Enable debug messages.\n"
+ "-e Do not wait in the background for the death of the domain.\n"
+ },
+ { "list",
+ "Usage: xl list [-v] [Domain]\n\n"
+ "List information about all/some domains.\n\n"
+ },
+ { "pci-attach",
+ "Usage: xl pci-attach <Domain> <BDF> [Virtual Slot]\n\n"
+ "Insert a new pass-through pci device.\n\n"
+ },
+ { "pci-detach",
+ "Usage: xl pci-detach <Domain> <BDF>\n\n"
+ "Remove a domain's pass-through pci device.\n\n"
+ },
+ { "pci-list",
+ "Usage: xl pci-list <Domain>\n\n"
+ "List pass-through pci devices for a domain.\n\n"
+ },
+ { "pause",
+ "Usage: xl pause <Domain>\n\n"
+ "Pause execution of a domain.\n\n"
+ },
+ { "unpause",
+ "Usage: xl unpause <Domain>\n\n"
+ "Unpause a paused domain.\n\n"
+ },
+ { "save",
+ "Usage: xl save [options] <Domain> <CheckpointFile> [<ConfigFile>]\n\n"
+ "Save a domain state to restore later.\n\n"
+ "Options:\n\n"
+ "-h Print this help.\n"
+ "-c Leave domain running after creating the snapshot.\n"
+ },
+ { "restore",
+ "Usage: xl restore [options] [<ConfigFile>] <CheckpointFile>\n\n"
+ "Restore a domain from a saved state.\n\n"
+ "Options:\n\n"
+ "-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"
+ },
+ { "migrate",
+ "Usage: xl migrate [options] <Domain> <host>\n\n"
+ "Save a domain state to restore later.\n\n"
+ "Options:\n\n"
+ "-h Print this help.\n"
+ "-C <config> Send <config> instead of config file from creation.\n"
+ "-s <sshcommand> Use <sshcommand> instead of ssh. String will be passed to sh."
+ " If empty, run <host> instead of ssh <host> xl migrate-receive [-d -e]\n"
+ "-e Do not wait in the background (on <host>) for the death of the domain.\n"
+ },
+ { "migrate-receive",
+ "Usage: xl migrate-receive - for internal use only"
+ },
+ { "restore",
+ "Usage: xl restore [options] [<ConfigFile>] <CheckpointFile>\n\n"
+ "Restore a domain from a saved state.\n\n"
+ "Options:\n\n"
+ "-h Print this help.\n"
+ "-O Old (configless) xl save format.\n"
+ "-p Do not unpause domain after restoring it.\n"
+ "-e Do not wait in the background for the death of the domain.\n"
+ },
+ { "destroy",
+ "Usage: xl destroy <Domain>\n\n"
+ "Terminate a domain immediately.\n\n"
+ },
+ { "console",
+ "Usage: xl console <Domain>\n\n"
+ "Attach to domain's console.\n\n"
+ },
+ { "cd-insert",
+ "Usage: xl cd-insert <Domain> <VirtualDevice> <type:path>\n\n"
+ "Insert a cdrom into a guest's cd drive.\n\n"
+ },
+ { "cd-eject",
+ "Usage: xl cd-eject <Domain> <VirtualDevice>\n\n"
+ "Eject a cdrom from a guest's cd drive.\n\n"
+ },
+ { "mem-set",
+ "Usage: xl mem-set <Domain> <MemKB>\n\n"
+ "Set the current memory usage for a domain.\n\n"
+ },
+ { "button-press",
+ "Usage: xl button-press <Domain> <Button>\n\n"
+ "Indicate <Button> press to a domain.\n"
+ "<Button> may be 'power' or 'sleep'.\n\n"
+ },
+ { "vcpu-list",
+ "Usage: xl vcpu-list [Domain, ...]\n\n"
+ "List the VCPUs for all/some domains.\n\n"
+ },
+ { "vcpu-pin",
+ "Usage: xl vcpu-pin <Domain> <VCPU|all> <CPUs|all>\n\n"
+ "Set which CPUs a VCPU can use.\n\n"
+ },
+ { "vcpu-set",
+ "Usage: xl vcpu-set <Domain> <vCPUs>\n\n"
+ "Set the number of active VCPUs for allowed for the domain.\n\n"
+ },
+ { "info",
+ "Usage: xl info\n\n"
+ "Get information about Xen host.\n\n"
+ },
+ { "sched-credit",
+ "Usage: xl sched-credit [-d <Domain> [-w[=WEIGHT]|-c[=CAP]]]\n\n"
+ "Get/set credit scheduler parameters.\n"
+ " -d DOMAIN, --domain=DOMAIN Domain to modify\n"
+ " -w WEIGHT, --weight=WEIGHT Weight (int)\n"
+ " -c CAP, --cap=CAP Cap (int)\n"
+ },
+ { "domid",
+ "Usage: xl domid <DomainName>\n\n"
+ "Convert a domain name to domain id.\n"
+ },
+ { "domname",
+ "Usage: xl domname <DomainId>\n\n"
+ "Convert a domain id to domain name.\n"
+ },
+ { "rename",
+ "Usage: xl rename <Domain> <NewDomainName>\n\n"
+ "Rename a domain.\n"
+ },
+ { /* NULL */ },
+};
+
struct cmd_spec cmd_table[] = {
{ "create", &main_create, "create a domain from config file <filename>" },
{ "list", &main_list, "list information about all domains" },
diff -r ac61c50eb031 -r 9530370da103 tools/libxl/xl_cmdtable.h
--- a/tools/libxl/xl_cmdtable.h Mon May 10 14:50:48 2010 +0800
+++ b/tools/libxl/xl_cmdtable.h Mon May 10 15:03:03 2010 +0800
@@ -14,11 +14,17 @@
#include "xl_cmdimpl.h"
+struct cmd_help {
+ char *cmd_name;
+ char *cmd_help;
+};
+
struct cmd_spec {
char *cmd_name;
int (*cmd_impl)(int argc, char **argv);
char *cmd_desc;
};
+extern struct cmd_help cmd_htable[];
extern struct cmd_spec cmd_table[];
extern int cmdtable_len;
next prev parent reply other threads:[~2010-05-10 7:10 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-10 7:08 [PATCH] xl: add missing migrate commands to command table Wei Yongjun
2010-05-10 7:10 ` Wei Yongjun [this message]
2010-05-10 7:31 ` [PATCH] xl: use help table to describe command help information Juergen Gross
2010-05-11 2:18 ` [PATCHv2] " Wei Yongjun
2010-05-11 2:59 ` Zhigang Wang
2010-05-11 11:06 ` Stefano Stabellini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BE7B173.6000806@cn.fujitsu.com \
--to=yjwei@cn.fujitsu.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.