From 1a68fb4b098bc7390a1dee7bfd91d640aad39ae6 Mon Sep 17 00:00:00 2001 From: Lee Reinhardt Date: Thu, 12 Mar 2026 10:59:14 -0600 Subject: [PATCH] fix: remove org slug references, use org id for all api paths --- src/commands/connect/auth.rs | 18 ++------------ src/commands/connect/client.rs | 1 - src/commands/connect/init.rs | 21 +++++++--------- src/commands/connect/orgs.rs | 18 +++++--------- src/main.rs | 44 +++++++++++++++++----------------- 5 files changed, 39 insertions(+), 63 deletions(-) diff --git a/src/commands/connect/auth.rs b/src/commands/connect/auth.rs index 01c42bf..6d0025d 100644 --- a/src/commands/connect/auth.rs +++ b/src/commands/connect/auth.rs @@ -203,26 +203,12 @@ impl ConnectAuthStatusCommand { if !me_full.organizations.is_empty() { println!("\nOrganizations:"); - // Calculate column widths - let max_slug = me_full - .organizations - .iter() - .map(|o| o.slug.len()) - .max() - .unwrap_or(0); for org in &me_full.organizations { - println!( - " {: { diff --git a/src/commands/connect/client.rs b/src/commands/connect/client.rs index 4a377cb..0e7ccaf 100644 --- a/src/commands/connect/client.rs +++ b/src/commands/connect/client.rs @@ -88,7 +88,6 @@ pub struct MeResponse { pub struct OrgInfo { pub id: String, pub name: String, - pub slug: String, pub role: String, } diff --git a/src/commands/connect/init.rs b/src/commands/connect/init.rs index 439b674..8471d04 100644 --- a/src/commands/connect/init.rs +++ b/src/commands/connect/init.rs @@ -36,7 +36,7 @@ impl ConnectInitCommand { // Non-interactive: use provided org me.organizations .iter() - .find(|o| o.slug == *org_flag || o.id == *org_flag) + .find(|o| o.id == *org_flag) .cloned() .ok_or_else(|| { anyhow::anyhow!( @@ -44,7 +44,7 @@ impl ConnectInitCommand { org_flag, me.organizations .iter() - .map(|o| o.slug.as_str()) + .map(|o| o.name.as_str()) .collect::>() .join(", ") ) @@ -52,7 +52,7 @@ impl ConnectInitCommand { } else if me.organizations.len() == 1 { let org = me.organizations[0].clone(); print_info( - &format!("Auto-selected organization: {} ({})", org.name, org.slug), + &format!("Auto-selected organization: {} ({})", org.name, org.id), OutputLevel::Normal, ); org @@ -61,12 +61,12 @@ impl ConnectInitCommand { }; // 3. Fetch projects for selected org - let projects = client.list_projects(&selected_org.slug).await?; + let projects = client.list_projects(&selected_org.id).await?; if projects.is_empty() { anyhow::bail!( "No projects found in org '{}'. Create a project in the web UI first.", - selected_org.slug + selected_org.name ); } @@ -100,7 +100,7 @@ impl ConnectInitCommand { // 5. Fetch server key print_info("Fetching server signing key...", OutputLevel::Normal); - let server_key = client.get_tuf_server_key(&selected_org.slug).await?; + let server_key = client.get_tuf_server_key(&selected_org.id).await?; // 6. Write to avocado.yaml let config_path = Path::new(&self.config_path); @@ -113,7 +113,7 @@ impl ConnectInitCommand { config_edit::set_connect_fields( config_path, - &selected_org.slug, + &selected_org.id, &selected_project.id, &server_key.public_key_hex, )?; @@ -132,10 +132,7 @@ impl ConnectInitCommand { println!(); print_success("Connect configured:", OutputLevel::Normal); - println!( - " Org: {} ({})", - selected_org.name, selected_org.slug - ); + println!(" Org: {} ({})", selected_org.name, selected_org.id); println!( " Project: {} (id: {})", selected_project.name, selected_project.id @@ -156,7 +153,7 @@ fn prompt_select_org(orgs: &[OrgInfo]) -> Result { " [{}] {} ({}) - role: {}", i + 1, org.name, - org.slug, + org.id, org.role ); } diff --git a/src/commands/connect/orgs.rs b/src/commands/connect/orgs.rs index ba5eda7..9b2e9db 100644 --- a/src/commands/connect/orgs.rs +++ b/src/commands/connect/orgs.rs @@ -21,12 +21,6 @@ impl ConnectOrgsListCommand { return Ok(()); } - let max_slug = me - .organizations - .iter() - .map(|o| o.slug.len()) - .max() - .unwrap_or(0); let max_name = me .organizations .iter() @@ -35,20 +29,20 @@ impl ConnectOrgsListCommand { .unwrap_or(0); println!( - "{:, /// Project name or ID (skip interactive prompt) @@ -478,7 +478,7 @@ enum ConnectCommands { }, /// Upload current runtime build to the Connect platform Upload { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Project ID (or set connect.project in avocado.yaml) @@ -507,7 +507,7 @@ enum ConnectCommands { }, /// Retrieve the Connect server's TUF signing public key ServerKey { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Path to avocado.yaml configuration file @@ -533,7 +533,7 @@ enum ConnectCommands { enum ConnectTrustCommands { /// Show fleet trust status for an organization Status { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Path to avocado.yaml configuration file @@ -548,7 +548,7 @@ enum ConnectTrustCommands { /// Name of the local root signing key to use #[arg(long)] key: String, - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Path to avocado.yaml configuration file @@ -563,7 +563,7 @@ enum ConnectTrustCommands { /// Name of the local root signing key (required at security level 2) #[arg(long)] key: Option, - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Path to avocado.yaml configuration file @@ -585,7 +585,7 @@ enum ConnectKeysCommands { /// Name of the local signing key (from 'avocado signing-keys list') #[arg(long)] key: String, - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Path to avocado.yaml configuration file @@ -599,7 +599,7 @@ enum ConnectKeysCommands { Approve { /// Key ID of the staged key to approve keyid: String, - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Path to avocado.yaml configuration file @@ -611,7 +611,7 @@ enum ConnectKeysCommands { }, /// List delegate keys registered with the server List { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Filter by key type: content or root @@ -628,7 +628,7 @@ enum ConnectKeysCommands { Retire { /// Key ID of the staged key to discard keyid: String, - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Path to avocado.yaml configuration file @@ -654,7 +654,7 @@ enum ConnectOrgsCommands { enum ConnectProjectsCommands { /// List projects in an organization List { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Path to avocado.yaml configuration file @@ -666,7 +666,7 @@ enum ConnectProjectsCommands { }, /// Create a new project Create { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Project name @@ -684,7 +684,7 @@ enum ConnectProjectsCommands { }, /// Delete a project Delete { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Project ID to delete @@ -706,7 +706,7 @@ enum ConnectProjectsCommands { enum ConnectDevicesCommands { /// List devices in an organization List { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Path to avocado.yaml configuration file @@ -718,7 +718,7 @@ enum ConnectDevicesCommands { }, /// Create a new device Create { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Device name @@ -736,7 +736,7 @@ enum ConnectDevicesCommands { }, /// Delete a device Delete { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Device ID to delete @@ -758,7 +758,7 @@ enum ConnectDevicesCommands { enum ConnectCohortsCommands { /// List cohorts in a project List { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Project ID (or set connect.project in avocado.yaml) @@ -773,7 +773,7 @@ enum ConnectCohortsCommands { }, /// Create a new cohort Create { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Project ID (or set connect.project in avocado.yaml) @@ -794,7 +794,7 @@ enum ConnectCohortsCommands { }, /// Delete a cohort Delete { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Project ID (or set connect.project in avocado.yaml) @@ -819,7 +819,7 @@ enum ConnectCohortsCommands { enum ConnectClaimTokensCommands { /// List claim tokens in an organization List { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Path to avocado.yaml configuration file @@ -831,7 +831,7 @@ enum ConnectClaimTokensCommands { }, /// Create a new claim token Create { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Token name @@ -855,7 +855,7 @@ enum ConnectClaimTokensCommands { }, /// Delete a claim token Delete { - /// Organization slug or ID (or set connect.org in avocado.yaml) + /// Organization ID (or set connect.org in avocado.yaml) #[arg(long)] org: Option, /// Claim token ID to delete