From 4caee9955891d56330b4c16870faf19363813167 Mon Sep 17 00:00:00 2001 From: shikhar Date: Thu, 19 Mar 2026 10:41:38 -0400 Subject: [PATCH 1/3] refactor: remove basin creating state --- api/src/v1/basin.rs | 3 --- cli/src/main.rs | 2 -- cli/src/tui/ui.rs | 2 -- common/src/types/basin.rs | 1 - lite/tests/backend/control_plane/basin.rs | 17 +++++++++++++---- sdk/src/types.rs | 3 --- sdk/tests/account_ops.rs | 1 + 7 files changed, 14 insertions(+), 15 deletions(-) diff --git a/api/src/v1/basin.rs b/api/src/v1/basin.rs index 2f2513e6..eee3cdfe 100644 --- a/api/src/v1/basin.rs +++ b/api/src/v1/basin.rs @@ -96,8 +96,6 @@ impl From for BasinScope { pub enum BasinState { /// Basin is active. Active, - /// Basin is being created. - Creating, /// Basin is being deleted. Deleting, } @@ -106,7 +104,6 @@ impl From for BasinState { fn from(value: types::basin::BasinState) -> Self { match value { types::basin::BasinState::Active => Self::Active, - types::basin::BasinState::Creating => Self::Creating, types::basin::BasinState::Deleting => Self::Deleting, } } diff --git a/cli/src/main.rs b/cli/src/main.rs index 0660a1d4..a18da303 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -248,7 +248,6 @@ async fn run() -> Result<(), CliError> { let info = ops::create_basin(&s2, args).await?; let message = match info.state { - BasinState::Creating => "✓ Basin creation requested".yellow().bold(), BasinState::Active => "✓ Basin created".green().bold(), BasinState::Deleting => "Basin is being deleted".red().bold(), }; @@ -627,7 +626,6 @@ async fn run() -> Result<(), CliError> { fn format_basin_state(state: BasinState) -> colored::ColoredString { match state { BasinState::Active => "active".green(), - BasinState::Creating => "creating".yellow(), BasinState::Deleting => "deleting".red(), } } diff --git a/cli/src/tui/ui.rs b/cli/src/tui/ui.rs index 4b112233..bdc461a2 100644 --- a/cli/src/tui/ui.rs +++ b/cli/src/tui/ui.rs @@ -53,7 +53,6 @@ const BORDER_DIM: Color = GRAY_850; const BORDER_TITLE: Color = GRAY_900; const BADGE_ACTIVE: Color = Color::Rgb(22, 101, 52); -const BADGE_PENDING: Color = Color::Rgb(113, 63, 18); const BADGE_DANGER: Color = Color::Rgb(127, 29, 29); const STAT_MIN: Color = Color::Rgb(96, 165, 250); @@ -2471,7 +2470,6 @@ fn draw_basins(f: &mut Frame, area: Rect, state: &BasinsState) { let (state_text, state_bg) = match basin.state { s2_sdk::types::BasinState::Active => ("Active", BADGE_ACTIVE), - s2_sdk::types::BasinState::Creating => ("Creating", BADGE_PENDING), s2_sdk::types::BasinState::Deleting => ("Deleting", BADGE_DANGER), }; diff --git a/common/src/types/basin.rs b/common/src/types/basin.rs index 048982da..15c9c68e 100644 --- a/common/src/types/basin.rs +++ b/common/src/types/basin.rs @@ -202,7 +202,6 @@ pub type ListBasinsRequest = ListItemsRequest for BasinState { fn from(value: api::basin::BasinState) -> Self { match value { api::basin::BasinState::Active => BasinState::Active, - api::basin::BasinState::Creating => BasinState::Creating, api::basin::BasinState::Deleting => BasinState::Deleting, } } diff --git a/sdk/tests/account_ops.rs b/sdk/tests/account_ops.rs index 2b574060..62bb0d50 100644 --- a/sdk/tests/account_ops.rs +++ b/sdk/tests/account_ops.rs @@ -16,6 +16,7 @@ async fn create_list_and_delete_basin() -> Result<(), S2Error> { .await?; assert_eq!(basin_info.name, basin_name); + assert_eq!(basin_info.state, BasinState::Active); let page = s2 .list_basins(ListBasinsInput::new().with_prefix(basin_name.clone().into())) From bd74f32e508f40db24913d7b5e88b8d8cd6d1443 Mon Sep 17 00:00:00 2001 From: shikhar Date: Thu, 19 Mar 2026 14:38:29 -0400 Subject: [PATCH 2/3] fix: make basin state non-exhaustive --- cli/src/main.rs | 2 ++ cli/src/tui/ui.rs | 2 ++ sdk/src/types.rs | 1 + 3 files changed, 5 insertions(+) diff --git a/cli/src/main.rs b/cli/src/main.rs index a18da303..ec921cc2 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -250,6 +250,7 @@ async fn run() -> Result<(), CliError> { let message = match info.state { BasinState::Active => "✓ Basin created".green().bold(), BasinState::Deleting => "Basin is being deleted".red().bold(), + _ => "Basin state is unknown".yellow().bold(), }; eprintln!("{message}"); } @@ -627,6 +628,7 @@ fn format_basin_state(state: BasinState) -> colored::ColoredString { match state { BasinState::Active => "active".green(), BasinState::Deleting => "deleting".red(), + _ => "unknown".yellow(), } } diff --git a/cli/src/tui/ui.rs b/cli/src/tui/ui.rs index bdc461a2..60a8c2d5 100644 --- a/cli/src/tui/ui.rs +++ b/cli/src/tui/ui.rs @@ -53,6 +53,7 @@ const BORDER_DIM: Color = GRAY_850; const BORDER_TITLE: Color = GRAY_900; const BADGE_ACTIVE: Color = Color::Rgb(22, 101, 52); +const BADGE_WARNING: Color = Color::Rgb(113, 63, 18); const BADGE_DANGER: Color = Color::Rgb(127, 29, 29); const STAT_MIN: Color = Color::Rgb(96, 165, 250); @@ -2471,6 +2472,7 @@ fn draw_basins(f: &mut Frame, area: Rect, state: &BasinsState) { let (state_text, state_bg) = match basin.state { s2_sdk::types::BasinState::Active => ("Active", BADGE_ACTIVE), s2_sdk::types::BasinState::Deleting => ("Deleting", BADGE_DANGER), + _ => ("Unknown", BADGE_WARNING), }; let scope = basin diff --git a/sdk/src/types.rs b/sdk/src/types.rs index f3707d1a..1824b2de 100644 --- a/sdk/src/types.rs +++ b/sdk/src/types.rs @@ -1122,6 +1122,7 @@ impl ListAllBasinsInput { } #[derive(Debug, Clone, PartialEq, Eq)] +#[non_exhaustive] /// Current state of a basin. pub enum BasinState { /// Active From 2e799e4777eb048b9337cecbbf418b5da543323a Mon Sep 17 00:00:00 2001 From: shikhar Date: Thu, 19 Mar 2026 14:43:25 -0400 Subject: [PATCH 3/3] Revert "fix: make basin state non-exhaustive" This reverts commit bd74f32e508f40db24913d7b5e88b8d8cd6d1443. --- cli/src/main.rs | 2 -- cli/src/tui/ui.rs | 2 -- sdk/src/types.rs | 1 - 3 files changed, 5 deletions(-) diff --git a/cli/src/main.rs b/cli/src/main.rs index ec921cc2..a18da303 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -250,7 +250,6 @@ async fn run() -> Result<(), CliError> { let message = match info.state { BasinState::Active => "✓ Basin created".green().bold(), BasinState::Deleting => "Basin is being deleted".red().bold(), - _ => "Basin state is unknown".yellow().bold(), }; eprintln!("{message}"); } @@ -628,7 +627,6 @@ fn format_basin_state(state: BasinState) -> colored::ColoredString { match state { BasinState::Active => "active".green(), BasinState::Deleting => "deleting".red(), - _ => "unknown".yellow(), } } diff --git a/cli/src/tui/ui.rs b/cli/src/tui/ui.rs index 60a8c2d5..bdc461a2 100644 --- a/cli/src/tui/ui.rs +++ b/cli/src/tui/ui.rs @@ -53,7 +53,6 @@ const BORDER_DIM: Color = GRAY_850; const BORDER_TITLE: Color = GRAY_900; const BADGE_ACTIVE: Color = Color::Rgb(22, 101, 52); -const BADGE_WARNING: Color = Color::Rgb(113, 63, 18); const BADGE_DANGER: Color = Color::Rgb(127, 29, 29); const STAT_MIN: Color = Color::Rgb(96, 165, 250); @@ -2472,7 +2471,6 @@ fn draw_basins(f: &mut Frame, area: Rect, state: &BasinsState) { let (state_text, state_bg) = match basin.state { s2_sdk::types::BasinState::Active => ("Active", BADGE_ACTIVE), s2_sdk::types::BasinState::Deleting => ("Deleting", BADGE_DANGER), - _ => ("Unknown", BADGE_WARNING), }; let scope = basin diff --git a/sdk/src/types.rs b/sdk/src/types.rs index 1824b2de..f3707d1a 100644 --- a/sdk/src/types.rs +++ b/sdk/src/types.rs @@ -1122,7 +1122,6 @@ impl ListAllBasinsInput { } #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] /// Current state of a basin. pub enum BasinState { /// Active