fix frappy/playground.py after change 31470

assumptions about dispatcher in playground.py are no longer
valid.

- let Dispatcher class in playground inherit from real dispatcher
+ improve log messages

Change-Id: I2a9a9d532dabadc590543660c445c021dd2f2891
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31967
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
This commit is contained in:
zolliker 2023-08-16 17:13:59 +02:00
parent dee8f8929e
commit 6c49abea74

View File

@ -30,10 +30,10 @@ Remarks:
import sys import sys
from logging import DEBUG, INFO, addLevelName from logging import DEBUG, INFO, addLevelName
import mlzlog import mlzlog
from frappy.errors import NoSuchModuleError
from frappy.server import Server from frappy.server import Server
from frappy.config import load_config, Mod as ConfigMod from frappy.config import load_config, Mod as ConfigMod
from frappy.lib import generalConfig from frappy.lib import generalConfig
from frappy.protocol import dispatcher
USAGE = """create config on the fly: USAGE = """create config on the fly:
@ -77,28 +77,25 @@ class MainLogger:
self.log.handlers[0].setLevel(LOG_LEVELS['comlog']) self.log.handlers[0].setLevel(LOG_LEVELS['comlog'])
class Dispatcher: class Dispatcher(dispatcher.Dispatcher):
def __init__(self, name, log, opts, srv): def __init__(self, name, log, options, srv):
self.log = log super().__init__(name, log, options, srv)
self._modules = {} self.log = srv.log # overwrite child logger
self.equipment_id = opts.pop('equipment_id', name)
def announce_update(self, modulename, pname, pobj): def announce_update(self, modulename, pname, pobj):
if pobj.readerror: if pobj.readerror:
value = repr(pobj.readerror) value = repr(pobj.readerror)
else: else:
value = pobj.value value = pobj.value
self.log.info('%s:%s %r', modulename, pname, value) logobj = self._modules.get(modulename, self)
# self.log.info('%s:%s %r', modulename, pname, value)
logobj.log.info('%s %r', pname, value)
def register_module(self, moduleobj, modulename, export=True): def register_module(self, moduleobj, modulename, export=True):
self.log.info('registering %s', modulename)
setattr(main, modulename, moduleobj) setattr(main, modulename, moduleobj)
self._modules[modulename] = moduleobj self._modules[modulename] = moduleobj
def get_module(self, modulename):
if modulename in self._modules:
return self._modules[modulename]
raise NoSuchModuleError(f'Module {modulename!r} does not exist on this SEC-Node!')
logger = MainLogger() logger = MainLogger()