From 0e7d32c5b5604b400d7bc1ac184cd36870b1189f Mon Sep 17 00:00:00 2001 From: meowjesty Date: Fri, 24 Jan 2025 12:24:11 -0300 Subject: [PATCH] tolerations in targetless, but no default --- mirrord/config/src/agent.rs | 6 ++++-- mirrord/kube/src/api/container/pod.rs | 13 ++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/mirrord/config/src/agent.rs b/mirrord/config/src/agent.rs index 00997c87306..caf1d131a25 100644 --- a/mirrord/config/src/agent.rs +++ b/mirrord/config/src/agent.rs @@ -240,8 +240,10 @@ pub struct AgentConfig { /// ### agent.tolerations {#agent-tolerations} /// - /// Set pod tolerations. (not with ephemeral agents) - /// Default is + /// Set pod tolerations. (not with ephemeral agents). + /// + /// Defaults to `operator: Exists`. + /// /// ```json /// [ /// { diff --git a/mirrord/kube/src/api/container/pod.rs b/mirrord/kube/src/api/container/pod.rs index 120d205a5aa..984a3fd8afa 100644 --- a/mirrord/kube/src/api/container/pod.rs +++ b/mirrord/kube/src/api/container/pod.rs @@ -20,6 +20,7 @@ use crate::api::{ runtime::RuntimeData, }; +/// The `targetless` agent variant is created by this, see its [`PodVariant::as_update`]. pub struct PodVariant<'c> { agent: &'c AgentConfig, command_line: Vec, @@ -67,8 +68,6 @@ impl ContainerVariant for PodVariant<'_> { .. } = self; - let tolerations = agent.tolerations.as_ref().unwrap_or(&DEFAULT_TOLERATIONS); - let resources = agent.resources.clone().unwrap_or_else(|| { serde_json::from_value(serde_json::json!({ "requests": @@ -124,7 +123,7 @@ impl ContainerVariant for PodVariant<'_> { spec: Some(PodSpec { restart_policy: Some("Never".to_string()), image_pull_secrets, - tolerations: Some(tolerations.clone()), + tolerations: agent.tolerations.clone(), node_selector: Some(node_selector), service_account_name: agent.service_account.clone(), containers: vec![Container { @@ -148,6 +147,10 @@ impl ContainerVariant for PodVariant<'_> { } } +/// The `targeted` agent variant is created by this. +/// +/// It builds on top of [`PodVariant`], merging spec, etc from there. See +/// [`PodTargetedVariant::as_update`]. pub struct PodTargetedVariant<'c> { inner: PodVariant<'c>, runtime_data: &'c RuntimeData, @@ -195,7 +198,7 @@ impl ContainerVariant for PodTargetedVariant<'_> { let agent = self.agent_config(); let params = self.params(); - let tolerations = agent.tolerations.clone(); + let tolerations = agent.tolerations.as_ref().unwrap_or(&DEFAULT_TOLERATIONS); let env = self.runtime_data.mesh.map(|mesh_vendor| { let mut env = vec![EnvVar { @@ -216,7 +219,7 @@ impl ContainerVariant for PodTargetedVariant<'_> { let update = Pod { spec: Some(PodSpec { restart_policy: Some("Never".to_string()), - tolerations, + tolerations: Some(tolerations.clone()), host_pid: Some(true), node_name: Some(runtime_data.node_name.clone()), volumes: Some(vec![