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
1 changed files with 11 additions and 10 deletions

View File

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