Skip to content
This repository was archived by the owner on Mar 29, 2024. It is now read-only.

zarvd/etcd-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

9ba8ecf · Apr 19, 2023
Apr 19, 2023
Mar 12, 2022
Mar 12, 2022
Apr 19, 2023
Mar 9, 2022
Apr 19, 2023
Mar 12, 2022
Apr 19, 2023
Sep 30, 2020
Apr 14, 2022
Apr 11, 2023
Feb 25, 2019
Apr 19, 2023
Apr 19, 2023
Jan 3, 2022

Repository files navigation

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.