12630: Report errors from nvidia-modprobe & use Getenv
[arvados.git] / lib / dispatchcloud / cmd.go
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 package dispatchcloud
6
7 import (
8         "context"
9         "fmt"
10
11         "git.arvados.org/arvados.git/lib/cmd"
12         "git.arvados.org/arvados.git/lib/service"
13         "git.arvados.org/arvados.git/sdk/go/arvados"
14         "github.com/prometheus/client_golang/prometheus"
15 )
16
17 var Command cmd.Handler = service.Command(arvados.ServiceNameDispatchCloud, newHandler)
18
19 func newHandler(ctx context.Context, cluster *arvados.Cluster, token string, reg *prometheus.Registry) service.Handler {
20         ac, err := arvados.NewClientFromConfig(cluster)
21         if err != nil {
22                 return service.ErrorHandler(ctx, cluster, fmt.Errorf("error initializing client from cluster config: %s", err))
23         }
24         d := &dispatcher{
25                 Cluster:   cluster,
26                 Context:   ctx,
27                 ArvClient: ac,
28                 AuthToken: token,
29                 Registry:  reg,
30         }
31         go d.Start()
32         return d
33 }