forked from NOAA-EMC/global-workflow
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexglobal_globus_arch.py
More file actions
executable file
·45 lines (31 loc) · 1.38 KB
/
exglobal_globus_arch.py
File metadata and controls
executable file
·45 lines (31 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/env python3
import os
from pygfs.task.globus_hpss import GlobusHpss
from wxflow import AttrDict, Logger, cast_strdict_as_dtypedict, logit
# initialize root logger
logger = Logger(level=os.environ.get("LOGGING_LEVEL", "DEBUG"), colored_log=True)
@logit(logger)
def main():
config = cast_strdict_as_dtypedict(os.environ)
# Instantiate the globus object
globus = GlobusHpss(config)
keys = ['STAGE_DIR', 'current_cycle', 'RUN', 'PDY', 'HOMEglobal', 'sven_dropbox',
'doorman_gendel', 'DATASETS_YAML', 'PARMglobal', 'COMIN_CONF', 'KEEPDATA',
'jobid', 'hpss_target_dir', 'server_home', 'SERVER_NAME', 'DOORMAN_ROOT',
'CLIENT_GLOBUS_UUID', 'SERVER_GLOBUS_UUID', 'PSLOT']
globus_dict = AttrDict()
for key in keys:
try:
globus_dict[key] = globus.task_config[key]
except KeyError:
logger.warning(f"WARNING: key ({key}) not found in globus.task_config!")
# Determine which tarballs to send
transfer_sets = globus.configure(globus_dict)
# Send the tarballs to HPSS via Mercury. Start with non-rstprod (standard) data
for transfer_set in ["standard", "rstprod"]:
has_rstprod = transfer_set == "rstprod"
globus.execute_transfer_data(transfer_sets[transfer_set], has_rstprod)
# Clean up any temporary files
globus.clean()
if __name__ == '__main__':
main()