diff --git a/cmd/rekor-server/app/serve.go b/cmd/rekor-server/app/serve.go index e55d9017d11cadc901ea2eebc992f071e83828dc..a55bd362948beb60124ace87f25e58ed97a623e1 100644 --- a/cmd/rekor-server/app/serve.go +++ b/cmd/rekor-server/app/serve.go @@ -113,7 +113,7 @@ var serveCmd = &cobra.Command{ log.Logger.Fatalf("unable get sharding details from sharding config: %v", err) } - api.ConfigureAPI(ranges) + api.ConfigureAPI(ranges, treeID) server.ConfigureAPI() http.Handle("/metrics", promhttp.Handler()) diff --git a/pkg/api/api.go b/pkg/api/api.go index 8d96e093907a8c391496f7c5b3512e70c0860c00..7d779b05dee7f4baf5b9a1796c8daa2a0a0615fb 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -66,7 +66,7 @@ type API struct { certChainPem string // PEM encoded timestamping cert chain } -func NewAPI(ranges sharding.LogRanges) (*API, error) { +func NewAPI(ranges sharding.LogRanges, treeID uint) (*API, error) { logRPCServer := fmt.Sprintf("%s:%d", viper.GetString("trillian_log_server.address"), viper.GetUint("trillian_log_server.port")) @@ -78,16 +78,17 @@ func NewAPI(ranges sharding.LogRanges) (*API, error) { logAdminClient := trillian.NewTrillianAdminClient(tConn) logClient := trillian.NewTrillianLogClient(tConn) - tLogID := viper.GetInt64("trillian_log_server.tlog_id") - if tLogID == 0 { - log.Logger.Info("No tree ID specified, attempting to intitialize one") + tid := int64(treeID) + if tid == 0 { + log.Logger.Info("No tree ID specified, attempting to create a new tree") t, err := createAndInitTree(ctx, logAdminClient, logClient) if err != nil { return nil, errors.Wrap(err, "create and init tree") } - tLogID = t.TreeId + tid = t.TreeId } - ranges.SetActive(tLogID) + log.Logger.Infof("Starting Rekor server with active tree %v", tid) + ranges.SetActive(tid) rekorSigner, err := signer.New(ctx, viper.GetString("rekor_server.signer")) if err != nil { @@ -140,7 +141,7 @@ func NewAPI(ranges sharding.LogRanges) (*API, error) { return &API{ // Transparency Log Stuff logClient: logClient, - logID: tLogID, + logID: tid, logRanges: ranges, // Signing/verifying fields pubkey: string(pubkey), @@ -159,11 +160,11 @@ var ( storageClient storage.AttestationStorage ) -func ConfigureAPI(ranges sharding.LogRanges) { +func ConfigureAPI(ranges sharding.LogRanges, treeID uint) { cfg := radix.PoolConfig{} var err error - api, err = NewAPI(ranges) + api, err = NewAPI(ranges, treeID) if err != nil { log.Logger.Panic(err) } diff --git a/pkg/api/entries.go b/pkg/api/entries.go index f272677fbc155701269ddcd0dace1795bae74dab..d88770f63c241a302c27bcbd851bb98563dfdef3 100644 --- a/pkg/api/entries.go +++ b/pkg/api/entries.go @@ -281,7 +281,7 @@ func GetLogEntryByUUIDHandler(params entries.GetLogEntryByUUIDParams) middleware var tid int64 tidString, err := sharding.GetTreeIDFromIDString(params.EntryUUID) if err != nil { - // If EntryID is plain UUID, assume no sharding and use ActiveIndex. The ActiveIndex + // If EntryID is plain UUID, assume no sharding and use ActiveTreeID. The ActiveTreeID // will == the tlog_id if a tlog_id is passed in at server startup. if err.Error() == "cannot get treeID from plain UUID" { tid = api.logRanges.ActiveTreeID() diff --git a/pkg/api/trillian_client.go b/pkg/api/trillian_client.go index 93610f193dd8368da79e0d6847715d9bdcd0bb63..26ab0bb564e85563532a35e2e82d83de4ef27944 100644 --- a/pkg/api/trillian_client.go +++ b/pkg/api/trillian_client.go @@ -320,21 +320,6 @@ func (t *TrillianClient) getConsistencyProof(firstSize, lastSize int64) *Respons } func createAndInitTree(ctx context.Context, adminClient trillian.TrillianAdminClient, logClient trillian.TrillianLogClient) (*trillian.Tree, error) { - // First look for and use an existing tree - trees, err := adminClient.ListTrees(ctx, &trillian.ListTreesRequest{}) - if err != nil { - return nil, errors.Wrap(err, "list trees") - } - - for _, t := range trees.Tree { - if t.TreeType == trillian.TreeType_LOG { - log.Logger.Infof("Found existing tree with ID: %v", t.TreeId) - return t, nil - } - } - - log.Logger.Infof("No existing tree found, attempting to create a new one") - // Otherwise create and initialize one t, err := adminClient.CreateTree(ctx, &trillian.CreateTreeRequest{ Tree: &trillian.Tree{ TreeType: trillian.TreeType_LOG, diff --git a/pkg/sharding/ranges.go b/pkg/sharding/ranges.go index 22750c3f8d52f5a9dc90113d7f25b91846219830..502088081ebe28a2ee2ea9cf6eac905632ec6b5f 100644 --- a/pkg/sharding/ranges.go +++ b/pkg/sharding/ranges.go @@ -16,12 +16,13 @@ package sharding import ( + "errors" "fmt" "io/ioutil" "strings" "github.com/ghodss/yaml" - "github.com/pkg/errors" + "github.com/sigstore/rekor/pkg/log" ) type LogRanges struct { @@ -38,6 +39,7 @@ type LogRange struct { func NewLogRanges(path string, treeID uint) (LogRanges, error) { if path == "" { + log.Logger.Info("No config file specified, skipping init of logRange map") return LogRanges{}, nil } if treeID == 0 {