Skip to content

Commit 0823ab3

Browse files
committed
Environment setup is now available as a config parameter
1 parent 84082ac commit 0823ab3

File tree

5 files changed

+21
-6
lines changed

5 files changed

+21
-6
lines changed

autosubmit/config/configcommon.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2595,6 +2595,16 @@ def get_wrapper_policy(self, wrapper=None):
25952595
wrapper = {}
25962596
return wrapper.get('POLICY', self.experiment_data.get("WRAPPERS", {}).get("POLICY", 'flexible'))
25972597

2598+
def get_custom_env_setup(self, wrapper=None):
2599+
"""Returns custom environment setup commands for a wrapper that runs with a wrapper engine.
2600+
2601+
:return: wrapper type (or none)
2602+
:rtype: string
2603+
"""
2604+
if wrapper is None:
2605+
wrapper = {}
2606+
return wrapper.get('CUSTOM_ENV_SETUP', self.experiment_data.get("WRAPPERS", {}).get("CUSTOM_ENV_SETUP", ''))
2607+
25982608
def get_wrappers(self):
25992609
"""Returns the jobs that should be wrapped, configured in the autosubmit's config.
26002610

autosubmit/job/job.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1637,6 +1637,7 @@ def update_current_parameters(self, as_conf: AutosubmitConfig, parameters: dict)
16371637
"min_wrapped_h",
16381638
"min_wrapped_v",
16391639
"policy"
1640+
"custom_env_setup"
16401641
]:
16411642
parameters[f"CURRENT_{key.upper()}"] = value
16421643

autosubmit/job/job_packager.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def __init__(self, as_config: 'AutosubmitConfig', platform: 'ParamikoPlatform',
6565
self.jobs_in_wrapper = dict()
6666
self.extensible_wallclock = dict()
6767
self.wrapper_info = list()
68+
self.custom_env_setup = dict()
6869
self.calculate_job_limits(platform)
6970
self.special_variables = dict()
7071
self.wrappers_with_error = {}
@@ -81,7 +82,8 @@ def __init__(self, as_config: 'AutosubmitConfig', platform: 'ParamikoPlatform',
8182
self.wrapper_method[wrapper_section] = self._as_config.get_wrapper_method(wrapper_data).lower()
8283
self.jobs_in_wrapper[wrapper_section] = self._as_config.get_wrapper_jobs(wrapper_data)
8384
self.extensible_wallclock[wrapper_section] = self._as_config.get_extensible_wallclock(wrapper_data)
84-
self.wrapper_info = [self.wrapper_type,self.wrapper_policy,self.wrapper_method,self.jobs_in_wrapper,self.extensible_wallclock] # to pass to job_packages
85+
self.custom_env_setup[wrapper_section] = self._as_config.get_custom_env_setup(wrapper_data)
86+
self.wrapper_info = [self.wrapper_type,self.wrapper_policy,self.wrapper_method,self.jobs_in_wrapper,self.extensible_wallclock,self.custom_env_setup] # to pass to job_packages
8587
Log.debug("Number of jobs available: {0}", self._max_wait_jobs_to_submit)
8688
if self.hold:
8789
Log.debug("Number of jobs prepared: {0}", len(jobs_list.get_prepared(platform)))

autosubmit/job/job_packages.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,7 @@ def __init__(self, jobs: list[Job], dependency=None, jobs_resources: Optional[di
455455
self.wrapper_method = wrapper_info[2]
456456
self.jobs_in_wrapper = wrapper_info[3]
457457
self.extensible_wallclock = wrapper_info[4]
458+
self.custom_env_setup = wrapper_info[5]
458459
else:
459460
self.wrapper_type = None
460461
self.wrapper_policy = None

autosubmit/platforms/wrappers/wrapper_builder.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ def __init__(self, **kwargs):
6363
self.machinefiles_name = ''
6464
self.machinefiles_indent = 0
6565
self.exit_thread = ''
66+
self.custom_env_setup = kwargs['wrapper_data'].custom_env_setup
6667
if "wallclock_by_level" in list(kwargs.keys()):
6768
self.wallclock_by_level = kwargs['wallclock_by_level']
6869

@@ -171,12 +172,12 @@ def _generate_flux_script(self):
171172

172173
def _custom_environmet_setup(self):
173174
# TODO: [ENGINES] Delete hardcoded flux environment setup
175+
commands = self.custom_env_setup
176+
if commands == '':
177+
commands = "# No commands provided"
174178
return textwrap.dedent("""\
175-
module load miniconda
176-
source /apps/GPP/MINICONDA/24.1.2/etc/profile.d/conda.sh
177-
conda activate flux
178-
conda info
179-
""").format('\n'.ljust(0))
179+
{0}
180+
""").format(commands, '\n'.ljust(0))
180181

181182
class FluxVerticalWrapperBuilder(FluxWrapperBuilder):
182183
# TODO: [ENGINES] Check retrial behavior

0 commit comments

Comments
 (0)