in hostfactory/host_provider/src/util.py [0:0]
def failureresponse(response):
'''
Decorator to ensure that a sane default response is always sent back to Symphony.
'''
def decorator(func):
def _wrap(*args, **kwargs):
logger = init_logging()
try:
return func(*args, **kwargs)
except UserError as ue:
with_message = deepcopy(response)
message = str(ue)
logger.debug(traceback.format_exc())
try:
message_data = json.loads(message)
message = "Http Status %(Code)s: %(Message)s" % message_data
except Exception:
pass
with_message["message"] = message
# args[0] is self
return args[0].stdout_handler.try_handle(with_message)
except Exception as e:
logger.exception(str(e))
logger.debug(traceback.format_exc())
with_message = deepcopy(response)
with_message["message"] = str(e)
return args[0].stdout_handler.try_handle(with_message)
except SystemExit as se:
# NOTE: see terminate_machines for more info
logger.exception("System Exit occured intentionally write 0 json so symphony recovers")
raise
except: # nopep8 ignore the bare except
logger.exception("Caught unknown exception...")
logger.debug(traceback.format_exc())
with_message = deepcopy(response)
with_message["message"] = traceback.format_exc()
return args[0].stdout_handler.try_handle(with_message)
return _wrap
return decorator