mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-16 05:36:29 +00:00
Handle timedrift better if not synchronized (#3783)
* Handle timedrift better if not synchronized * fix description * adjust days * Implement feedback * Whoami error Co-authored-by: Mike Degatano <michael.degatano@gmail.com>
This commit is contained in:
parent
3f88236495
commit
e6dfe83d62
@ -344,7 +344,7 @@ class Core(CoreSysAttributes):
|
||||
if (
|
||||
self.sys_config.timezone
|
||||
or self.sys_host.info.timezone not in ("Etc/UTC", None)
|
||||
) and (self.sys_host.info.dt_synchronized or self.sys_supervisor.connectivity):
|
||||
) and self.sys_host.info.dt_synchronized:
|
||||
return
|
||||
|
||||
# Get Timezone data
|
||||
@ -355,27 +355,23 @@ class Core(CoreSysAttributes):
|
||||
except WhoamiError as err:
|
||||
_LOGGER.warning("Can't adjust Time/Date settings: %s", err)
|
||||
return
|
||||
else:
|
||||
if not self.sys_config.timezone:
|
||||
self.sys_config.timezone = data.timezone
|
||||
return
|
||||
|
||||
# Adjust timesettings in case SSL fails
|
||||
try:
|
||||
data = await retrieve_whoami(self.sys_websession, with_ssl=False)
|
||||
except WhoamiError as err:
|
||||
_LOGGER.error("Can't adjust Time/Date settings: %s", err)
|
||||
return
|
||||
else:
|
||||
if not self.sys_config.timezone:
|
||||
self.sys_config.timezone = data.timezone
|
||||
# SSL Date Issue & possible time drift
|
||||
if not data:
|
||||
try:
|
||||
data = await retrieve_whoami(self.sys_websession, with_ssl=False)
|
||||
except WhoamiError as err:
|
||||
_LOGGER.error("Can't adjust Time/Date settings: %s", err)
|
||||
return
|
||||
|
||||
self.sys_config.timezone = self.sys_config.timezone or data.timezone
|
||||
|
||||
# Calculate if system time is out of sync
|
||||
delta = data.dt_utc - utcnow()
|
||||
if delta < timedelta(days=7) or self.sys_host.info.dt_synchronized:
|
||||
if delta <= timedelta(days=3) or self.sys_host.info.dt_synchronized:
|
||||
return
|
||||
|
||||
_LOGGER.warning("System time/date shift over more as 7days found!")
|
||||
_LOGGER.warning("System time/date shift over more than 3 days found!")
|
||||
await self.sys_host.control.set_datetime(data.dt_utc)
|
||||
await self.sys_supervisor.check_connectivity()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user