10383: Merge branch 'master' into 10383-arv-put-incremental-upload
[arvados.git] / services / keepstore / usage.go
1 package main
2
3 import (
4         "flag"
5         "fmt"
6         "os"
7         "sort"
8         "strings"
9
10         "github.com/ghodss/yaml"
11 )
12
13 func usage() {
14         c := DefaultConfig()
15         knownTypes := []string{}
16         for _, vt := range VolumeTypes {
17                 c.Volumes = append(c.Volumes, vt().Examples()...)
18                 knownTypes = append(knownTypes, vt().Type())
19         }
20         exampleConfigFile, err := yaml.Marshal(c)
21         if err != nil {
22                 panic(err)
23         }
24         sort.Strings(knownTypes)
25         knownTypeList := strings.Join(knownTypes, ", ")
26         fmt.Fprintf(os.Stderr, `
27
28 keepstore provides a content-addressed data store backed by a local filesystem or networked storage.
29
30 Usage: keepstore -config path/to/keepstore.yml
31        keepstore [OPTIONS] -dump-config
32
33 NOTE: All options (other than -config) are deprecated in favor of YAML
34       configuration. Use -dump-config to translate existing
35       configurations to YAML format.
36
37 Options:
38 `)
39         flag.PrintDefaults()
40         fmt.Fprintf(os.Stderr, `
41 Example config file:
42
43 %s
44
45 Listen:
46
47     Local port to listen on. Can be "address:port" or ":port", where
48     "address" is a host IP address or name and "port" is a port number
49     or name.
50
51 PIDFile:
52
53    Path to write PID file during startup. This file is kept open and
54    locked with LOCK_EX until keepstore exits, so "fuser -k pidfile" is
55    one way to shut down. Exit immediately if there is an error
56    opening, locking, or writing the PID file.
57
58 MaxBuffers:
59
60     Maximum RAM to use for data buffers, given in multiples of block
61     size (64 MiB). When this limit is reached, HTTP requests requiring
62     buffers (like GET and PUT) will wait for buffer space to be
63     released.
64
65 MaxRequests:
66
67     Maximum concurrent requests. When this limit is reached, new
68     requests will receive 503 responses. Note: this limit does not
69     include idle connections from clients using HTTP keepalive, so it
70     does not strictly limit the number of concurrent connections. If
71     omitted or zero, the default is 2 * MaxBuffers.
72
73 BlobSigningKeyFile:
74
75     Local file containing the secret blob signing key (used to
76     generate and verify blob signatures).  This key should be
77     identical to the API server's blob_signing_key configuration
78     entry.
79
80 RequireSignatures:
81
82     Honor read requests only if a valid signature is provided.  This
83     should be true, except for development use and when migrating from
84     a very old version.
85
86 BlobSignatureTTL:
87
88     Duration for which new permission signatures (returned in PUT
89     responses) will be valid.  This should be equal to the API
90     server's blob_signature_ttl configuration entry.
91
92 SystemAuthTokenFile:
93
94     Local file containing the Arvados API token used by keep-balance
95     or data manager.  Delete, trash, and index requests are honored
96     only for this token.
97
98 EnableDelete:
99
100     Enable trash and delete features. If false, trash lists will be
101     accepted but blocks will not be trashed or deleted.
102
103 TrashLifetime:
104
105     Time duration after a block is trashed during which it can be
106     recovered using an /untrash request.
107
108 TrashCheckInterval:
109
110     How often to check for (and delete) trashed blocks whose
111     TrashLifetime has expired.
112
113 Volumes:
114
115     List of storage volumes. If omitted or empty, the default is to
116     use all directories named "keep" that exist in the top level
117     directory of a mount point at startup time.
118
119     Volume types: %s
120
121     (See volume configuration examples above.)
122
123 `, exampleConfigFile, knownTypeList)
124 }