easyvvuq.actions.execute_qcgpj_task

 1import base64
 2import json
 3import os
 4import sys
 5
 6import dill
 7
 8from . import Actions
 9
10if __name__ == "__main__":
11
12    actions: Actions
13
14    print("Invoking execute_qcgpj_task with arguments: " + str(sys.argv))
15
16    if len(sys.argv) < 3:
17        sys.exit(
18            "Usage: python3 encoded_actions_object encoded_previous_object"
19        )
20
21    actions_f = sys.argv[1]
22    previous_f = sys.argv[2]
23
24    if 'QCG_PM_EXEC_API_JOB_ID' not in os.environ:
25        sys.exit("The required environment variable QCG_PM_STEP_ID not set")
26
27    jobid = os.environ['QCG_PM_EXEC_API_JOB_ID']
28
29    with open(actions_f) as f:
30        pickled_actions = f.read()
31        pickled_actions_b64 = pickled_actions.encode('ascii')
32        pickled_actions_b = base64.b64decode(pickled_actions_b64)
33        actions = dill.loads(pickled_actions_b)
34
35    with open(previous_f) as f:
36        pickled_previous = f.read()
37        pickled_previous_b64 = pickled_previous.encode('ascii')
38        pickled_previous_b = base64.b64decode(pickled_previous_b64)
39        previous = dill.loads(pickled_previous_b)
40
41    previous_next = actions.start(previous)
42
43    with open(f'{previous_next["campaign_dir"]}/.qcgpj_result_{jobid}', 'w') as f:
44        json.dump(previous_next, f)