vnc3d/strudel: jsc_jureca_flavours.json

File jsc_jureca_flavours.json, 75.3 KB (added by Jens Henrik Goebbert, 8 years ago)
Line 
1[
2 [
3 "JURECA - login node - test",
4 "JURECA - login node - old",
5 "JURECA - login node (vis: 2xGPU)",
6 "JURECA - compute nodes (vis: 2xGPU)"
7 ],
8 {
9 "JURECA - login node - test": {
10 "__module__": "siteConfig",
11 "__class__": "siteConfig",
12 "directConnect": {
13 "regex": [
14 null
15 ],
16 "__module__": "siteConfig",
17 "cmd": null,
18 "requireMatch": false,
19 "__class__": "cmdRegEx",
20 "host": "login",
21 "failFatal": true,
22 "formatFatal": false,
23 "async": false,
24 "loop": false
25 },
26 "defaults": {
27 "jobParams_mem": 512,
28 "jobParams_ppn": 1,
29 "jobParams_nodes": 1,
30 "jobParams_hours": 24
31 },
32 "siteRanges": {
33 "jobParams_mem": [
34 512,
35 512
36 ],
37 "jobParams_ppn": [
38 1,
39 1
40 ],
41 "jobParams_nodes": [
42 1,
43 1
44 ],
45 "jobParams_hours": [
46 1,
47 24
48 ]
49 },
50 "sitetz": "Europe/Berlin",
51 "visibility": {
52 "usernamePanel": true,
53 "jobParams_nodes": false,
54 "jobParams_hours": false,
55 "jobParams_ppn": false,
56 "projectPanel": false,
57 "listProjects": true,
58 "resourcePanel": true,
59 "resolutionPanel": "Advanced",
60 "label_nodes": false,
61 "label_hours": false,
62 "label_ppn": false,
63 "cipherPanel": false,
64 "advancedCheckBoxPanel": true,
65 "debugCheckBoxPanel": "Advanced"
66 },
67 "loginHost": "jurecavis01.fz-juelich.de",
68 "setDisplayResolution": {
69 "regex": [
70 null
71 ],
72 "__module__": "siteConfig",
73 "cmd": null,
74 "requireMatch": false,
75 "__class__": "cmdRegEx",
76 "host": "login",
77 "failFatal": false,
78 "formatFatal": false,
79 "async": false,
80 "loop": false
81 },
82 "runSanityCheck": {
83 "regex": [
84 null
85 ],
86 "__module__": "siteConfig",
87 "cmd": null,
88 "requireMatch": false,
89 "__class__": "cmdRegEx",
90 "host": "login",
91 "failFatal": false,
92 "formatFatal": false,
93 "async": false,
94 "loop": false
95 },
96 "getProjects": {
97 "regex": [
98 "(?P<group>.*)"
99 ],
100 "__module__": "siteConfig",
101 "cmd": "'vncserver -profile | tail -n +2 | sed -e 's/^[[:space:]]*//' '",
102 "requireMatch": false,
103 "__class__": "cmdRegEx",
104 "host": "login",
105 "failFatal": false,
106 "formatFatal": false,
107 "async": false,
108 "loop": false
109 },
110 "listAll": {
111 "regex": [
112 "(?P<jobid>(?P<jobidNumber>.*)) (?P<remainingWalltime>.*)$"
113 ],
114 "__module__": "siteConfig",
115 "cmd": "'echo \"$(hostname)$(echo $(vncserver -list | grep '^:') | tr \" \" :) --:--:--\" '",
116 "requireMatch": false,
117 "__class__": "cmdRegEx",
118 "host": "login",
119 "failFatal": true,
120 "formatFatal": false,
121 "async": false,
122 "loop": false
123 },
124 "stopForRestart": {
125 "regex": [
126 null
127 ],
128 "__module__": "siteConfig",
129 "cmd": "'vncserver -kill :$(echo {jobidNumber} | cut -d \":\" -f 2)'",
130 "requireMatch": false,
131 "__class__": "cmdRegEx",
132 "host": "login",
133 "failFatal": true,
134 "formatFatal": false,
135 "async": false,
136 "loop": false
137 },
138 "startServer": {
139 "regex": [
140 "Log file is (.*).vnc/(?P<jobid>(?P<jobidNumber>.*)).log"
141 ],
142 "__module__": "siteConfig",
143 "cmd": "\"mkdir ~/.vnc ; rm -f ~/.vnc/strudel_vislogin_clearpass ; touch ~/.vnc/strudel_vislogin_clearpass ; chmod 600 ~/.vnc/strudel_vislogin_clearpass ; passwd=\"'$'\"( dd if=/dev/urandom bs=1 count=8 2>/dev/null | md5sum | cut -b 1-8 ) ; echo \"'$'\"passwd > ~/.vnc/strudel_vislogin_clearpass ; cat ~/.vnc/strudel_vislogin_clearpass | vncpasswd -f > ~/.vnc/strudel_vislogin_passwd ; chmod 600 ~/.vnc/strudel_vislogin_passwd ; vncserver -rfbauth ~/.vnc/strudel_vislogin_passwd -profile {project} -geometry {resolution} > ~/.vnc/vncserver_vislogin.out 2>&1 ; cat ~/.vnc/vncserver_vislogin.out \"",
144 "requireMatch": true,
145 "__class__": "cmdRegEx",
146 "host": "login",
147 "failFatal": true,
148 "formatFatal": false,
149 "async": false,
150 "loop": false
151 },
152 "showStart": {
153 "regex": [
154 "(?P<estimatedStart>.*)"
155 ],
156 "__module__": "siteConfig",
157 "cmd": null,
158 "requireMatch": true,
159 "__class__": "cmdRegEx",
160 "host": "login",
161 "failFatal": false,
162 "formatFatal": false,
163 "async": false,
164 "loop": false
165 },
166 "execHost": {
167 "regex": [
168 "(?P<execHost>\\S+)"
169 ],
170 "__module__": "siteConfig",
171 "cmd": "\"echo jurecavis01 \"",
172 "requireMatch": true,
173 "__class__": "cmdRegEx",
174 "host": "login",
175 "failFatal": true,
176 "formatFatal": false,
177 "async": false,
178 "loop": false
179 },
180 "agent": {
181 "regex": [
182 "agent_hello"
183 ],
184 "__module__": "siteConfig",
185 "cmd": "{sshBinary} -A -c {cipher} -t -t -oStrictHostKeyChecking=yes -l {username} {loginHost} \"echo agent_hello; bash \"",
186 "requireMatch": true,
187 "__class__": "cmdRegEx",
188 "host": "local",
189 "failFatal": true,
190 "formatFatal": false,
191 "async": true,
192 "loop": false
193 },
194 "vncDisplay": {
195 "regex": [
196 "^.*?started on display \\S+(?P<vncDisplay>:[0-9]+)\\s*"
197 ],
198 "__module__": "siteConfig",
199 "cmd": "\"cat ~/.vnc/vncserver_vislogin.out\"",
200 "requireMatch": true,
201 "__class__": "cmdRegEx",
202 "host": "login",
203 "failFatal": true,
204 "formatFatal": false,
205 "async": false,
206 "loop": false
207 },
208 "authURL": null,
209 "oauthclientpasswd": null,
210 "oauthclient": null,
211 "authorizedKeysFile": null,
212 "username": null,
213 "project": null,
214 "onFirstLogin": null,
215 "otp": {
216 "regex": [
217 "^(?P<vncPasswd>\\S+)$"
218 ],
219 "__module__": "siteConfig",
220 "cmd": "\"cat ~/.vnc/strudel_vislogin_clearpass\"",
221 "requireMatch": true,
222 "__class__": "cmdRegEx",
223 "host": "login",
224 "failFatal": true,
225 "formatFatal": false,
226 "async": false,
227 "loop": false
228 },
229 "tunnel": {
230 "regex": [
231 "tunnel_hello"
232 ],
233 "__module__": "siteConfig",
234 "cmd": "{sshBinary} -A -c {cipher} -t -t -oStrictHostKeyChecking=yes -L {localPortNumber}:{execHost}:{remotePortNumber} -l {username} {loginHost} \"echo tunnel_hello; bash\"",
235 "requireMatch": true,
236 "__class__": "cmdRegEx",
237 "host": "local",
238 "failFatal": true,
239 "formatFatal": false,
240 "async": true,
241 "loop": false
242 },
243 "onConnectScript": {
244 "regex": [
245 null
246 ],
247 "__module__": "siteConfig",
248 "cmd": null,
249 "requireMatch": false,
250 "__class__": "cmdRegEx",
251 "host": "login",
252 "failFatal": false,
253 "formatFatal": false,
254 "async": false,
255 "loop": false
256 },
257 "running": {
258 "regex": [
259 "JobState=RUNNING"
260 ],
261 "__module__": "siteConfig",
262 "cmd": "\"echo JobState=RUNNING\"",
263 "requireMatch": true,
264 "__class__": "cmdRegEx",
265 "host": "login",
266 "failFatal": true,
267 "formatFatal": false,
268 "async": false,
269 "loop": false
270 },
271 "stop": {
272 "regex": [
273 null
274 ],
275 "__module__": "siteConfig",
276 "cmd": "\"vncserver -kill :$(echo {jobidNumber} | cut -d \":\" -f 2)\"",
277 "requireMatch": false,
278 "__class__": "cmdRegEx",
279 "host": "login",
280 "failFatal": true,
281 "formatFatal": false,
282 "async": false,
283 "loop": false
284 },
285 "provision": null,
286 "instanceFlavour": null,
287 "relabel": {},
288 "imageid": null,
289 "createReservation": {
290 "regex": [
291 null
292 ],
293 "__module__": "siteConfig",
294 "cmd": null,
295 "requireMatch": false,
296 "__class__": "cmdRegEx",
297 "host": "login",
298 "failFatal": false,
299 "formatFatal": false,
300 "async": false,
301 "loop": false
302 },
303 "listReservations": {
304 "regex": [
305 null
306 ],
307 "__module__": "siteConfig",
308 "cmd": null,
309 "requireMatch": false,
310 "__class__": "cmdRegEx",
311 "host": "login",
312 "failFatal": false,
313 "formatFatal": false,
314 "async": false,
315 "loop": false
316 },
317 "deleteReservation": {
318 "regex": [
319 null
320 ],
321 "__module__": "siteConfig",
322 "cmd": null,
323 "requireMatch": false,
324 "__class__": "cmdRegEx",
325 "host": "login",
326 "failFatal": false,
327 "formatFatal": false,
328 "async": false,
329 "loop": false
330 },
331 "dbusSessionBusAddress": {
332 "regex": [
333 "^DBUS_SESSION_BUS_ADDRESS=(?P<dbusSessionBusAddress>.*)$"
334 ],
335 "__module__": "siteConfig",
336 "cmd": "\"echo DBUS_SESSION_BUS_ADDRESS=dummy_dbus_session_bus_address\"",
337 "requireMatch": true,
338 "__class__": "cmdRegEx",
339 "host": "login",
340 "failFatal": true,
341 "formatFatal": false,
342 "async": false,
343 "loop": false
344 },
345 "openWebDavShareInRemoteFileBrowser": {
346 "regex": [
347 null
348 ],
349 "__module__": "siteConfig",
350 "cmd": "\"/usr/bin/ssh {execHost} 'DISPLAY={vncDisplay} Thunar davs://{localUsername}:{vncPasswd}@localhost:{remoteWebDavPortNumber}/{homeDirectoryWebDavShareName}'\"",
351 "requireMatch": false,
352 "__class__": "cmdRegEx",
353 "host": "login",
354 "failFatal": true,
355 "formatFatal": false,
356 "async": false,
357 "loop": false
358 },
359 "displayWebDavInfoDialogOnRemoteDesktop": {
360 "regex": [
361 null
362 ],
363 "__module__": "siteConfig",
364 "cmd": "\"/usr/bin/ssh {execHost} 'echo -e \\\"You can access your local home directory in the file browser Thunar with the URL:%sbr%s\\ndavs://{localUsername}@localhost:{remoteWebDavPortNumber}/{homeDirectoryWebDavShareName}%sbr%s\\nYour one-time password is {vncPasswd}\\\" > ~/.vnc/\\$(hostname){vncDisplay}-webdav.txt;'\"",
365 "requireMatch": false,
366 "__class__": "cmdRegEx",
367 "host": "login",
368 "failFatal": true,
369 "formatFatal": false,
370 "async": false,
371 "loop": false
372 },
373 "webDavWindowID": {
374 "regex": [
375 "^DummyWebDavWindowID=(?P<webDavWindowID>.*)$"
376 ],
377 "__module__": "siteConfig",
378 "cmd": "\"echo DummyWebDavWindowID=-1\"",
379 "requireMatch": true,
380 "__class__": "cmdRegEx",
381 "host": "login",
382 "failFatal": true,
383 "formatFatal": false,
384 "async": false,
385 "loop": false
386 },
387 "webDavCloseWindow": {
388 "regex": [
389 null
390 ],
391 "__module__": "siteConfig",
392 "cmd": "\"/usr/bin/ssh {execHost} 'DISPLAY={vncDisplay} /usr/local/desktop/close_webdav_window.sh webdav://{localUsername}@localhost:{remoteWebDavPortNumber}/{homeDirectoryWebDavShareName}'\"",
393 "requireMatch": false,
394 "__class__": "cmdRegEx",
395 "host": "login",
396 "failFatal": true,
397 "formatFatal": false,
398 "async": false,
399 "loop": false
400 },
401 "webDavMount": {
402 "regex": [
403 null
404 ],
405 "__module__": "siteConfig",
406 "cmd": "echo Mounting WebDAV...",
407 "requireMatch": false,
408 "__class__": "cmdRegEx",
409 "host": "login",
410 "failFatal": true,
411 "formatFatal": false,
412 "async": false,
413 "loop": false
414 },
415 "webDavUnmount": {
416 "regex": [
417 "hello"
418 ],
419 "__module__": "siteConfig",
420 "cmd": "echo hello",
421 "requireMatch": true,
422 "__class__": "cmdRegEx",
423 "host": "login",
424 "failFatal": true,
425 "formatFatal": false,
426 "async": false,
427 "loop": false
428 },
429 "webDavTunnel": {
430 "regex": [
431 "tunnel_hello"
432 ],
433 "__module__": "siteConfig",
434 "cmd": "{sshBinary} -A -c {cipher} -t -t -oStrictHostKeyChecking=no -oExitOnForwardFailure=yes -R {intermediateWebDavPortNumber}:localhost:{localWebDavPortNumber} -l {username} {loginHost} \"ssh -R {remoteWebDavPortNumber}:localhost:{intermediateWebDavPortNumber} {execHost} 'echo tunnel_hello; bash'\"",
435 "requireMatch": true,
436 "__class__": "cmdRegEx",
437 "host": "local",
438 "failFatal": true,
439 "formatFatal": false,
440 "async": true,
441 "loop": false
442 },
443 "webDavRemotePort": {
444 "regex": [
445 "^(?P<remoteWebDavPortNumber>[0-9]+)$"
446 ],
447 "__module__": "siteConfig",
448 "cmd": "\"/usr/bin/ssh {execHost} /usr/local/jsc/etc/xdg/scripts/strudel/get_ephemeral_port.py\"",
449 "requireMatch": true,
450 "__class__": "cmdRegEx",
451 "host": "login",
452 "failFatal": true,
453 "formatFatal": false,
454 "async": false,
455 "loop": false
456 },
457 "webDavIntermediatePort": {
458 "regex": [
459 "^(?P<intermediateWebDavPortNumber>[0-9]+)$"
460 ],
461 "__module__": "siteConfig",
462 "cmd": "\"/usr/local/jsc/etc/xdg/scripts/strudel/get_ephemeral_port.py\"",
463 "requireMatch": true,
464 "__class__": "cmdRegEx",
465 "host": "login",
466 "failFatal": true,
467 "formatFatal": false,
468 "async": false,
469 "loop": false
470 },
471 "messageRegexs": [
472 {
473 "pattern": "^INFO:(?P<info>.*(?:\n|\r\n?))",
474 "__class__": "__regex__"
475 },
476 {
477 "pattern": "^WARN:(?P<warn>.*(?:\n|\r\n?))",
478 "__class__": "__regex__"
479 },
480 {
481 "pattern": "^ERROR:(?P<error>.*(?:\n|\r\n?))",
482 "__class__": "__regex__"
483 }
484 ],
485 "displayStrings": {
486 "__module__": "siteConfig",
487 "onFirstLoginFailure": "An unknown error occured. Please contact your site help desk.",
488 "persistentMessageStop": "Stop the desktop",
489 "createNewKeyDialogNewPassphraseEmptyForbidden": "Sorry, empty passphrases are forbidden.",
490 "newPassphraseTitle": "Please enter a new passphrase",
491 "createNewKeyDialogNewPassphraseMismatch": "Passphrases don't match!",
492 "qdelQueuedJobQdel": "Delete the job",
493 "reconnectMessage": "An Existing Desktop was found. Would you like to reconnect or kill it and start a new desktop?",
494 "helpEmailAddress": "sc@fz-juelich.de",
495 "temporaryKey": "\nWould you like to use the launchers old behaviour (entering a password every time you start a new desktop) or try the new behaviour (creating an ssh key pair and entering a passphrase the first time you use the launcher after reboot.)\n\nPasswords are recomended if this is a shared user account.\n\nSSH Keys are recommended if you are the only person who uses this account.\n\nThis option can be changed from the Identity menu.\n",
496 "persistentMessagePersist": "Leave it running",
497 "newPassphraseEmptyForbidden": "Sorry, empty passphrases are forbidden.\nIt looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
498 "temporaryKeyNo": "Use my SSH Key",
499 "newPassphrase": "It looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
500 "qdelQueuedJobNOOP": "Leave it in the queue (I'll reconnect later)",
501 "qdelQueuedJob": "It looks like you've been waiting for a job to start.\nDo you want me to delete the job or leave it in the queue so you can reconnect later?\n",
502 "temporaryKeyYes": "Use my password every time",
503 "passphrasePromptIncorrect": "\nSorry, that passphrase was incorrect.\nPlease enter the passphrase for you SSH Key\nIf you have forgoten the passphrase for you key, you may need to delete it and create a new key.\nYou can find this option under the Identity menu.\n",
504 "newPassphraseTooShort": "Sorry, the passphrase must be at least 6 characters.\nIt looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
505 "networkError": "It looks like a network error has occured. You may be able to resume your work by logging in again.",
506 "__class__": "sshKeyDistDisplayStrings",
507 "reconnectMessageYes": "Reconnect",
508 "passphrasePromptIncorrectl": "Sorry, that passphrase was incorrect. Please enter the passphrase for your ssh key",
509 "passwdPrompt": "Please enter the password for your JURECA account.",
510 "passphrasePrompt": "Please enter the passphrase for your SSH key",
511 "createNewKeyDialogNewPassphraseTooShort": "Passphrase is too short.",
512 "passwdPromptIncorrect": "Sorry, that password was incorrect.\nPlease enter the password for your JURECA account.",
513 "reconnectMessageNo": "New desktop",
514 "persistentMessage": "Would you like to leave your current session running so that you can reconnect later?\nIt has {timestring} remaining.",
515 "newPassphraseMismatch": "Sorry, the two passphrases you entered don't match.\nIt looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
516 "selectProjectMessage": "Please select from one of the following desktop profiles:"
517 }
518 },
519 "JURECA - login node - old": {
520 "__module__": "siteConfig",
521 "__class__": "siteConfig",
522 "directConnect": {
523 "regex": [
524 null
525 ],
526 "__module__": "siteConfig",
527 "cmd": null,
528 "requireMatch": false,
529 "__class__": "cmdRegEx",
530 "host": "login",
531 "failFatal": true,
532 "formatFatal": false,
533 "async": false,
534 "loop": false
535 },
536 "defaults": {
537 "jobParams_mem": 512,
538 "jobParams_ppn": 1,
539 "jobParams_nodes": 1,
540 "jobParams_hours": 24
541 },
542 "siteRanges": {
543 "jobParams_mem": [
544 512,
545 512
546 ],
547 "jobParams_ppn": [
548 1,
549 1
550 ],
551 "jobParams_nodes": [
552 1,
553 1
554 ],
555 "jobParams_hours": [
556 1,
557 24
558 ]
559 },
560 "sitetz": "Europe/Berlin",
561 "visibility": {
562 "usernamePanel": true,
563 "jobParams_nodes": false,
564 "jobParams_hours": false,
565 "jobParams_ppn": false,
566 "projectPanel": false,
567 "listProjects": true,
568 "resourcePanel": true,
569 "resolutionPanel": "Advanced",
570 "label_nodes": false,
571 "label_hours": false,
572 "label_ppn": false,
573 "cipherPanel": false,
574 "advancedCheckBoxPanel": true,
575 "debugCheckBoxPanel": "Advanced"
576 },
577 "loginHost": "jurecavis.fz-juelich.de",
578 "setDisplayResolution": {
579 "regex": [
580 null
581 ],
582 "__module__": "siteConfig",
583 "cmd": null,
584 "requireMatch": false,
585 "__class__": "cmdRegEx",
586 "host": "login",
587 "failFatal": false,
588 "formatFatal": false,
589 "async": false,
590 "loop": false
591 },
592 "getProjects": {
593 "regex": [
594 "(?P<group>.*)"
595 ],
596 "__module__": "siteConfig",
597 "cmd": "\"vncserver -profile | tail -n +2 | sed -e 's/^[[:space:]]*//'\"",
598 "requireMatch": false,
599 "__class__": "cmdRegEx",
600 "host": "login",
601 "failFatal": false,
602 "formatFatal": false,
603 "async": false,
604 "loop": false
605 },
606 "listAll": {
607 "regex": [
608 "(?P<jobid>(?P<jobidNumber>[0-9]+)) (?P<remainingWalltime>.*)$"
609 ],
610 "__module__": "siteConfig",
611 "cmd": "\"squeue -u {username} -o \\\"%i %L\\\" | tail -n -1\"",
612 "requireMatch": false,
613 "__class__": "cmdRegEx",
614 "host": "login",
615 "failFatal": true,
616 "formatFatal": false,
617 "async": false,
618 "loop": false
619 },
620 "startServer": {
621 "regex": [
622 "^Submitted batch job (?P<jobid>(?P<jobidNumber>[0-9]+))$"
623 ],
624 "__module__": "siteConfig",
625 "cmd": "\"mkdir ~/.vnc ; rm -f ~/.vnc/strudel_vislogin_clearpass ; touch ~/.vnc/strudel_vislogin_clearpass ; chmod 600 ~/.vnc/strudel_vislogin_clearpass ; passwd=\"'$'\"( dd if=/dev/urandom bs=1 count=8 2>/dev/null | md5sum | cut -b 1-8 ) ; echo \"'$'\"passwd > ~/.vnc/strudel_vislogin_clearpass ; cat ~/.vnc/strudel_vislogin_clearpass | vncpasswd -f > ~/.vnc/strudel_vislogin_passwd ; chmod 600 ~/.vnc/strudel_vislogin_passwd ; echo -e '#!/bin/bash\\n vncserver -rfbauth ~/.vnc/strudel_vislogin_passwd -fg -profile {project} -geometry {resolution}' | sbatch -p vis -N {nodes} --cpu_bind=none --gres=mem512,gpu:1 --mincpus {ppn} --start-xserver --time={hours}:00:00 -J desktop_{username} -o .vnc/slurm-%j.out \"",
626 "requireMatch": true,
627 "__class__": "cmdRegEx",
628 "host": "login",
629 "failFatal": true,
630 "formatFatal": false,
631 "async": false,
632 "loop": false
633 },
634 "showStart": {
635 "regex": [
636 "(?P<estimatedStart>.*)"
637 ],
638 "__module__": "siteConfig",
639 "cmd": "squeue -j {jobidNumber} --start | grep ^[0-9] | sed 's/ \\+ / /g' | cut -d\" \" -f6",
640 "requireMatch": true,
641 "__class__": "cmdRegEx",
642 "host": "login",
643 "failFatal": true,
644 "formatFatal": false,
645 "async": false,
646 "loop": false
647 },
648 "execHost": {
649 "regex": [
650 "(?P<execHost>\\S+)"
651 ],
652 "__module__": "siteConfig",
653 "cmd": "\"scontrol show job {jobidNumber} | grep BatchHost | cut -f 2 -d '=' | xargs -iname getent hosts name | cut -f 1 -d ' ' \"",
654 "requireMatch": true,
655 "__class__": "cmdRegEx",
656 "host": "login",
657 "failFatal": true,
658 "formatFatal": false,
659 "async": false,
660 "loop": false
661 },
662 "runSanityCheck": {
663 "regex": [
664 null
665 ],
666 "__module__": "siteConfig",
667 "cmd": null,
668 "requireMatch": false,
669 "__class__": "cmdRegEx",
670 "host": "login",
671 "failFatal": false,
672 "formatFatal": false,
673 "async": false,
674 "loop": false
675 },
676 "agent": {
677 "regex": [
678 "agent_hello"
679 ],
680 "__module__": "siteConfig",
681 "cmd": "{sshBinary} -A -c {cipher} -t -t -oStrictHostKeyChecking=yes -l {username} {loginHost} \"echo agent_hello; bash \"",
682 "requireMatch": true,
683 "__class__": "cmdRegEx",
684 "host": "local",
685 "failFatal": true,
686 "formatFatal": false,
687 "async": true,
688 "loop": false
689 },
690 "vncDisplay": {
691 "regex": [
692 "^.*?started on display \\S+(?P<vncDisplay>:[0-9]+)\\s*"
693 ],
694 "__module__": "siteConfig",
695 "cmd": "\"cat .vnc/slurm-{jobidNumber}.out\"",
696 "requireMatch": true,
697 "__class__": "cmdRegEx",
698 "host": "login",
699 "failFatal": true,
700 "formatFatal": false,
701 "async": false,
702 "loop": false
703 },
704 "authURL": null,
705 "oauthclientpasswd": null,
706 "oauthclient": null,
707 "authorizedKeysFile": null,
708 "username": null,
709 "project": null,
710 "onFirstLogin": null,
711 "otp": {
712 "regex": [
713 "^(?P<vncPasswd>\\S+)$"
714 ],
715 "__module__": "siteConfig",
716 "cmd": "\"cat ~/.vnc/strudel_vislogin_clearpass\"",
717 "requireMatch": true,
718 "__class__": "cmdRegEx",
719 "host": "login",
720 "failFatal": true,
721 "formatFatal": false,
722 "async": false,
723 "loop": false
724 },
725 "tunnel": {
726 "regex": [
727 "tunnel_hello"
728 ],
729 "__module__": "siteConfig",
730 "cmd": "{sshBinary} -A -c {cipher} -t -t -oStrictHostKeyChecking=yes -L {localPortNumber}:{execHost}:{remotePortNumber} -l {username} {loginHost} \"echo tunnel_hello; bash\"",
731 "requireMatch": true,
732 "__class__": "cmdRegEx",
733 "host": "local",
734 "failFatal": true,
735 "formatFatal": false,
736 "async": true,
737 "loop": false
738 },
739 "onConnectScript": {
740 "regex": [
741 null
742 ],
743 "__module__": "siteConfig",
744 "cmd": null,
745 "requireMatch": false,
746 "__class__": "cmdRegEx",
747 "host": "login",
748 "failFatal": false,
749 "formatFatal": false,
750 "async": false,
751 "loop": false
752 },
753 "running": {
754 "regex": [
755 "JobState=RUNNING"
756 ],
757 "__module__": "siteConfig",
758 "cmd": "\"scontrol show job {jobidNumber}\"",
759 "requireMatch": true,
760 "__class__": "cmdRegEx",
761 "host": "login",
762 "failFatal": true,
763 "formatFatal": false,
764 "async": false,
765 "loop": false
766 },
767 "stopForRestart": {
768 "regex": [
769 null
770 ],
771 "__module__": "siteConfig",
772 "cmd": "\"scancel {jobidNumber}\"",
773 "requireMatch": false,
774 "__class__": "cmdRegEx",
775 "host": "login",
776 "failFatal": true,
777 "formatFatal": false,
778 "async": false,
779 "loop": false
780 },
781 "stop": {
782 "regex": [
783 null
784 ],
785 "__module__": "siteConfig",
786 "cmd": "\"scancel {jobidNumber}\"",
787 "requireMatch": false,
788 "__class__": "cmdRegEx",
789 "host": "login",
790 "failFatal": true,
791 "formatFatal": false,
792 "async": false,
793 "loop": false
794 },
795 "provision": null,
796 "instanceFlavour": null,
797 "relabel": {},
798 "imageid": null,
799 "createReservation": {
800 "regex": [
801 null
802 ],
803 "__module__": "siteConfig",
804 "cmd": null,
805 "requireMatch": false,
806 "__class__": "cmdRegEx",
807 "host": "login",
808 "failFatal": false,
809 "formatFatal": false,
810 "async": false,
811 "loop": false
812 },
813 "listReservations": {
814 "regex": [
815 null
816 ],
817 "__module__": "siteConfig",
818 "cmd": null,
819 "requireMatch": false,
820 "__class__": "cmdRegEx",
821 "host": "login",
822 "failFatal": false,
823 "formatFatal": false,
824 "async": false,
825 "loop": false
826 },
827 "deleteReservation": {
828 "regex": [
829 null
830 ],
831 "__module__": "siteConfig",
832 "cmd": null,
833 "requireMatch": false,
834 "__class__": "cmdRegEx",
835 "host": "login",
836 "failFatal": false,
837 "formatFatal": false,
838 "async": false,
839 "loop": false
840 },
841 "dbusSessionBusAddress": {
842 "regex": [
843 "^DBUS_SESSION_BUS_ADDRESS=(?P<dbusSessionBusAddress>.*)$"
844 ],
845 "__module__": "siteConfig",
846 "cmd": "\"echo DBUS_SESSION_BUS_ADDRESS=dummy_dbus_session_bus_address\"",
847 "requireMatch": true,
848 "__class__": "cmdRegEx",
849 "host": "login",
850 "failFatal": true,
851 "formatFatal": false,
852 "async": false,
853 "loop": false
854 },
855 "openWebDavShareInRemoteFileBrowser": {
856 "regex": [
857 null
858 ],
859 "__module__": "siteConfig",
860 "cmd": "\"/usr/bin/ssh {execHost} 'DISPLAY={vncDisplay} Thunar davs://{localUsername}:{vncPasswd}@localhost:{remoteWebDavPortNumber}/{homeDirectoryWebDavShareName}'\"",
861 "requireMatch": false,
862 "__class__": "cmdRegEx",
863 "host": "login",
864 "failFatal": true,
865 "formatFatal": false,
866 "async": false,
867 "loop": false
868 },
869 "displayWebDavInfoDialogOnRemoteDesktop": {
870 "regex": [
871 null
872 ],
873 "__module__": "siteConfig",
874 "cmd": "\"/usr/bin/ssh {execHost} 'echo -e \\\"You can access your local home directory in the file browser Thunar with the URL:%sbr%s\\ndavs://{localUsername}@localhost:{remoteWebDavPortNumber}/{homeDirectoryWebDavShareName}%sbr%s\\nYour one-time password is {vncPasswd}\\\" > ~/.vnc/\\$(hostname){vncDisplay}-webdav.txt;'\"",
875 "requireMatch": false,
876 "__class__": "cmdRegEx",
877 "host": "login",
878 "failFatal": true,
879 "formatFatal": false,
880 "async": false,
881 "loop": false
882 },
883 "webDavWindowID": {
884 "regex": [
885 "^DummyWebDavWindowID=(?P<webDavWindowID>.*)$"
886 ],
887 "__module__": "siteConfig",
888 "cmd": "\"echo DummyWebDavWindowID=-1\"",
889 "requireMatch": true,
890 "__class__": "cmdRegEx",
891 "host": "login",
892 "failFatal": true,
893 "formatFatal": false,
894 "async": false,
895 "loop": false
896 },
897 "webDavCloseWindow": {
898 "regex": [
899 null
900 ],
901 "__module__": "siteConfig",
902 "cmd": "\"/usr/bin/ssh {execHost} 'DISPLAY={vncDisplay} /usr/local/desktop/close_webdav_window.sh webdav://{localUsername}@localhost:{remoteWebDavPortNumber}/{homeDirectoryWebDavShareName}'\"",
903 "requireMatch": false,
904 "__class__": "cmdRegEx",
905 "host": "login",
906 "failFatal": true,
907 "formatFatal": false,
908 "async": false,
909 "loop": false
910 },
911 "webDavMount": {
912 "regex": [
913 null
914 ],
915 "__module__": "siteConfig",
916 "cmd": "echo Mounting WebDAV...",
917 "requireMatch": false,
918 "__class__": "cmdRegEx",
919 "host": "login",
920 "failFatal": true,
921 "formatFatal": false,
922 "async": false,
923 "loop": false
924 },
925 "webDavUnmount": {
926 "regex": [
927 "hello"
928 ],
929 "__module__": "siteConfig",
930 "cmd": "echo hello",
931 "requireMatch": true,
932 "__class__": "cmdRegEx",
933 "host": "login",
934 "failFatal": true,
935 "formatFatal": false,
936 "async": false,
937 "loop": false
938 },
939 "webDavTunnel": {
940 "regex": [
941 "tunnel_hello"
942 ],
943 "__module__": "siteConfig",
944 "cmd": "{sshBinary} -A -c {cipher} -t -t -oStrictHostKeyChecking=no -oExitOnForwardFailure=yes -R {intermediateWebDavPortNumber}:localhost:{localWebDavPortNumber} -l {username} {loginHost} \"ssh -R {remoteWebDavPortNumber}:localhost:{intermediateWebDavPortNumber} {execHost} 'echo tunnel_hello; bash'\"",
945 "requireMatch": true,
946 "__class__": "cmdRegEx",
947 "host": "local",
948 "failFatal": true,
949 "formatFatal": false,
950 "async": true,
951 "loop": false
952 },
953 "webDavRemotePort": {
954 "regex": [
955 "^(?P<remoteWebDavPortNumber>[0-9]+)$"
956 ],
957 "__module__": "siteConfig",
958 "cmd": "\"/usr/bin/ssh {execHost} /usr/local/jsc/etc/xdg/scripts/strudel/get_ephemeral_port.py\"",
959 "requireMatch": true,
960 "__class__": "cmdRegEx",
961 "host": "login",
962 "failFatal": true,
963 "formatFatal": false,
964 "async": false,
965 "loop": false
966 },
967 "webDavIntermediatePort": {
968 "regex": [
969 "^(?P<intermediateWebDavPortNumber>[0-9]+)$"
970 ],
971 "__module__": "siteConfig",
972 "cmd": "\"/usr/local/jsc/etc/xdg/scripts/strudel/get_ephemeral_port.py\"",
973 "requireMatch": true,
974 "__class__": "cmdRegEx",
975 "host": "login",
976 "failFatal": true,
977 "formatFatal": false,
978 "async": false,
979 "loop": false
980 },
981 "messageRegexs": [
982 {
983 "pattern": "^INFO:(?P<info>.*(?:\n|\r\n?))",
984 "__class__": "__regex__"
985 },
986 {
987 "pattern": "^WARN:(?P<warn>.*(?:\n|\r\n?))",
988 "__class__": "__regex__"
989 },
990 {
991 "pattern": "^ERROR:(?P<error>.*(?:\n|\r\n?))",
992 "__class__": "__regex__"
993 }
994 ],
995 "displayStrings": {
996 "__module__": "siteConfig",
997 "onFirstLoginFailure": "An unknown error occured. Please contact your site help desk.",
998 "persistentMessageStop": "Stop the desktop",
999 "createNewKeyDialogNewPassphraseEmptyForbidden": "Sorry, empty passphrases are forbidden.",
1000 "newPassphraseTitle": "Please enter a new passphrase",
1001 "createNewKeyDialogNewPassphraseMismatch": "Passphrases don't match!",
1002 "qdelQueuedJobQdel": "Delete the job",
1003 "reconnectMessage": "An Existing Desktop was found. It has {timestring} remaining. Would you like to reconnect or kill it and start a new desktop?",
1004 "helpEmailAddress": "sc@fz-juelich.de",
1005 "temporaryKey": "\nWould you like to use the launchers old behaviour (entering a password every time you start a new desktop) or try the new behaviour (creating an ssh key pair and entering a passphrase the first time you use the launcher after reboot.)\n\nPasswords are recomended if this is a shared user account.\n\nSSH Keys are recommended if you are the only person who uses this account.\n\nThis option can be changed from the Identity menu.\n",
1006 "persistentMessagePersist": "Leave it running",
1007 "newPassphraseEmptyForbidden": "Sorry, empty passphrases are forbidden.\nIt looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
1008 "temporaryKeyNo": "Use my SSH Key",
1009 "newPassphrase": "It looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
1010 "qdelQueuedJobNOOP": "Leave it in the queue (I'll reconnect later)",
1011 "qdelQueuedJob": "It looks like you've been waiting for a job to start.\nDo you want me to delete the job or leave it in the queue so you can reconnect later?\n",
1012 "temporaryKeyYes": "Use my password every time",
1013 "passphrasePromptIncorrect": "\nSorry, that passphrase was incorrect.\nPlease enter the passphrase for you SSH Key\nIf you have forgoten the passphrase for you key, you may need to delete it and create a new key.\nYou can find this option under the Identity menu.\n",
1014 "newPassphraseTooShort": "Sorry, the passphrase must be at least 6 characters.\nIt looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
1015 "networkError": "It looks like a network error has occured. You may be able to resume your work by logging in again.",
1016 "__class__": "sshKeyDistDisplayStrings",
1017 "reconnectMessageYes": "Reconnect",
1018 "passphrasePromptIncorrectl": "Sorry, that passphrase was incorrect. Please enter the passphrase for your ssh key",
1019 "passwdPrompt": "Please enter the password for your JURECA account.",
1020 "passphrasePrompt": "Please enter the passphrase for your SSH key",
1021 "createNewKeyDialogNewPassphraseTooShort": "Passphrase is too short.",
1022 "passwdPromptIncorrect": "Sorry, that password was incorrect.\nPlease enter the password for your JURECA account.",
1023 "reconnectMessageNo": "New desktop",
1024 "persistentMessage": "Would you like to leave your current session running so that you can reconnect later?\nIt has {timestring} remaining.",
1025 "newPassphraseMismatch": "Sorry, the two passphrases you entered don't match.\nIt looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
1026 "selectProjectMessage": "Please select from one of the following desktop profiles:"
1027 }
1028 },
1029 "JURECA - login node (vis: 2xGPU)": {
1030 "__module__": "siteConfig",
1031 "__class__": "siteConfig",
1032 "directConnect": {
1033 "regex": [
1034 null
1035 ],
1036 "__module__": "siteConfig",
1037 "cmd": null,
1038 "requireMatch": false,
1039 "__class__": "cmdRegEx",
1040 "host": "login",
1041 "failFatal": true,
1042 "formatFatal": false,
1043 "async": false,
1044 "loop": false
1045 },
1046 "defaults": {
1047 "jobParams_mem": 512,
1048 "jobParams_ppn": 1,
1049 "jobParams_nodes": 1,
1050 "jobParams_hours": 24
1051 },
1052 "siteRanges": {
1053 "jobParams_mem": [
1054 512,
1055 512
1056 ],
1057 "jobParams_ppn": [
1058 1,
1059 1
1060 ],
1061 "jobParams_nodes": [
1062 1,
1063 1
1064 ],
1065 "jobParams_hours": [
1066 1,
1067 24
1068 ]
1069 },
1070 "sitetz": "Europe/Berlin",
1071 "visibility": {
1072 "usernamePanel": true,
1073 "jobParams_nodes": false,
1074 "jobParams_hours": false,
1075 "jobParams_ppn": false,
1076 "projectPanel": false,
1077 "listProjects": true,
1078 "resourcePanel": true,
1079 "resolutionPanel": "Advanced",
1080 "label_nodes": false,
1081 "label_hours": false,
1082 "label_ppn": false,
1083 "cipherPanel": false,
1084 "advancedCheckBoxPanel": true,
1085 "debugCheckBoxPanel": "Advanced"
1086 },
1087 "loginHost": "jurecavis.fz-juelich.de",
1088 "setDisplayResolution": {
1089 "regex": [
1090 null
1091 ],
1092 "__module__": "siteConfig",
1093 "cmd": null,
1094 "requireMatch": false,
1095 "__class__": "cmdRegEx",
1096 "host": "login",
1097 "failFatal": false,
1098 "formatFatal": false,
1099 "async": false,
1100 "loop": false
1101 },
1102 "runSanityCheck": {
1103 "regex": [
1104 null
1105 ],
1106 "__module__": "siteConfig",
1107 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py sanitycheck -f viscompute -l {launcher_version_number}'",
1108 "requireMatch": false,
1109 "__class__": "cmdRegEx",
1110 "host": "login",
1111 "failFatal": false,
1112 "formatFatal": false,
1113 "async": false,
1114 "loop": false
1115 },
1116 "getProjects": {
1117 "regex": [
1118 "(?P<group>.*)"
1119 ],
1120 "__module__": "siteConfig",
1121 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py getprofiles'",
1122 "requireMatch": false,
1123 "__class__": "cmdRegEx",
1124 "host": "login",
1125 "failFatal": false,
1126 "formatFatal": false,
1127 "async": false,
1128 "loop": false
1129 },
1130 "listAll": {
1131 "regex": [
1132 "(?P<sessionId>.*) (?P<remainingWalltime>.*)$"
1133 ],
1134 "__module__": "siteConfig",
1135 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py listall -f vislogin'",
1136 "requireMatch": false,
1137 "__class__": "cmdRegEx",
1138 "host": "login",
1139 "failFatal": true,
1140 "formatFatal": false,
1141 "async": false,
1142 "loop": false
1143 },
1144 "startServer": {
1145 "regex": [
1146 "(?P<sessionId>\\S+)"
1147 ],
1148 "__module__": "siteConfig",
1149 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py newsession -f vislogin -x {project} -r {resolution}'",
1150 "requireMatch": true,
1151 "__class__": "cmdRegEx",
1152 "host": "login",
1153 "failFatal": true,
1154 "formatFatal": false,
1155 "async": false,
1156 "loop": false
1157 },
1158 "showStart": {
1159 "regex": [
1160 "(?P<estimatedStart>.*)"
1161 ],
1162 "__module__": "siteConfig",
1163 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py showstart -f vislogin -s {sessionId}'",
1164 "requireMatch": true,
1165 "__class__": "cmdRegEx",
1166 "host": "login",
1167 "failFatal": true,
1168 "formatFatal": false,
1169 "async": false,
1170 "loop": false
1171 },
1172 "execHost": {
1173 "regex": [
1174 "(?P<execHost>\\S+)"
1175 ],
1176 "__module__": "siteConfig",
1177 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py exechost -f vislogin -s {sessionId}'",
1178 "requireMatch": true,
1179 "__class__": "cmdRegEx",
1180 "host": "login",
1181 "failFatal": true,
1182 "formatFatal": false,
1183 "async": false,
1184 "loop": false
1185 },
1186 "running": {
1187 "regex": [
1188 "true"
1189 ],
1190 "__module__": "siteConfig",
1191 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py isrunning -f vislogin -s {sessionId}'",
1192 "requireMatch": true,
1193 "__class__": "cmdRegEx",
1194 "host": "login",
1195 "failFatal": true,
1196 "formatFatal": false,
1197 "async": false,
1198 "loop": false
1199 },
1200 "agent": {
1201 "regex": [
1202 "agent_hello"
1203 ],
1204 "__module__": "siteConfig",
1205 "cmd": "{sshBinary} -A -c {cipher} -t -t -oStrictHostKeyChecking=yes -l {username} {loginHost} \"ssh -A -oStrictHostKeyChecking=no {execHost} \\\"echo agent_hello; bash \\\"\"",
1206 "requireMatch": true,
1207 "__class__": "cmdRegEx",
1208 "host": "local",
1209 "failFatal": true,
1210 "formatFatal": false,
1211 "async": true,
1212 "loop": false
1213 },
1214 "vncDisplay": {
1215 "regex": [
1216 "^(?<vncDisplay>:[0-9]+)\\s*(?P<vncPID>[0-9]+)\\s*$"
1217 ],
1218 "__module__": "siteConfig",
1219 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py vncdisplay -f vislogin -s {sessionId}'",
1220 "requireMatch": true,
1221 "__class__": "cmdRegEx",
1222 "host": "login",
1223 "failFatal": true,
1224 "formatFatal": false,
1225 "async": false,
1226 "loop": false
1227 },
1228 "authURL": null,
1229 "oauthclientpasswd": null,
1230 "oauthclient": null,
1231 "authorizedKeysFile": null,
1232 "username": null,
1233 "onFirstLogin": null,
1234 "otp": {
1235 "regex": [
1236 "^(?P<vncpPasswd>\\S+)$"
1237 ],
1238 "__module__": "siteConfig",
1239 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py otp -f vislogin -e {execHost} -d {vncDisplay}'",
1240 "requireMatch": true,
1241 "__class__": "cmdRegEx",
1242 "host": "login",
1243 "failFatal": true,
1244 "formatFatal": false,
1245 "async": false,
1246 "loop": false
1247 },
1248 "tunnel": {
1249 "regex": [
1250 "tunnel_hello"
1251 ],
1252 "__module__": "siteConfig",
1253 "cmd": "{sshBinary} -A -c {cipher} -t -t -oStrictHostKeyChecking=yes -L {localPortNumber}:{execHost}:{remotePortNumber} -l {username} {loginHost} \"echo tunnel_hello; bash\"",
1254 "requireMatch": true,
1255 "__class__": "cmdRegEx",
1256 "host": "local",
1257 "failFatal": true,
1258 "formatFatal": false,
1259 "async": true,
1260 "loop": false
1261 },
1262 "onConnectScript": {
1263 "regex": [
1264 null
1265 ],
1266 "__module__": "siteConfig",
1267 "cmd": null,
1268 "requireMatch": false,
1269 "__class__": "cmdRegEx",
1270 "host": "login",
1271 "failFatal": false,
1272 "formatFatal": false,
1273 "async": false,
1274 "loop": false
1275 },
1276 "stopForRestart": {
1277 "regex": [
1278 null
1279 ],
1280 "__module__": "siteConfig",
1281 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py stop -f vislogin -s {sessionId} --wait 4'",
1282 "requireMatch": false,
1283 "__class__": "cmdRegEx",
1284 "host": "login",
1285 "failFatal": true,
1286 "formatFatal": false,
1287 "async": false,
1288 "loop": false
1289 },
1290 "stop": {
1291 "regex": [
1292 null
1293 ],
1294 "__module__": "siteConfig",
1295 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py stop -f vislogin -s {sessionId}'",
1296 "requireMatch": false,
1297 "__class__": "cmdRegEx",
1298 "host": "login",
1299 "failFatal": true,
1300 "formatFatal": false,
1301 "async": false,
1302 "loop": false
1303 },
1304 "provision": null,
1305 "instanceFlavour": null,
1306 "relabel": {},
1307 "imageid": null,
1308 "createReservation": {
1309 "regex": [
1310 null
1311 ],
1312 "__module__": "siteConfig",
1313 "cmd": null,
1314 "requireMatch": false,
1315 "__class__": "cmdRegEx",
1316 "host": "login",
1317 "failFatal": false,
1318 "formatFatal": false,
1319 "async": false,
1320 "loop": false
1321 },
1322 "listReservations": {
1323 "regex": [
1324 null
1325 ],
1326 "__module__": "siteConfig",
1327 "cmd": null,
1328 "requireMatch": false,
1329 "__class__": "cmdRegEx",
1330 "host": "login",
1331 "failFatal": false,
1332 "formatFatal": false,
1333 "async": false,
1334 "loop": false
1335 },
1336 "deleteReservation": {
1337 "regex": [
1338 null
1339 ],
1340 "__module__": "siteConfig",
1341 "cmd": null,
1342 "requireMatch": false,
1343 "__class__": "cmdRegEx",
1344 "host": "login",
1345 "failFatal": false,
1346 "formatFatal": false,
1347 "async": false,
1348 "loop": false
1349 },
1350 "dbusSessionBusAddress": {
1351 "regex": [
1352 "^DBUS_SESSION_BUS_ADDRESS=(?P<dbusSessionBusAddress>.*)$"
1353 ],
1354 "__module__": "siteConfig",
1355 "cmd": "\"echo DBUS_SESSION_BUS_ADDRESS=dummy_dbus_session_bus_address\"",
1356 "requireMatch": true,
1357 "__class__": "cmdRegEx",
1358 "host": "login",
1359 "failFatal": true,
1360 "formatFatal": false,
1361 "async": false,
1362 "loop": false
1363 },
1364 "openWebDavShareInRemoteFileBrowser": {
1365 "regex": [
1366 null
1367 ],
1368 "__module__": "siteConfig",
1369 "cmd": "\"/usr/bin/ssh {execHost} 'DISPLAY={vncDisplay} /usr/bin/konqueror webdav://{localUsername}:{vncPasswd}@localhost:{remoteWebDavPortNumber}/{homeDirectoryWebDavShareName}'\"",
1370 "requireMatch": false,
1371 "__class__": "cmdRegEx",
1372 "host": "login",
1373 "failFatal": true,
1374 "formatFatal": false,
1375 "async": false,
1376 "loop": false
1377 },
1378 "displayWebDavInfoDialogOnRemoteDesktop": {
1379 "regex": [
1380 null
1381 ],
1382 "__module__": "siteConfig",
1383 "cmd": "\"/usr/bin/ssh {execHost} 'echo -e \\\"You can access your local home directory in Konqueror with the URL:%sbr%s\\nwebdav://{localUsername}@localhost:{remoteWebDavPortNumber}/{homeDirectoryWebDavShareName}%sbr%s\\nYour one-time password is {vncPasswd}\\\" > ~/.vnc/\\$(hostname){vncDisplay}-webdav.txt;'\"",
1384 "requireMatch": false,
1385 "__class__": "cmdRegEx",
1386 "host": "login",
1387 "failFatal": true,
1388 "formatFatal": false,
1389 "async": false,
1390 "loop": false
1391 },
1392 "webDavWindowID": {
1393 "regex": [
1394 "^DummyWebDavWindowID=(?P<webDavWindowID>.*)$"
1395 ],
1396 "__module__": "siteConfig",
1397 "cmd": "\"echo DummyWebDavWindowID=-1\"",
1398 "requireMatch": true,
1399 "__class__": "cmdRegEx",
1400 "host": "login",
1401 "failFatal": true,
1402 "formatFatal": false,
1403 "async": false,
1404 "loop": false
1405 },
1406 "webDavCloseWindow": {
1407 "regex": [
1408 null
1409 ],
1410 "__module__": "siteConfig",
1411 "cmd": "\"/usr/bin/ssh {execHost} 'DISPLAY={vncDisplay} /usr/local/desktop/close_webdav_window.sh webdav://{localUsername}@localhost:{remoteWebDavPortNumber}/{homeDirectoryWebDavShareName}'\"",
1412 "requireMatch": false,
1413 "__class__": "cmdRegEx",
1414 "host": "login",
1415 "failFatal": true,
1416 "formatFatal": false,
1417 "async": false,
1418 "loop": false
1419 },
1420 "webDavMount": {
1421 "regex": [
1422 null
1423 ],
1424 "__module__": "siteConfig",
1425 "cmd": "echo Mounting WebDAV...",
1426 "requireMatch": false,
1427 "__class__": "cmdRegEx",
1428 "host": "login",
1429 "failFatal": true,
1430 "formatFatal": false,
1431 "async": false,
1432 "loop": false
1433 },
1434 "webDavUnmount": {
1435 "regex": [
1436 "hello"
1437 ],
1438 "__module__": "siteConfig",
1439 "cmd": "echo hello",
1440 "requireMatch": true,
1441 "__class__": "cmdRegEx",
1442 "host": "login",
1443 "failFatal": true,
1444 "formatFatal": false,
1445 "async": false,
1446 "loop": false
1447 },
1448 "webDavTunnel": {
1449 "regex": [
1450 "tunnel_hello"
1451 ],
1452 "__module__": "siteConfig",
1453 "cmd": "{sshBinary} -A -c {cipher} -t -t -oStrictHostKeyChecking=no -oExitOnForwardFailure=yes -R {intermediateWebDavPortNumber}:localhost:{localWebDavPortNumber} -l {username} {loginHost} \"ssh -R {remoteWebDavPortNumber}:localhost:{intermediateWebDavPortNumber} {execHost} 'echo tunnel_hello; bash'\"",
1454 "requireMatch": true,
1455 "__class__": "cmdRegEx",
1456 "host": "local",
1457 "failFatal": true,
1458 "formatFatal": false,
1459 "async": true,
1460 "loop": false
1461 },
1462 "webDavRemotePort": {
1463 "regex": [
1464 "^(?P<remoteWebDavPortNumber>[0-9]+)$"
1465 ],
1466 "__module__": "siteConfig",
1467 "cmd": "\"/usr/bin/ssh {execHost} /usr/local/desktop/get_ephemeral_port.py\"",
1468 "requireMatch": true,
1469 "__class__": "cmdRegEx",
1470 "host": "login",
1471 "failFatal": true,
1472 "formatFatal": false,
1473 "async": false,
1474 "loop": false
1475 },
1476 "webDavIntermediatePort": {
1477 "regex": [
1478 "^(?P<intermediateWebDavPortNumber>[0-9]+)$"
1479 ],
1480 "__module__": "siteConfig",
1481 "cmd": "\"/usr/local/desktop/get_ephemeral_port.py\"",
1482 "requireMatch": true,
1483 "__class__": "cmdRegEx",
1484 "host": "login",
1485 "failFatal": true,
1486 "formatFatal": false,
1487 "async": false,
1488 "loop": false
1489 },
1490 "messageRegexs": [
1491 {
1492 "pattern": "^INFO:(?P<info>.*(?:\n|\r\n?))",
1493 "__class__": "__regex__"
1494 },
1495 {
1496 "pattern": "^WARN:(?P<warn>.*(?:\n|\r\n?))",
1497 "__class__": "__regex__"
1498 },
1499 {
1500 "pattern": "^ERROR:(?P<error>.*(?:\n|\r\n?))",
1501 "__class__": "__regex__"
1502 }
1503 ],
1504 "displayStrings": {
1505 "__module__": "siteConfig",
1506 "onFirstLoginFailure": "An unknown error occured. Please contact your site help desk.",
1507 "persistentMessageStop": "Stop the desktop",
1508 "createNewKeyDialogNewPassphraseEmptyForbidden": "Sorry, empty passphrases are forbidden.",
1509 "newPassphraseTitle": "Please enter a new passphrase",
1510 "createNewKeyDialogNewPassphraseMismatch": "Passphrases don't match!",
1511 "qdelQueuedJobQdel": "Delete the job",
1512 "reconnectMessage": "An Existing Desktop was found. It has {timestring} remaining. Would you like to reconnect or kill it and start a new desktop?",
1513 "helpEmailAddress": "sc@fz-juelich.de",
1514 "temporaryKey": "\nWould you like to use the launchers old behaviour (entering a password every time you start a new desktop) or try the new behaviour (creating an ssh key pair and entering a passphrase the first time you use the launcher after reboot.)\n\nPasswords are recomended if this is a shared user account.\n\nSSH Keys are recommended if you are the only person who uses this account.\n\nThis option can be changed from the Identity menu.\n",
1515 "persistentMessagePersist": "Leave it running",
1516 "newPassphraseEmptyForbidden": "Sorry, empty passphrases are forbidden.\nIt looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
1517 "temporaryKeyNo": "Use my SSH Key",
1518 "newPassphrase": "It looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
1519 "qdelQueuedJobNOOP": "Leave it in the queue (I'll reconnect later)",
1520 "qdelQueuedJob": "It looks like you've been waiting for a job to start.\nDo you want me to delete the job or leave it in the queue so you can reconnect later?\n",
1521 "temporaryKeyYes": "Use my password every time",
1522 "passphrasePromptIncorrect": "\nSorry, that passphrase was incorrect.\nPlease enter the passphrase for you SSH Key\nIf you have forgoten the passphrase for you key, you may need to delete it and create a new key.\nYou can find this option under the Identity menu.\n",
1523 "newPassphraseTooShort": "Sorry, the passphrase must be at least 6 characters.\nIt looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
1524 "networkError": "It looks like a network error has occured. You may be able to resume your work by logging in again.",
1525 "__class__": "sshKeyDistDisplayStrings",
1526 "reconnectMessageYes": "Reconnect",
1527 "passphrasePromptIncorrectl": "Sorry, that passphrase was incorrect. Please enter the passphrase for your ssh key",
1528 "passwdPrompt": "Please enter the password for your JURECA account.",
1529 "passphrasePrompt": "Please enter the passphrase for your SSH key",
1530 "createNewKeyDialogNewPassphraseTooShort": "Passphrase is too short.",
1531 "passwdPromptIncorrect": "Sorry, that password was incorrect.\nPlease enter the password for your JURECA account.",
1532 "reconnectMessageNo": "New desktop",
1533 "persistentMessage": "Would you like to leave your current session running so that you can reconnect later?\nIt has {timestring} remaining.",
1534 "newPassphraseMismatch": "Sorry, the two passphrases you entered don't match.\nIt looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher."
1535 }
1536 },
1537 "JURECA - compute nodes (vis: 2xGPU)": {
1538 "__module__": "siteConfig",
1539 "__class__": "siteConfig",
1540 "directConnect": {
1541 "regex": [
1542 null
1543 ],
1544 "__module__": "siteConfig",
1545 "cmd": null,
1546 "requireMatch": false,
1547 "__class__": "cmdRegEx",
1548 "host": "login",
1549 "failFatal": true,
1550 "formatFatal": false,
1551 "async": false,
1552 "loop": false
1553 },
1554 "defaults": {
1555 "jobParams_mem": 512,
1556 "jobParams_ppn": 24,
1557 "jobParams_nodes": 1,
1558 "jobParams_hours": 24
1559 },
1560 "siteRanges": {
1561 "jobParams_mem": [
1562 512,
1563 1024
1564 ],
1565 "jobParams_ppn": [
1566 24,
1567 24
1568 ],
1569 "jobParams_nodes": [
1570 1,
1571 10
1572 ],
1573 "jobParams_hours": [
1574 1,
1575 24
1576 ]
1577 },
1578 "sitetz": "Europe/Berlin",
1579 "visibility": {
1580 "usernamePanel": true,
1581 "jobParams_nodes": true,
1582 "jobParams_hours": true,
1583 "jobParams_ppn": true,
1584 "projectPanel": false,
1585 "listProjects": true,
1586 "resourcePanel": true,
1587 "resolutionPanel": "Advanced",
1588 "label_nodes": true,
1589 "label_hours": true,
1590 "label_ppn": true,
1591 "cipherPanel": false,
1592 "advancedCheckBoxPanel": true,
1593 "debugCheckBoxPanel": "Advanced"
1594 },
1595 "loginHost": "jurecavis.fz-juelich.de",
1596 "setDisplayResolution": {
1597 "regex": [
1598 null
1599 ],
1600 "__module__": "siteConfig",
1601 "cmd": null,
1602 "requireMatch": false,
1603 "__class__": "cmdRegEx",
1604 "host": "login",
1605 "failFatal": false,
1606 "formatFatal": false,
1607 "async": false,
1608 "loop": false
1609 },
1610 "runSanityCheck": {
1611 "regex": [
1612 null
1613 ],
1614 "__module__": "siteConfig",
1615 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py sanitycheck -f viscompute -l {launcher_version_number}'",
1616 "requireMatch": false,
1617 "__class__": "cmdRegEx",
1618 "host": "login",
1619 "failFatal": false,
1620 "formatFatal": false,
1621 "async": false,
1622 "loop": false
1623 },
1624 "getProjects": {
1625 "regex": [
1626 "(?P<group>.*)"
1627 ],
1628 "__module__": "siteConfig",
1629 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py getprofiles'",
1630 "requireMatch": false,
1631 "__class__": "cmdRegEx",
1632 "host": "login",
1633 "failFatal": false,
1634 "formatFatal": false,
1635 "async": false,
1636 "loop": false
1637 },
1638 "listAll": {
1639 "regex": [
1640 "(?P<sessionId>[0-9]+) (?P<remainingWalltime>.*)$"
1641 ],
1642 "__module__": "siteConfig",
1643 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py listall -f viscompute'",
1644 "requireMatch": false,
1645 "__class__": "cmdRegEx",
1646 "host": "login",
1647 "failFatal": true,
1648 "formatFatal": false,
1649 "async": false,
1650 "loop": false
1651 },
1652 "startServer": {
1653 "regex": [
1654 "(?P<sessionId>[0-9]+)"
1655 ],
1656 "__module__": "siteConfig",
1657 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py newsession -f viscompute -x {project} -t {hours} -n {nodes} -r {resolution} -m {mem} -c {ppn}'",
1658 "requireMatch": true,
1659 "__class__": "cmdRegEx",
1660 "host": "login",
1661 "failFatal": true,
1662 "formatFatal": false,
1663 "async": false,
1664 "loop": false
1665 },
1666 "showStart": {
1667 "regex": [
1668 "(?P<estimatedStart>.*)"
1669 ],
1670 "__module__": "siteConfig",
1671 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py showstart -f viscompute -s {sessionId}'",
1672 "requireMatch": true,
1673 "__class__": "cmdRegEx",
1674 "host": "login",
1675 "failFatal": true,
1676 "formatFatal": false,
1677 "async": false,
1678 "loop": false
1679 },
1680 "execHost": {
1681 "regex": [
1682 "(?P<execHost>\\S+)"
1683 ],
1684 "__module__": "siteConfig",
1685 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py exechost -f viscompute -s {sessionId}'",
1686 "requireMatch": true,
1687 "__class__": "cmdRegEx",
1688 "host": "login",
1689 "failFatal": true,
1690 "formatFatal": false,
1691 "async": false,
1692 "loop": false
1693 },
1694 "running": {
1695 "regex": [
1696 "true"
1697 ],
1698 "__module__": "siteConfig",
1699 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py isrunning -f viscompute -s {sessionId}'",
1700 "requireMatch": true,
1701 "__class__": "cmdRegEx",
1702 "host": "login",
1703 "failFatal": true,
1704 "formatFatal": false,
1705 "async": false,
1706 "loop": false
1707 },
1708 "agent": {
1709 "regex": [
1710 "agent_hello"
1711 ],
1712 "__module__": "siteConfig",
1713 "cmd": "{sshBinary} -A -c {cipher} -t -t -oStrictHostKeyChecking=yes -l {username} {loginHost} \"ssh -A -oStrictHostKeyChecking=no {execHost} \\\"echo agent_hello; bash \\\"\"",
1714 "requireMatch": true,
1715 "__class__": "cmdRegEx",
1716 "host": "local",
1717 "failFatal": true,
1718 "formatFatal": false,
1719 "async": true,
1720 "loop": false
1721 },
1722 "vncDisplay": {
1723 "regex": [
1724 "^(?<vncDisplay>:[0-9]+)\\s*(?P<vncPID>[0-9]+)\\s*$"
1725 ],
1726 "__module__": "siteConfig",
1727 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py vncdisplay -f viscompute -s {sessionId}'",
1728 "requireMatch": true,
1729 "__class__": "cmdRegEx",
1730 "host": "login",
1731 "failFatal": true,
1732 "formatFatal": false,
1733 "async": false,
1734 "loop": false
1735 },
1736 "authURL": null,
1737 "oauthclientpasswd": null,
1738 "oauthclient": null,
1739 "authorizedKeysFile": null,
1740 "username": null,
1741 "onFirstLogin": null,
1742 "otp": {
1743 "regex": [
1744 "^(?P<vncpPasswd>\\S+)$"
1745 ],
1746 "__module__": "siteConfig",
1747 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py otp -f viscompute -e {execHost} -d {vncDisplay}'",
1748 "requireMatch": true,
1749 "__class__": "cmdRegEx",
1750 "host": "login",
1751 "failFatal": true,
1752 "formatFatal": false,
1753 "async": false,
1754 "loop": false
1755 },
1756 "tunnel": {
1757 "regex": [
1758 "tunnel_hello"
1759 ],
1760 "__module__": "siteConfig",
1761 "cmd": "{sshBinary} -A -c {cipher} -t -t -oStrictHostKeyChecking=yes -L {localPortNumber}:{execHost}:{remotePortNumber} -l {username} {loginHost} \"echo tunnel_hello; bash\"",
1762 "requireMatch": true,
1763 "__class__": "cmdRegEx",
1764 "host": "local",
1765 "failFatal": true,
1766 "formatFatal": false,
1767 "async": true,
1768 "loop": false
1769 },
1770 "onConnectScript": {
1771 "regex": [
1772 null
1773 ],
1774 "__module__": "siteConfig",
1775 "cmd": null,
1776 "requireMatch": false,
1777 "__class__": "cmdRegEx",
1778 "host": "login",
1779 "failFatal": false,
1780 "formatFatal": false,
1781 "async": false,
1782 "loop": false
1783 },
1784 "stopForRestart": {
1785 "regex": [
1786 null
1787 ],
1788 "__module__": "siteConfig",
1789 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py stop -f viscompute -s {sessionId} --wait 4'",
1790 "requireMatch": false,
1791 "__class__": "cmdRegEx",
1792 "host": "login",
1793 "failFatal": true,
1794 "formatFatal": false,
1795 "async": false,
1796 "loop": false
1797 },
1798 "stop": {
1799 "regex": [
1800 null
1801 ],
1802 "__module__": "siteConfig",
1803 "cmd": "'/usr/local/jsc/etc/xdg/scripts/strudel/vis_manager.py stop -f viscompute -s {sessionId}'",
1804 "requireMatch": false,
1805 "__class__": "cmdRegEx",
1806 "host": "login",
1807 "failFatal": true,
1808 "formatFatal": false,
1809 "async": false,
1810 "loop": false
1811 },
1812 "provision": null,
1813 "instanceFlavour": null,
1814 "relabel": {},
1815 "imageid": null,
1816 "createReservation": {
1817 "regex": [
1818 null
1819 ],
1820 "__module__": "siteConfig",
1821 "cmd": null,
1822 "requireMatch": false,
1823 "__class__": "cmdRegEx",
1824 "host": "login",
1825 "failFatal": false,
1826 "formatFatal": false,
1827 "async": false,
1828 "loop": false
1829 },
1830 "listReservations": {
1831 "regex": [
1832 null
1833 ],
1834 "__module__": "siteConfig",
1835 "cmd": null,
1836 "requireMatch": false,
1837 "__class__": "cmdRegEx",
1838 "host": "login",
1839 "failFatal": false,
1840 "formatFatal": false,
1841 "async": false,
1842 "loop": false
1843 },
1844 "deleteReservation": {
1845 "regex": [
1846 null
1847 ],
1848 "__module__": "siteConfig",
1849 "cmd": null,
1850 "requireMatch": false,
1851 "__class__": "cmdRegEx",
1852 "host": "login",
1853 "failFatal": false,
1854 "formatFatal": false,
1855 "async": false,
1856 "loop": false
1857 },
1858 "dbusSessionBusAddress": {
1859 "regex": [
1860 "^DBUS_SESSION_BUS_ADDRESS=(?P<dbusSessionBusAddress>.*)$"
1861 ],
1862 "__module__": "siteConfig",
1863 "cmd": "\"echo DBUS_SESSION_BUS_ADDRESS=dummy_dbus_session_bus_address\"",
1864 "requireMatch": true,
1865 "__class__": "cmdRegEx",
1866 "host": "login",
1867 "failFatal": true,
1868 "formatFatal": false,
1869 "async": false,
1870 "loop": false
1871 },
1872 "openWebDavShareInRemoteFileBrowser": {
1873 "regex": [
1874 null
1875 ],
1876 "__module__": "siteConfig",
1877 "cmd": "\"/usr/bin/ssh {execHost} 'DISPLAY={vncDisplay} /usr/bin/konqueror webdav://{localUsername}:{vncPasswd}@localhost:{remoteWebDavPortNumber}/{homeDirectoryWebDavShareName}'\"",
1878 "requireMatch": false,
1879 "__class__": "cmdRegEx",
1880 "host": "login",
1881 "failFatal": true,
1882 "formatFatal": false,
1883 "async": false,
1884 "loop": false
1885 },
1886 "displayWebDavInfoDialogOnRemoteDesktop": {
1887 "regex": [
1888 null
1889 ],
1890 "__module__": "siteConfig",
1891 "cmd": "\"/usr/bin/ssh {execHost} 'echo -e \\\"You can access your local home directory in Konqueror with the URL:%sbr%s\\nwebdav://{localUsername}@localhost:{remoteWebDavPortNumber}/{homeDirectoryWebDavShareName}%sbr%s\\nYour one-time password is {vncPasswd}\\\" > ~/.vnc/\\$(hostname){vncDisplay}-webdav.txt;'\"",
1892 "requireMatch": false,
1893 "__class__": "cmdRegEx",
1894 "host": "login",
1895 "failFatal": true,
1896 "formatFatal": false,
1897 "async": false,
1898 "loop": false
1899 },
1900 "webDavWindowID": {
1901 "regex": [
1902 "^DummyWebDavWindowID=(?P<webDavWindowID>.*)$"
1903 ],
1904 "__module__": "siteConfig",
1905 "cmd": "\"echo DummyWebDavWindowID=-1\"",
1906 "requireMatch": true,
1907 "__class__": "cmdRegEx",
1908 "host": "login",
1909 "failFatal": true,
1910 "formatFatal": false,
1911 "async": false,
1912 "loop": false
1913 },
1914 "webDavCloseWindow": {
1915 "regex": [
1916 null
1917 ],
1918 "__module__": "siteConfig",
1919 "cmd": "\"/usr/bin/ssh {execHost} 'DISPLAY={vncDisplay} /usr/local/desktop/close_webdav_window.sh webdav://{localUsername}@localhost:{remoteWebDavPortNumber}/{homeDirectoryWebDavShareName}'\"",
1920 "requireMatch": false,
1921 "__class__": "cmdRegEx",
1922 "host": "login",
1923 "failFatal": true,
1924 "formatFatal": false,
1925 "async": false,
1926 "loop": false
1927 },
1928 "webDavMount": {
1929 "regex": [
1930 null
1931 ],
1932 "__module__": "siteConfig",
1933 "cmd": "echo Mounting WebDAV...",
1934 "requireMatch": false,
1935 "__class__": "cmdRegEx",
1936 "host": "login",
1937 "failFatal": true,
1938 "formatFatal": false,
1939 "async": false,
1940 "loop": false
1941 },
1942 "webDavUnmount": {
1943 "regex": [
1944 "hello"
1945 ],
1946 "__module__": "siteConfig",
1947 "cmd": "echo hello",
1948 "requireMatch": true,
1949 "__class__": "cmdRegEx",
1950 "host": "login",
1951 "failFatal": true,
1952 "formatFatal": false,
1953 "async": false,
1954 "loop": false
1955 },
1956 "webDavTunnel": {
1957 "regex": [
1958 "tunnel_hello"
1959 ],
1960 "__module__": "siteConfig",
1961 "cmd": "{sshBinary} -A -c {cipher} -t -t -oStrictHostKeyChecking=no -oExitOnForwardFailure=yes -R {intermediateWebDavPortNumber}:localhost:{localWebDavPortNumber} -l {username} {loginHost} \"ssh -R {remoteWebDavPortNumber}:localhost:{intermediateWebDavPortNumber} {execHost} 'echo tunnel_hello; bash'\"",
1962 "requireMatch": true,
1963 "__class__": "cmdRegEx",
1964 "host": "local",
1965 "failFatal": true,
1966 "formatFatal": false,
1967 "async": true,
1968 "loop": false
1969 },
1970 "webDavRemotePort": {
1971 "regex": [
1972 "^(?P<remoteWebDavPortNumber>[0-9]+)$"
1973 ],
1974 "__module__": "siteConfig",
1975 "cmd": "\"/usr/bin/ssh {execHost} /usr/local/desktop/get_ephemeral_port.py\"",
1976 "requireMatch": true,
1977 "__class__": "cmdRegEx",
1978 "host": "login",
1979 "failFatal": true,
1980 "formatFatal": false,
1981 "async": false,
1982 "loop": false
1983 },
1984 "webDavIntermediatePort": {
1985 "regex": [
1986 "^(?P<intermediateWebDavPortNumber>[0-9]+)$"
1987 ],
1988 "__module__": "siteConfig",
1989 "cmd": "\"/usr/local/desktop/get_ephemeral_port.py\"",
1990 "requireMatch": true,
1991 "__class__": "cmdRegEx",
1992 "host": "login",
1993 "failFatal": true,
1994 "formatFatal": false,
1995 "async": false,
1996 "loop": false
1997 },
1998 "messageRegexs": [
1999 {
2000 "pattern": "^INFO:(?P<info>.*(?:\n|\r\n?))",
2001 "__class__": "__regex__"
2002 },
2003 {
2004 "pattern": "^WARN:(?P<warn>.*(?:\n|\r\n?))",
2005 "__class__": "__regex__"
2006 },
2007 {
2008 "pattern": "^ERROR:(?P<error>.*(?:\n|\r\n?))",
2009 "__class__": "__regex__"
2010 }
2011 ],
2012 "displayStrings": {
2013 "__module__": "siteConfig",
2014 "onFirstLoginFailure": "An unknown error occured. Please contact your site help desk.",
2015 "persistentMessageStop": "Stop the desktop",
2016 "createNewKeyDialogNewPassphraseEmptyForbidden": "Sorry, empty passphrases are forbidden.",
2017 "newPassphraseTitle": "Please enter a new passphrase",
2018 "createNewKeyDialogNewPassphraseMismatch": "Passphrases don't match!",
2019 "qdelQueuedJobQdel": "Delete the job",
2020 "reconnectMessage": "An Existing Desktop was found. It has {timestring} remaining. Would you like to reconnect or kill it and start a new desktop?",
2021 "helpEmailAddress": "sc@fz-juelich.de",
2022 "temporaryKey": "\nWould you like to use the launchers old behaviour (entering a password every time you start a new desktop) or try the new behaviour (creating an ssh key pair and entering a passphrase the first time you use the launcher after reboot.)\n\nPasswords are recomended if this is a shared user account.\n\nSSH Keys are recommended if you are the only person who uses this account.\n\nThis option can be changed from the Identity menu.\n",
2023 "persistentMessagePersist": "Leave it running",
2024 "newPassphraseEmptyForbidden": "Sorry, empty passphrases are forbidden.\nIt looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
2025 "temporaryKeyNo": "Use my SSH Key",
2026 "newPassphrase": "It looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
2027 "qdelQueuedJobNOOP": "Leave it in the queue (I'll reconnect later)",
2028 "qdelQueuedJob": "It looks like you've been waiting for a job to start.\nDo you want me to delete the job or leave it in the queue so you can reconnect later?\n",
2029 "temporaryKeyYes": "Use my password every time",
2030 "passphrasePromptIncorrect": "\nSorry, that passphrase was incorrect.\nPlease enter the passphrase for you SSH Key\nIf you have forgoten the passphrase for you key, you may need to delete it and create a new key.\nYou can find this option under the Identity menu.\n",
2031 "newPassphraseTooShort": "Sorry, the passphrase must be at least 6 characters.\nIt looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher.",
2032 "networkError": "It looks like a network error has occured. You may be able to resume your work by logging in again.",
2033 "__class__": "sshKeyDistDisplayStrings",
2034 "reconnectMessageYes": "Reconnect",
2035 "passphrasePromptIncorrectl": "Sorry, that passphrase was incorrect. Please enter the passphrase for your ssh key",
2036 "passwdPrompt": "Please enter the password for your JURECA account.",
2037 "passphrasePrompt": "Please enter the passphrase for your SSH key",
2038 "createNewKeyDialogNewPassphraseTooShort": "Passphrase is too short.",
2039 "passwdPromptIncorrect": "Sorry, that password was incorrect.\nPlease enter the password for your JURECA account.",
2040 "reconnectMessageNo": "New desktop",
2041 "persistentMessage": "Would you like to leave your current session running so that you can reconnect later?\nIt has {timestring} remaining.",
2042 "newPassphraseMismatch": "Sorry, the two passphrases you entered don't match.\nIt looks like this is the first time you're logging in to JURECA with this version of the launcher.\nTo make logging in faster and more secure, the launcher will generate a local\npassphrase protected key on your computer which is used to\nauthenticate you and set up your JURECA desktop.\n\nPlease enter a new passphrase (twice to avoid typos) to protect your local key. \nAfter you've done this, your passphrase will be the primary method of\nauthentication for the launcher."
2043 }
2044 }
2045 }
2046]