m/n/core/{curator,cluster}: refactor against new Consensus API
This updates the Curator and the Cluster Manager to use the new
Consensus API, notably to use JoinParameters and ServiceHandle.Watch.
Using JoinParameters end-to-end requires piping them through a node's
roles. For this we create a new ConsensusMember role and replicate all
the data from JoinParameters there.
We also move a whole bunch of logic that used to live in the Cluster
Manager's Status object away from it. Instead, now the Consensus
ServiceHandle is exposed directly to downstream users, providing the
same functionality.
Change-Id: I8cfa247011554553836019f60ea172dd6069f49c
Reviewed-on: https://review.monogon.dev/c/monogon/+/522
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/node/core/cluster/cluster.go b/metropolis/node/core/cluster/cluster.go
index fe29abd..ea3bfee 100644
--- a/metropolis/node/core/cluster/cluster.go
+++ b/metropolis/node/core/cluster/cluster.go
@@ -120,12 +120,17 @@
switch inner := params.Cluster.(type) {
case *apb.NodeParameters_ClusterBootstrap_:
- return m.bootstrap(ctx, inner.ClusterBootstrap)
+ err = m.bootstrap(ctx, inner.ClusterBootstrap)
case *apb.NodeParameters_ClusterRegister_:
- return m.register(ctx, inner.ClusterRegister)
+ err = m.register(ctx, inner.ClusterRegister)
default:
- return fmt.Errorf("node parameters misconfigured: neither cluster_bootstrap nor cluster_register set")
+ err = fmt.Errorf("node parameters misconfigured: neither cluster_bootstrap nor cluster_register set")
}
+
+ if err == nil {
+ supervisor.Logger(ctx).Info("Cluster enrolment done.")
+ }
+ return err
}
func (m *Manager) nodeParamsFWCFG(ctx context.Context) (*apb.NodeParameters, error) {