OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 Polymer('log-panel', { | 5 Polymer('log-panel', { |
6 publish: { | 6 publish: { |
7 /** | 7 /** |
8 * List of displayed logs. | 8 * List of displayed logs. |
9 * @type {Array.<{{ | 9 * @type {Array.<{{ |
10 * text: string, | 10 * text: string, |
11 * date: string, | 11 * date: string, |
12 * source: string | 12 * source: string |
13 * }}>} | 13 * }}>} |
14 */ | 14 */ |
15 logs: null, | 15 logs: null, |
16 }, | 16 }, |
17 | 17 |
18 /** | 18 /** |
19 * Called when an instance is created. | 19 * @type {boolean} |
20 */ | |
21 created: function() { | |
22 this.logs = [ | |
23 { text: 'sh: missing ]' }, | |
24 { text: 'Starting Mount filesystems on boot [ OK ]' }, | |
25 { text: 'Starting Populate /dev filesystem [ OK ]' }, | |
26 { text: 'Stopping Populate /dev filesystem [ OK ]' }, | |
27 { text: 'Starting Create /var/run/ccache [ OK ]' }, | |
28 { text: 'Starting Populate and link to /run filesystem [ OK ]' }, | |
29 { text: 'Starting Create /run/credentials-cache [ OK ]' }, | |
30 { text: 'Stopping Create /var/run/ccache [ OK ]' }, | |
31 { text: 'Stopping Populate and link to /run filesystem [ OK ]' }, | |
32 { text: 'Stopping Create /run/credentials-cache [ OK ]' }, | |
33 { text: 'Starting Signal sysvinit that the rootfs is mounted [ OK ]' }, | |
34 { text: 'Starting Clean /tmp directory [ OK ]' }, | |
35 { text: 'Stopping Track if upstart is running in a container [ OK ]' }, | |
36 { text: 'Starting mount available cgroup filesystems [ OK ]' }, | |
37 { text: 'Stopping Clean /tmp directory [ OK ]' }, | |
38 { text: 'Starting Initialize or finalize resolvconf [ OK ]' }, | |
39 { text: 'mount: none already mounted or /dev/cgroup/cpu busy' }, | |
40 { text: 'Starting Set custom IMA policy [ OK ]' }, | |
41 { text: 'Stopping Set custom IMA policy [ OK ]' }, | |
42 { text: 'Starting Bridge udev events into upstart [ OK ]' }, | |
43 { text: 'Starting detecthammer security monitoring daemon [ OK ]' }, | |
44 { text: 'Starting linhelm security monitoring daemon [ OK ]' }, | |
45 { text: 'Starting Fetch otp over bluetooth on demand [ OK ]' }, | |
46 { text: 'Starting device node and kernel event manager [ OK ]' }, | |
47 { text: 'Starting Enabling additional executable binary formats [ OK ]' }, | |
48 { text: 'Starting flush early job output to logs [ OK ]' }, | |
49 { text: 'Stopping Mount filesystems on boot [ OK ]' }, | |
50 { text: 'Starting NFSv4 id <-> name mapper [ OK ]' }, | |
51 { text: 'Stopping flush early job output to logs [ OK ]' }, | |
52 { text: 'Starting load modules from /etc/modules [ OK ]' }, | |
53 { text: 'Starting load modules from /etc/modules [ OK ]' }, | |
54 { text: 'Starting log initial device creation [ OK ]' }, | |
55 { text: 'Starting D-Bus system message bus [ OK ]' }, | |
56 { text: 'Stopping load modules from /etc/modules [ OK ]' }, | |
57 { text: 'Stopping load modules from /etc/modules [ OK ]' }, | |
58 { text: 'Starting Uncomplicated firewall [ OK ]' }, | |
59 { text: 'Starting Bridge file events into upstart [ OK ]' }, | |
60 { text: 'Starting bluetooth daemon [ OK ]' }, | |
61 { text: 'Starting SystemD login management service [ OK ]' }, | |
62 { text: 'Starting system logging daemon [ OK ]' }, | |
63 { text: 'Starting configure network device security [ OK ]' }, | |
64 { text: 'Starting configure network device security [ OK ]' }, | |
65 { text: 'Stopping cold plug devices [ OK ]' }, | |
66 { text: 'Starting configure network device security [ OK ]' }, | |
67 { text: 'Starting CUPS printing spooler/server [ OK ]' }, | |
68 { text: 'Starting configure network device [ OK ]' }, | |
69 { text: 'Starting Mount network filesystems [ OK ]' }, | |
70 { text: 'Starting Upstart job to start rpcbind on boot only [ OK ]' }, | |
71 { text: 'Starting Failsafe Boot Delay [ OK ]' }, | |
72 { text: 'Stopping log initial device creation [ OK ]' }, | |
73 { text: 'Stopping Upstart job to start rpcbind on boot only [ OK ]' }, | |
74 { text: 'Starting load fallback graphics devices [ OK ]' }, | |
75 { text: 'Starting configure network device security [ OK ]' }, | |
76 { text: 'Starting configure network device [ OK ]' }, | |
77 { text: 'Stopping load fallback graphics devices [ OK ]' }, | |
78 { text: 'Stopping Failsafe Boot Delay [ OK ]' }, | |
79 { text: 'Stopping Mount network filesystems [ OK ]' }, | |
80 { text: 'Starting System V initialisation compatibility [ OK ]' }, | |
81 { text: 'Starting configure virtual network devices [ OK ]' }, | |
82 { text: 'Initializing random number generator... [ OK ]' }, | |
83 { text: 'Setting up X socket directories... [ OK ]' }, | |
84 { text: 'Starting configure network device [ OK ]' }, | |
85 { text: 'Starting modem connection manager [ OK ]' }, | |
86 { text: 'Starting configure network device security [ OK ]' }, | |
87 { text: 'Starting RPC portmapper replacement [ OK ]' }, | |
88 { text: 'Stopping System V initialisation compatibility [ OK ]' }, | |
89 { text: 'Starting Create /var/run/ccache [ OK ]' }, | |
90 { text: 'Stopping Create /var/run/ccache [ OK ]' }, | |
91 { text: 'Starting Monitor for unauthorized access to cookies. [ OK ]' }, | |
92 { text: 'Starting System V runlevel compatibility [ OK ]' }, | |
93 { text: 'Starting anac(h)ronistic cron [ OK ]' }, | |
94 { text: 'Starting ACPI daemon [ OK ]' }, | |
95 { text: 'Starting regular background program processing daemon [ OK ]' }, | |
96 { text: 'Starting deferred execution scheduler [ OK ]' }, | |
97 { text: 'Starting Run the nvidia-updater Upstart task before the ' + | |
98 'goobuntu-updater Upstart task [ OK ]' }, | |
99 { text: 'Starting build kernel modules for current kernel [ OK ]' }, | |
100 { text: 'Starting CPU interrupts balancing daemon [ OK ]' }, | |
101 { text: 'Starting rpcsec_gss daemon [ OK ]' }, | |
102 { text: 'Starting NSM status monitor [ OK ]' }, | |
103 { text: 'Stopping anac(h)ronistic cron [ OK ]' }, | |
104 { text: 'Starting Run the nvidia-updater during startup [ OK ]' }, | |
105 { text: 'Starting regular background program processing daemon [ OK ]' }, | |
106 { text: 'Starting KVM [ OK ]' }, | |
107 { text: 'Starting automatic crash report generation [ OK ]' }, | |
108 { text: 'Starting Automounter [ OK ]' }, | |
109 { text: 'Stopping Restore Sound Card State [ OK ]' }, | |
110 { text: 'Starting libvirt daemon [ OK ]' }, | |
111 { text: 'gdm start/starting' }, | |
112 { text: 'initctl: Unknown job: kdm' }, | |
113 { text: 'lightdm start/starting' }, | |
114 { text: 'initctl: Unknown job: lxdm' }, | |
115 { text: 'Starting Bridge socket events into upstart [ OK ]' }, | |
116 { text: 'Skipping profile in /etc/apparmor.d/disable: usr.bin.firefox' }, | |
117 { text: 'Starting AppArmor profiles [ OK ]' }, | |
118 { text: 'Checking for available NVIDIA updates ...' }, | |
119 { text: 'Starting audit daemon auditd [ OK ]' }, | |
120 { text: 'Starting Dropbear SSH server: [abort] NO_START is not ' + | |
121 'set to zero in /etc/default/dropbear' }, | |
122 { text: 'Starting logs-exporterd [ OK ]' }, | |
123 { text: 'Starting Machine Check Exceptions decoder: mcelog.' }, | |
124 { text: 'ERROR: [Errno -2] Name or service not known' }, | |
125 { text: '2015-04-01 13:12:35,580:INFO:Daemon process started in the ' + | |
126 'background, logging to ' + | |
127 '"/tmp/chrome_remote_desktop_20150401_131235_3BiEyp"' }, | |
128 { text: 'Using host_id: cd1af87e-488c-38ec-6b84-40e028bbf174' }, | |
129 { text: 'Launching X server and X session.' }, | |
130 { text: 'Starting NTP server ntpd [ OK ]' }, | |
131 { text: 'Not starting internet superserver: no services enabled' }, | |
132 { text: 'Starting OpenCryptoki PKCS#11 slot daemon: pkcsslotd.' }, | |
133 { text: 'Starting OSS Proxy Daemon osspd [ OK ]' }, | |
134 { text: 'Starting /usr/bin/Xvfb-randr on display :20' }, | |
135 { text: 'Starting network connection manager [ OK ]' }, | |
136 { text: 'INFO: Configuring network-manager from upstart' }, | |
137 { text: '/proc/self/fd/9: line 6: INFO: Configuring network-manager ' + | |
138 'from upstart: command not found' }, | |
139 { text: 'Updating connection SNAX' }, | |
140 { text: 'Xvfb is active.' }, | |
141 { text: 'Completed successfully' }, | |
142 { text: 'INFO: Success' }, | |
143 { text: '/proc/self/fd/9: line 6: INFO: Success: command not found' }, | |
144 { text: 'Starting Postfix Mail Transport Agent postfix [ OK ]' }, | |
145 { text: 'Stopping build kernel modules for current kernel [ OK ]' }, | |
146 { text: 'Launching host process' }, | |
147 { text: 'Stopping Run the nvidia-updater during startup [ OK ]' }, | |
148 { text: 'Stopping Run the nvidia-updater Upstart task before the ' + | |
149 'goobuntu-updater Upstart task [ OK ]' }, | |
150 { text: 'Waiting up to 60s for the hostname ...' }, | |
151 { text: 'Recovering schroot sessions [ OK ]' }, | |
152 { text: '[33m*39;49m Not starting S.M.A.R.T. daemon smartd, disabled ' + | |
153 'via /etc/default/smartmontools' }, | |
154 { text: 'Starting OpenBSD Secure Shell server... [ OK ]' }, | |
155 { text: 'No response from daemon. It may have crashed, or may still ' + | |
156 'be running in the background.' }, | |
157 { text: 'Host ready to receive connections.' }, | |
158 { text: 'Log file: /tmp/chrome_remote_desktop_20150401_131235_3BiEyp' }, | |
159 { text: 'Starting VirtualBox kernel modules [ OK ]' }, | |
160 { text: 'saned disabled; edit /etc/default/saned' }, | |
161 { text: 'Restoring resolver state... [ OK ]' }, | |
162 { text: 'The hostname has not changed' }, | |
163 { text: | |
164 'access-control-allow-origin:*\n ' + | |
165 'cache-control:public, max-age=600\n ' + | |
166 'date:Thu, 16 Apr 2015 21:15:23 GMT\n ' + | |
167 'etag:"nhb8IQ"\n ' + | |
168 'expires:Thu, 16 Apr 2015 21:25:23 GMT\n ' + | |
169 'server:Google Frontend\n ' + | |
170 'status:304\n ' + | |
171 'x-google-appengine-appid:s~polymer-project\n ' + | |
172 'x-google-appengine-module:default\n ' + | |
173 'x-google-appengine-version:2015-04-13\n ' + | |
174 'x-google-backends:/gns/project/apphosting/appserver/prod-appengine' + | |
175 '/ic/prod-appengine.remote-ib.appserver/380,icbie6.prod.google.com:' + | |
176 '4489,/bns/ic/borg/ic/bns/apphosting/prod-appengine.edge.frontend/2' + | |
177 '30,ibk19:6599,/bns/ib/borg/ib/bns/gfe-prod/shared-gfe_31_silos/1.g' + | |
178 'fe,icna18:9845\n ' + | |
179 'x-google-dos-service-trace:main:apphosting,dasher:' + | |
180 'apphosting\n ' + | |
181 'x-google-gfe-request-trace:icna18:9845,ibk19:6599,/bns/ic/borg/ic/' + | |
182 'bns/apphosting/prod-appengine.edge.frontend/230,ibk19:6599,icna18:' + | |
183 '9845\n ' + | |
184 'x-google-gfe-response-code-details-trace:response_code_set_by_back' + | |
185 'end,response_code_set_by_backend\n ' + | |
186 'x-google-gfe-service-trace:apphosting,dasher_zoo_responder,apphost' + | |
187 'ing\n ' + | |
188 'x-google-gslb-service:apphosting\n ' + | |
189 'x-google-netmon-label:/bns/ic/borg/ic/bns/apphosting/prod-appengin' + | |
190 'e.edge.frontend/230\n ' + | |
191 'x-google-service:apphosting,apphosting\n' }, | |
192 { text: 'goobuntu-updater configuration: ARGS="--init ' + | |
193 '--only-if-forced --verbose" BLOCK_BOOT=false' }, | |
194 { text: 'Running goobuntu-updater ...' }, | |
195 { text: 'Starting GNOME Display Manager [ OK ]' }, | |
196 { text: 'No apache MPM package installed' }, | |
197 { text: 'Starting Unblock the restart of the gdm display ' + | |
198 'manager when it stops by emitting the ' + | |
199 'nvidia-updater-unblock-gdm-start event [ OK ]' }, | |
200 { text: 'Stopping GNOME Display Manager [ OK ]' }, | |
201 ]; | |
202 }, | |
203 | |
204 /** | |
205 * Stores the logs that are cleared. | |
206 * @type {Array.<Log>} | |
207 * @private | 20 * @private |
208 */ | 21 */ |
209 prevLogs_: null, | 22 isScrollAtBottom_: true, |
210 | 23 |
211 /** | 24 /** |
212 * Called after the Polymer element is initialized. | 25 * Called after the Polymer element is initialized. |
213 */ | 26 */ |
214 ready: function() { | 27 ready: function() { |
| 28 this.$.list.onscroll = this.onScroll_.bind(this); |
215 this.async(this.scrollToBottom_); | 29 this.async(this.scrollToBottom_); |
216 }, | 30 }, |
217 | 31 |
218 /** | 32 /** |
| 33 * Called when the list of logs change. |
| 34 */ |
| 35 logsChanged: function(oldValue, newValue) { |
| 36 if (this.isScrollAtBottom_) |
| 37 this.async(this.scrollToBottom_); |
| 38 }, |
| 39 |
| 40 /** |
219 * Clears the logs. | 41 * Clears the logs. |
220 * @private | 42 * @private |
221 */ | 43 */ |
222 clearLogs: function() { | 44 clearLogs_: function() { |
223 var prevLogs = this.logs; | 45 this.$.logBuffer.clearLogs(); |
224 this.logs = this.prevLogs; | |
225 this.prevLogs = prevLogs; | |
226 this.async(this.scrollToBottom_); | |
227 }, | 46 }, |
228 | 47 |
229 /** | 48 /** |
| 49 * Event handler when the list is scrolled. |
| 50 * @private |
| 51 */ |
| 52 onScroll_: function() { |
| 53 var list = this.$.list; |
| 54 this.isScrollAtBottom_ = |
| 55 list.scrollTop + list.offsetHeight == list.scrollHeight; |
| 56 }, |
| 57 |
| 58 /** |
230 * Scrolls the logs container to the bottom. | 59 * Scrolls the logs container to the bottom. |
231 * @private | 60 * @private |
232 */ | 61 */ |
233 scrollToBottom_: function() { | 62 scrollToBottom_: function() { |
234 this.$.list.scrollTop = this.$.list.scrollHeight; | 63 this.$.list.scrollTop = this.$.list.scrollHeight; |
235 }, | 64 }, |
| 65 |
| 66 /** |
| 67 * @param {string} filename |
| 68 * @return {string} The filename stripped of its preceeding path. |
| 69 * @private |
| 70 */ |
| 71 stripPath_: function(filename) { |
| 72 var directories = filename.split('/'); |
| 73 return directories[directories.length - 1]; |
| 74 }, |
236 }); | 75 }); |
OLD | NEW |