Doing things in a more sane way

This commit is contained in:
Fabio Manganiello 2017-11-09 01:43:17 +01:00
parent e8c9cca433
commit 4d636386bf

View file

@ -69,22 +69,23 @@ def _init_plugin(plugin_name, reload=False):
return plugin return plugin
def _exec_func(body, retry=True): def _exec_func(args, retry=True):
args = {} args = json.loads(args) \
if isinstance(args, str) \
else args
if 'action' not in body: if 'action' not in args:
logging.warn('No action specified') logging.warn('No action specified')
return return
action = body.pop('action') if 'target' in args:
args.pop('target')
action = args.pop('action')
tokens = action.split('.') tokens = action.split('.')
module_name = str.join('.', tokens[:-1]) module_name = str.join('.', tokens[:-1])
method_name = tokens[-1:][0] method_name = tokens[-1:][0]
args = json.loads(body) \
if isinstance(body, str) \
else body
try: try:
plugin = _init_plugin(module_name) plugin = _init_plugin(module_name)
except RuntimeError as e: # Module/class not found except RuntimeError as e: # Module/class not found
@ -110,11 +111,11 @@ def _exec_func(body, retry=True):
logging.exception(e) logging.exception(e)
if retry: if retry:
# Put the action back where it was before retrying # Put the action back where it was before retrying
body['action'] = action args['action'] = action
logging.info('Reloading plugin {} and retrying'.format(module_name)) logging.info('Reloading plugin {} and retrying'.format(module_name))
_init_plugin(module_name, reload=True) _init_plugin(module_name, reload=True)
_exec_func(body, retry=False) _exec_func(args, retry=False)
def _on_push(ws, data): def _on_push(ws, data):