From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43772) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VMC7g-0008BZ-11 for qemu-devel@nongnu.org; Wed, 18 Sep 2013 03:24:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VMC7X-0004tU-7K for qemu-devel@nongnu.org; Wed, 18 Sep 2013 03:24:27 -0400 Received: from e28smtp07.in.ibm.com ([122.248.162.7]:35252) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VMC7W-0004q5-IR for qemu-devel@nongnu.org; Wed, 18 Sep 2013 03:24:19 -0400 Received: from /spool/local by e28smtp07.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 18 Sep 2013 12:54:10 +0530 Received: from d28relay03.in.ibm.com (d28relay03.in.ibm.com [9.184.220.60]) by d28dlp03.in.ibm.com (Postfix) with ESMTP id CD13F1258053 for ; Wed, 18 Sep 2013 12:54:16 +0530 (IST) Received: from d28av02.in.ibm.com (d28av02.in.ibm.com [9.184.220.64]) by d28relay03.in.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r8I7QDhH45416520 for ; Wed, 18 Sep 2013 12:56:15 +0530 Received: from d28av02.in.ibm.com (localhost [127.0.0.1]) by d28av02.in.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id r8I7O6TD004159 for ; Wed, 18 Sep 2013 12:54:07 +0530 From: Mark Wu Date: Wed, 18 Sep 2013 15:23:58 +0800 Message-Id: <1379489038-26041-1-git-send-email-wudxw@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH] Extend qemu-ga's 'guest-info' command to expose flag 'success-response' List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Qemu-devel@nongnu.org Cc: Mark Wu , Michael Roth , Luiz Capitulino Now we have several qemu-ga commands not returning response on success. It has been documented in qga/qapi-schema.json already. This patch exposes the 'success-response' flag by extending 'guest-info' command. With this change, the clients can handle the command response more flexibly. Signed-off-by: Mark Wu --- include/qapi/qmp/dispatch.h | 1 + qapi/qmp-registry.c | 13 +++++++++++++ qga/commands.c | 2 ++ qga/qapi-schema.json | 4 +++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/include/qapi/qmp/dispatch.h b/include/qapi/qmp/dispatch.h index 1ce11f5..f08c1dd 100644 --- a/include/qapi/qmp/dispatch.h +++ b/include/qapi/qmp/dispatch.h @@ -48,6 +48,7 @@ QObject *qmp_dispatch(QObject *request); void qmp_disable_command(const char *name); void qmp_enable_command(const char *name); bool qmp_command_is_enabled(const char *name); +bool qmp_command_has_success_response(const char *name); char **qmp_get_command_list(void); QObject *qmp_build_error_object(Error *errp); diff --git a/qapi/qmp-registry.c b/qapi/qmp-registry.c index 28bbbe8..f86c3a5 100644 --- a/qapi/qmp-registry.c +++ b/qapi/qmp-registry.c @@ -79,6 +79,19 @@ bool qmp_command_is_enabled(const char *name) return false; } +bool qmp_command_has_success_response(const char *name) +{ + QmpCommand *cmd; + + QTAILQ_FOREACH(cmd, &qmp_commands, node) { + if (strcmp(cmd->name, name) == 0) { + return cmd->options != QCO_NO_SUCCESS_RESP; + } + } + + return false; +} + char **qmp_get_command_list(void) { QmpCommand *cmd; diff --git a/qga/commands.c b/qga/commands.c index 528b082..0df910b 100644 --- a/qga/commands.c +++ b/qga/commands.c @@ -63,6 +63,8 @@ struct GuestAgentInfo *qmp_guest_info(Error **err) cmd_info = g_malloc0(sizeof(GuestAgentCommandInfo)); cmd_info->name = g_strdup(*cmd_list); cmd_info->enabled = qmp_command_is_enabled(cmd_info->name); + cmd_info->success_response = + qmp_command_has_success_response(cmd_info->name); cmd_info_list = g_malloc0(sizeof(GuestAgentCommandInfoList)); cmd_info_list->value = cmd_info; diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json index 7155b7a..6caf019 100644 --- a/qga/qapi-schema.json +++ b/qga/qapi-schema.json @@ -141,10 +141,12 @@ # # @enabled: whether command is currently enabled by guest admin # +# @success-response: whether command returns a response on success +# # Since 1.1.0 ## { 'type': 'GuestAgentCommandInfo', - 'data': { 'name': 'str', 'enabled': 'bool' } } + 'data': { 'name': 'str', 'enabled': 'bool', 'success-response': 'bool' } } ## # @GuestAgentInfo -- 1.8.3.1