rust-extensions/crates/shim-protos
Zhang Tianyang 0a33f3e867 Runc shim implementation
Implement shim cli commands and some basic task APIs to run a runc container

Co-authored-by: Feng Shaobao fshb1988@gmail.com
Co-authored-by: Zhang Tianyang burning9699@gmail.com
Co-authored-by: Yu Qitao yuqitao1024@qq.com

Signed-off-by: Zhang Tianyang <burning9699@gmail.com>
2022-02-17 23:02:14 +08:00
..
examples Update ttrpc-rust to 0.6 2022-01-19 08:47:43 -08:00
src Runc shim implementation 2022-02-17 23:02:14 +08:00
tests Update ttrpc-rust to 0.6 2022-01-19 08:47:43 -08:00
vendor Runc shim implementation 2022-02-17 23:02:14 +08:00
Cargo.toml Merge pull request #17 from mxpv/ttrpc 2022-01-20 10:30:30 -08:00
README.md Update README 2022-02-11 10:10:42 -08:00
build.rs Runc shim implementation 2022-02-17 23:02:14 +08:00

README.md

Shim protos and client for containerd

Crates.io docs.rs Crates.io CI

TTRPC bindings for containerd's shim events and interfaces.

Design

The containerd-shim-protos crate provides Protobuf message and TTRPC service definitions for the Containerd shim v2 protocol.

The message and service definitions are auto-generated from protobuf source files under vendor/ by using ttrpc-codegen. So please do not edit those auto-generated source files. If upgrading/modification is needed, please follow the steps:

  • Synchronize the latest protobuf source files from the upstream projects into directory 'vendor/'.
  • Re-generate the source files by cargo build --features=generate_bindings.
  • Commit the synchronized protobuf source files and auto-generated source files, keeping them in synchronization.

Usage

Add containerd-shim-client as a dependency in your Cargo.toml

[dependencies]
containerd-shim-protos = "0.1"

Basic client code looks as follows:

let client = client::Client::connect(socket_path)?;
let task_client = client::TaskClient::new(client);

let context = client::ttrpc::context::with_timeout(0);

let req = client::api::ConnectRequest {
    id: pid,
    ..Default::default()
};

let resp = task_client.connect(context, &req)?;

Example

The way to build the TTRPC client connect example:

$ cargo build --example connect
$ sudo ./connect unix:///containerd-shim/shim_socket_path.sock