Mercurial > repos > mvdbeek > docker_scriptrunner
comparison scriptrunner.py @ 9:77dca93454b7 draft
planemo upload for repository https://github.com/mvdbeek/docker_scriptrunner/ commit 40d6cb5308a36b00495fd6072d867ed2c5a37b3c
author | mvdbeek |
---|---|
date | Sat, 09 Jul 2016 05:07:15 -0400 |
parents | 1b7f987270a6 |
children | ed7cf3f35799 |
comparison
equal
deleted
inserted
replaced
8:1b7f987270a6 | 9:77dca93454b7 |
---|---|
373 if self.opts.make_HTML: | 373 if self.opts.make_HTML: |
374 self.makeHtml() | 374 self.makeHtml() |
375 return retval | 375 return retval |
376 | 376 |
377 | 377 |
378 def change_group_id(group_id): | 378 def change_user_id(new_uid, new_gid): |
379 """ | 379 """ |
380 To avoid issues with wrong user ids, we change the user id of the 'galaxy' user in the container | 380 To avoid issues with wrong user ids, we change the user id of the 'galaxy' user in the container |
381 to the user id with which the script has been called initially. | 381 to the user id with which the script has been called initially. |
382 """ | 382 """ |
383 old_gid = 1450 # specified in Dockerfile | 383 cmd1 = ["/usr/sbin/usermod", "-d", "/var/home/galaxy", "galaxy"] |
384 cmd = ["/usr/sbin/groupmod", "-g", group_id , "galaxy"] | 384 cmd2 = ["/usr/sbin/usermod", "-u", new_uid, "galaxy"] |
385 subprocess.call(cmd) | 385 cmd3 = ["/usr/sbin/groupmod", "-g", "1450", new_gid] |
386 | 386 cmd4 = ["/usr/sbin/usermod", "-d", "/home/galaxy", "galaxy"] |
387 | 387 [subprocess.call(cmd) for cmd in [cmd1, cmd2, cmd3, cmd4]] |
388 def change_user_id(new_id): | 388 |
389 """ | |
390 To avoid issues with wrong user ids, we change the user id of the 'galaxy' user in the container | |
391 to the user id with which the script has been called initially. | |
392 """ | |
393 cmd = ["/usr/sbin/usermod", "-u", new_id, "galaxy"] | |
394 subprocess.call(cmd) | |
395 | |
396 | |
397 def update_permissions(): | |
398 cmd = ["/bin/chown", "-R", "galaxy:galaxy", "/var/home/galaxy"] | |
399 subprocess.call(cmd) | |
400 | 389 |
401 def main(): | 390 def main(): |
402 u = """ | 391 u = """ |
403 This is a Galaxy wrapper. It expects to be called by a special purpose tool.xml as: | 392 This is a Galaxy wrapper. It expects to be called by a special purpose tool.xml as: |
404 <command interpreter="python">rgBaseScriptWrapper.py --script_path "$scriptPath" --tool_name "foo" --interpreter "Rscript" | 393 <command interpreter="python">rgBaseScriptWrapper.py --script_path "$scriptPath" --tool_name "foo" --interpreter "Rscript" |
433 except: | 422 except: |
434 pass | 423 pass |
435 if opts.dockerized==0: | 424 if opts.dockerized==0: |
436 switch_to_docker(opts) | 425 switch_to_docker(opts) |
437 return | 426 return |
438 change_user_id(opts.user_id) | 427 change_user_id(opts.user_id, opts.group_id) |
439 change_group_id(opts.group_id) | |
440 os.setgid(int(opts.group_id)) | 428 os.setgid(int(opts.group_id)) |
441 os.setuid(int(opts.user_id)) | 429 os.setuid(int(opts.user_id)) |
442 update_permissions() | |
443 r = ScriptRunner(opts) | 430 r = ScriptRunner(opts) |
444 retcode = r.run() | 431 retcode = r.run() |
445 os.unlink(r.sfile) | 432 os.unlink(r.sfile) |
446 if retcode: | 433 if retcode: |
447 sys.exit(retcode) # indicate failure to job runner | 434 sys.exit(retcode) # indicate failure to job runner |