[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCHv2] xl: use help table to describe command help information
Excellent! It's the right design. Thanks, zhigang On 05/11/2010 10:18 AM, Wei Yongjun wrote: > # HG changeset patch > # User Wei Yongjun <yjwei@xxxxxxxxxxxxxx> > # Date 1273544009 -28800 > # Node ID 3b082b6199edbe1af1c61c778d44028c499e5320 > # Parent f8f668ad3841f7596c5085546961d9c7acf53ace > xl: use help table to describe command help information > > This patch generate a help table to describe command help > information. > > Signed-off-by: Wei Yongjun <yjwei@xxxxxxxxxxxxxx> > > diff -r f8f668ad3841 -r 3b082b6199ed 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 Tue May 11 10:13:29 2010 +0800 > @@ -1164,111 +1164,16 @@ > 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; i < cmdtable_len; i++) > + if (!strcmp(command, cmd_table[i].cmd_name)) { > + printf("%s\n%s.\n\n", cmd_table[i].cmd_usage, > cmd_table[i].cmd_desc); > + if (cmd_table[i].cmd_option) > + printf("%s", cmd_table[i].cmd_option); > + return; > + } > + > + printf("command not implemented\n"); > } > } > > diff -r f8f668ad3841 -r 3b082b6199ed 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 Tue May 11 10:13:29 2010 +0800 > @@ -15,32 +15,162 @@ > #include "xl_cmdtable.h" > > struct cmd_spec cmd_table[] = { > - { "create", &main_create, "create a domain from config file <filename>" > }, > - { "list", &main_list, "list information about all domains" }, > - { "destroy", &main_destroy, "terminate a domain immediately" }, > - { "pci-attach", &main_pciattach, "insert a new pass-through pci device" > }, > - { "pci-detach", &main_pcidetach, "remove a domain's pass-through pci > device" }, > - { "pci-list", &main_pcilist, "list pass-through pci devices for a > domain" }, > - { "pause", &main_pause, "pause execution of a domain" }, > - { "unpause", &main_unpause, "unpause a paused domain" }, > - { "console", &main_console, "attach to domain's console" }, > - { "save", &main_save, "save a domain state to restore later" }, > - { "migrate", &main_migrate, "save a domain state to restore later" }, > - { "restore", &main_restore, "restore a domain from a saved state" }, > - { "migrate-receive", &main_migrate_receive, "restore a domain from a > saved state" }, > - { "cd-insert", &main_cd_insert, "insert a cdrom into a guest's cd drive" > }, > - { "cd-eject", &main_cd_eject, "eject a cdrom from a guest's cd drive" }, > - { "mem-set", &main_memset, "set the current memory usage for a domain" }, > - { "button-press", &main_button_press, "indicate an ACPI button press to > the domain" }, > - { "vcpu-list", &main_vcpulist, "list the VCPUs for all/some domains" }, > - { "vcpu-pin", &main_vcpupin, "set which CPUs a VCPU can use" }, > - { "vcpu-set", &main_vcpuset, "set the number of active VCPUs allowed for > the domain" }, > - { "list-vm", &main_list_vm, "list the VMs,without DOM0" }, > - { "info", &main_info, "get information about Xen host" }, > - { "sched-credit", &main_sched_credit, "get/set credit scheduler > parameters" }, > - { "domid", &main_domid, "convert a domain name to domain id"}, > - { "domname", &main_domname, "convert a domain id to domain name"}, > - { "rename", &main_rename, "rename a domain"}, > + { "create", > + &main_create, > + "Create a domain from config file <filename>", > + "Usage: xl create <ConfigFile> [options] [vars]\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", > + &main_list, > + "List information about all/some domains", > + "Usage: xl list [-v] [Domain]\n", > + }, > + { "destroy", > + &main_destroy, > + "Terminate a domain immediately", > + "Usage: xl destroy <Domain>\n", > + }, > + { "pci-attach", > + &main_pciattach, > + "Insert a new pass-through pci device", > + "Usage: xl pci-attach <Domain> <BDF> [Virtual Slot]\n", > + }, > + { "pci-detach", > + &main_pcidetach, > + "Remove a domain's pass-through pci device", > + "Usage: xl pci-detach <Domain> <BDF>\n", > + }, > + { "pci-list", > + &main_pcilist, > + "List pass-through pci devices for a domain", > + "Usage: xl pci-list <Domain>\n", > + }, > + { "pause", > + &main_pause, > + "Pause execution of a domain", > + "Usage: xl pause <Domain>\n", > + }, > + { "unpause", > + &main_unpause, > + "Unpause a paused domain", > + "Usage: xl unpause <Domain>\n", > + }, > + { "console", > + &main_console, > + "Attach to domain's console", > + "Usage: xl console <Domain>\n", > + }, > + { "save", > + &main_save, > + "Save a domain state to restore later", > + "Usage: xl save [options] <Domain> <CheckpointFile> [<ConfigFile>]\n", > + "Options:\n\n" > + "-h Print this help.\n" > + "-c Leave domain running after creating the snapshot.\n" > + }, > + { "migrate", > + &main_migrate, > + "Save a domain state to restore later", > + "Usage: xl migrate [options] <Domain> <host>\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\n" > + " to sh. If empty, run <host> instead of ssh <host> > xl\n" > + " migrate-receive [-d -e]\n" > + "-e Do not wait in the background (on <host>) for the > death\n" > + " of the domain.\n" > + }, > + { "restore", > + &main_restore, > + "Restore a domain from a saved state", > + "Usage: xl restore [options] [<ConfigFile>] <CheckpointFile>\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-receive", > + &main_migrate_receive, > + "Restore a domain from a saved state", > + "Usage: xl migrate-receive - for internal use only\n", > + }, > + { "cd-insert", > + &main_cd_insert, > + "Insert a cdrom into a guest's cd drive", > + "Usage: xl cd-insert <Domain> <VirtualDevice> <type:path>\n", > + }, > + { "cd-eject", > + &main_cd_eject, > + "Eject a cdrom from a guest's cd drive", > + "Usage: xl cd-eject <Domain> <VirtualDevice>\n", > + }, > + { "mem-set", > + &main_memset, > + "Set the current memory usage for a domain", > + "Usage: xl mem-set <Domain> <MemKB>\n", > + }, > + { "button-press", > + &main_button_press, > + "Indicate an ACPI button press to the domain", > + "Usage: xl button-press <Domain> <Button>\n\n", > + "<Button> may be 'power' or 'sleep'.\n" > + }, > + { "vcpu-list", > + &main_vcpulist, > + "List the VCPUs for all/some domains", > + "Usage: xl vcpu-list [Domain, ...]\n", > + }, > + { "vcpu-pin", > + &main_vcpupin, > + "Set which CPUs a VCPU can use", > + "Usage: xl vcpu-pin <Domain> <VCPU|all> <CPUs|all>\n", > + }, > + { "vcpu-set", > + &main_vcpuset, > + "Set the number of active VCPUs allowed for the domain", > + "Usage: xl vcpu-set <Domain> <vCPUs>\n", > + }, > + { "list-vm", > + &main_list_vm, > + "List the VMs,without DOM0", > + "Usage: xl list-vm\n", > + }, > + { "info", > + &main_info, > + "Get information about Xen host", > + "Usage: xl info\n", > + }, > + { "sched-credit", > + &main_sched_credit, > + "Get/set credit scheduler parameters", > + "Usage: xl sched-credit [-d <Domain> [-w[=WEIGHT]|-c[=CAP]]]\n", > + " -d DOMAIN, --domain=DOMAIN Domain to modify\n" > + " -w WEIGHT, --weight=WEIGHT Weight (int)\n" > + " -c CAP, --cap=CAP Cap (int)\n" > + }, > + { "domid", > + &main_domid, > + "Convert a domain name to domain id", > + "Usage: xl domid <DomainName>\n", > + }, > + { "domname", > + &main_domname, > + "Convert a domain id to domain name", > + "Usage: xl domname <DomainId>\n", > + }, > + { "rename", > + &main_rename, > + "Rename a domain", > + "Usage: xl rename <Domain> <NewDomainName>\n", > + }, > }; > > int cmdtable_len = sizeof(cmd_table)/sizeof(struct cmd_spec); > diff -r f8f668ad3841 -r 3b082b6199ed 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 Tue May 11 10:13:29 2010 +0800 > @@ -18,6 +18,8 @@ > char *cmd_name; > int (*cmd_impl)(int argc, char **argv); > char *cmd_desc; > + char *cmd_usage; > + char *cmd_option; > }; > > extern struct cmd_spec cmd_table[]; > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |