diff --git a/prule/__init__.py b/prule/__init__.py index dd1bbad0dcc79b182cb8d41ca74944ab1ab10621..23b55156828eec3ca0de0753b92831485ad7c563 100644 --- a/prule/__init__.py +++ b/prule/__init__.py @@ -672,6 +672,7 @@ def rule_prepare_input(parameters, rules, clusters, job_meta, job_data): numthreads.accelerator[nix] = len(r["accelerators"]) if exclusive_check == True and getattr(job, "exclusive") != 1: setattr(job, "exclusive", 1) + job_meta["exclusive"] = 1 log.print_color(log.color.yellow, log.warn, "Overwrite job's exclusive state.") # print log.print_color(log.color.magenta, log.debug, "-"*25,"Job allocated hwthreads:","-"*25) diff --git a/prule/__main__.py b/prule/__main__.py index 89b0a89943420f974fa9006deb6d0c1570aa2af0..96145e949306b41c033d4bde939a701429dae49b 100644 --- a/prule/__main__.py +++ b/prule/__main__.py @@ -400,7 +400,7 @@ if __name__ == "__main__": job_meta = None job_data = None job_id = None - job_output = {"jobId":None, "tags":[], "rules":[], "error":False, "errors":[], "rules_failed":[], "rules_evaluated":[], "rules_not_evaluated":[]} + job_output = {"jobId":None, "tags":[], "rules":[], "error":False, "errors":[], "rules_failed":[], "rules_evaluated":[], "rules_not_evaluated":[], "metadata":{}} # read meta file if os.path.exists(job.meta_path) == False: @@ -463,6 +463,8 @@ if __name__ == "__main__": try: rinput = rule_prepare_input(parameters, rules_list, clusters, job_meta, job_data) rinput = make_immutable(rinput) + if "exclusive" in job_meta: + job_output["metadata"]["exclusive"] = job_meta["exclusive"] # export "exclusive" overwritten value except Exception as e: error = True error_msg = "Error on preparing rule input for job {}".format(job.meta_path) diff --git a/prule/daemon/__main__.py b/prule/daemon/__main__.py index e6ba646dfd004141e3c6a0e2bcac82febab36e09..ed7bdb9862d401bb813fd4ec60388f15de59f21f 100644 --- a/prule/daemon/__main__.py +++ b/prule/daemon/__main__.py @@ -944,6 +944,11 @@ class PruleThread(threading.Thread): return "failure-wait" job_meta = job_res["Meta"] + # overwrite metadata in job from prule results + if "metadata" in result_json and job_meta != None: + for key,value in result_json["metadata"].items(): + job_meta[key] = result_json["metadata"][key] + # save result to cache db try: evaluated = "error" in result_json and result_json["error"] == False