diff --git a/cmd/notary-signer/main.go b/cmd/notary-signer/main.go index 9a3a01b7b7..323e4c295c 100644 --- a/cmd/notary-signer/main.go +++ b/cmd/notary-signer/main.go @@ -82,6 +82,29 @@ func setUpCryptoservices(configuration *viper.Viper, allowedBackends []string) ( case notary.MemoryBackend: keyStore = trustmanager.NewKeyMemoryStore( passphrase.ConstantRetriever("memory-db-ignore")) + case notary.RethinkDBBackend: + var sess *gorethink.Session + storeConfig, err := utils.ParseRethinkDBStorage(configuration) + if err != nil { + return nil, err + } + sess, err = rethinkdb.Connection(storeConfig.CA, storeConfig.Source, storeConfig.AuthKey) + if err == nil { + defaultAlias := configuration.GetString("storage.default_alias") + if defaultAlias == "" { + // backwards compatibility - support this environment variable + defaultAlias = configuration.GetString(defaultAliasEnv) + } + + if defaultAlias == "" { + return nil, fmt.Errorf("must provide a default alias for the key DB") + } + logrus.Debug("Default Alias: ", defaultAlias) + s, err := keydbstore.NewKeyRethinkDBStore(passphraseRetriever, defaultAlias, sess) + keyStore = s + hRegister("DB operational", s.CheckHealth, time.Second*60) + } + case notary.MySQLBackend, notary.SQLiteBackend: storeConfig, err := utils.ParseSQLStorage(configuration) if err != nil { diff --git a/signer/keydbstore/rethink_keydbstore.go b/signer/keydbstore/rethink_keydbstore.go index 8c530346c6..548bed85a0 100644 --- a/signer/keydbstore/rethink_keydbstore.go +++ b/signer/keydbstore/rethink_keydbstore.go @@ -46,14 +46,15 @@ func (g RethinkPrivateKey) DatabaseName() string { } // NewKeyRethinkDBStore returns a new KeyRethinkDBStore backed by a RethinkDB database -func NewKeyRethinkDBStore(passphraseRetriever passphrase.Retriever, defaultPassAlias string, rethinkSession *gorethink.Session) (*KeyRethinkDBStore, error) { +func NewKeyRethinkDBStore(passphraseRetriever passphrase.Retriever, defaultPassAlias string, rethinkSession *gorethink.Session) *KeyRethinkDBStore { cachedKeys := make(map[string]data.PrivateKey) return &KeyRethinkDBStore{ session: rethinkSession, defaultPassAlias: defaultPassAlias, retriever: passphraseRetriever, - cachedKeys: cachedKeys}, nil + cachedKeys: cachedKeys, + } } // Name returns a user friendly name for the storage location