
On Tue, May 10, 2011 at 03:39:06PM +0200, Jiri Denemark wrote:
--- Notes: Version 2: - rebased - unsigned int flags
daemon/remote.c | 33 +++++++++++++++++++++++++++++++++ daemon/remote_generator.pl | 3 ++- src/remote/remote_protocol.x | 13 ++++++++++++- src/remote_protocol-structs | 8 ++++++++ 4 files changed, 55 insertions(+), 2 deletions(-)
diff --git a/daemon/remote.c b/daemon/remote.c index 2220655..598862a 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -2816,6 +2816,39 @@ cleanup: }
static int +remoteDispatchDomainGetState(struct qemud_server *server ATTRIBUTE_UNUSED, + struct qemud_client *client ATTRIBUTE_UNUSED, + virConnectPtr conn, + remote_message_header *hdr ATTRIBUTE_UNUSED, + remote_error *rerr, + remote_domain_get_state_args *args, + remote_domain_get_state_ret *ret) +{ + virDomainPtr dom = NULL; + int rv = -1; + + if (!conn) { + virNetError(VIR_ERR_INTERNAL_ERROR, "%s", _("connection not open")); + goto cleanup; + } + + if (!(dom = get_nonnull_domain(conn, args->dom))) + goto cleanup; + + if (virDomainGetState(dom, &ret->state, &ret->reason, args->flags) < 0) + goto cleanup; + + rv = 0; + +cleanup: + if (rv < 0) + remoteDispatchError(rerr); + if (dom) + virDomainFree(dom); + return rv; +} + +static int remoteDispatchDomainEventsRegisterAny(struct qemud_server *server ATTRIBUTE_UNUSED, struct qemud_client *client ATTRIBUTE_UNUSED, virConnectPtr conn, diff --git a/daemon/remote_generator.pl b/daemon/remote_generator.pl index 062ccc1..ff279d5 100755 --- a/daemon/remote_generator.pl +++ b/daemon/remote_generator.pl @@ -278,7 +278,8 @@ elsif ($opt_b) { "GetType", "NodeDeviceGetParent", "NodeGetSecurityModel", - "SecretGetValue"); + "SecretGetValue", + "DomainGetState"); } elsif ($structprefix eq "qemu") { @ungeneratable = ("MonitorCommand"); }
Needs rebasing
diff --git a/src/remote/remote_protocol.x b/src/remote/remote_protocol.x index c706c36..078d7ed 100644 --- a/src/remote/remote_protocol.x +++ b/src/remote/remote_protocol.x @@ -1940,6 +1940,16 @@ struct remote_storage_vol_download_args { unsigned int flags; };
+struct remote_domain_get_state_args { + remote_nonnull_domain dom; + unsigned int flags; +}; + +struct remote_domain_get_state_ret { + int state; + int reason; +}; +
/*----- Protocol. -----*/
@@ -2176,7 +2186,8 @@ enum remote_procedure { REMOTE_PROC_DOMAIN_GET_BLKIO_PARAMETERS = 206, REMOTE_PROC_DOMAIN_MIGRATE_SET_MAX_SPEED = 207, REMOTE_PROC_STORAGE_VOL_UPLOAD = 208, - REMOTE_PROC_STORAGE_VOL_DOWNLOAD = 209 + REMOTE_PROC_STORAGE_VOL_DOWNLOAD = 209, + REMOTE_PROC_DOMAIN_GET_STATE = 210
Need to add annotations here.
/* * Notice how the entries are grouped in sets of 10 ? diff --git a/src/remote_protocol-structs b/src/remote_protocol-structs index f904c4d..ca1294f 100644 --- a/src/remote_protocol-structs +++ b/src/remote_protocol-structs @@ -1427,6 +1427,14 @@ struct remote_storage_vol_download_args { uint64_t length; u_int flags; }; +struct remote_domain_get_state_args { + remote_nonnull_domain dom; + u_int flags; +}; +struct remote_domain_get_state_ret { + int state; + int reason; +}; struct remote_message_header { u_int prog; u_int vers;
Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|