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)]