From de1ab423d1fbb1e3f086e2e65616d45b24196ecd Mon Sep 17 00:00:00 2001 From: Jake Hillion Date: Tue, 10 May 2022 17:44:52 +0100 Subject: [PATCH] move spawner specific mounting outside --- src/spawner/mod.rs | 58 +++++++++++++++++----------------------------- 1 file changed, 21 insertions(+), 37 deletions(-) diff --git a/src/spawner/mod.rs b/src/spawner/mod.rs index 899ffcb..c49eee3 100644 --- a/src/spawner/mod.rs +++ b/src/spawner/mod.rs @@ -109,6 +109,16 @@ impl<'a> Spawner<'a> { self.prepare_env(&mut builder, &entrypoint.environment); + for env in &entrypoint.environment { + if let Environment::Filesystem { + host_path, + environment_path: _, + } = env + { + builder.mount(host_path, host_path); + } + } + let closure = || match self.pipe_trigger(pipe, entrypoint, name) { Ok(()) => std::process::exit(exitcode::OK), Err(e) => { @@ -133,7 +143,15 @@ impl<'a> Spawner<'a> { builder.mount(binary, "/entrypoint"); builder.keep_fd(&socket); - self.prepare_env(&mut builder, &entrypoint.environment); + for env in &entrypoint.environment { + if let Environment::Filesystem { + host_path, + environment_path: _, + } = env + { + builder.mount(host_path, host_path); + } + } let closure = || match self.file_socket_trigger(socket, entrypoint, name) { Ok(()) => std::process::exit(exitcode::OK), @@ -169,24 +187,7 @@ impl<'a> Spawner<'a> { let mut builder = VoidBuilder::new(); builder.mount("/entrypoint", "/entrypoint"); - // TODO: move the weird logic out of this part - for env in &spec.environment { - match env { - Environment::Filesystem { - host_path: _host_path, - environment_path, - } => { - builder.mount(environment_path, environment_path); - } - - Environment::Hostname(name) => { - builder.set_hostname(name); - } - Environment::DomainName(name) => { - builder.set_domain_name(name); - } - } - } + self.prepare_env(&mut builder, &spec.environment); let args = PreparedArgs::prepare_ambient(&mut builder, &spec.args)?; @@ -244,24 +245,7 @@ impl<'a> Spawner<'a> { builder.keep_fd(fd); } - // TODO: move the weird logic out of this part - for env in &spec.environment { - match env { - Environment::Filesystem { - host_path: _host_path, - environment_path, - } => { - builder.mount(environment_path, environment_path); - } - - Environment::Hostname(name) => { - builder.set_hostname(name); - } - Environment::DomainName(name) => { - builder.set_domain_name(name); - } - } - } + self.prepare_env(&mut builder, &spec.environment); let args = PreparedArgs::prepare_ambient(&mut builder, &spec.args)?;