Files
zosbuilder/components/zinit/zinit-client/examples/basic_usage.rs

51 lines
1.4 KiB
Rust

use anyhow::Result;
use zinit_client::Client;
#[tokio::main]
async fn main() -> Result<()> {
// Create a client using Unix socket transport
let client = Client::unix_socket("/var/run/zinit.sock").await?;
// List all services
let services = client.list().await?;
println!("Services:");
for (name, state) in services {
println!("{}: {}", name, state);
}
// Get a specific service status
let service_name = "example-service";
match client.status(service_name).await {
Ok(status) => {
println!("\nService: {}", status.name);
println!("PID: {}", status.pid);
println!("State: {}", status.state);
println!("Target: {}", status.target);
println!("After:");
for (dep, state) in status.after {
println!(" {}: {}", dep, state);
}
}
Err(e) => eprintln!("Failed to get status: {}", e),
}
// Try to start a service
match client.start(service_name).await {
Ok(_) => println!("\nService started successfully"),
Err(e) => eprintln!("Failed to start service: {}", e),
}
// Get logs for the service
match client.logs(Some(service_name.to_string())).await {
Ok(logs) => {
println!("\nLogs:");
for log in logs {
println!("{}", log);
}
}
Err(e) => eprintln!("Failed to get logs: {}", e),
}
Ok(())
}