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:
Pascal Vizeli 2022-08-16 22:04:17 +02:00 committed by GitHub
parent 3f88236495
commit e6dfe83d62
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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()