forked from etcdv3/etcd-client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcluster.rs
42 lines (36 loc) · 1.15 KB
/
cluster.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
//! Cluster example.
use etcd_client::*;
#[tokio::main]
async fn main() -> Result<(), Error> {
let mut client = Client::connect(["localhost:2379"], None).await?;
// add a member
let resp = client.member_add(["localhost:2520"], None).await?;
println!("add one member with cluster is as {:?}", resp.member());
let member = resp.member();
let id = member.unwrap().id();
// promote a learner
let resp = client.member_promote(id).await?;
println!("member list with current cluster is {:?}", resp.members());
// list all members
let resp = client.member_list().await?;
let member_list = resp.members();
println!(
"member id is {:?}, url is {:?}",
member_list[0].id(),
member_list[0].peer_urls()
);
println!(
"member id is {:?}, url is {:?}",
member_list[1].id(),
member_list[1].peer_urls()
);
println!(
"member id is {:?}, url is {:?}",
member_list[2].id(),
member_list[2].peer_urls()
);
// remove the added member
let _resp = client.member_remove(id).await?;
println!("remove a member with id {:?}", id);
Ok(())
}