Source code for idmtools_platform_comps.utils.linux_mounts
"""idmtools set linux mounts.Copyright 2021, Bill & Melinda Gates Foundation. All rights reserved."""importosfromCOMPSimportAuthManagerfromCOMPS.DataimportSimulationfromtypingimportTYPE_CHECKING,List,DictifTYPE_CHECKING:# pragma: no coverfromidmtools.entities.iplatformimportIPlatformDEFAULT_ENVIRONMENTS=["SLURMSTAGE","CALCULON","NIBBLER"]
[docs]defset_linux_mounts(platform:'IPlatform',linux_environment:str=None)->None:""" For COMPS Platform, check and set linux mounts. Args: platform: idmtools COMPS Platform linux_environment: platform environment Returns: None """linux_envs=DEFAULT_ENVIRONMENTSiflinux_environmentisnotNone:linux_envs.append(linux_environment.upper())ifplatform.environment.upper()inlinux_envs:mounts=AuthManager.get_environment_macros(platform.environment)['DOCKER_MOUNTS']mounts={v[0]:v[1:4]forvin[m.split(';')forminmounts.split('|')]}# pretend I'm on Linux and set the Linux mapping environment variablesfork,vinmounts.items():os.environ[k]=';'.join([v[0],v[2]])
[docs]defclear_linux_mounts(platform:'IPlatform',linux_environment:str=None)->None:""" For COMPS Platform, check and clear linux mounts. Args: platform: idmtools COMPS Platform linux_environment: platform environment Returns: None """linux_envs=DEFAULT_ENVIRONMENTSiflinux_environmentisnotNone:linux_envs.append(linux_environment.upper())ifplatform.environment.upper()inlinux_envs:mounts=AuthManager.get_environment_macros(platform.environment)['DOCKER_MOUNTS']mounts={v[0]:v[1:4]forvin[m.split(';')forminmounts.split('|')]}# pretend I'm on Linux and clear the Linux mapping environment variablesfork,vinmounts.items():os.environ.pop(k)
[docs]defget_workdir_from_simulations(platform:'IPlatform',comps_simulations:List[Simulation])->Dict[str,str]:""" Get COMPS simulations working directory. Args: platform: idmtools COMPS Platform comps_simulations: COMPS Simulations Returns: dictionary with simulation id as key and working directory as value """set_linux_mounts(platform)sim_work_dir={str(sim.id):sim.hpc_jobs[-1].working_directoryforsimincomps_simulationsifsim.hpc_jobs}clear_linux_mounts(platform)returnsim_work_dir