def __init__(self, access_details, host, tag): self.thread = None self.host = host self.tag = tag self.exception = None # TODO: duplicate self.accum = {} self.accum["metadata"] = {"host": host, "tag": tag} if host: self.access_details = access_details(host) logger.debug("setting up connected slave %s" % self.access_details) self.srv = Connection(**self.access_details) else: logger.debug("setting up unconnected slave %s" % access_details) self.srv = Null()
def inner(srv, run_id, accum): try: logger.info("executing " + run_id) result = f(srv, run_id, accum) # accumulate the output for the next execution if result: # expects the result to specify a result and a namespace. (namespace, result) = result logger.debug("namespace: " + namespace) logger.debug("content: " + str(result)) if isinstance(result, dict): if not namespace in accum: logger.debug("new namespace added to accum: " + namespace) accum[namespace] = {} self.accum[namespace].update(result) else: self.accum[namespace] = result except: self.exception = sys.exc_info()