From 36a49210a0a7b90c22510f326d25347e1f5a6b75 Mon Sep 17 00:00:00 2001 From: mbecker20 Date: Wed, 5 Jun 2024 15:16:30 -0700 Subject: [PATCH] fix filter by split --- bin/core/src/resource/deployment.rs | 87 ++++++++++++------- client/core/rs/src/api/write/deployment.rs | 3 + .../components/resources/procedure/config.tsx | 2 +- frontend/src/lib/utils.ts | 2 +- 4 files changed, 60 insertions(+), 34 deletions(-) diff --git a/bin/core/src/resource/deployment.rs b/bin/core/src/resource/deployment.rs index 93780d49d..da63763b7 100644 --- a/bin/core/src/resource/deployment.rs +++ b/bin/core/src/resource/deployment.rs @@ -16,6 +16,7 @@ use monitor_client::entities::{ }; use mungos::mongodb::Collection; use periphery_client::api::container::RemoveContainer; +use serror::serialize_error_pretty; use crate::{ helpers::{ @@ -177,42 +178,64 @@ impl super::MonitorResource for Deployment { DeploymentState::NotDeployed | DeploymentState::Unknown ) { // container needs to be destroyed - let server = - super::get::(&deployment.config.server_id).await; - if let Err(e) = server { - update.push_error_log( - "remove container", - format!( - "failed to retrieve server at {} from db | {e:#?}", - deployment.config.server_id - ), - ); - } else if let Ok(server) = server { - match periphery_client(&server) { - Ok(periphery) => match periphery - .request(RemoveContainer { - name: deployment.name.clone(), - signal: deployment.config.termination_signal.into(), - time: deployment.config.termination_timeout.into(), - }) - .await - { - Ok(log) => update.logs.push(log), - Err(e) => update.push_error_log( - "remove container", - format!( - "failed to remove container on periphery | {e:#?}" - ), - ), - }, - Err(e) => update.push_error_log( + let server = match super::get::( + &deployment.config.server_id, + ) + .await + { + Ok(server) => server, + Err(e) => { + update.push_error_log( "remove container", format!( - "failed to remove container on periphery | {e:#?}" + "failed to retrieve server at {} from db.\n\nerror: {}", + deployment.config.server_id, + serialize_error_pretty(&e) ), - ), - }; + ); + return Ok(()); + } + }; + if !server.config.enabled { + // Don't need to + update.push_simple_log( + "remove container", + "skipping container removal, server is disabled.", + ); + return Ok(()); } + let periphery = match periphery_client(&server) { + Ok(periphery) => periphery, + Err(e) => { + // This case won't ever happen, as periphery_client only fallible if the server is disabled. + // Leaving it for completeness sake + update.push_error_log( + "remove container", + format!( + "failed to remove container on periphery.\n\nerror: {}", + serialize_error_pretty(&e), + ), + ); + return Ok(()); + } + }; + match periphery + .request(RemoveContainer { + name: deployment.name.clone(), + signal: deployment.config.termination_signal.into(), + time: deployment.config.termination_timeout.into(), + }) + .await + { + Ok(log) => update.logs.push(log), + Err(e) => update.push_error_log( + "remove container", + format!( + "failed to remove container.\n\nerror: {}", + serialize_error_pretty(&e) + ), + ), + }; } Ok(()) } diff --git a/client/core/rs/src/api/write/deployment.rs b/client/core/rs/src/api/write/deployment.rs index eec720434..2437b8ec1 100644 --- a/client/core/rs/src/api/write/deployment.rs +++ b/client/core/rs/src/api/write/deployment.rs @@ -47,6 +47,9 @@ pub struct CopyDeployment { /// Deletes the deployment at the given id, and returns the deleted deployment. /// Response: [Deployment]. +/// +/// Note. If the associated container is running, it will be deleted as part of +/// the deployment clean up. #[typeshare] #[derive( Serialize, Deserialize, Debug, Clone, Request, EmptyTraits, diff --git a/frontend/src/components/resources/procedure/config.tsx b/frontend/src/components/resources/procedure/config.tsx index 9e3907b2e..2552b3e58 100644 --- a/frontend/src/components/resources/procedure/config.tsx +++ b/frontend/src/components/resources/procedure/config.tsx @@ -475,7 +475,7 @@ const Stage = ({ const new_stage = () => ({ name: "Stage", enabled: true, - executions: [], + executions: [default_enabled_execution()], }); const default_enabled_execution: () => Types.EnabledExecution = () => ({ diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts index 2765b8738..03eb76582 100644 --- a/frontend/src/lib/utils.ts +++ b/frontend/src/lib/utils.ts @@ -167,7 +167,7 @@ export const filterBySplit = ( return ( (split.length ? items?.filter((item) => { - const target = extract(item); + const target = extract(item).toLowerCase(); return split.every((term) => target.includes(term)); }) : items) ?? []