kratactl/cli/zone/
resolve.rs1use anyhow::Result;
2use clap::Parser;
3use krata::v1::control::{control_service_client::ControlServiceClient, ResolveZoneIdRequest};
4
5use tonic::{transport::Channel, Request};
6
7#[derive(Parser)]
8#[command(about = "Resolve a zone name to a uuid")]
9pub struct ZoneResolveCommand {
10 #[arg(help = "Zone name")]
11 zone: String,
12}
13
14impl ZoneResolveCommand {
15 pub async fn run(self, mut client: ControlServiceClient<Channel>) -> Result<()> {
16 let reply = client
17 .resolve_zone_id(Request::new(ResolveZoneIdRequest {
18 name: self.zone.clone(),
19 }))
20 .await?
21 .into_inner();
22 if !reply.zone_id.is_empty() {
23 println!("{}", reply.zone_id);
24 } else {
25 std::process::exit(1);
26 }
27 Ok(())
28 }
29}