forked from etcdv3/etcd-client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlease.rs
44 lines (37 loc) · 1.17 KB
/
lease.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//! Lease example.
use etcd_client::*;
#[tokio::main]
async fn main() -> Result<(), Error> {
let mut client = Client::connect(["localhost:2379"], None).await?;
// grant a key
let resp = client.lease_grant(60, None).await?;
println!(
"grant a lease with id {:?}, ttl {:?}",
resp.id(),
resp.ttl()
);
let id = resp.id();
// query time to live
let resp = client.lease_time_to_live(id, None).await?;
println!(
"lease({:?}) remain ttl {:?} granted ttl {:?}",
resp.id(),
resp.ttl(),
resp.granted_ttl()
);
// keep alive
let (mut keeper, mut stream) = client.lease_keep_alive(id).await?;
println!("lease {:?} keep alive start", id);
keeper.keep_alive().await?;
if let Some(resp) = stream.message().await? {
println!("lease {:?} keep alive, new ttl {:?}", resp.id(), resp.ttl());
}
// get lease list
let resp = client.leases().await?;
let lease_status = resp.leases();
println!("lease status {:?}", lease_status[0].id());
// revoke a lease
let _resp = client.lease_revoke(id).await?;
println!("revoke a lease with id {:?}", id);
Ok(())
}