use anyhow::Result;
use clap::Parser;
use rnaapi::config::Settings;
use rnaapi::NaClient;
#[tokio::main]
async fn main() -> Result<()> {
let settings = Settings::new()?;
let mut mbpkgid: u32 = 0;
let args = SimpleArgs::parse();
if args.mbpkgid >= 1 {
mbpkgid = args.mbpkgid;
}
let na_client = NaClient::new(settings.api_key, settings.api_url).await;
if mbpkgid > 0 {
let srv = na_client.get_server(mbpkgid).await?;
println!(
"Package: {}, fqdn: {}, mbpkgid: {}",
srv.domu_package, srv.fqdn, srv.mbpkgid
);
println!();
let jobs = na_client.get_jobs(mbpkgid).await?;
for job in jobs {
println!(
"Inserted: {}, Status: {}, command: {}",
job.ts_insert, job.status, job.command
);
}
println!();
let ipv4s = na_client.get_ipv4(mbpkgid).await?;
for ipv4 in ipv4s {
println!(
"Reverse: {}, IP: {}, Gateway: {}",
ipv4.reverse, ipv4.ip, ipv4.gateway
);
}
println!();
let ipv6s = na_client.get_ipv6(mbpkgid).await?;
for ipv6 in ipv6s {
println!(
"Reverse: {}, IP: {}, Gateway: {}",
ipv6.reverse, ipv6.ip, ipv6.gateway
);
}
println!();
let stat = na_client.get_status(mbpkgid).await?;
println!("Status: {}", stat.status);
} else {
let srvrs = na_client.get_servers().await?;
for srvr in srvrs {
println!("fqdn: {}, mbpkgid: {}", srvr.fqdn, srvr.mbpkgid);
}
println!();
let locs = na_client.get_locations().await?;
for loc in locs {
println!("Name: {}, Continent: {}", loc.name, loc.continent);
}
println!();
let pkgs = na_client.get_packages().await?;
for pkg in pkgs {
println!("Name: {}, Continent: {}", pkg.name, pkg.city);
}
println!();
let imgs = na_client.get_images().await?;
for img in imgs {
println!(
"ID: {}, Size: {}, Name: {}",
img.id,
img.size.unwrap_or("null".to_owned()),
img.os.unwrap_or("null".to_owned())
);
}
}
Ok(())
}
#[derive(Parser, Debug)]
#[command(version, about)]
struct SimpleArgs {
#[arg(short, long, default_value_t = 0)]
mbpkgid: u32,
}