From 078abb508b57c59531a63ab5c633046a072c6425 Mon Sep 17 00:00:00 2001 From: infiniteregrets Date: Fri, 19 Jan 2024 15:51:33 +0530 Subject: [PATCH 1/2] Allow reusing copy targets --- mirrord/operator/src/client.rs | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/mirrord/operator/src/client.rs b/mirrord/operator/src/client.rs index def735c61a2..11322c4ce3b 100644 --- a/mirrord/operator/src/client.rs +++ b/mirrord/operator/src/client.rs @@ -32,7 +32,7 @@ use tracing::{debug, error, warn}; use crate::crd::{ CopyTargetCrd, CopyTargetSpec, MirrordOperatorCrd, OperatorFeatures, TargetCrd, - OPERATOR_STATUS_NAME, + OPERATOR_STATUS_NAME, TARGETLESS_TARGET_NAME, }; static CONNECTION_CHANNEL_SIZE: usize = 1000; @@ -285,9 +285,15 @@ impl OperatorApi { } version_progress.success(None); - let raw_target = operator_api.fetch_target().await?; - let target_to_connect = if config.feature.copy_target.enabled { + let target_name = TargetCrd::target_name_by_config(&operator_api.target_config); + let target = + target_name + .parse::() + .map_err(|err| OperatorApiError::InvalidTarget { + reason: format!("invalid target name: {}", err), + })?; + let mut copy_progress = progress.subtask("copying target"); if config.feature.copy_target.scale_down { @@ -300,12 +306,13 @@ impl OperatorApi { } let copied = operator_api - .copy_target(&metadata, raw_target, config.feature.copy_target.scale_down) + .copy_target(&metadata, target, config.feature.copy_target.scale_down) .await?; copy_progress.success(None); OperatorSessionTarget::Copied(copied) } else { + let raw_target = operator_api.fetch_target().await?; OperatorSessionTarget::Raw(raw_target) }; @@ -537,21 +544,13 @@ impl OperatorApi { async fn copy_target( &self, session_metadata: &OperatorSessionMetadata, - target: TargetCrd, + target: Target, scale_down: bool, ) -> Result { - let raw_target = target - .spec - .target - .clone() - .ok_or(OperatorApiError::InvalidTarget { - reason: "copy target feature is not compatible with targetless mode".into(), - })?; - let requested = CopyTargetCrd::new( - &target.name(), + &TargetCrd::target_name(&target), CopyTargetSpec { - target: raw_target, + target: target, idle_ttl: Some(Self::COPIED_POD_IDLE_TTL), scale_down, }, From 250f304f99742a10a2f99fced10e422d9777c732 Mon Sep 17 00:00:00 2001 From: infiniteregrets Date: Fri, 19 Jan 2024 16:30:10 +0530 Subject: [PATCH 2/2] .. --- mirrord/operator/src/client.rs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/mirrord/operator/src/client.rs b/mirrord/operator/src/client.rs index 11322c4ce3b..8d35d11966f 100644 --- a/mirrord/operator/src/client.rs +++ b/mirrord/operator/src/client.rs @@ -32,7 +32,7 @@ use tracing::{debug, error, warn}; use crate::crd::{ CopyTargetCrd, CopyTargetSpec, MirrordOperatorCrd, OperatorFeatures, TargetCrd, - OPERATOR_STATUS_NAME, TARGETLESS_TARGET_NAME, + OPERATOR_STATUS_NAME, }; static CONNECTION_CHANNEL_SIZE: usize = 1000; @@ -286,13 +286,12 @@ impl OperatorApi { version_progress.success(None); let target_to_connect = if config.feature.copy_target.enabled { - let target_name = TargetCrd::target_name_by_config(&operator_api.target_config); - let target = - target_name - .parse::() - .map_err(|err| OperatorApiError::InvalidTarget { - reason: format!("invalid target name: {}", err), - })?; + let target_name = &operator_api.target_config.path; + let target = target_name + .as_ref() + .ok_or_else(|| OperatorApiError::InvalidTarget { + reason: "copy target feature is enabled, but target is not set".into(), + })?; let mut copy_progress = progress.subtask("copying target"); @@ -306,7 +305,11 @@ impl OperatorApi { } let copied = operator_api - .copy_target(&metadata, target, config.feature.copy_target.scale_down) + .copy_target( + &metadata, + target.clone(), + config.feature.copy_target.scale_down, + ) .await?; copy_progress.success(None);