qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v6 1/1] qga: Add `guest-get-timezone` command


From: Michael Roth
Subject: Re: [Qemu-devel] [PATCH v6 1/1] qga: Add `guest-get-timezone` command
Date: Tue, 25 Apr 2017 15:52:18 -0500
User-agent: alot/0.5.1

Quoting Vinzenz 'evilissimo' Feenstra (2017-04-19 05:52:58)
> From: Vinzenz Feenstra <address@hidden>
> 
> 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 <address@hidden>

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
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]