m/n/core/curator: implement leader election
This implements the leader election functionality subset of the curator.
It does not yet implement any business logic, just the switchover
between acting as a leader and a follower.
Test plan: implements an integration test for the leader election with
an in-memory etcd cluster.
Change-Id: Id77ecc35a9f2b18e716fffd3caf2de193982d676
Reviewed-on: https://review.monogon.dev/c/monogon/+/184
Reviewed-by: Lorenz Brun <lorenz@nexantic.com>
diff --git a/metropolis/node/core/cluster/manager.go b/metropolis/node/core/cluster/manager.go
index eede40f..cc98d8e 100644
--- a/metropolis/node/core/cluster/manager.go
+++ b/metropolis/node/core/cluster/manager.go
@@ -53,6 +53,7 @@
const (
ConsensusUserKubernetesPKI ConsensusUser = "kubernetes-pki"
+ ConsensusUserCurator ConsensusUser = "curator"
)
// ConsensusClient returns an etcd/consensus client for a given ConsensusUser.
@@ -73,6 +74,7 @@
// casting to ConsensusUser from an arbitrary string.
switch user {
case ConsensusUserKubernetesPKI:
+ case ConsensusUserCurator:
default:
return nil, fmt.Errorf("unknown ConsensusUser %q", user)
}