etcd-rs

Crates.ioetcd-rs
lib.rsetcd-rs
version1.0.1
sourcesrc
created_at2018-11-27 07:21:46.536743
updated_at2023-04-10 15:40:44.35622
descriptionetcd client for rust
homepagehttps://github.com/lodrem/etcd-rs
repositoryhttps://github.com/lodrem/etcd-rs
max_upload_size
id98886
size177,019
Jialun Cai (zarvd)

documentation

https://docs.rs/etcd-rs

README

etcd client for Rust

github crates.io docs.rs build status dependency status

An etcd (API v3) client for Rust backed by tokio and tonic.

Supported APIs

  • KV
    • Put
    • Range
    • Delete
    • Transaction
    • Compact
  • Lease
    • Grant
    • Revoke
    • KeepAlive
    • TimeToLive
  • Watch
    • WatchCreate
    • WatchCancel
  • Auth
    • Authenticate
    • RoleAdd
    • RoleGrantPermission
    • UserAdd
    • UserGrantRole
    • AuthEnable
    • AuthDisable
  • Cluster
    • MemberAdd
    • MemberRemove
    • MemberUpdate
    • MemberList
  • Maintenance
    • Alarm
    • Status
    • Defragment
    • Hash
    • Snapshot
    • MoveLeader

Usage

Add following dependencies in your project cargo.toml:

[dependencies]
etcd-rs = "1.0"
use etcd_rs::Client;

#[tokio::main]
async fn main() {
    let cli = Client::connect(ClientConfig {
        endpoints: [
            "http://127.0.0.1:12379",
            "http://127.0.0.1:22379",
            "http://127.0.0.1:32379",
        ],
        ..Default::default()
    }).await;
    
    cli.put(("foo", "bar")).await.expect("put kv");
    
    let kvs = cli.get("foo").await.expect("get kv").take_kvs();
    assert_eq!(kvs.len(), 1);
}

Development

requirements:

  • Makefile
  • docker
  • docker-compose

Start local etcd cluster

make setup-etcd-cluster

stop cluster

make teardown-etcd-cluster

Run tests

make test

for specified case:

TEST_CASE=test_put_error make test-one

License

This project is licensed under the MIT license.

Commit count: 207

cargo fmt