[PATCH 2/3] Make DateTime spoke live-system friendly

Vratislav Podzimek vpodzime at redhat.com
Fri Sep 21 16:29:48 UTC 2012


Signed-off-by: Vratislav Podzimek <vpodzime at redhat.com>
---
 pyanaconda/ui/gui/spokes/datetime_spoke.py | 55 +++++++++++++++++++++++-------
 1 file changed, 42 insertions(+), 13 deletions(-)

diff --git a/pyanaconda/ui/gui/spokes/datetime_spoke.py b/pyanaconda/ui/gui/spokes/datetime_spoke.py
index d1bc05b..f5cbf19 100644
--- a/pyanaconda/ui/gui/spokes/datetime_spoke.py
+++ b/pyanaconda/ui/gui/spokes/datetime_spoke.py
@@ -26,6 +26,7 @@ N_ = lambda x: x
 import logging
 log = logging.getLogger("anaconda")
 
+# pylint: disable-msg=E0611
 from gi.repository import AnacondaWidgets, GLib, Gtk
 
 from pyanaconda.ui.gui import GUIObject
@@ -33,10 +34,16 @@ from pyanaconda.ui.gui.spokes import NormalSpoke
 from pyanaconda.ui.gui.categories.localization import LocalizationCategory
 from pyanaconda.ui.gui.utils import enlightbox
 
-from pyanaconda import timezone, iutil, network, ntp
+from pyanaconda import timezone
+from pyanaconda import iutil
+from pyanaconda import network
+from pyanaconda import ntp
+from pyanaconda import flags
 from pyanaconda.threads import threadMgr, AnacondaThread
 
-import datetime, os, threading
+import datetime
+import os
+import threading
 
 __all__ = ["DatetimeSpoke"]
 
@@ -110,11 +117,16 @@ class NTPconfigDialog(GUIObject):
     def _initialize_store_from_config(self):
         self._serversStore.clear()
         self._poolsNote.set_text("")
-        try:
-            for server in ntp.get_servers_from_config():
+
+        if self.data.timezone.ntpservers:
+            for server in self.data.timezone.ntpservers:
                 self._add_server(server)
-        except ntp.NTPconfigError as ntperr:
-            log.warning("Failed to load NTP servers configuration")
+        else:
+            try:
+                for server in ntp.get_servers_from_config():
+                    self._add_server(server)
+            except ntp.NTPconfigError as ntperr:
+                log.warning("Failed to load NTP servers configuration")
 
     def refresh(self):
         self._serverEntry.grab_focus()
@@ -139,8 +151,9 @@ class NTPconfigDialog(GUIObject):
                 if row[2]:
                     new_servers.append(row[0])
 
-            ntp.save_servers_to_config(new_servers)
-            iutil.restart_service("chronyd")
+            if flags.can_touch_live_system("save NTP servers configuration"):
+                ntp.save_servers_to_config(new_servers)
+                iutil.restart_service("chronyd")
 
         #Cancel clicked, window destroyed...
         else:
@@ -330,6 +343,9 @@ class DatetimeSpoke(NormalSpoke):
             self._tzmap.set_timezone(DEFAULT_TZ)
             self.data.timezone.timezone = DEFAULT_TZ
 
+        if not flags.can_touch_live_system("modify system time and date"):
+            self._set_date_time_setting_sensitive(False)
+
         self._config_dialog = NTPconfigDialog(self.data)
         self._config_dialog.initialize()
 
@@ -396,10 +412,12 @@ class DatetimeSpoke(NormalSpoke):
             self.window.clear_info()
             GLib.idle_add(self._config_dialog.refresh_servers_state)
 
-        ntp_working = has_active_network and iutil.service_running("chronyd")
+        if flags.can_touch_live_system("get NTP service state"):
+            ntp_working = has_active_network and iutil.service_running("chronyd")
+        else:
+            ntp_working = not self.data.timezone.nontp
 
-        self._networkTimeSwitch = self.builder.get_object("networkTimeSwitch")
-        self._networkTimeSwitch.set_active(ntp_working)
+        self._ntpSwitch.set_active(ntp_working)
 
     def add_to_store(self, store, item):
         store.append([item])
@@ -506,6 +524,9 @@ class DatetimeSpoke(NormalSpoke):
         return True
 
     def _save_system_time(self):
+        if not flags.can_touch_live_system("save system time"):
+            return False
+
         month = self._get_combo_selection(self._monthCombo)
         month = self._months_nums[month]
         year = int(self._get_combo_selection(self._yearCombo))
@@ -741,8 +762,12 @@ class DatetimeSpoke(NormalSpoke):
                              _("You have no working NTP server configured"))
 
     def on_ntp_switched(self, switch, *args):
-        #turned ON
         if switch.get_active():
+            #turned ON
+            if not flags.can_touch_live_system("start NTP service"):
+                #cannot touch live system, not much to do here
+                return
+
             if not network.hasActiveNetDev():
                 self._show_no_network_warning()
                 switch.set_active(False)
@@ -766,8 +791,12 @@ class DatetimeSpoke(NormalSpoke):
             if (ret != 0) and not iutil.service_running("chronyd"):
                 switch.set_active(False)
 
-        #turned OFF
         else:
+            #turned OFF
+            if not flags.can_touch_live_system("stop NTP service"):
+                #cannot touch live system, nothing to do here
+                return
+
             self._set_date_time_setting_sensitive(True)
             ret = iutil.stop_service("chronyd")
 
-- 
1.7.11.4



More information about the anaconda-patches mailing list