2024-03-23 09:48:53 +00:00
|
|
|
use anyhow::Result;
|
|
|
|
use clap::Parser;
|
2024-08-13 23:17:47 -07:00
|
|
|
use krata::v1::control::{control_service_client::ControlServiceClient, ResolveZoneIdRequest};
|
2024-03-23 09:48:53 +00:00
|
|
|
|
|
|
|
use tonic::{transport::Channel, Request};
|
|
|
|
|
|
|
|
#[derive(Parser)]
|
2024-07-18 20:47:18 -07:00
|
|
|
#[command(about = "Resolve a zone name to a uuid")]
|
2024-07-18 23:13:29 -07:00
|
|
|
pub struct ZoneResolveCommand {
|
2024-07-18 20:47:18 -07:00
|
|
|
#[arg(help = "Zone name")]
|
|
|
|
zone: String,
|
2024-03-23 09:48:53 +00:00
|
|
|
}
|
|
|
|
|
2024-07-18 23:13:29 -07:00
|
|
|
impl ZoneResolveCommand {
|
2024-03-23 09:48:53 +00:00
|
|
|
pub async fn run(self, mut client: ControlServiceClient<Channel>) -> Result<()> {
|
|
|
|
let reply = client
|
2024-08-13 23:17:47 -07:00
|
|
|
.resolve_zone_id(Request::new(ResolveZoneIdRequest {
|
2024-07-18 20:47:18 -07:00
|
|
|
name: self.zone.clone(),
|
2024-03-23 09:48:53 +00:00
|
|
|
}))
|
|
|
|
.await?
|
|
|
|
.into_inner();
|
2024-08-13 23:17:47 -07:00
|
|
|
if !reply.zone_id.is_empty() {
|
|
|
|
println!("{}", reply.zone_id);
|
2024-03-23 09:48:53 +00:00
|
|
|
} else {
|
|
|
|
std::process::exit(1);
|
|
|
|
}
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
}
|