Presentation is loading. Please wait.

Presentation is loading. Please wait.

Grid Engine Africa 7 2011 - Joint CHAIN/EUMEDGRID-Support/EPIKH School for Application Porting to Science Gateways Elisa Ingrà – Consortium GARR (elisa.ingra@ct.infn.it)

Similar presentations


Presentation on theme: "Grid Engine Africa 7 2011 - Joint CHAIN/EUMEDGRID-Support/EPIKH School for Application Porting to Science Gateways Elisa Ingrà – Consortium GARR (elisa.ingra@ct.infn.it)"— Presentation transcript:

1 Grid Engine Africa Joint CHAIN/EUMEDGRID-Support/EPIKH School for Application Porting to Science Gateways Elisa Ingrà – Consortium GARR

2 Outline A Simple API for Grid Applications (SAGA):
The OGF (Open Grid Forum) Standard; JSAGA: a Java implementation of SAGA; A generic Grid Engine for Science Gateways based on SAGA; Grid Engine based on JSAGA; EGI Portal Policy & Grid Security Traceability; Grid Engine usage example.

3 A Simple API for Grid Applications (SAGA)
SAGA is an API that provides the basic functionality required to build distributed applications, tools and frameworks; It is independent of the details of the underlying infrastructure (e.g., the middleware); SAGA is an OGF specification: Several Implementations are available: A C++ and a Java implementation developed at the Louisiana State University / CCT and Vrije Universiteit Amsterdam ( A Java implementation developed at CCIN2P3 ( A Python implementation based on those above.

4 A Simple API for Grid Applications (SAGA)
SAGA is made of: SAGA Core Libraries: contain the SAGA base system, the runtime and the API packages (job management, data management, etc.); SAGA Adaptors: provide access to the underlying grid infrastructure (adaptors are available for gLite, ARC, Globus, UNICORE and other middleware); SAGA defines a standard We then need an implementation!

5 JSAGA JSAGA is a Java implementation of SAGA developed at CCIN2P3;
Enables uniform data and job management across different grid infrastructures/middleware; Makes extensions easily: adaptor interfaces are designed to minimize coding effort for integrating support of new technologies/middleware; Is OS independent: most of the provided adaptors are written in full Java and they are tested both on Windows and Linux.

6 JSAGA supports gLite, Globus,
JSAGA Adaptors JSAGA supports gLite, Globus, ARC, UNICORE, etc.

7 A Generic Grid Engine for Science Gateways based on JSAGA
Liferay Portlets Science GW 1 Science GW 2 Science GW 3 Grid Engine eToken Server Science GW Interface Data Engine Job Engine Users Track & Monit. Users Tracking DB JSAGA API Grid MWs

8 e-Token In order to strong reduce the risks to have the robot certificate compromised, the INFN CA decided to store this new certificate on board of the SafeNet eToken smart cards [6]; The AeToken smart card can support many certificates; A token PIN is prompted every time the user needs to interact with the smart card;

9 Host based mutual authentication
e-Token Server Grid Portals / Science Gateways Users Client Applications Host based mutual authentication

10 A Generic Grid Engine for Science Gateways based on JSAGA
Liferay Portlets Science GW 1 Science GW 2 Science GW 3 Grid Engine eToken Server Science GW Interface Data Engine Job Engine Users Track & Monit. Users Tracking DB JSAGA API Grid MWs

11 EGI Portal Policy & VO Portal Policy
The Portal, the associated Portal VO and the Portal manager are all individually and collectively responsible and accountable for all interactions with the Grid; The Portal must be capable of limiting the job submission rate; The Portal must keep audit logs for all interactions with the Grid as defined in the Traceability and Logging Policy (minimum 90 days); The Portal manager and operators must assist in security incident investigations; Where relevant, private keys associated with (proxy) certificates must not be transferred across a network, not even in encrypted form.

12 Users’ Traceability in Science Gateways
Two Tables: one for active Jobs and File Transfers and one for the finished ones. Example of entry in the Users Tracking DB GRID USAGE TRACEABILITY Common Name Portal User Name as stored in LDAP IP + Port IP address and TCP port used by the requester Timestamp Identify the grid operation date/time Grid Interaction Grid Interaction Identification (Job “X” submission, file upload/download). The portal MUST classify all the grid operations allowed. This value will allow to identify both applications used and operation performed. Grid ID Store the actual GRID Interaction ID (Job ID for job submission and some other relevant information for data transfer) Robot Certificate Identify the Robot Certificate used for the Grid Operation ID 70 Common Name fpistagna IP + TCP Port :8162 Timestamp :16:29 Grid Interaction 1 Grid ID [wms://infn-wms-01.ct.pi2s2.it:7443/glite_wms_wmproxy_server]-[ Robot Certificate /C=IT/O=INFN/OU=Robot/L=COMETA/CN=Robot: ViralGrid Science Gateway - Roberto Barbera Virtual Organisation cometa

13 References A Simple API for Grid Applications (SAGA):
JSAGA: Other SAGA Implementations: The C++ implementation developed at the Louisiana State University/CCT: The Java implementation developed at the Vrije Universiteit Amsterdam:

14 GridEngine Usage The GridEngine provides a set of java APIs to manage job execution into a distributed environment and a database to register any user Grid Interaction. While developing a Grid Application the user needs to identify: The Grid services to specify The input and ouput files The executable The three steps above can be easily identified, then written and tested with a small set of GridEngine API calls. This set of instructions can be used then inside the portlet concentrating the user to deal with the interface while developing the portlet

15 Let’s start - Checkout Hostname-standalone is here: Checkout:
hostname.java job/ input_file.txt pilot_script.sh standard_pilot_script.sh jobmanager.java Checkout: submit a ‘hostname’ job using GridEngine Job files (Custom dir) Input file example Job’ pilot script: change it (bash) Job’ pilot script standard (bash) Check the status of a job using GridEngine ~]$ svn checkout

16 Let’a have a look - hostname.java
public class hostname { …… INIT PARAMETERS public static void main(String[] Args) {                 submitJob();                     } //JOB SUBMIT  private static void submitJob() { ……………. }

17 hostname.java - INIT PARAMETERS
  // Liferay username automatically taken from porltet code         static String username="test";                   /* Confuration values used by portlet to submit jobs into the Grid infrastructure These values comes from init parameters (portlet.xml) and preferences portlet init values */         static String init_SciGwyUserTrackingDB_Hostname="localhost";     // DB hostname         static String init_SciGwyUserTrackingDB_Username="tracking_user"; // Username         static String init_SciGwyUserTrackingDB_Password="usertracking";  // Password         static String init_SciGwyUserTrackingDB_Database="userstracking"; // Database                // portlet preference values         static String pref_bdiiHost="ldap://bdii.eumedgrid.eu:2170";          static String pref_wmsHost=""; // "wms://infn-wms-01.ct.pi2s2.it:7443/glite_wms_wmproxy_server";                         static String pref_pxServerHost="voms.ct.infn.it";         static String pref_pxRobotId="21057";         static String pref_pxRobotVO="eumed";         static String pref_pxRobotRole="eumed";         static String pref_pxUserProxy=""; // "/etc/GILDA/eToken/proxy.txt";         static String pref_SciGwyAppId="9";         static String pref_JobRequirements="";         static String pref_pxRobotRenewalFlag="true";                  // this test uses only one file as input         static String inputSandbox_inputFile="job/input_file.txt";                  // Each GridEngine job uses a human readable job identifier         static String jobIdentifier="Standalone hostname job execution";       private static String LS = System.getProperty("line.separator");

18 hostname.java - JOB SUBMIT 1/4
   // Portlet preference Values for job submission        String bdiiHost=pref_bdiiHost;              // "ldap://bdii.eumedgrid.eu:2170";          String wmsHost=pref_wmsHost;                // "         String pxServerHost=pref_pxServerHost;  // voms.ct.infn.it         String pxRobotId=pref_pxRobotId;        // "21057";         String pxRobotVO=pref_pxRobotVO;        // "eumed";         String pxRobotRole=pref_pxRobotRole;    // "eumed";         String pxUserProxy=pref_pxUserProxy;    // "/etc/GILDA/eToken/proxy.txt";                        Boolean pxRobotRenewalFlag;             // It will be evaluated later from preferences                                        // SciGtw UserTraking data             // Data below should not used by portlets            int applicationId=Integer.parseInt(pref_SciGwyAppId); // GridOperations Application Id         String   hostUTDB=init_SciGwyUserTrackingDB_Hostname; // DB hostname         String  unameUTDB=init_SciGwyUserTrackingDB_Username; // Username         String passwdUTDB=init_SciGwyUserTrackingDB_Password; // Password         String dbnameUTDB=init_SciGwyUserTrackingDB_Database; // Database                      // Job details         String executable="/bin/sh";                          // Application executable         String arguments="pilot_script.sh";                   // executable' arguments          String outputPath="/tmp/";                            // Output Path         String outputFile="hostname-Output.txt";              // Distributed application standard output         String errorFile="hostname-Error.txt";                // Distrubuted application standard error         String appFile="job_output.txt";                      // Gate output file (defined phsp.root in mac file)                     

19 hostname.java - JOB SUBMIT 2/4
  // InputSandbox (string with comma separated list of file names)         // Inside portlet code static file should be placed inside         // directory: appServerPath+"/WEB-INF/job/         // Dinamically created input files should be placed in /tmp         // directory with a prefix like: <timeStamp>_<username>_file         // avoiding problems during concurrent accesses to the portlet         String inputSandbox= "job/pilot_script.sh"                        // pilot script                             +","+inputSandbox_inputFile       // input file                             ;           // OutputSandbox (string with comma separated list of file names)         String outputSandbox=appFile;                                 // Output file                                                          // Take care of software tags contained into the          // variable pref_JobRequirements         // more than one tag can be specified separating them by a ';'         String jdlRequirements[] = pref_JobRequirements.split(";");         int numRequirements=0;         for(int i=0; i<jdlRequirements.length; i++) {             if(!jdlRequirements[i].equals("")) {               jdlRequirements[numRequirements] = "JDLRequirements=("+jdlRequirements[i]+")";               numRequirements++;             }               _log.info("Requirement["+i+"]='"+jdlRequirements[i]+"'");         }        

20 hostname.java - JOB SUBMIT 3/4
 // Instanciate GridEngine JobSubmission object                     JSagaJobSubmission tmpJSaga =  new JSagaJobSubmission ("jdbc:mysql://"+hostUTDB+"/"+dbnameUTDB,unameUTDB,passwdUTDB);          // !!ATTENTION!!         // Above initializing statement must be replaced by the line below         // when integrating the jobSubmit code into the portlet         //JSagaJobSubmission tmpJSaga = new JSagaJobSubmission();                           tmpJSaga.setBDII(bdiiHost);     // Associate the infrastructure top BDII                 // Proxy renewal flag         if((pref_pxRobotRenewalFlag.toLowerCase()).equals("true"))                      pxRobotRenewalFlag=true;         else pxRobotRenewalFlag=false;                    // Associate a valid proxy         // If the user specifies a path containing a local proxy it will be used         if(pxUserProxy==null || pxUserProxy.equals("")) {             _log.info("Using ROBOT Proxy ...");             tmpJSaga.useRobotProxy(pxRobotId, pxRobotVO, pxRobotRole, pxRobotRenewalFlag);         }         else {             _log.info("Using User proxy ...");             tmpJSaga.setUserProxy(pxUserProxy);         }        

21 hostname.java - JOB SUBMIT 4/4
tmpJSaga.setExecutable(executable);                   // Specify the executeable                                         tmpJSaga.setArguments(arguments);                     // Specify the application' arguments         tmpJSaga.setOutputPath(outputPath);                   // Specify the output directory         tmpJSaga.setInputFiles(inputSandbox);         // Setup input files (InputSandbox)         tmpJSaga.setOutputFiles(outputSandbox);       // Setup output files (OutputSandbox);                                                 tmpJSaga.setJobOutput(outputFile);                    // Specify the std-outputr file         tmpJSaga.setJobError(errorFile);                      // Specify the std-error file         if(numRequirements>0)             tmpJSaga.setJDLRequirements(jdlRequirements); // Assign requirements         // Submit the job         // If a WMS is specified the call to Job submission changes         if(wmsHost!=null && !wmsHost.equals("")) {             _log.info("Using jobSubmit with WMS");             tmpJSaga.submitJobAsync(username, hostUTDB, applicationId, wmsHost, jobIdentifier);         }         else {            _log.info("Using jobSubmit without WMS");             tmpJSaga.submitJobAsync(username, hostUTDB, applicationId, jobIdentifier);                    }                    // View jobSubmission details          _log.info(    "submitJob"                          +LS+"submitJobAsync("+username+","+hostUTDB+","+applicationId+","+jobIdentifier+")"                                   +LS+"bdiiHost: '"+bdiiHost+"'"                   +LS+"wmsHost: '"+wmsHost+"'"                   +LS+"pxRobotId: '"+pxRobotId+"'"                   +LS+"pxRobotVO: '"+pxRobotVO+"'"                   +LS+"pxRobotRole: '"+pxRobotRole+"'"                   +LS+"pxUserProxy: '"+pxUserProxy+"'"                   +LS+"pxRobotRenewalFlag: '"+pxRobotRenewalFlag.toString()+"'"                   +LS+"inputSandbox: '"+inputSandbox+"'"                   +LS+"outputSandbox: '"+outputSandbox+"'"                   +LS+"pref_JobRequirements: '"+pref_JobRequirements+"'"                                 ); // _log.info         } // submitJob

22 CLASSPATH CLASSPATH – In Order to compile hostname.java it’s necessary set a right CLASSPATH, GILDA VM is already set. ~]$ echo $CLASSPATH .:/opt/glassfish3/glassfish/domains/liferay/lib/activation-1.1.jar:/opt/glassfish3/glassfish/domains/liferay/lib/addressing jar:/opt/glassfish3/glassfish/domains/liferay/lib/axis-1.4-patched.jar:/opt/glassfish3/glassfish/domains/liferay/lib/axis-jaxrpc-1.4.jar:/opt/glassfish3/glassfish/domains/liferay/lib/axis-saaj-1.4.jar:/opt/glassfish3/glassfish/domains/liferay/lib/axis-wsdl4j jar:/opt/glassfish3/glassfish/domains/liferay/lib/bcpg jar:/opt/glassfish3/glassfish/domains/liferay/lib/bcpg-jdk jar:/opt/glassfish3/glassfish/domains/liferay/lib/bcprov-jdk jar:/opt/glassfish3/glassfish/domains/liferay/lib/castor-1.0-xml.jar:/opt/glassfish3/glassfish/domains/liferay/lib/classad-2.4.jar:/opt/glassfish3/glassfish/domains/liferay/ . /opt/glassfish3/glassfish/domains/liferay/lib/xml-apis-1.0.b2.jar:/opt/glassfish3/glassfish/domains/liferay/lib/xmlbeans jar:/opt/glassfish3/glassfish/domains/liferay/lib/xmlsec jar

23 Preliminaries jobOutput dir – Create the jobOutput directory for the job output; Right permissions – give the right permissions to the directory . ~]$ sudo mkdir -p /tmp/jobOutput [sudo] password for liferayadmin: ~]$ sudo chown -R root:users /tmp ~]$ sudo chmod -R 777 /tmp ~]$ cd hostname-standalone/

24 Compile hostname.java hostname-standalone]$ ls -la total 72 drwxrwxr-x 4 liferayadmin liferayadmin Nov 25 16:59 . drwx liferayadmin liferayadmin Nov 25 16:59 .. -rw-rw-r-- 1 liferayadmin liferayadmin Nov 25 16:59 hostname.java drwxrwxr-x 3 liferayadmin liferayadmin Nov 25 16:59 job -rw-rw-r-- 1 liferayadmin liferayadmin Nov 25 16:59 jobmanager.java drwxrwxr-x 6 liferayadmin liferayadmin Nov 25 16:59 .svn hostname-standalone]$ javac hostname.java total 92 drwxrwxr-x 4 liferayadmin liferayadmin Nov 25 17:00 . -rw-rw-r-- 1 liferayadmin liferayadmin Nov 25 17:00 hostname.class -rw-rw-r-- 1 liferayadmin liferayadmin Nov 25 17:00 hostname$_log.class

25 Execute hostname.java 1/2
hostname-standalone]$ java hostname Requirement[0]='' JSAGA_HOME:null saga.factory:fr.in2p3.jsaga.impl.SagaFactoryImpl Using ROBOT Proxy ... outputPath:/tmp//jobOutput/ Using jobSubmit without WMS submitJob submitJobAsync(test,localhost,9,Standalone hostname job execution) bdiiHost: 'ldap://bdii.eumedgrid.eu:2170' wmsHost: '' pxRobotId: '21057' pxRobotVO: 'eumed' pxRobotRole: 'eumed' pxUserProxy: '' pxRobotRenewalFlag: 'true' inputSandbox: 'job/pilot_script.sh,job/input_file.txt' outputSandbox: 'job_output.txt' pref_JobRequirements: '‘

26 Execute hostname.java 2/2
----->New GET HTTP< proxyPath=/tmp/17baf82d-a107-40c1-a2b1-42e965b00d5b Creating session.... UrlPrefix VO=eumed DN=/C=IT/O=INFN/OU=Robot/L=COMETA/CN=Robot: EUMEDGRID Science Gateway - Riccardo Bruno Session recovered... resourceManager: Input = ActiveGridInteractions,test,localhost,9,,/C=IT/O=INFN/OU=Robot/L=COMETA/CN=Robot: EUMEDGRID Science Gateway - Riccardo Bruno,21057,eumed,eumed Database connection established Data Inserted. ID = 3 Database connection terminated jobSandbox:job/pilot_script.sh>pilot_script.sh,job/input_file.txt>input_file.txt,/tmp//jobOutput/3/<hostname-Output.txt,/tmp//jobOutput/3/<hostname-Error.txt,/tmp//jobOutput/3/<job_output.txt JobDescription Created... Index=0 Resource Manager selected: wms://wms-4.dir.garr.it:7443/glite_wms_wmproxy_server Submitting job... [wms://wms-4.dir.garr.it:7443/glite_wms_wmproxy_server]-[ hostname-standalone]$

27 Compile jobmanager.java
hostname-standalone]$ javac jobmanager.java hostname-standalone]$ ls -la total 132 drwxrwxr-x 4 liferayadmin liferayadmin Nov 25 17:11 . drwx liferayadmin liferayadmin Nov 25 16:59 .. -rw-rw-r-- 1 liferayadmin liferayadmin Nov 25 17:11 hostname.class -rw-rw-r-- 1 liferayadmin liferayadmin Nov 25 16:59 hostname.java -rw-rw-r-- 1 liferayadmin liferayadmin Nov 25 17:11 hostname$_log.class drwxrwxr-x 3 liferayadmin liferayadmin Nov 25 16:59 job -rw-rw-r-- 1 liferayadmin liferayadmin Nov 25 17:11 jobmanager$1.class -rw-rw-r-- 1 liferayadmin liferayadmin Nov 25 17:11 jobmanager.class -rw-rw-r-- 1 liferayadmin liferayadmin Nov 25 17:11 jobmanager$Commands.class -rw-rw-r-- 1 liferayadmin liferayadmin Nov 25 16:59 jobmanager.java -rw-rw-r-- 1 liferayadmin liferayadmin Nov 25 17:11 jobmanager$_log.class drwxrwxr-x 6 liferayadmin liferayadmin Nov 25 16:59 .svn

28 HELP COMMAND - jobmanager.java
hostname-standalone]$ java jobmanager help help Usage: jobmanager <command> [<job identifier>] Possible commands: status <job identifier> - retrieve the status of a given job output <job identifier> - retrieve the output of a given job info <job identifier> - shows information about a given job cancel <job identifier> - cancel the submission of a given job list shows the list of current acrive grid interactions update updates all job statuses help shows this help message

29 LIST COMMAND - jobmanager.java
hostname-standalone]$ java jobmanager list list Getting job list ... id| common_name| timestamp|grid_interaction| status|user_description 3| test| :02:49.0| | SUBMITTED|Standalone hostname job execution 2| test| :38:12.0| | SUBMITTED|Standalone hostname job execution

30 STATUS COMMAND - jobmanager.java
hostname-standalone]$ java jobmanager status 2 Getting job status of job: '2' Getting job status ... JSAGA_HOME:null saga.factory:fr.in2p3.jsaga.impl.SagaFactoryImpl outputPath:/tmp/jobOutput/ Using ROBOT Proxy ... nativeJobId= serviceURL=wms://infn-wms-01.ct.pi2s2.it:7443/glite_wms_wmproxy_server ----->New GET HTTP< proxyPath=/tmp/e4aa08b e0-9c6c-339d6fce6623 Creating session.... UrlPrefix VO=eumed DN=/C=IT/O=INFN/OU=Robot/L=COMETA/CN=Robot: EUMEDGRID Science Gateway - Riccardo Bruno Session recovered... Creating JobService... Getting job info ... Resource manager: 'wms://infn-wms-01.ct.pi2s2.it:7443/glite_wms_wmproxy_server' Grid job identifier: ' Common name: 'test' Timestamp: ' :38:12.0' Grid interaction: '9' User description: 'Standalone hostname job execution' Grid job status: 'SUBMITTED' hostname-standalone]$

31 INFO COMMAND - jobmanager.java
hostname-standalone]$ java jobmanager info You must specify a job identifier to get its information hostname-standalone]$ java jobmanager info 2 Getting job info of job: '2' Getting job info ... Resource manager: 'wms://infn-wms-01.ct.pi2s2.it:7443/glite_wms_wmproxy_server' Grid job identifier: ' Common name: 'test' Timestamp: ' :38:12.0' Grid interaction: '9' User description: 'Standalone hostname job execution' Grid job status: 'SUBMITTED‘ hostname-standalone]$

32 CANCEL COMMAND - jobmanager.java
hostname-standalone]$ java jobmanager cancel 2 Cancelling job ... JSAGA_HOME:null saga.factory:fr.in2p3.jsaga.impl.SagaFactoryImpl outputPath:/tmp/jobOutput/ Using ROBOT Proxy ... nativeJobId= serviceURL=wms://infn-wms-01.ct.pi2s2.it:7443/glite_wms_wmproxy_server ----->New GET HTTP< proxyPath=/tmp/d21ad0ba-abf0-46de-b5e0-e6e42d8e1194 Creating session.... UrlPrefix VO=eumed DN=/C=IT/O=INFN/OU=Robot/L=COMETA/CN=Robot: EUMEDGRID Science Gateway - Riccardo Bruno Session recovered... Creating JobService... NoSuccess: ; nested exception is: java.net.ConnectException: Connection refused hostname-standalone]$ java jobmanager status 2 Getting job status of job: '2' Getting job status ... Getting job info ... hostname-standalone]$

33 UPDATE COMMAND - jobmanager.java
hostname-standalone]$ java jobmanager update list Updating jobs ... Getting job list ... Getting job status ... JSAGA_HOME:null saga.factory:fr.in2p3.jsaga.impl.SagaFactoryImpl outputPath:/tmp/jobOutput/ Using ROBOT Proxy ... nativeJobId= serviceURL=wms://wms-4.dir.garr.it:7443/glite_wms_wmproxy_server ----->New GET HTTP< proxyPath=/tmp/c acf bd Creating session.... UrlPrefix VO=eumed DN=/C=IT/O=INFN/OU=Robot/L=COMETA/CN=Robot: EUMEDGRID Science Gateway - Riccardo Bruno Session recovered... Creating JobService... Getting Job... Getting Job State... updating new job status ... id| common_name| timestamp|grid_interaction| status|user_description 4| test| :30:17.0| | SUBMITTED|Standalone hostname job execution hostname-standalone]$

34 OUTPUT COMMAND - jobmanager.java 1/4
hostname-standalone]$ java jobmanager status 4 Getting job status of job: '4' Getting job status ... JSAGA_HOME:null saga.factory:fr.in2p3.jsaga.impl.SagaFactoryImpl outputPath:/tmp/jobOutput/ Using ROBOT Proxy ... nativeJobId= serviceURL=wms://wms-4.dir.garr.it:7443/glite_wms_wmproxy_server ----->New GET HTTP< proxyPath=/tmp/d2ccb c-ae11-c68d8ca0a9e5 Creating session.... UrlPrefix VO=eumed DN=/C=IT/O=INFN/OU=Robot/L=COMETA/CN=Robot: EUMEDGRID Science Gateway - Riccardo Bruno Session recovered... Creating JobService... Getting Job... Getting Job State... Getting job info ... Resource manager: 'wms://wms-4.dir.garr.it:7443/glite_wms_wmproxy_server' Grid job identifier: ' Common name: 'test' Timestamp: ' :30:17.0' Grid interaction: '9' User description: 'Standalone hostname job execution' Grid job status: 'DONE' hostname-standalone]$

35 OUTPUT COMMAND - jobmanager.java 2/4
hostname-standalone]$ java jobmanager output 4 Getting job output of job: '4' Getting job output ... JSAGA_HOME:null DN=/C=IT/O=INFN/OU=Robot/L=COMETA/CN=Robot: EUMEDGRID Science Gateway - Riccardo Bruno Session recovered... Creating JobService... Getting Job... creating output directory /tmp/jobOutput/4/ output directory created. Job output have been retrieved successfully (if it exists) Current Dir=/home/liferayadmin/hostname-standalone creating a tgz archive containing output files... tar czvf /tmp/jobOutput/4.tgz /tmp/jobOutput/4 Database connection established Inserting data in GridInteractions. Input = GridInteractions,test,localhost,9,[wms://wms-4.dir.garr.it:7443/glite_wms_wmproxy_server]-[ EUMEDGRID Science Gateway - Riccardo Bruno,21057,eumed,eumed Data Inserted. ID = 2 Database connection terminated Deleting data in ActiveGridInteractions. Output file in: '/jobOutput/4.tgz' hostname-standalone]$

36 OUTPUT COMMAND - jobmanager.java 3/4
hostname-standalone]$ cd /tmp/jobOutput/ jobOutput]$ ls -la total 32 drwxrwxrwx 3 root users Nov 25 17:41 . drwxrwxrwt 11 root users Nov 25 17:41 .. drwxrwxr-x 2 liferayadmin liferayadmin 4096 Nov 25 17:41 4 -rw-rw-r-- 1 liferayadmin liferayadmin 583 Nov 25 17:41 4.tgz jobOutput]$ cd 4 4]$ ls -la total 36 drwxrwxr-x 2 liferayadmin liferayadmin 4096 Nov 25 17:41 . drwxrwxrwx 3 root users Nov 25 17:41 .. -rw-rw-r-- 1 liferayadmin liferayadmin 0 Nov 25 17:41 hostname-Error.txt -rw-rw-r-- 1 liferayadmin liferayadmin 985 Nov 25 17:41 hostname-Output.txt -rw-rw-r-- 1 liferayadmin liferayadmin 168 Nov 25 17:41 job_output.txt 4]$

37 JOB OUTPUT [liferayadmin@gildavm 4]$ cat hostname-Error.txt
4]$ cat hostname-Output.txt hostname job landed on: 'chem14.sns.it' Job execution starts on: 'Fri Nov 25 17:31:08 CET 2011' ---[WN HOME directory] total 48 drwxr-xr-x 2 eumed010 eumed Nov 25 17:31 CREAM -rwx eumed010 eumed Nov 25 17:30 CREAM _jobWrapper.sh -rw eumed010 eumed Nov 25 17:30 cream_ proxy -rw-r--r-- 1 eumed010 eumed Nov 25 17:31 glite-swat-client-wn-tests.data ---[WN Working directory] total 12 -rw-r--r-- 1 eumed010 eumed 0 Nov 25 17:31 hostname-Error.txt -rw-r--r-- 1 eumed010 eumed 595 Nov 25 17:31 hostname-Output.txt -rw-r--r-- 1 eumed010 eumed 26 Nov 25 17:31 input_file.txt -rw-r--r-- 1 eumed010 eumed 832 Nov 25 17:31 pilot_script.sh ---[Your message] This is the message text! Job execution ends on: 'Fri Nov 25 17:31:08 CET 2011' 4]$ cat job_output.txt 4]$

38 Customize hostname.java: HOW TO?
In Order to customize hostname-standalone you have to: Add your input files into job directory; Modify the batch file /job/pilot_script.sh Use /job/standard_pilot_script.sh as a backup file batch; Modify hostname.java submitJob method; Compile hostname.java (slides page 24); Execute hostname.java (slides pages 25-26); Check Status and Output of the submitted job (slides pages 28-37); If everything is ok copy hostname.java submitJob method into java file of your portlet: /docroot/WEB-INF/src/it/infn/ct/hostname_portlet.java

39 Questions?


Download ppt "Grid Engine Africa 7 2011 - Joint CHAIN/EUMEDGRID-Support/EPIKH School for Application Porting to Science Gateways Elisa Ingrà – Consortium GARR (elisa.ingra@ct.infn.it)"

Similar presentations


Ads by Google