From 5c32b299cba0fcd9b77f983e75251d3174c7bc13 Mon Sep 17 00:00:00 2001 From: Peter Huene Date: Mon, 17 Feb 2025 12:29:28 -0500 Subject: [PATCH] refactor: add utility methods to `Resources` in the docker backend. (#15) The new methods makes downstream code a little neater. --- .../src/service/runner/backend/docker.rs | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/crankshaft-engine/src/service/runner/backend/docker.rs b/crankshaft-engine/src/service/runner/backend/docker.rs index 63f546a..a9da4c6 100644 --- a/crankshaft-engine/src/service/runner/backend/docker.rs +++ b/crankshaft-engine/src/service/runner/backend/docker.rs @@ -69,6 +69,46 @@ pub enum Resources { } impl Resources { + /// Gets the number of nodes. + pub fn nodes(&self) -> usize { + match self { + Self::Local(_) => 1, + Self::Swarm(resources) => resources.nodes, + } + } + + /// Gets the total CPUs available. + pub fn cpu(&self) -> u64 { + match self { + Self::Local(resources) => resources.cpu, + Self::Swarm(resources) => resources.cpu, + } + } + + /// Gets the total memory available, in bytes. + pub fn memory(&self) -> u64 { + match self { + Self::Local(resources) => resources.memory, + Self::Swarm(resources) => resources.memory, + } + } + + /// Gets the maximum CPUs available for a single node. + pub fn max_cpu(&self) -> u64 { + match self { + Self::Local(resources) => resources.cpu, + Self::Swarm(resources) => resources.max_cpu, + } + } + + /// Gets the maximum memory available for a single node, in bytes. + pub fn max_memory(&self) -> u64 { + match self { + Self::Local(resources) => resources.memory, + Self::Swarm(resources) => resources.max_memory, + } + } + /// Determines if the docker backend will use a service instead of a /// container based on the resources available. ///