Skip to content

Commit d1715dd

Browse files
committed
leader election
1 parent 29b7da4 commit d1715dd

File tree

15 files changed

+1868
-0
lines changed

15 files changed

+1868
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package io.kubernetes.client.examples;
2+
3+
import io.kubernetes.client.ApiClient;
4+
import io.kubernetes.client.Configuration;
5+
import io.kubernetes.client.extended.leaderelection.LeaderElectionConfig;
6+
import io.kubernetes.client.extended.leaderelection.LeaderElector;
7+
import io.kubernetes.client.extended.leaderelection.resourcelock.EndpointsLock;
8+
import io.kubernetes.client.util.Config;
9+
import java.time.Duration;
10+
11+
/**
12+
* A simple example of how to use the Java API
13+
*
14+
* <p>Easiest way to run this: mvn exec:java
15+
* -Dexec.mainClass="io.kubernetes.client.examples.LeaderElectionExample"
16+
*
17+
* <p>From inside $REPO_DIR/examples
18+
*/
19+
public class LeaderElectionExample {
20+
public static void main(String[] args) throws Exception {
21+
ApiClient client = Config.defaultClient();
22+
Configuration.setDefaultApiClient(client);
23+
24+
EndpointsLock lock = new EndpointsLock("kube-system", "leader-election", "foo");
25+
26+
LeaderElectionConfig leaderElectionConfig =
27+
new LeaderElectionConfig(lock, Duration.ofMillis(10000), null, Duration.ofMillis(5000));
28+
LeaderElector leaderElector = new LeaderElector(leaderElectionConfig);
29+
30+
leaderElector.run(
31+
() -> {
32+
System.out.println("Do something when getting leadership.");
33+
},
34+
() -> {
35+
System.out.println("Do something when losing leadership.");
36+
});
37+
}
38+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package io.kubernetes.client.extended.leaderelection;
2+
3+
import java.time.Duration;
4+
5+
public class LeaderElectionConfig {
6+
7+
private Lock lock;
8+
9+
private Duration leaseDuration;
10+
11+
private Duration renewDeadline;
12+
13+
private Duration retryPeriod;
14+
15+
public LeaderElectionConfig() {}
16+
17+
public LeaderElectionConfig(
18+
Lock lock, Duration leaseDuration, Duration renewDeadline, Duration retryPeriod) {
19+
this.lock = lock;
20+
this.leaseDuration = leaseDuration;
21+
this.renewDeadline = renewDeadline;
22+
this.retryPeriod = retryPeriod;
23+
}
24+
25+
public Lock getLock() {
26+
return lock;
27+
}
28+
29+
public void setLock(Lock lock) {
30+
this.lock = lock;
31+
}
32+
33+
public Duration getLeaseDuration() {
34+
return leaseDuration;
35+
}
36+
37+
public void setLeaseDuration(Duration leaseDuration) {
38+
this.leaseDuration = leaseDuration;
39+
}
40+
41+
public Duration getRenewDeadline() {
42+
return renewDeadline;
43+
}
44+
45+
public void setRenewDeadline(Duration renewDeadline) {
46+
this.renewDeadline = renewDeadline;
47+
}
48+
49+
public Duration getRetryPeriod() {
50+
return retryPeriod;
51+
}
52+
53+
public void setRetryPeriod(Duration retryPeriod) {
54+
this.retryPeriod = retryPeriod;
55+
}
56+
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package io.kubernetes.client.extended.leaderelection;
2+
3+
import java.util.Date;
4+
5+
public class LeaderElectionRecord {
6+
7+
private String holderIdentity;
8+
9+
private int leaseDurationSeconds;
10+
11+
private Date acquireTime;
12+
13+
private Date renewTime;
14+
15+
private int leaderTransitions;
16+
17+
public LeaderElectionRecord() {}
18+
19+
public LeaderElectionRecord(
20+
String holderIdentity,
21+
int leaseDurationSeconds,
22+
Date acquireTime,
23+
Date renewTime,
24+
int leaderTransitions) {
25+
this.holderIdentity = holderIdentity;
26+
this.leaseDurationSeconds = leaseDurationSeconds;
27+
this.acquireTime = acquireTime;
28+
this.renewTime = renewTime;
29+
this.leaderTransitions = leaderTransitions;
30+
}
31+
32+
public String getHolderIdentity() {
33+
return holderIdentity;
34+
}
35+
36+
public void setHolderIdentity(String holderIdentity) {
37+
this.holderIdentity = holderIdentity;
38+
}
39+
40+
public int getLeaseDurationSeconds() {
41+
return leaseDurationSeconds;
42+
}
43+
44+
public void setLeaseDurationSeconds(int leaseDurationSeconds) {
45+
this.leaseDurationSeconds = leaseDurationSeconds;
46+
}
47+
48+
public Date getAcquireTime() {
49+
return acquireTime;
50+
}
51+
52+
public void setAcquireTime(Date acquireTime) {
53+
this.acquireTime = acquireTime;
54+
}
55+
56+
public Date getRenewTime() {
57+
return renewTime;
58+
}
59+
60+
public void setRenewTime(Date renewTime) {
61+
this.renewTime = renewTime;
62+
}
63+
64+
public int getLeaderTransitions() {
65+
return leaderTransitions;
66+
}
67+
68+
public void setLeaderTransitions(int leaderTransitions) {
69+
this.leaderTransitions = leaderTransitions;
70+
}
71+
72+
@Override
73+
public boolean equals(Object o) {
74+
if (this == o) return true;
75+
if (!(o instanceof LeaderElectionRecord)) return false;
76+
77+
LeaderElectionRecord that = (LeaderElectionRecord) o;
78+
79+
if (leaseDurationSeconds != that.leaseDurationSeconds) return false;
80+
if (leaderTransitions != that.leaderTransitions) return false;
81+
if (holderIdentity == null) {
82+
if (that.holderIdentity != null) return false;
83+
} else {
84+
if (!holderIdentity.equals(that.holderIdentity)) return false;
85+
}
86+
if (acquireTime == null) {
87+
if (that.acquireTime != null) return false;
88+
} else {
89+
if (!acquireTime.equals(that.acquireTime)) return false;
90+
}
91+
if (renewTime == null) {
92+
return that.holderIdentity == null;
93+
}
94+
return renewTime.equals(that.renewTime);
95+
}
96+
}

0 commit comments

Comments
 (0)