Merge remote-tracking branch 'origin/origin-2883-job-log-viewer' into 2883-job-log...
[arvados.git] / apps / workbench / app / assets / javascripts / log_viewer.js
1 function addToLogViewer(logViewer, lines, taskState) {
2     var re = /((\d\d\d\d)-(\d\d)-(\d\d))_((\d\d):(\d\d):(\d\d)) ([a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{15}) (\d+) (\d+)? (.*)/;
3     for (var a in lines) {
4         var v = lines[a].match(re);
5         if (v != null) {
6
7             var ts = new Date(Date.UTC(v[2], v[3], v[4], v[6], v[7], v[8]));
8
9             v11 = v[11];
10             if (typeof v[11] === 'undefined') {
11                 v11 = ' ';
12             }
13
14             var message = v[12];
15             var type = "";
16             if (v11 != ' ') {
17                 if (/^stderr /.test(message)) {
18                     message = message.substr(7);
19                     if (/^crunchstat: /.test(message)) {
20                         type = "crunchstat";
21                         message = message.substr(12);
22                     } else if (/^srun: /.test(message) || /^slurmd/.test(message)) {
23                         type = "task-dispatch";
24                     } else {
25                         type = "task-output";
26                     }
27                 } else {
28                     if (/^success in (\d+)/) {
29                         taskState[v11] = "success";
30                     }
31                     if (/^failure \([^)]+\) (\d+)/) {
32                         taskState[v11] = "failure";
33                     }
34                     type = "task-dispatch";
35                 }
36             } else {
37                 if (/^status: /.test(message)) {
38                     type = "job-status";
39                     message = message.substr(8);
40                 } else {
41                     type = "crunch";
42                 }
43             }
44
45             logViewer.add({
46                 id: logViewer.items.length,
47                 timestamp: ts.toLocaleDateString() + " " + ts.toLocaleTimeString(),
48                 taskid: v11,
49                 message: message,
50                 type: type
51             });
52
53         } else {
54             console.log("Did not parse: " + lines[a]);
55         }
56     }
57     logViewer.update();
58 }