[PATCH 2/2] Set system date and time with our own function

Brian C. Lane bcl at redhat.com
Tue Jul 30 16:52:28 UTC 2013


On Tue, Jul 30, 2013 at 11:44:11AM +0200, Vratislav Podzimek wrote:
> Now that we have a function to set system time, we could wrap it with one more
> and use it instead of running 'date -s' which could be problematic and prints
> out the time and date to tty1.
> 
> Also add logging to the set_system_time function, so that we can see why the
> timestamps suddenly changed in the logs.
> 
> Signed-off-by: Vratislav Podzimek <vpodzime at redhat.com>
> ---
>  pyanaconda/isys/__init__.py                | 33 ++++++++++++++++++++++++++++--
>  pyanaconda/ntp.py                          |  1 -
>  pyanaconda/ui/gui/spokes/datetime_spoke.py |  5 ++---
>  3 files changed, 33 insertions(+), 6 deletions(-)
> 
> diff --git a/pyanaconda/isys/__init__.py b/pyanaconda/isys/__init__.py
> index a320bf9..51976db 100755
> --- a/pyanaconda/isys/__init__.py
> +++ b/pyanaconda/isys/__init__.py
> @@ -1,7 +1,7 @@
>  #
>  # isys.py - installer utility functions and glue for C module
>  #
> -# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007  Red Hat, Inc.
> +# Copyright (C) 2001-2013  Red Hat, Inc.
>  # All rights reserved.
>  #
>  # This program is free software; you can redistribute it and/or modify
> @@ -41,6 +41,8 @@ import blivet.arch
>  import re
>  import struct
>  import dbus
> +import time
> +import datetime
>  
>  import logging
>  log = logging.getLogger("anaconda")
> @@ -120,7 +122,34 @@ def set_system_time(secs):
>  
>      """
>  
> -    return  _isys.set_system_time(secs)
> +    _isys.set_system_time(secs)
> +    log.info("System time set to %s", time.ctime(secs))
> +
> +def set_system_date_time(year=None, month=None, day=None, hour=None, minute=None,
> +                         second=None, utc=False):
> +    """
> +    Set system date and time given by the parameters as numbers. If some
> +    parameter is missing or None, the current system date/time field is used
> +    instead (i.e. the value is not changed by this function).
> +
> +    :type year, month, ..., second: int
> +    :param utc: wheter the other parameters specify UTC or local time
> +    :type utc: bool
> +
> +    """
> +
> +    # get the right values
> +    utc = 0 if utc else 1
> +    year = year or datetime.datetime.now().year
> +    month = month or datetime.datetime.now().month
> +    day = day or datetime.datetime.now().day
> +    hour = hour or datetime.datetime.now().hour
> +    minute = minute or datetime.datetime.now().minute
> +    second = second or datetime.datetime.now().second

I'd call datetime.datetime.now() once and pick from the result instead.
In practice it doesn't really matter, but there is a slim chance of the
data changing from one call to the next.

-- 
Brian C. Lane | Anaconda Team | IRC: bcl #anaconda | Port Orchard, WA (PST8PDT)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 482 bytes
Desc: not available
URL: <https://lists.fedorahosted.org/pipermail/anaconda-patches/attachments/20130730/43bcde25/attachment.sig>


More information about the anaconda-patches mailing list