Skip to content

Commit 93a260a

Browse files
metacosmcsviri
authored andcommitted
refactor: move identity generation to configuration
1 parent 0cd2a90 commit 93a260a

File tree

2 files changed

+25
-22
lines changed

2 files changed

+25
-22
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/LeaderElectionManager.java

+8-18
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package io.javaoperatorsdk.operator;
22

3-
import java.util.UUID;
43
import java.util.concurrent.CompletableFuture;
54

65
import org.slf4j.Logger;
@@ -16,7 +15,7 @@
1615
import io.javaoperatorsdk.operator.api.config.ConfigurationServiceProvider;
1716
import io.javaoperatorsdk.operator.api.config.LeaderElectionConfiguration;
1817

19-
public class LeaderElectionManager {
18+
class LeaderElectionManager {
2019

2120
private static final Logger log = LoggerFactory.getLogger(LeaderElectionManager.class);
2221

@@ -30,25 +29,24 @@ public LeaderElectionManager(ControllerManager controllerManager) {
3029
}
3130

3231
public void init(LeaderElectionConfiguration config, KubernetesClient client) {
33-
this.identity = identity(config);
32+
this.identity = config.getIdentity();
3433
Lock lock = new LeaseLock(config.getLeaseNamespace(), config.getLeaseName(), identity);
3534
// releaseOnCancel is not used in the underlying implementation
3635
leaderElector = new LeaderElectorBuilder(client,
3736
ConfigurationServiceProvider.instance().getExecutorService())
38-
.withConfig(
39-
new LeaderElectionConfig(lock, config.getLeaseDuration(), config.getRenewDeadline(),
40-
config.getRetryPeriod(), leaderCallbacks(), true, config.getLeaseName()))
41-
.build();
37+
.withConfig(
38+
new LeaderElectionConfig(lock, config.getLeaseDuration(), config.getRenewDeadline(),
39+
config.getRetryPeriod(), leaderCallbacks(), true, config.getLeaseName()))
40+
.build();
4241
}
4342

4443
public boolean isLeaderElectionOn() {
4544
return leaderElector != null;
4645
}
4746

4847
private LeaderCallbacks leaderCallbacks() {
49-
return new LeaderCallbacks(this::startLeading, this::stopLeading, leader -> {
50-
log.info("New leader with identity: {}", leader);
51-
});
48+
return new LeaderCallbacks(this::startLeading, this::stopLeading,
49+
leader -> log.info("New leader with identity: {}", leader));
5250
}
5351

5452
private void startLeading() {
@@ -63,14 +61,6 @@ private void stopLeading() {
6361
System.exit(1);
6462
}
6563

66-
private String identity(LeaderElectionConfiguration config) {
67-
String id = config.getIdentity().orElse(System.getenv("HOSTNAME"));
68-
if (id == null || id.isBlank()) {
69-
id = UUID.randomUUID().toString();
70-
}
71-
return id;
72-
}
73-
7464
public void start() {
7565
if (isLeaderElectionOn()) {
7666
leaderElectionFuture = leaderElector.start();

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/LeaderElectionConfiguration.java

+17-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package io.javaoperatorsdk.operator.api.config;
22

33
import java.time.Duration;
4-
import java.util.Optional;
4+
import java.util.UUID;
5+
6+
import io.fabric8.zjsonpatch.internal.guava.Strings;
57

68
public class LeaderElectionConfiguration {
79

@@ -11,7 +13,7 @@ public class LeaderElectionConfiguration {
1113

1214
private final String leaseName;
1315
private final String leaseNamespace;
14-
private final String identity;
16+
private String identity;
1517

1618
private final Duration leaseDuration;
1719
private final Duration renewDeadline;
@@ -70,7 +72,18 @@ public Duration getRetryPeriod() {
7072
return retryPeriod;
7173
}
7274

73-
public Optional<String> getIdentity() {
74-
return Optional.ofNullable(identity);
75+
public String getIdentity() {
76+
if (identity == null) {
77+
identity = System.getenv("HOSTNAME");
78+
if (Strings.isNullOrEmpty(identity)) {
79+
identity = UUID.randomUUID().toString();
80+
} else {
81+
identity = identity.trim();
82+
if (identity.isBlank()) {
83+
identity = UUID.randomUUID().toString();
84+
}
85+
}
86+
}
87+
return identity;
7588
}
7689
}

0 commit comments

Comments
 (0)