mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-09-08 14:57:38 +02:00
cluster: add etcd based leader elector and factory
This commit is contained in:
38
lncfg/cluster.go
Normal file
38
lncfg/cluster.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package lncfg
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/lightningnetwork/lnd/cluster"
|
||||
)
|
||||
|
||||
// Cluster holds configuration for clustered LND.
|
||||
type Cluster struct {
|
||||
LeaderElector string `long:"leader-elector" choice:"etcd" description:"Leader elector to use. Valid values: \"etcd\"."`
|
||||
|
||||
EtcdElectionPrefix string `long:"etcd-election-prefix" description:"Election key prefix when using etcd leader elector."`
|
||||
}
|
||||
|
||||
// DefaultCluster creates and returns a new default DB config.
|
||||
func DefaultCluster() *Cluster {
|
||||
return &Cluster{}
|
||||
}
|
||||
|
||||
// Validate validates the Cluster config.
|
||||
func (c *Cluster) Validate() error {
|
||||
switch c.LeaderElector {
|
||||
case cluster.EtcdLeaderElector:
|
||||
if c.EtcdElectionPrefix == "" {
|
||||
return fmt.Errorf("etcd-election-prefix must be set")
|
||||
}
|
||||
|
||||
default:
|
||||
return fmt.Errorf("unknown leader elector, valid values are: "+
|
||||
"\"%v\"", cluster.EtcdLeaderElector)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Compile-time constraint to ensure Workers implements the Validator interface.
|
||||
var _ Validator = (*Cluster)(nil)
|
Reference in New Issue
Block a user