From 2770ec6676e9333c83a307429e853558a542723d Mon Sep 17 00:00:00 2001 From: Karim Ahmed <karim.ahmed@xfel.eu> Date: Mon, 28 Oct 2019 08:26:52 +0100 Subject: [PATCH] make max-pulses a list not a str --- webservice/update_config.py | 13 +++++++++++-- webservice/webservice.py | 35 +++++++++++++++++------------------ 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/webservice/update_config.py b/webservice/update_config.py index 853441d6c..d547e416d 100644 --- a/webservice/update_config.py +++ b/webservice/update_config.py @@ -10,7 +10,8 @@ available_options = { "blc-noise": bool, "dont-zero-nans": bool, "dont-zero-orange": bool, - "max-pulses": str}, + "max-pulses": list, + "calfile": str}, } parser = argparse.ArgumentParser( @@ -41,7 +42,12 @@ detector = args["detector"] if detector is not None: for option, typ in available_options[detector].items(): - parser.add_argument(f"--{option}", type=typ) + if typ == list: + print(typ) + nargs = '+' + else: + nargs = None + parser.add_argument(f"--{option}", type=typ, nargs=nargs) if add_help: sys.argv.append("--help") @@ -61,6 +67,9 @@ new_conf = {task: {instrument: {detector: {}}}} for key, value in args.items(): key = key.replace("_", "-") if key in available_options[detector] and value is not None: + if isinstance(value, list): + for v in value: + value[value.index(v)] = ''.join(v) new_conf[task][instrument][detector][key] = value pyaml = yaml.dump(new_conf, default_flow_style=False) diff --git a/webservice/webservice.py b/webservice/webservice.py index 2a083cd8c..8b1264e55 100644 --- a/webservice/webservice.py +++ b/webservice/webservice.py @@ -239,6 +239,18 @@ async def query_rid(conn, socket, rid): socket.send(msg.encode()) +async def parse_config(cmd, config): + for key, value in config.items(): + if isinstance(value, list): + cmd += ["--{}".format(key)] + cmd += [str(v) for v in value] + elif isinstance(value, bool): + cmd += ["--{}".format(key)] + else: + cmd += ["--{}".format(key), str(value)] + return cmd + + async def update_job_db(config): """ Update the job database and send out updates to MDC @@ -631,15 +643,8 @@ async def server_runner(config, mode): if len(run_config): dconfig["runs"] = ",".join(run_config) - for key, value in dconfig.items(): - if not isinstance(value, bool): - if " " in str(value): - cmd += ["--{}".format(key)] - cmd += [str(v) for v in value.split(" ")] - else: - cmd += ["--{}".format(key), str(value)] - else: - cmd += ["--{}".format(key)] + cmd = await parse_config(cmd, dconfig) + ret = await run_correction(job_db, cmd, mode, proposal, wait_runs[0], rid) status.append(ret) @@ -685,15 +690,9 @@ async def server_runner(config, mode): detector, _ = detector.split("-") cmd = ["python", "-m", "xfel_calibrate.calibrate", detector, "CORRECT"] - for key, value in dconfig.items(): - if not isinstance(value, bool): - if " " in str(value): - cmd += ["--{}".format(key)] - cmd += [str(v) for v in value.split(" ")] - else: - cmd += ["--{}".format(key), str(value)] - else: - cmd += ["--{}".format(key)] + + cmd = await parse_config(cmd, dconfig) + if priority: cmd += ["--priority", str(priority)] ret = await run_correction(job_db, cmd, mode, proposal, -- GitLab