Project

General

Profile

Diagnostics command » History » Version 3

Tom Clegg, 06/18/2021 02:57 PM

1 1 Tom Clegg
h1. Diagnostics command
2
3
Initial work is on #17609
4
5
"arvados-client diagnostics"
6
7
Current level of functionality:
8 2 Tom Clegg
* reveal common problems that can be hard to notice/recognize, especially for someone who is new to installing arvados (e.g., invalid TLS certificate for websocket, which breaks workbench but presents no error message)
9 1 Tom Clegg
* produce output that can be shared with others to help with troubleshooting
10
11 2 Tom Clegg
Desired/requested features:
12 1 Tom Clegg
* download data using s3 protocol
13
* run config-check (if cluster config file is accessible)
14
* check all health endpoints (if cluster config file is accessible)
15
* make internal/external client recognition mandatory (or at least default to expecting one)
16
* enable debug/trace mode for a single test number
17
* more verbose errors/explanations
18
* for each service, report version currently running
19
* for each service, report version currently installed ("/proc/self/exe -version"?)
20
* for each service, report md5/timestamp of config file that is currently being used (not necessarily same as one currently on disk)
21
* for each service, report md5/timestamp of config file on disk
22 2 Tom Clegg
* check Ruby command-line tools (arv) are installed and working
23
* check Python command-line tools (like arv-put) are installed and working
24
* check Docker is installed on current host, and is usable by arv-keepdocker
25
* check arvados-cwl-runner is installed and working (run a workflow)
26
* set up a user account with "arv user setup"
27
* test that webshell actually works (currently just tries connecting, but this probably doesn't reveal pam config problems)
28
29
Undesired features that really belong elsewhere:
30
* check for problems in config file (this should be done in config-check instead)
31 3 Tom Clegg
32
Internal (code) updates wanted:
33
* (from #17609#note-18, re big runtests() func) I think we will need to split this up sooner or later. I'm thinking one big section to do the initial staging setup (current user, scratch project/collection) and then something more modular for an ever-growing set of test funcs that are independent of one another. Not sure whether I should do it right now, or put it on the todo list. Something like this might work, with minimal repetition: <pre><code class="go">
34
type testenv struct {
35
  project    arvados.Group
36
  collection arvados.Collection
37
}
38
39
var _ = addtest(1234, "testing some stuff", func(env *testenv) error { ... })
40
</code></pre>