summaryrefslogtreecommitdiffstats
path: root/src/job
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-03-01 10:23:51 +0100
committerMatthias Beyer <matthias.beyer@atos.net>2021-03-01 11:10:16 +0100
commit613f1578f79f0572b859e5518672ab701417f5b9 (patch)
tree3158ff8741a6c5e2477f62afc49501f01e71d351 /src/job
parentcd05302918d4bbbe32221951157dd43fd50c3405 (diff)
Refactor: Collect environment resources before building resources for RunnableJob
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Diffstat (limited to 'src/job')
-rw-r--r--src/job/runnable.rs43
1 files changed, 25 insertions, 18 deletions
diff --git a/src/job/runnable.rs b/src/job/runnable.rs
index 6361a49..282fcdd 100644
--- a/src/job/runnable.rs
+++ b/src/job/runnable.rs
@@ -60,20 +60,15 @@ impl RunnableJob {
dependencies: Vec<ArtifactPath>,
) -> Result<Self> {
// Add the environment from the original Job object to the resources
- let resources = dependencies
- .into_iter()
- .map(JobResource::from)
- .chain({
- job.resources()
- .iter()
- .filter(|jr| jr.env().is_some())
- .cloned()
- })
- .collect();
+ let job_env_resources = job.resources()
+ .iter()
+ .filter(|jr| jr.env().is_some())
+ .cloned()
+ .collect::<Vec<_>>();
if config.containers().check_env_names() {
debug!("Checking environment if all variables are allowed!");
- let _ = Self::env_resources(job.resources(), job.package().environment().as_ref())
+ let _ = Self::env_resources(&job_env_resources, job.package().environment().as_ref())
.into_iter()
.inspect(|(name, _)| debug!("Checking: {}", name))
.try_for_each(|(name, _)| {
@@ -96,6 +91,13 @@ impl RunnableJob {
debug!("Environment checking disabled");
}
+ let resources = dependencies
+ .into_iter()
+ .map(JobResource::from)
+ .chain(job_env_resources.into_iter())
+ .collect();
+
+
debug!("Building script now");
let script = ScriptBuilder::new(&job.script_shebang).build(
&job.package,
@@ -124,20 +126,25 @@ impl RunnableJob {
/// Helper function to collect a list of resources and the result of package.environment() into
/// a Vec of environment variables
+ ///
+ /// TODO: Make nice
fn env_resources(
resources: &[JobResource],
pkgenv: Option<&HashMap<EnvironmentVariableName, String>>,
) -> Vec<(EnvironmentVariableName, String)> {
- let iter = resources
- .iter()
- .filter_map(JobResource::env)
- .map(|(k, v)| (k.clone(), v.clone()));
-
if let Some(hm) = pkgenv {
- iter.chain(hm.iter().map(|(k, v)| (k.clone(), v.clone())))
+ resources
+ .iter()
+ .filter_map(JobResource::env)
+ .map(|(k, v)| (k.clone(), v.clone()))
+ .chain(hm.iter().map(|(k, v)| (k.clone(), v.clone())))
.collect()
} else {
- iter.collect()
+ resources
+ .iter()
+ .filter_map(JobResource::env)
+ .map(|(k, v)| (k.clone(), v.clone()))
+ .collect()
}
}