Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSascha Silbe <sascha@silbe.org>2010-01-11 21:04:48 (GMT)
committer Sascha Silbe <sascha@silbe.org>2010-01-11 21:04:48 (GMT)
commit08b278a01d1c96ff8a04c868acb3d744ce1092e4 (patch)
treee33510672c419eca966f17859ad8c2eba2b14d0a /src
parent8add5e0e288c09fd9b16da6e9024b571ec960fc9 (diff)
fail gracefully if system DBus unreachable (#1403)
System bus (DBus) is only required for optional features (non-permanent connection to jabber server, removable media, etc.), so fail gracefully (but output errors to logs) if it is unreachable. This aids testing Sugar inside chroots. Tested: - inside chroot (no system bus): errors in log, neighbourhood shows buddies - on XO-1 (regular session, no NM): no errors, neighbourhood shows buddies, battery shown - on XO-1 (regular session, NM): no errors, neighbourhood shows buddies and networks, battery shown, disconnecting + automatic reconnect works, shutdown works Signed-off-by: Sascha Silbe <sascha@silbe.org>
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/desktop/meshbox.py3
-rw-r--r--src/jarabe/model/session.py14
2 files changed, 9 insertions, 8 deletions
diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py
index 76880b8..7b8e3a7 100644
--- a/src/jarabe/desktop/meshbox.py
+++ b/src/jarabe/desktop/meshbox.py
@@ -664,12 +664,13 @@ class DeviceObserver(object):
class NetworkManagerObserver(object):
def __init__(self, box):
self._box = box
- self._bus = dbus.SystemBus()
+ self._bus = None
self._devices = {}
self._netmgr = None
def listen(self):
try:
+ self._bus = dbus.SystemBus()
obj = self._bus.get_object(_NM_SERVICE, _NM_PATH)
self._netmgr = dbus.Interface(obj, _NM_IFACE)
except dbus.DBusException:
diff --git a/src/jarabe/model/session.py b/src/jarabe/model/session.py
index caf675d..121db28 100644
--- a/src/jarabe/model/session.py
+++ b/src/jarabe/model/session.py
@@ -48,16 +48,16 @@ class SessionManager(session.SessionManager):
self.initiate_shutdown()
def shutdown_completed(self):
- bus = dbus.SystemBus()
- proxy = bus.get_object('org.freedesktop.Hal',
- '/org/freedesktop/Hal/devices/computer')
- pm = dbus.Interface(proxy, \
- 'org.freedesktop.Hal.Device.SystemPowerManagement')
-
if env.is_emulator():
self._close_emulator()
- else:
+ elif self._logout_mode != self.MODE_LOGOUT:
try:
+ bus = dbus.SystemBus()
+ proxy = bus.get_object('org.freedesktop.Hal',
+ '/org/freedesktop/Hal/devices/computer')
+ pm = dbus.Interface(proxy, \
+ 'org.freedesktop.Hal.Device.SystemPowerManagement')
+
if self._logout_mode == self.MODE_SHUTDOWN:
pm.Shutdown()
elif self._logout_mode == self.MODE_REBOOT: