Difference between revisions of "VO specific software on the Grid"
(→Accessing software distributed via CVMFS) |
|||
Line 3: | Line 3: | ||
For most VOs the software is now being distributed via CVMFS. The only detail a user (client) has to know is how the repository(-ries) are mapped on Worker Nodes. | For most VOs the software is now being distributed via CVMFS. The only detail a user (client) has to know is how the repository(-ries) are mapped on Worker Nodes. | ||
In this article we will use the gridpp VO repository, which is mapped to <code>/cvmfs/gridpp.egi.eu/</code> . A VO software administrator uploaded a following example | In this article we will use the gridpp VO repository, which is mapped to <code>/cvmfs/gridpp.egi.eu/</code> . A VO software administrator uploaded a following example | ||
− | + | python script and saved it as <code>testing/hello.py</code> : | |
<nowiki> | <nowiki> | ||
Line 19: | Line 19: | ||
# | # | ||
</nowiki> | </nowiki> | ||
+ | |||
+ | It normally takes a few hours before uploaded software becomes available to clients. | ||
+ | Now we need to create a job wrapper (<code>run_hello_cvmfs.sh</code>) which will be submitted as a Dirac executable: | ||
+ | <nowiki> | ||
+ | |||
+ | #!/bin/bash | ||
+ | # | ||
+ | # Run the Python script. | ||
+ | export GRIDPP_VO_CVMFS_ROOT=/cvmfs/gridpp.egi.eu/testing/HelloWorld | ||
+ | if [ -d "$GRIDPP_VO_CVMFS_ROOT" ]; then | ||
+ | $GRIDPP_VO_CVMFS_ROOT/hello.py | ||
+ | else | ||
+ | echo "Requester CVMFS directory does not exist $GRIDPP_VO_CVMFS_ROOT " | ||
+ | exit 1 | ||
+ | fi | ||
+ | # | ||
+ | |||
+ | </nowiki> | ||
+ | |||
+ | The last step is to created a Dirac <code>jdl</code> file (<code>hello_cvmfs.jdl</code>): | ||
+ | <nowiki> | ||
+ | [ | ||
+ | JobName = "Snake_Job_CVMFS"; | ||
+ | Executable = "run_hello_cvmfs.sh"; | ||
+ | Arguments = ""; | ||
+ | StdOutput = "StdOut"; | ||
+ | StdError = "StdErr"; | ||
+ | InputSandbox = {"run_hello_cvmfs.sh"}; | ||
+ | OutputSandbox = {"StdOut","StdErr"}; | ||
+ | ] | ||
+ | </nowiki> | ||
+ | |||
+ | In the jdl we define the executable (<code>run_hello_cvmfs.sh</code>) which is shipped with the job in the input sandbox. Now we can submit our first CVMFS job: | ||
+ | |||
+ | <nowiki> | ||
+ | dirac-wms-job-submit -f logfile hello_cvmfs.jdl | ||
+ | </nowiki> | ||
+ | |||
+ | Check its status, which in our case returned: | ||
+ | |||
+ | <nowiki> | ||
+ | dirac-wms-job-status -f logfile | ||
+ | JobID=5213546 Status=Running; MinorStatus=Job Initialization; Site=VAC.UKI-LT2-RHUL.uk; | ||
+ | <nowiki> | ||
+ | |||
+ | When job finishes, we can grab the output (<code>dirac-wms-job-get-output -f logfile</code>), which reads: | ||
+ | |||
+ | <nowiki> | ||
+ | ---------------------- | ||
+ | Hello, I'm a snake ! /\/\/o | ||
+ | ---------------------- | ||
+ | More info: | ||
+ | |||
+ | 2.7.12 (default, Dec 17 2016, 21:07:48) | ||
+ | [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] | ||
+ | </nowiki> |
Revision as of 12:45, 19 September 2017
DRAFT
Accessing software distributed via CVMFS
For most VOs the software is now being distributed via CVMFS. The only detail a user (client) has to know is how the repository(-ries) are mapped on Worker Nodes.
In this article we will use the gridpp VO repository, which is mapped to /cvmfs/gridpp.egi.eu/
. A VO software administrator uploaded a following example
python script and saved it as testing/hello.py
:
#!/usr/bin/env python import sys print "----------------------" print "Hello, I'm a snake ! /\/\/o" print "----------------------" print " More info:\n" print (sys.version) #
It normally takes a few hours before uploaded software becomes available to clients.
Now we need to create a job wrapper (run_hello_cvmfs.sh
) which will be submitted as a Dirac executable:
#!/bin/bash # # Run the Python script. export GRIDPP_VO_CVMFS_ROOT=/cvmfs/gridpp.egi.eu/testing/HelloWorld if [ -d "$GRIDPP_VO_CVMFS_ROOT" ]; then $GRIDPP_VO_CVMFS_ROOT/hello.py else echo "Requester CVMFS directory does not exist $GRIDPP_VO_CVMFS_ROOT " exit 1 fi #
The last step is to created a Dirac jdl
file (hello_cvmfs.jdl
):
[ JobName = "Snake_Job_CVMFS"; Executable = "run_hello_cvmfs.sh"; Arguments = ""; StdOutput = "StdOut"; StdError = "StdErr"; InputSandbox = {"run_hello_cvmfs.sh"}; OutputSandbox = {"StdOut","StdErr"}; ]
In the jdl we define the executable (run_hello_cvmfs.sh
) which is shipped with the job in the input sandbox. Now we can submit our first CVMFS job:
dirac-wms-job-submit -f logfile hello_cvmfs.jdl
Check its status, which in our case returned:
dirac-wms-job-status -f logfile JobID=5213546 Status=Running; MinorStatus=Job Initialization; Site=VAC.UKI-LT2-RHUL.uk; <nowiki> When job finishes, we can grab the output (<code>dirac-wms-job-get-output -f logfile</code>), which reads: <nowiki> ---------------------- Hello, I'm a snake ! /\/\/o ---------------------- More info: 2.7.12 (default, Dec 17 2016, 21:07:48) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]