improve more errors during startup
errors from a module a combined with a header and intended details Change-Id: I4be7bc2f8455fb0e3c9346f3bb23ac88e7589604
This commit is contained in:
parent
4a0796a1bd
commit
06551b17e2
@ -257,8 +257,8 @@ class Module(HasAccessibles):
|
||||
try:
|
||||
self.setProperty(key, value)
|
||||
except BadValueError:
|
||||
errors.append('module %s, %s: value %r does not match %r!' %
|
||||
(name, key, value, self.propertyDict[key].datatype))
|
||||
errors.append('%s: value %r does not match %r!' %
|
||||
(key, value, self.propertyDict[key].datatype))
|
||||
|
||||
# 3) set automatic properties
|
||||
mycls = self.__class__
|
||||
@ -317,21 +317,21 @@ class Module(HasAccessibles):
|
||||
try:
|
||||
paramobj.setProperty(propname, propvalue)
|
||||
except KeyError:
|
||||
errors.append('module %s: %s.%s does not exist' %
|
||||
(self.name, paramname, propname))
|
||||
errors.append("'%s.%s' does not exist" %
|
||||
(paramname, propname))
|
||||
except BadValueError as e:
|
||||
errors.append('module %s: %s.%s: %s' %
|
||||
(self.name, paramname, propname, str(e)))
|
||||
errors.append('%s.%s: %s' %
|
||||
(paramname, propname, str(e)))
|
||||
else:
|
||||
errors.append('module %s: %s not found' % (self.name, paramname))
|
||||
errors.append('%r not found' % paramname)
|
||||
|
||||
# 3) check config for problems:
|
||||
# only accept remaining config items specified in parameters
|
||||
bad = [k for k in cfgdict if k not in self.parameters]
|
||||
if bad:
|
||||
errors.append(
|
||||
'module %s: %s does not exist (use one of %s)' %
|
||||
(self.name, ', '.join(bad), ', '.join(list(self.parameters) +
|
||||
'%s does not exist (use one of %s)' %
|
||||
(', '.join(bad), ', '.join(list(self.parameters) +
|
||||
list(self.propertyDict))))
|
||||
|
||||
# 4) complain if a Parameter entry has no default value and
|
||||
@ -349,13 +349,12 @@ class Module(HasAccessibles):
|
||||
pobj.value = pobj.datatype(cfgdict[pname])
|
||||
self.writeDict[pname] = pobj.value
|
||||
except BadValueError as e:
|
||||
errors.append('module %s, parameter %s: %s' % (name, pname, e))
|
||||
errors.append('%s: %s' % (pname, e))
|
||||
else:
|
||||
if pobj.default is None:
|
||||
if pobj.needscfg:
|
||||
errors.append('module %s, parameter %s has no default '
|
||||
'value and was not given in config!' %
|
||||
(self.name, pname))
|
||||
errors.append('%r has no default '
|
||||
'value and was not given in config!' % pname)
|
||||
# we do not want to call the setter for this parameter for now,
|
||||
# this should happen on the first read
|
||||
pobj.readerror = ConfigError('not initialized')
|
||||
@ -383,7 +382,7 @@ class Module(HasAccessibles):
|
||||
try:
|
||||
# this checks also for the proper datatype
|
||||
# note: this will NOT call write_* methods!
|
||||
if hasattr(self, k):
|
||||
if k in self.parameters or k in self.propertyDict:
|
||||
setattr(self, k, v)
|
||||
cfgdict.pop(k)
|
||||
except (ValueError, TypeError):
|
||||
@ -401,14 +400,14 @@ class Module(HasAccessibles):
|
||||
try:
|
||||
self.checkProperties()
|
||||
except ConfigError as e:
|
||||
errors.append('module %s: %s' % (name, e))
|
||||
errors.append(str(e))
|
||||
for pname, p in self.parameters.items():
|
||||
try:
|
||||
p.checkProperties()
|
||||
except ConfigError:
|
||||
errors.append('module %s, parameter %s: %s' % (name, pname, e))
|
||||
errors.append('%s: %s' % (pname, e))
|
||||
if errors:
|
||||
raise ConfigError('\n'.join(errors))
|
||||
raise ConfigError(errors)
|
||||
|
||||
# helper cfg-editor
|
||||
def __iter__(self):
|
||||
@ -522,10 +521,12 @@ class Module(HasAccessibles):
|
||||
with proper error handling
|
||||
"""
|
||||
for pname in list(self.writeDict):
|
||||
if pname in self.writeDict: # this might not be true with handlers
|
||||
value = self.writeDict.pop(pname, Done)
|
||||
# in the mean time, a poller or handler might already have done it
|
||||
if value is not Done:
|
||||
try:
|
||||
self.log.debug('initialize parameter %s', pname)
|
||||
getattr(self, 'write_' + pname)(self.writeDict.pop(pname))
|
||||
getattr(self, 'write_' + pname)(value)
|
||||
except SilentError:
|
||||
pass
|
||||
except SECoPError as e:
|
||||
|
@ -245,12 +245,8 @@ class Server:
|
||||
continue
|
||||
cls = get_class(classname)
|
||||
except Exception as e:
|
||||
if pymodule is None:
|
||||
if str(e) == 'no such class':
|
||||
errors.append('%s not found' % classname)
|
||||
else:
|
||||
raise
|
||||
errors.append(repr(e))
|
||||
if str(e) == 'no such class':
|
||||
errors.append('%s not found' % classname)
|
||||
else:
|
||||
failed.add(pymodule)
|
||||
failure_traceback = traceback.format_exc()
|
||||
@ -262,9 +258,13 @@ class Server:
|
||||
if opts:
|
||||
errors.append(self.unknown_options(cls, opts))
|
||||
self.modules[modname] = modobj
|
||||
except Exception as e:
|
||||
except ConfigError as e:
|
||||
errors.append('error creating module %s:' % modname)
|
||||
for errtxt in e.args[0]:
|
||||
errors.append(' ' + errtxt)
|
||||
except Exception:
|
||||
failure_traceback = traceback.format_exc()
|
||||
errors.append('error creating %s: %r' % (modname, e))
|
||||
errors.append('error creating %s' % modname)
|
||||
|
||||
poll_table = dict()
|
||||
# all objs created, now start them up and interconnect
|
||||
|
Loading…
x
Reference in New Issue
Block a user