You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.1 KiB
46 lines
1.1 KiB
// +build kvdb_etcd |
|
|
|
package cluster |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
|
|
"github.com/lightningnetwork/lnd/kvdb/etcd" |
|
) |
|
|
|
// makeEtcdElector will construct a new etcdLeaderElector. It expects a cancel |
|
// context a unique (in the cluster) LND id and a *etcd.Config as arguments. |
|
func makeEtcdElector(ctx context.Context, args ...interface{}) (LeaderElector, |
|
error) { |
|
|
|
if len(args) != 3 { |
|
return nil, fmt.Errorf("invalid number of arguments to "+ |
|
"cluster.makeEtcdElector(): expected 3, got %v", |
|
len(args)) |
|
} |
|
|
|
id, ok := args[0].(string) |
|
if !ok { |
|
return nil, fmt.Errorf("invalid argument (0) to " + |
|
"cluster.makeEtcdElector(), expected: string") |
|
} |
|
|
|
electionPrefix, ok := args[1].(string) |
|
if !ok { |
|
return nil, fmt.Errorf("invalid argument (1) to " + |
|
"cluster.makeEtcdElector(), expected: string") |
|
} |
|
|
|
etcdCfg, ok := args[2].(*etcd.Config) |
|
if !ok { |
|
return nil, fmt.Errorf("invalid argument (2) to " + |
|
"cluster.makeEtcdElector(), expected: *etcd.Config") |
|
} |
|
|
|
return newEtcdLeaderElector(ctx, id, electionPrefix, etcdCfg) |
|
} |
|
|
|
func init() { |
|
RegisterLeaderElectorFactory(EtcdLeaderElector, makeEtcdElector) |
|
}
|
|
|