talos_rust_client/
lib.rs

1//! Rust gRPC client for SideroLabs Talos
2//!
3//! This crate provides a Rust client for the Talos gRPC API with mTLS support.
4//!
5//! # Example
6//!
7//! ```no_run
8//! use talos_rust_client::TalosConnector;
9//!
10//! #[tokio::main]
11//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
12//!     let ca = std::fs::read("ca.crt")?;
13//!     let cert = std::fs::read("client.crt")?;
14//!     let key = std::fs::read("client.key")?;
15//!
16//!     let channel = TalosConnector::new("https://192.168.1.100:50000")
17//!         .ca_pem(ca)
18//!         .cert_pem(cert)
19//!         .key_pem(key)
20//!         .connect()
21//!         .await?;
22//!
23//!     Ok(())
24//! }
25//! ```
26
27#![warn(missing_docs)]
28
29pub mod connector;
30pub mod error;
31
32#[cfg(feature = "talosconfig")]
33pub mod talosconfig;
34
35// Include generated proto modules
36#[allow(missing_docs)]
37#[allow(clippy::all)]
38#[allow(rustdoc::invalid_rust_codeblocks)]
39#[allow(rustdoc::broken_intra_doc_links)]
40#[allow(rustdoc::bare_urls)]
41#[doc(hidden)]
42pub mod generated {
43    include!("generated/mod.rs");
44}
45
46// Re-export proto modules at crate root
47pub use generated::securityapi as security;
48pub use generated::{cluster, common, inspect, machine, storage, time};
49
50pub use connector::TalosConnector;
51pub use error::{Error, Result};
52
53// Re-export commonly used client types
54pub use cluster::cluster_service_client::ClusterServiceClient;
55pub use inspect::inspect_service_client::InspectServiceClient;
56pub use machine::machine_service_client::MachineServiceClient;
57pub use security::security_service_client::SecurityServiceClient;
58pub use storage::storage_service_client::StorageServiceClient;
59pub use time::time_service_client::TimeServiceClient;
60
61// Re-export tonic types for convenience
62pub use tonic;
63pub use tonic::transport::Channel;