cri_api/
lib.rs

1//!
2//! ## Examples
3//!
4//! Connecting over TCP:
5//!
6//! ```no_run
7//! use cri_api::v1::runtime_service_client::RuntimeServiceClient;
8//! use cri_api::v1::ListContainersRequest;
9//! use tokio::main;
10//!
11//! #[tokio::main]
12//! async fn main() {
13//!     let mut client = RuntimeServiceClient::connect("http://[::1]:50051")
14//!         .await
15//!         .expect("Could not create client.");
16//!
17//!     let request = tonic::Request::new(ListContainersRequest { filter: None });
18//!     let response = client
19//!         .list_containers(request)
20//!         .await
21//!         .expect("Request failed.");
22//!     println!("{:?}", response);
23//! }
24//! ```
25//!
26//! Connecting to a Unix domain socket:
27//!
28//! ```no_run
29//! use std::convert::TryFrom;
30//! use tokio::main;
31//!
32//! use cri_api::v1::runtime_service_client::RuntimeServiceClient;
33//! use tokio::net::UnixStream;
34//! use tonic::transport::{Channel, Endpoint, Uri};
35//! use tower::service_fn;
36//!
37//! #[tokio::main]
38//! async fn main() {
39//!     let path = "/run/containerd/containerd.sock";
40//!
41//!     let channel = Endpoint::try_from("http://[::]")
42//!         .unwrap()
43//!         .connect_with_connector(service_fn(move |_: Uri| UnixStream::connect(path)))
44//!         .await
45//!         .expect("Could not create client.");
46//!
47//!     let mut client = RuntimeServiceClient::new(channel);
48//! }
49//! ```
50//!
51//! List sandboxes
52//!
53//! ```no_run
54//! use cri_api::v1::{ListPodSandboxRequest};
55//! use cri_api::v1::runtime_service_client::RuntimeServiceClient;
56//! use tokio::net::UnixStream;
57//! use tonic::transport::{Endpoint, Uri};
58//! use tower::service_fn;
59//! use tokio::main;
60//!
61//! #[tokio::main]
62//! async fn main() {
63//!
64//!    let path = "/run/containerd/containerd.sock";
65//!    let channel = Endpoint::try_from("http://[::]")
66//!         .unwrap()
67//!         .connect_with_connector(service_fn(move |_: Uri| UnixStream::connect(path)))
68//!         .await
69//!         .expect("Could not create client.");
70//!
71//!     let mut client = RuntimeServiceClient::new(channel);
72//!
73//!     let request = ListPodSandboxRequest {
74//!         filter: None
75//!     };
76//!
77//!     let response =  client.list_pod_sandbox(request).await;
78//!     println!("{:#?}", response);
79//! }
80//! ```
81//!
82//! List containers
83//!
84//! ```no_run
85//! use cri_api::v1::{ListContainersRequest};
86//! use cri_api::v1::runtime_service_client::RuntimeServiceClient;
87//! use tokio::net::UnixStream;
88//! use tonic::transport::{Endpoint, Uri};
89//! use tower::service_fn;
90//! use tokio::main;
91//!
92//! #[tokio::main]
93//! async fn main() {
94//!     let path = "/run/containerd/containerd.sock";
95//!     let channel = Endpoint::try_from("http://[::]")
96//!         .unwrap()
97//!         .connect_with_connector(service_fn(move |_: Uri| UnixStream::connect(path)))
98//!         .await
99//!         .expect("Could not create client.");
100//!
101//!     let mut client = RuntimeServiceClient::new(channel);
102//!
103//!     let request = ListContainersRequest {
104//!         filter: None
105//!     };
106//!
107//!     let response =  client.list_containers(request).await;
108//!     println!("{:#?}", response);
109//! }
110//! ```
111//!
112//! Container Stats
113//!
114//! ```no_run
115//! use cri_api::v1::{ListContainersRequest, ContainerStatsRequest};
116//! use cri_api::v1::runtime_service_client::RuntimeServiceClient;
117//! use tokio::net::UnixStream;
118//! use tonic::transport::{Endpoint, Uri};
119//! use tower::service_fn;
120//! use tokio::main;
121//!
122//! #[tokio::main]
123//! async fn main() {
124//!     let path = "/run/containerd/containerd.sock";
125//!     let channel = Endpoint::try_from("http://[::]")
126//!         .unwrap()
127//!         .connect_with_connector(service_fn(move |_: Uri| UnixStream::connect(path)))
128//!         .await
129//!         .expect("Could not create client.");
130//!
131//!     let mut client = RuntimeServiceClient::new(channel);
132//!
133//!     let containers = client.list_containers(
134//!         ListContainersRequest::default()).await.expect("REASON").into_inner();
135//!     for container in containers.containers {
136//!         let stats = client.container_stats(ContainerStatsRequest {
137//!             container_id: container.id.clone(),
138//!         }).await.expect("REASON").into_inner();
139//!
140//!         println!("Container ID: {:?}", container.id);
141//!         println!("Usage: {:?}", stats);
142//!
143//!     }
144//! }
145//! ```
146
147/**
148 * Copyright (2024, ) Institute of Software, Chinese Academy of Sciences
149 * since 0.1.1
150 **/
151
152pub mod v1 {
153    //! API version v1, [original Protocol Buffers file](https://github.com/kubernetes/cri-api/tree/7d8ade91836419c9dd49d059bda1fe4a7dc283f5/pkg/apis/runtime/v1/api.proto).
154    tonic::include_proto!("runtime.v1");
155}
156