[libvirt] [PATCH 0/4] Introduce aliases for virt-admin's srv-* commands

So, as suggested by Martin in [1], this series tweaks the command alias handling logic, so that when creating alias, it is not necessary to duplicate the original command's structure, thus creating a bit more noise. Instead, the new format for an alias structure hints very clearly that it's just an alias for a different command, while linking the alias with the original command's data by using new element '.alias'. [1] https://www.redhat.com/archives/libvir-list/2016-September/msg00129.html Erik Skultety (4): tests: fix incorrect status handling by virsh-self-test virt-admin: Tweak command parsing logic so that aliases point to new commands virt-admin: Add some command aliases to provide syntax sugar over ugly commands virt-admin: Replace the (now) aliases with new command names in the man page tests/virsh-self-test | 2 +- tools/virsh-nodedev.c | 6 ++---- tools/virsh.c | 3 ++- tools/virt-admin.c | 24 ++++++++++++++++++++++++ tools/virt-admin.pod | 30 +++++++++++++++--------------- tools/vsh.c | 6 ++++++ tools/vsh.h | 1 + 7 files changed, 51 insertions(+), 21 deletions(-) -- 2.5.5

The virsh-self-test script compared the test's return code with 1 and only if the return code matched this value then the test was marked as failed. Problem is that SIGSEGV returns 139 (or 11 to be precise, since shell reserves the MSB for abnormal exit signaling) which passes the check just fine and test then appears as successful which it most certainly wasn't. Therefore, flip the logic to compare against 0 instead and every other result will be treated as a failed test case. Signed-off-by: Erik Skultety <eskultet@redhat.com> --- tests/virsh-self-test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/virsh-self-test b/tests/virsh-self-test index c51fcf4..641810f 100755 --- a/tests/virsh-self-test +++ b/tests/virsh-self-test @@ -28,7 +28,7 @@ $abs_top_builddir/tools/virsh -c $test_url self-test > /dev/null status=$? test_result 1 "virsh-self-test" $status -if test "$status" = "1" ; then +if test "$status" != "0" ; then fail=1 fi -- 2.5.5

On 12.09.2016 10:20, Erik Skultety wrote:
The virsh-self-test script compared the test's return code with 1 and only if the return code matched this value then the test was marked as failed. Problem is that SIGSEGV returns 139 (or 11 to be precise, since shell reserves the MSB for abnormal exit signaling) which passes the check just fine and test then appears as successful which it most certainly wasn't. Therefore, flip the logic to compare against 0 instead and every other result will be treated as a failed test case.
Signed-off-by: Erik Skultety <eskultet@redhat.com> --- tests/virsh-self-test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/virsh-self-test b/tests/virsh-self-test index c51fcf4..641810f 100755 --- a/tests/virsh-self-test +++ b/tests/virsh-self-test @@ -28,7 +28,7 @@ $abs_top_builddir/tools/virsh -c $test_url self-test > /dev/null status=$? test_result 1 "virsh-self-test" $status
-if test "$status" = "1" ; then +if test "$status" != "0" ; then fail=1 fi
ACK Michal

Change the logic in a way, so that VSH_CMD_FLAG_ALIAS behaves similarly to how VSH_OT_ALIAS for command options, i.e. there is no need for code duplication for the alias and the aliased command structures. Along with that change, switch any existing VSH_CMD_FLAG_ALIAS occurrences to this new format. Signed-off-by: Erik Skultety <eskultet@redhat.com> --- tools/virsh-nodedev.c | 6 ++---- tools/virsh.c | 3 ++- tools/vsh.c | 6 ++++++ tools/vsh.h | 1 + 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c index 321f15c..9446664 100644 --- a/tools/virsh-nodedev.c +++ b/tools/virsh-nodedev.c @@ -986,10 +986,8 @@ const vshCmdDef nodedevCmds[] = { .flags = 0 }, {.name = "nodedev-dettach", - .handler = cmdNodeDeviceDetach, - .opts = opts_node_device_detach, - .info = info_node_device_detach, - .flags = VSH_CMD_FLAG_ALIAS + .flags = VSH_CMD_FLAG_ALIAS, + .alias = "nodedev-detach" }, {.name = "nodedev-dumpxml", .handler = cmdNodeDeviceDumpXML, diff --git a/tools/virsh.c b/tools/virsh.c index cb60edc..60fb02b 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -904,7 +904,8 @@ static const vshCmdDef virshCmds[] = { .handler = cmdSelfTest, .opts = NULL, .info = info_selftest, - .flags = VSH_CMD_FLAG_NOCONNECT | VSH_CMD_FLAG_ALIAS + .flags = VSH_CMD_FLAG_NOCONNECT | VSH_CMD_FLAG_ALIAS, + .alias = "self-test" }, {.name = NULL} }; diff --git a/tools/vsh.c b/tools/vsh.c index be6a073..ad3e1c7 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -1410,6 +1410,12 @@ vshCommandParse(vshControl *ctl, vshCommandParser *parser) vshError(ctl, _("unknown command: '%s'"), tkdata); goto syntaxError; /* ... or ignore this command only? */ } + /* aliases need to be resolved to the actual commands */ + if (cmd->flags & VSH_CMD_FLAG_ALIAS) { + VIR_FREE(tkdata); + tkdata = vshStrdup(ctl, cmd->alias); + cmd = vshCmddefSearch(tkdata); + } if (vshCmddefOptParse(cmd, &opts_need_arg, &opts_required) < 0) { vshError(ctl, diff --git a/tools/vsh.h b/tools/vsh.h index e53910f..e383e54 100644 --- a/tools/vsh.h +++ b/tools/vsh.h @@ -179,6 +179,7 @@ struct _vshCmdDef { const vshCmdOptDef *opts; /* definition of command options */ const vshCmdInfo *info; /* details about command */ unsigned int flags; /* bitwise OR of VSH_CMD_FLAG */ + const char *alias; /* name of the aliased command */ }; /* -- 2.5.5

On 12.09.2016 10:20, Erik Skultety wrote:
Change the logic in a way, so that VSH_CMD_FLAG_ALIAS behaves similarly to how VSH_OT_ALIAS for command options, i.e. there is no need for code duplication for the alias and the aliased command structures. Along with that change, switch any existing VSH_CMD_FLAG_ALIAS occurrences to this new format.
Signed-off-by: Erik Skultety <eskultet@redhat.com> --- tools/virsh-nodedev.c | 6 ++---- tools/virsh.c | 3 ++- tools/vsh.c | 6 ++++++ tools/vsh.h | 1 + 4 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c index 321f15c..9446664 100644 --- a/tools/virsh-nodedev.c +++ b/tools/virsh-nodedev.c @@ -986,10 +986,8 @@ const vshCmdDef nodedevCmds[] = { .flags = 0 }, {.name = "nodedev-dettach", - .handler = cmdNodeDeviceDetach, - .opts = opts_node_device_detach, - .info = info_node_device_detach, - .flags = VSH_CMD_FLAG_ALIAS + .flags = VSH_CMD_FLAG_ALIAS, + .alias = "nodedev-detach"
I think that if we do this we should just stop using the misspelled version. I mean, drop it from the man page, do not offer it for autocompletion. Also, you need to update vshCmddefCheckInternals() to check whether all commands passing VSH_CMD_FLAG_ALIAS also set .alias. Otherwise we will segfault later.
}, {.name = "nodedev-dumpxml", .handler = cmdNodeDeviceDumpXML, diff --git a/tools/virsh.c b/tools/virsh.c index cb60edc..60fb02b 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -904,7 +904,8 @@ static const vshCmdDef virshCmds[] = { .handler = cmdSelfTest, .opts = NULL, .info = info_selftest, - .flags = VSH_CMD_FLAG_NOCONNECT | VSH_CMD_FLAG_ALIAS + .flags = VSH_CMD_FLAG_NOCONNECT | VSH_CMD_FLAG_ALIAS, + .alias = "self-test"
So this is just for demonstration purposes? It seems so to me.
}, {.name = NULL} }; diff --git a/tools/vsh.c b/tools/vsh.c index be6a073..ad3e1c7 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -1410,6 +1410,12 @@ vshCommandParse(vshControl *ctl, vshCommandParser *parser) vshError(ctl, _("unknown command: '%s'"), tkdata); goto syntaxError; /* ... or ignore this command only? */ } + /* aliases need to be resolved to the actual commands */ + if (cmd->flags & VSH_CMD_FLAG_ALIAS) { + VIR_FREE(tkdata); + tkdata = vshStrdup(ctl, cmd->alias);
See? If cmd->alias is NULL (because somebody set the _ALIAS flag but haven't provided .alias), tkdata is gonna be NULL.
+ cmd = vshCmddefSearch(tkdata);
Which in turn means, we segfault here. Also, we must not offer those commands who have .alias for autocompletion.
+ } if (vshCmddefOptParse(cmd, &opts_need_arg, &opts_required) < 0) { vshError(ctl, diff --git a/tools/vsh.h b/tools/vsh.h index e53910f..e383e54 100644 --- a/tools/vsh.h +++ b/tools/vsh.h @@ -179,6 +179,7 @@ struct _vshCmdDef { const vshCmdOptDef *opts; /* definition of command options */ const vshCmdInfo *info; /* details about command */ unsigned int flags; /* bitwise OR of VSH_CMD_FLAG */ + const char *alias; /* name of the aliased command */ };
/*
Michal

On 13/09/16 14:30, Michal Privoznik wrote:
On 12.09.2016 10:20, Erik Skultety wrote:
Change the logic in a way, so that VSH_CMD_FLAG_ALIAS behaves similarly to how VSH_OT_ALIAS for command options, i.e. there is no need for code duplication for the alias and the aliased command structures. Along with that change, switch any existing VSH_CMD_FLAG_ALIAS occurrences to this new format.
Signed-off-by: Erik Skultety <eskultet@redhat.com> --- tools/virsh-nodedev.c | 6 ++---- tools/virsh.c | 3 ++- tools/vsh.c | 6 ++++++ tools/vsh.h | 1 + 4 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c index 321f15c..9446664 100644 --- a/tools/virsh-nodedev.c +++ b/tools/virsh-nodedev.c @@ -986,10 +986,8 @@ const vshCmdDef nodedevCmds[] = { .flags = 0 }, {.name = "nodedev-dettach", - .handler = cmdNodeDeviceDetach, - .opts = opts_node_device_detach, - .info = info_node_device_detach, - .flags = VSH_CMD_FLAG_ALIAS + .flags = VSH_CMD_FLAG_ALIAS, + .alias = "nodedev-detach"
I think that if we do this we should just stop using the misspelled version. I mean, drop it from the man page, do not offer it for autocompletion.
Oh, I completely missed that one, I would never expected that we actually document our (so far) only alias in the man page...
Also, you need to update vshCmddefCheckInternals() to check whether all
^^not the correct spot to check, that is intended just for the command opts (therefore internals) not for the command itself, so the command structure should be checked in the vshCommandParse() function.
commands passing VSH_CMD_FLAG_ALIAS also set .alias. Otherwise we will segfault later.
Aand I disagree, if we return just an error code, executing such a command from virsh is visually a noop ==> so no-go. If we also error out what purpose would the message serve to the user? Let's say a message like "missing .alias element", it's our internal static structure and such an error would have absolutely no meaning (and no value) to the user because the error would not be caused by a certain combination of user inputs, exposing a flaw in our logic, rather it is an incorrect hard-coded setting in the binary. Additionally, if we went your way, we would have to add a check preventing a segfault for any missing element in the command structure for every command, let's say '.opts' element, you'll experience a segfault in that case as well, but since commit 920ab8bd you'll be notified about this fact by the self-test command - see my further comments below.
}, {.name = "nodedev-dumpxml", .handler = cmdNodeDeviceDumpXML, diff --git a/tools/virsh.c b/tools/virsh.c index cb60edc..60fb02b 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -904,7 +904,8 @@ static const vshCmdDef virshCmds[] = { .handler = cmdSelfTest, .opts = NULL, .info = info_selftest, - .flags = VSH_CMD_FLAG_NOCONNECT | VSH_CMD_FLAG_ALIAS + .flags = VSH_CMD_FLAG_NOCONNECT | VSH_CMD_FLAG_ALIAS, + .alias = "self-test"
So this is just for demonstration purposes? It seems so to me.
Well, omitting the .alias element would segfault as you pointed out, but adding it here, although pointing to itself, was imho easier than adding a check if an aliased command does have the .handler element filled in, so it would be used instead of looking at the .alias element. This command is also used for testing purposes only (thus it's hidden) and this is actually the *right* spot to have a check, if an aliased command also has the '.alias' element filled properly, because this test is supposed to make us aware of such mistakes when someone adds a command, but forgets to fill out certain structure element. Regards, Erik
}, {.name = NULL} }; diff --git a/tools/vsh.c b/tools/vsh.c index be6a073..ad3e1c7 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -1410,6 +1410,12 @@ vshCommandParse(vshControl *ctl, vshCommandParser *parser) vshError(ctl, _("unknown command: '%s'"), tkdata); goto syntaxError; /* ... or ignore this command only? */ } + /* aliases need to be resolved to the actual commands */ + if (cmd->flags & VSH_CMD_FLAG_ALIAS) { + VIR_FREE(tkdata); + tkdata = vshStrdup(ctl, cmd->alias);
See? If cmd->alias is NULL (because somebody set the _ALIAS flag but haven't provided .alias), tkdata is gonna be NULL.
+ cmd = vshCmddefSearch(tkdata);
Which in turn means, we segfault here.
Also, we must not offer those commands who have .alias for autocompletion.
+ } if (vshCmddefOptParse(cmd, &opts_need_arg, &opts_required) < 0) { vshError(ctl, diff --git a/tools/vsh.h b/tools/vsh.h index e53910f..e383e54 100644 --- a/tools/vsh.h +++ b/tools/vsh.h @@ -179,6 +179,7 @@ struct _vshCmdDef { const vshCmdOptDef *opts; /* definition of command options */ const vshCmdInfo *info; /* details about command */ unsigned int flags; /* bitwise OR of VSH_CMD_FLAG */ + const char *alias; /* name of the aliased command */ };
/*
Michal
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

On 13.09.2016 16:11, Erik Skultety wrote:
On 13/09/16 14:30, Michal Privoznik wrote:
On 12.09.2016 10:20, Erik Skultety wrote:
Change the logic in a way, so that VSH_CMD_FLAG_ALIAS behaves similarly to how VSH_OT_ALIAS for command options, i.e. there is no need for code duplication for the alias and the aliased command structures. Along with that change, switch any existing VSH_CMD_FLAG_ALIAS occurrences to this new format.
Signed-off-by: Erik Skultety <eskultet@redhat.com> --- tools/virsh-nodedev.c | 6 ++---- tools/virsh.c | 3 ++- tools/vsh.c | 6 ++++++ tools/vsh.h | 1 + 4 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c index 321f15c..9446664 100644 --- a/tools/virsh-nodedev.c +++ b/tools/virsh-nodedev.c @@ -986,10 +986,8 @@ const vshCmdDef nodedevCmds[] = { .flags = 0 }, {.name = "nodedev-dettach", - .handler = cmdNodeDeviceDetach, - .opts = opts_node_device_detach, - .info = info_node_device_detach, - .flags = VSH_CMD_FLAG_ALIAS + .flags = VSH_CMD_FLAG_ALIAS, + .alias = "nodedev-detach"
I think that if we do this we should just stop using the misspelled version. I mean, drop it from the man page, do not offer it for autocompletion.
Oh, I completely missed that one, I would never expected that we actually document our (so far) only alias in the man page...
Also, you need to update vshCmddefCheckInternals() to check whether all
^^not the correct spot to check, that is intended just for the command opts (therefore internals) not for the command itself, so the command structure should be checked in the vshCommandParse() function.
Well, I can imagine having the check there (even the comment just above the function suggests it is about command internals - not solely about options), but I don't care that much about placement of the check. We just need to make sure that the place is hit during our 'make check' phase.
commands passing VSH_CMD_FLAG_ALIAS also set .alias. Otherwise we will segfault later.
Aand I disagree, if we return just an error code, executing such a command from virsh is visually a noop ==> so no-go. If we also error out what purpose would the message serve to the user? Let's say a message like "missing .alias element", it's our internal static structure and such an error would have absolutely no meaning (and no value) to the user because the error would not be caused by a certain combination of user inputs, exposing a flaw in our logic, rather it is an incorrect hard-coded setting in the binary.
I think you've misunderstood. The same way we currently have vshCmddefCheckInternals() <- vshCmddefOptParse() <- vshCmddefHelp() <- cmdSelfTest() (so that any problem you are describing above is hit in our test suite), the same way we would hit the error if alias is set just in flags. I see no problem with that.
Additionally, if we went your way, we would have to add a check preventing a segfault for any missing element in the command structure for every command, let's say '.opts' element, you'll experience a segfault in that case as well, but since commit 920ab8bd you'll be notified about this fact by the self-test command - see my further comments below.
Right, you will be notified during 'make check' phase right away, because the test would fail. But without the checks I'm advocating for no error would be visible.
}, {.name = "nodedev-dumpxml", .handler = cmdNodeDeviceDumpXML, diff --git a/tools/virsh.c b/tools/virsh.c index cb60edc..60fb02b 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -904,7 +904,8 @@ static const vshCmdDef virshCmds[] = { .handler = cmdSelfTest, .opts = NULL, .info = info_selftest, - .flags = VSH_CMD_FLAG_NOCONNECT | VSH_CMD_FLAG_ALIAS + .flags = VSH_CMD_FLAG_NOCONNECT | VSH_CMD_FLAG_ALIAS, + .alias = "self-test"
So this is just for demonstration purposes? It seems so to me.
Well, omitting the .alias element would segfault as you pointed out, but adding it here, although pointing to itself, was imho easier than adding a check if an aliased command does have the .handler element filled in, so it would be used instead of looking at the .alias element. This command is also used for testing purposes only (thus it's hidden) and this is actually the *right* spot to have a check, if an aliased command also has the '.alias' element filled properly, because this test is supposed to make us aware of such mistakes when someone adds a command, but forgets to fill out certain structure element.
Except it won't fail in test phase for anything missing the .alias but 'self-test' command. Michal

Make use of the new recently introduced alias handling for virt-admin srv-* commands. Signed-off-by: Erik Skultety <eskultet@redhat.com> --- tools/virt-admin.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tools/virt-admin.c b/tools/virt-admin.c index 12ec057..5d6beda 100644 --- a/tools/virt-admin.c +++ b/tools/virt-admin.c @@ -1265,18 +1265,30 @@ static const vshCmdDef vshAdmCmds[] = { static const vshCmdDef monitoringCmds[] = { {.name = "srv-list", + .flags = VSH_CMD_FLAG_ALIAS, + .alias = "server-list" + }, + {.name = "server-list", .handler = cmdSrvList, .opts = NULL, .info = info_srv_list, .flags = 0 }, {.name = "srv-threadpool-info", + .flags = VSH_CMD_FLAG_ALIAS, + .alias = "server-threadpool-info" + }, + {.name = "server-threadpool-info", .handler = cmdSrvThreadpoolInfo, .opts = opts_srv_threadpool_info, .info = info_srv_threadpool_info, .flags = 0 }, {.name = "srv-clients-list", + .flags = VSH_CMD_FLAG_ALIAS, + .alias = "client-list" + }, + {.name = "client-list", .handler = cmdSrvClientsList, .opts = opts_srv_clients_list, .info = info_srv_clients_list, @@ -1289,6 +1301,10 @@ static const vshCmdDef monitoringCmds[] = { .flags = 0 }, {.name = "srv-clients-info", + .flags = VSH_CMD_FLAG_ALIAS, + .alias = "server-clients-info" + }, + {.name = "server-clients-info", .handler = cmdSrvClientsInfo, .opts = opts_srv_clients_info, .info = info_srv_clients_info, @@ -1299,6 +1315,10 @@ static const vshCmdDef monitoringCmds[] = { static const vshCmdDef managementCmds[] = { {.name = "srv-threadpool-set", + .flags = VSH_CMD_FLAG_ALIAS, + .alias = "server-threadpool-set" + }, + {.name = "server-threadpool-set", .handler = cmdSrvThreadpoolSet, .opts = opts_srv_threadpool_set, .info = info_srv_threadpool_set, @@ -1311,6 +1331,10 @@ static const vshCmdDef managementCmds[] = { .flags = 0 }, {.name = "srv-clients-set", + .flags = VSH_CMD_FLAG_ALIAS, + .alias = "server-clients-set" + }, + {.name = "server-clients-set", .handler = cmdSrvClientsSet, .opts = opts_srv_clients_set, .info = info_srv_clients_set, -- 2.5.5

Since the old command names are being shadowed by the new ones in the code as well as in the help messages, update the man page accordingly. Signed-off-by: Erik Skultety <eskultet@redhat.com> --- tools/virt-admin.pod | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/tools/virt-admin.pod b/tools/virt-admin.pod index 020eb51..443730e 100644 --- a/tools/virt-admin.pod +++ b/tools/virt-admin.pod @@ -150,7 +150,7 @@ change its internal configuration. =over 4 -=item B<srv-list> +=item B<server-list> Lists all manageable servers contained within the daemon the client is currently connected to. @@ -164,7 +164,7 @@ The I<server> is specified by its name. =over 4 -=item B<srv-threadpool-info> I<server> +=item B<server-threadpool-info> I<server> Retrieve server's threadpool attributes. These attributes include: @@ -207,11 +207,11 @@ control and libvirt guarantees that such a task cannot hang, thus will always finish. An example of such a task this would be destroying a domain: $ virsh destroy <domain>. -=item B<srv-threadpool-set> I<server> [I<--min-workers> B<count>] +=item B<server-threadpool-set> I<server> [I<--min-workers> B<count>] [I<--max-workers> B<count>] [I<--priority-workers> B<count>] Change threadpool attributes on a server. Only a fraction of all attributes as -described in I<srv-threadpool-info> is supported for the setter. +described in I<server-threadpool-info> is supported for the setter. =over 4 @@ -232,14 +232,7 @@ The current number of active priority workers in a threadpool. =back -=item B<srv-clients-list> I<server> - -Print a table showing the list of clients connected to <server>, also providing -information about transport type used on client's connection (supported -transports include B<unix>, B<tcp>, and B<tls>), as well as providing -information about client's connection time (system local time is used). - -=item B<srv-clients-info> I<server> +=item B<server-clients-info> I<server> Get information about the current setting of limits regarding connections of new clients. This information comprises of the limits to the maximum number of @@ -249,13 +242,13 @@ runtime values, more specifically, the current number of clients connected to I<server> and the current number of clients waiting for authentication. B<Example> - # virt-admin srv-clients-info libvirtd + # virt-admin server-clients-info libvirtd nclients_max : 120 nclients : 3 nclients_unauth_max : 20 nclients_unauth : 0 -=item B<srv-clients-set> I<server> [I<--max-clients> B<count>] +=item B<server-clients-set> I<server> [I<--max-clients> B<count>] [I<--max-unauth-clients> B<count>] Set new client-related limits on I<server>. @@ -284,10 +277,17 @@ I<--max-clients>. The following commands provide management and monitoring of clients connected to one of daemon's available servers. Clients are specified by their numeric ID which is obtained by listing all clients connected to a specified server -(see command B<srv-clients-list>). +(see command B<client-list>). =over 4 +=item B<client-list> I<server> + +Print a table showing the list of clients connected to <server>, also providing +information about transport type used on client's connection (supported +transports include B<unix>, B<tcp>, and B<tls>), as well as providing +information about client's connection time (system local time is used). + =item B<client-info> I<server> I<client> Retrieve identity information about I<client> from I<server>. The attributes -- 2.5.5

On 12.09.2016 10:20, Erik Skultety wrote:
Since the old command names are being shadowed by the new ones in the code as well as in the help messages, update the man page accordingly.
Signed-off-by: Erik Skultety <eskultet@redhat.com> --- tools/virt-admin.pod | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/tools/virt-admin.pod b/tools/virt-admin.pod index 020eb51..443730e 100644 --- a/tools/virt-admin.pod +++ b/tools/virt-admin.pod @@ -150,7 +150,7 @@ change its internal configuration.
=over 4
-=item B<srv-list> +=item B<server-list>
See? After this change srv-list is never mentioned anywhere. If you fix 2/4 this patch and 3/4 are good. Michal
participants (2)
-
Erik Skultety
-
Michal Privoznik