File tree Expand file tree Collapse file tree 1 file changed +17
-5
lines changed
Expand file tree Collapse file tree 1 file changed +17
-5
lines changed Original file line number Diff line number Diff line change @@ -305,11 +305,23 @@ def get_setting(self, name):
305305
306306 def get_all_settings (self ):
307307 """Return ordered settings as a list of dicts."""
308- try :
309- return {k : v .get () for k , v in self .settings .items ()}
310- except Exception as err :
311- _logger .error ("in get_all_settings:" , exc_info = err )
312- raise
308+ # Fetching some settings may fail depending on device state.
309+ # Fetch those that are available, and report failures in __errors__.
310+ # TODO - cockpit may need changes to prevent exceptions due to
311+ # presence of unexpected settings entry, __errors__.
312+ def catch (f , errors ):
313+ try :
314+ return f ()
315+ except Exception as err :
316+ _logger .error ("getting %s: %s" % (f .__self__ .name , err ))
317+ errors .append (f .__self__ .name )
318+ return None
319+
320+ errors = []
321+ settings = {k : catch (v .get , errors ) for k , v in self .settings .items ()}
322+ if errors :
323+ settings .update ({"__errors__" : errors })
324+ return settings
313325
314326 def set_setting (self , name , value ):
315327 """Set a setting."""
You can’t perform that action at this time.
0 commit comments