代码拉取完成,页面将自动刷新
同步操作将从 src-openEuler/anaconda 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
From 06ed7b6cee7baf64cf83411645bfa52a05767b92 Mon Sep 17 00:00:00 2001
From: Vendula Poncova <vponcova@redhat.com>
Date: Mon, 6 Jul 2020 14:16:40 +0200
Subject: [PATCH] Add support for the NTP server status cache
Use the class NTPServerStatusCache to check the status of the given NTP server.
The cache remembers results of all checked host names.
---
pyanaconda/ntp.py | 84 +++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 82 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/ntp.py b/pyanaconda/ntp.py
index 1b74ac9433..637d31f63e 100644
--- a/pyanaconda/ntp.py
+++ b/pyanaconda/ntp.py
@@ -29,9 +29,12 @@
import socket
from pyanaconda import isys
-from pyanaconda.threading import threadMgr, AnacondaThread
-from pyanaconda.core.constants import THREAD_SYNC_TIME_BASENAME
+from pyanaconda.anaconda_loggers import get_module_logger
+from pyanaconda.core.i18n import N_, _
+from pyanaconda.core.constants import THREAD_SYNC_TIME_BASENAME, NTP_SERVER_QUERY, \
+ THREAD_NTP_SERVER_CHECK, NTP_SERVER_OK, NTP_SERVER_NOK
from pyanaconda.modules.common.structures.timezone import TimeSourceData
+from pyanaconda.threading import threadMgr, AnacondaThread
NTP_CONFIG_FILE = "/etc/chrony.conf"
@@ -42,6 +45,15 @@
#treat pools as four servers with the same name
SERVERS_PER_POOL = 4
+# Description of an NTP server status.
+NTP_SERVER_STATUS_DESCRIPTIONS = {
+ NTP_SERVER_OK: N_("status: working"),
+ NTP_SERVER_NOK: N_("status: not working"),
+ NTP_SERVER_QUERY: N_("checking status")
+}
+
+log = get_module_logger(__name__)
+
class NTPconfigError(Exception):
"""Exception class for NTP related problems"""
@@ -226,3 +238,71 @@ def one_time_sync_async(server, callback=None):
target=_one_time_sync,
args=(server, callback)
))
+
+
+class NTPServerStatusCache(object):
+ """The cache of NTP server states."""
+
+ def __init__(self):
+ self._cache = {}
+
+ def get_status(self, server):
+ """Get the status of the given NTP server.
+
+ :param TimeSourceData server: an NTP server
+ :return int: a status of the NTP server
+ """
+ return self._cache.get(
+ server.hostname,
+ NTP_SERVER_QUERY
+ )
+
+ def get_status_description(self, server):
+ """Get the status description of the given NTP server.
+
+ :param TimeSourceData server: an NTP server
+ :return str: a status description of the NTP server
+ """
+ status = self.get_status(server)
+ return _(NTP_SERVER_STATUS_DESCRIPTIONS[status])
+
+ def check_status(self, server):
+ """Asynchronously check if given NTP servers appear to be working.
+
+ :param TimeSourceData server: an NTP server
+ """
+ # Get a hostname.
+ hostname = server.hostname
+
+ # Reset the current status.
+ self._set_status(hostname, NTP_SERVER_QUERY)
+
+ # Start the check.
+ threadMgr.add(AnacondaThread(
+ prefix=THREAD_NTP_SERVER_CHECK,
+ target=self._check_status,
+ args=(hostname, ))
+ )
+
+ def _set_status(self, hostname, status):
+ """Set the status of the given NTP server.
+
+ :param str hostname: a hostname of an NTP server
+ :return int: a status of the NTP server
+ """
+ self._cache[hostname] = status
+
+ def _check_status(self, hostname):
+ """Check if an NTP server appears to be working.
+
+ :param str hostname: a hostname of an NTP server
+ """
+ log.debug("Checking NTP server %s", hostname)
+ result = ntp_server_working(hostname)
+
+ if result:
+ log.debug("NTP server %s appears to be working.", hostname)
+ self._set_status(hostname, NTP_SERVER_OK)
+ else:
+ log.debug("NTP server %s appears not to be working.", hostname)
+ self._set_status(hostname, NTP_SERVER_NOK)
--
2.23.0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。