* [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.