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