From a7ac7bed16a1aedfc0b5ce263deca7fe38d249e9 Mon Sep 17 00:00:00 2001 From: Clay McLeod Date: Thu, 19 Sep 2024 23:38:04 -0500 Subject: [PATCH] feat: adds alphanumeric name generator --- crankshaft-engine/src/service.rs | 1 + crankshaft-engine/src/service/runner.rs | 1 - crankshaft-engine/src/service/runner/backend/docker.rs | 7 +++++-- crankshaft-engine/src/service/runner/backend/tes.rs | 2 ++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/crankshaft-engine/src/service.rs b/crankshaft-engine/src/service.rs index 79900c1..80d4df9 100644 --- a/crankshaft-engine/src/service.rs +++ b/crankshaft-engine/src/service.rs @@ -1,5 +1,6 @@ //! Services for various functionality within the execution engine. +pub mod name; pub mod runner; pub use runner::Runner; diff --git a/crankshaft-engine/src/service/runner.rs b/crankshaft-engine/src/service/runner.rs index e8f3d2f..83393a4 100644 --- a/crankshaft-engine/src/service/runner.rs +++ b/crankshaft-engine/src/service/runner.rs @@ -92,7 +92,6 @@ impl Runner { }; self.tasks.push(Box::pin(fun)); - TaskHandle { callback: rx } } diff --git a/crankshaft-engine/src/service/runner/backend/docker.rs b/crankshaft-engine/src/service/runner/backend/docker.rs index 2bad80e..4578122 100644 --- a/crankshaft-engine/src/service/runner/backend/docker.rs +++ b/crankshaft-engine/src/service/runner/backend/docker.rs @@ -12,9 +12,10 @@ use futures::stream::FuturesUnordered; use futures::FutureExt; use futures::StreamExt; use nonempty::NonEmpty; -use rand::Rng; use tempfile::TempDir; +use crate::service::name; +use crate::service::name::Generator; use crate::service::runner::backend::TaskResult; use crate::Result; use crate::Task; @@ -120,10 +121,12 @@ fn run(backend: &Backend, task: Task) -> BoxFuture<'static, TaskResult> { let mut outputs = Vec::new(); for execution in task.executions() { + // NOTE: a name is required by Docker, so a name is generated + // automatically if a name isn't provided. let name = task .name() .map(|v| v.to_owned()) - .unwrap_or_else(|| format!("job-{}", rand::thread_rng().gen_range(0..1000000))); + .unwrap_or_else(|| name::Alphanumeric::default().generate()); // (1) Create the container. let mut builder = client diff --git a/crankshaft-engine/src/service/runner/backend/tes.rs b/crankshaft-engine/src/service/runner/backend/tes.rs index b4a2e68..817aa74 100644 --- a/crankshaft-engine/src/service/runner/backend/tes.rs +++ b/crankshaft-engine/src/service/runner/backend/tes.rs @@ -61,6 +61,8 @@ impl crate::Backend for Backend { /// Translates a [`Task`] to a [TES Task](tes::v1::types::Task) for submission. fn to_tes_task(task: Task) -> tes::v1::types::Task { + // NOTE: a name is not required by the TES specification, so it is kept as + // empty if no name is provided. let name = task.name().map(|v| v.to_owned()); let description = task.description().map(|v| v.to_owned());