* [Qemu-devel] [PATCH v6 0/1] qga: Add `guest-get-timezone` command @ 2017-04-19 10:52 Vinzenz 'evilissimo' Feenstra 2017-04-19 10:52 ` [Qemu-devel] [PATCH v6 1/1] " Vinzenz 'evilissimo' Feenstra 0 siblings, 1 reply; 3+ messages in thread From: Vinzenz 'evilissimo' Feenstra @ 2017-04-19 10:52 UTC (permalink / raw) To: qemu-devel; +Cc: marcandre.lureau, sameeh, mdroth, Vinzenz Feenstra From: Vinzenz Feenstra <vfeenstr@redhat.com> Changes since v5: - Dropped unnecessary g_time_zone_unref in error handling - Made implementation check for glib 2.28 or higher - Move variable declaration to function top Vinzenz Feenstra (1): qga: Add `guest-get-timezone` command qga/commands.c | 38 ++++++++++++++++++++++++++++++++++++++ qga/qapi-schema.json | 26 ++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) -- 2.9.3 ^ permalink raw reply [flat|nested] 3+ messages in thread
* [Qemu-devel] [PATCH v6 1/1] qga: Add `guest-get-timezone` command 2017-04-19 10:52 [Qemu-devel] [PATCH v6 0/1] qga: Add `guest-get-timezone` command Vinzenz 'evilissimo' Feenstra @ 2017-04-19 10:52 ` Vinzenz 'evilissimo' Feenstra 2017-04-25 20:52 ` Michael Roth 0 siblings, 1 reply; 3+ messages in thread From: Vinzenz 'evilissimo' Feenstra @ 2017-04-19 10:52 UTC (permalink / raw) To: qemu-devel; +Cc: marcandre.lureau, sameeh, mdroth, Vinzenz Feenstra From: Vinzenz Feenstra <vfeenstr@redhat.com> Adds a new command `guest-get-timezone` reporting the currently configured timezone on the system. The information on what timezone is currently is configured is useful in case of Windows VMs where the offset of the hardware clock is required to have the same offset. This can be used for management systems like `oVirt` to detect the timezone difference and warn administrators of the misconfiguration. Signed-off-by: Vinzenz Feenstra <vfeenstr@redhat.com> --- qga/commands.c | 38 ++++++++++++++++++++++++++++++++++++++ qga/qapi-schema.json | 26 ++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/qga/commands.c b/qga/commands.c index 4d92946..999538d 100644 --- a/qga/commands.c +++ b/qga/commands.c @@ -499,3 +499,41 @@ int ga_parse_whence(GuestFileWhence *whence, Error **errp) error_setg(errp, "invalid whence code %"PRId64, whence->u.value); return -1; } + +GuestTimezone *qmp_guest_get_timezone(Error **errp) +{ +#if !GLIB_CHECK_VERSION(2, 28, 0) + error_setg(errp, QERR_UNSUPPORTED); + return NULL; +#else + GuestTimezone *info = NULL; + GTimeZone *tz = NULL; + gint64 now = 0; + gint32 intv = 0; + gchar const *name = NULL; + + info = g_new0(GuestTimezone, 1); + tz = g_time_zone_new_local(); + if (tz == NULL) { + error_setg(errp, QERR_QGA_COMMAND_FAILED, + "Couldn't retrieve local timezone"); + goto error; + } + + now = g_get_real_time() / G_USEC_PER_SEC; + intv = g_time_zone_find_interval(tz, G_TIME_TYPE_UNIVERSAL, now); + info->offset = g_time_zone_get_offset(tz, intv); + name = g_time_zone_get_abbreviation(tz, intv); + if (name != NULL) { + info->has_zone = true; + info->zone = g_strdup(name); + } + g_time_zone_unref(tz); + + return info; + +error: + g_free(info); + return NULL; +#endif +} diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json index a02dbf2..5183ea2 100644 --- a/qga/qapi-schema.json +++ b/qga/qapi-schema.json @@ -1042,3 +1042,29 @@ 'data': { 'path': 'str', '*arg': ['str'], '*env': ['str'], '*input-data': 'str', '*capture-output': 'bool' }, 'returns': 'GuestExec' } + + +## +# @GuestTimezone: +# +# @zone: Timezone name +# @offset: Offset to UTC in seconds, negative numbers for time zones west of +# GMT, positive numbers for east +# +# Since: 2.10 +## +{ 'struct': 'GuestTimezone', + 'data': { '*zone': 'str', 'offset': 'int' } } + + +## +# @guest-get-timezone: +# +# Retrieves the timezone information from the guest. +# +# Returns: A GuestTimezone dictionary. +# +# Since: 2.10 +## +{ 'command': 'guest-get-timezone', + 'returns': 'GuestTimezone' } -- 2.9.3 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH v6 1/1] qga: Add `guest-get-timezone` command 2017-04-19 10:52 ` [Qemu-devel] [PATCH v6 1/1] " Vinzenz 'evilissimo' Feenstra @ 2017-04-25 20:52 ` Michael Roth 0 siblings, 0 replies; 3+ messages in thread From: Michael Roth @ 2017-04-25 20:52 UTC (permalink / raw) To: Vinzenz 'evilissimo' Feenstra, qemu-devel Cc: marcandre.lureau, sameeh Quoting Vinzenz 'evilissimo' Feenstra (2017-04-19 05:52:58) > From: Vinzenz Feenstra <vfeenstr@redhat.com> > > Adds a new command `guest-get-timezone` reporting the currently > configured timezone on the system. The information on what timezone is > currently is configured is useful in case of Windows VMs where the > offset of the hardware clock is required to have the same offset. This > can be used for management systems like `oVirt` to detect the timezone > difference and warn administrators of the misconfiguration. > > Signed-off-by: Vinzenz Feenstra <vfeenstr@redhat.com> Thanks, applied to qga tree: https://github.com/mdroth/qemu/commits/qga > --- > qga/commands.c | 38 ++++++++++++++++++++++++++++++++++++++ > qga/qapi-schema.json | 26 ++++++++++++++++++++++++++ > 2 files changed, 64 insertions(+) > > diff --git a/qga/commands.c b/qga/commands.c > index 4d92946..999538d 100644 > --- a/qga/commands.c > +++ b/qga/commands.c > @@ -499,3 +499,41 @@ int ga_parse_whence(GuestFileWhence *whence, Error **errp) > error_setg(errp, "invalid whence code %"PRId64, whence->u.value); > return -1; > } > + > +GuestTimezone *qmp_guest_get_timezone(Error **errp) > +{ > +#if !GLIB_CHECK_VERSION(2, 28, 0) > + error_setg(errp, QERR_UNSUPPORTED); > + return NULL; > +#else > + GuestTimezone *info = NULL; > + GTimeZone *tz = NULL; > + gint64 now = 0; > + gint32 intv = 0; > + gchar const *name = NULL; > + > + info = g_new0(GuestTimezone, 1); > + tz = g_time_zone_new_local(); > + if (tz == NULL) { > + error_setg(errp, QERR_QGA_COMMAND_FAILED, > + "Couldn't retrieve local timezone"); > + goto error; > + } > + > + now = g_get_real_time() / G_USEC_PER_SEC; > + intv = g_time_zone_find_interval(tz, G_TIME_TYPE_UNIVERSAL, now); > + info->offset = g_time_zone_get_offset(tz, intv); > + name = g_time_zone_get_abbreviation(tz, intv); > + if (name != NULL) { > + info->has_zone = true; > + info->zone = g_strdup(name); > + } > + g_time_zone_unref(tz); > + > + return info; > + > +error: > + g_free(info); > + return NULL; > +#endif > +} > diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json > index a02dbf2..5183ea2 100644 > --- a/qga/qapi-schema.json > +++ b/qga/qapi-schema.json > @@ -1042,3 +1042,29 @@ > 'data': { 'path': 'str', '*arg': ['str'], '*env': ['str'], > '*input-data': 'str', '*capture-output': 'bool' }, > 'returns': 'GuestExec' } > + > + > +## > +# @GuestTimezone: > +# > +# @zone: Timezone name > +# @offset: Offset to UTC in seconds, negative numbers for time zones west of > +# GMT, positive numbers for east > +# > +# Since: 2.10 > +## > +{ 'struct': 'GuestTimezone', > + 'data': { '*zone': 'str', 'offset': 'int' } } > + > + > +## > +# @guest-get-timezone: > +# > +# Retrieves the timezone information from the guest. > +# > +# Returns: A GuestTimezone dictionary. > +# > +# Since: 2.10 > +## > +{ 'command': 'guest-get-timezone', > + 'returns': 'GuestTimezone' } > -- > 2.9.3 > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-04-25 21:17 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-04-19 10:52 [Qemu-devel] [PATCH v6 0/1] qga: Add `guest-get-timezone` command Vinzenz 'evilissimo' Feenstra 2017-04-19 10:52 ` [Qemu-devel] [PATCH v6 1/1] " Vinzenz 'evilissimo' Feenstra 2017-04-25 20:52 ` Michael Roth
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.