21700: Install Bundler system-wide in Rails postinst
[arvados.git] / services / keepstore / command.go
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 package keepstore
6
7 import (
8         "context"
9         "errors"
10
11         "git.arvados.org/arvados.git/lib/service"
12         "git.arvados.org/arvados.git/sdk/go/arvados"
13         "github.com/prometheus/client_golang/prometheus"
14 )
15
16 var (
17         Command = service.Command(arvados.ServiceNameKeepstore, newHandlerOrErrorHandler)
18 )
19
20 func newHandlerOrErrorHandler(ctx context.Context, cluster *arvados.Cluster, token string, reg *prometheus.Registry) service.Handler {
21         serviceURL, ok := service.URLFromContext(ctx)
22         if !ok {
23                 return service.ErrorHandler(ctx, cluster, errors.New("BUG: no URL from service.URLFromContext"))
24         }
25         ks, err := newKeepstore(ctx, cluster, token, reg, serviceURL)
26         if err != nil {
27                 return service.ErrorHandler(ctx, cluster, err)
28         }
29         puller := newPuller(ctx, ks, reg)
30         trasher := newTrasher(ctx, ks, reg)
31         _ = newTrashEmptier(ctx, ks, reg)
32         return newRouter(ks, puller, trasher)
33 }