etcd-rs
etcd-rs copied to clipboard
etcd client for rust
etcd client for Rust
An etcd (API v3) client for Rust backed by tokio and tonic.
Supported APIs
- KV
- [x] Put
- [x] Range
- [x] Delete
- [x] Transaction
- [x] Compact
- Lease
- [x] Grant
- [x] Revoke
- [x] KeepAlive
- [x] TimeToLive
- Watch
- [x] WatchCreate
- [x] WatchCancel
- Auth
- [x] Authenticate
- [ ] RoleAdd
- [ ] RoleGrantPermission
- [ ] UserAdd
- [ ] UserGrantRole
- [ ] AuthEnable
- [ ] AuthDisable
- Cluster
- [x] MemberAdd
- [x] MemberRemove
- [x] MemberUpdate
- [x] MemberList
- Maintenance
- [ ] Alarm
- [ ] Status
- [ ] Defragment
- [ ] Hash
- [ ] Snapshot
- [ ] MoveLeader
Usage
Add following dependencies in your project cargo.toml
:
[dependencies]
etcd-rs = "1.0.0-alpha.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.