X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/1d1c6de3c842a33a57b7d469fdaaaa1b873433dc..6f020ee8e060d44811e92f5b3faa1b1cba876b42:/services/keep-web/main.go diff --git a/services/keep-web/main.go b/services/keep-web/main.go index 751543e8fa..7a23cd1fad 100644 --- a/services/keep-web/main.go +++ b/services/keep-web/main.go @@ -1,31 +1,49 @@ -package main +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +package keepweb import ( - "flag" - "log" + "context" + "mime" "os" + + "git.arvados.org/arvados.git/lib/service" + "git.arvados.org/arvados.git/sdk/go/arvados" + "git.arvados.org/arvados.git/sdk/go/ctxlog" + "git.arvados.org/arvados.git/sdk/go/keepclient" + "github.com/prometheus/client_golang/prometheus" ) -func init() { - // MakeArvadosClient returns an error if this env var isn't - // available as a default token (even if we explicitly set a - // different token before doing anything with the client). We - // set this dummy value during init so it doesn't clobber the - // one used by "run test servers". - os.Setenv("ARVADOS_API_TOKEN", "xxx") -} +var ( + version = "dev" +) -func main() { - flag.Parse() - if os.Getenv("ARVADOS_API_HOST") == "" { - log.Fatal("ARVADOS_API_HOST environment variable must be set.") - } - srv := &server{} - if err := srv.Start(); err != nil { - log.Fatal(err) +var Command = service.Command(arvados.ServiceNameKeepweb, newHandlerOrErrorHandler) + +func newHandlerOrErrorHandler(ctx context.Context, cluster *arvados.Cluster, token string, reg *prometheus.Registry) service.Handler { + h, err := newHandler(ctx, cluster, token, reg) + if err != nil { + return service.ErrorHandler(ctx, cluster, err) } - log.Println("Listening at", srv.Addr) - if err := srv.Wait(); err != nil { - log.Fatal(err) + return h +} + +func newHandler(ctx context.Context, cluster *arvados.Cluster, token string, reg *prometheus.Registry) (*handler, error) { + logger := ctxlog.FromContext(ctx) + if ext := ".txt"; mime.TypeByExtension(ext) == "" { + logger.Warnf("cannot look up MIME type for %q -- this probably means /etc/mime.types is missing -- clients will see incorrect content types", ext) } + + keepclient.RefreshServiceDiscoveryOnSIGHUP() + os.Setenv("ARVADOS_API_HOST", cluster.Services.Controller.ExternalURL.Host) + return &handler{ + Cluster: cluster, + Cache: cache{ + cluster: cluster, + logger: logger, + registry: reg, + }, + }, nil }