diff --git a/channeldb/kvdb/config.go b/channeldb/kvdb/config.go index ccd1c1d75..9ea50adc0 100644 --- a/channeldb/kvdb/config.go +++ b/channeldb/kvdb/config.go @@ -30,6 +30,8 @@ type BoltConfig struct { // EtcdConfig holds etcd configuration. type EtcdConfig struct { + Embedded bool `long:"embedded" description:"Use embedded etcd instance instead of the external one."` + Host string `long:"host" description:"Etcd database host."` User string `long:"user" description:"Etcd database user."` diff --git a/lncfg/db.go b/lncfg/db.go index 2f0eade59..63b58c469 100644 --- a/lncfg/db.go +++ b/lncfg/db.go @@ -38,7 +38,7 @@ func (db *DB) Validate() error { case BoltBackend: case EtcdBackend: - if db.Etcd.Host == "" { + if !db.Etcd.Embedded && db.Etcd.Host == "" { return fmt.Errorf("etcd host must be set") } @@ -76,8 +76,12 @@ func (db *DB) GetBackends(ctx context.Context, dbPath string, ) if db.Backend == EtcdBackend { - // Prefix will separate key/values in the db. - remoteDB, err = kvdb.GetEtcdBackend(ctx, networkName, db.Etcd) + if db.Etcd.Embedded { + remoteDB, _, err = kvdb.GetEtcdTestBackend(dbPath, dbName) + } else { + // Prefix will separate key/values in the db. + remoteDB, err = kvdb.GetEtcdBackend(ctx, networkName, db.Etcd) + } if err != nil { return nil, err }