kratactl/cli/zone/
resolve.rs

1use 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}