edu.isi.pegasus.planner.transfer
Interface SLS

All Known Implementing Classes:
Condor, Transfer

public interface SLS

This interface defines the second level staging process, that manages the transfer of files from the headnode to the worker node temp and back.

Version:
$Revision: 4605 $
Author:
Karan Vahi

Field Summary
static String VERSION
          The version associated with the API.
 
Method Summary
 Collection<FileTransfer> determineSLSInputTransfers(Job job, String fileName, String submitDir, String stagingSiteDirectory, String workerNodeDirectory)
          Generates a second level staging file of the input files to the worker node directory.
 Collection<FileTransfer> determineSLSOutputTransfers(Job job, String fileName, String submitDir, String stagingSiteDirectory, String workerNodeDirectory)
          Generates a second level staging file of the input files to the worker node directory.
 boolean doesCondorModifications()
          Returns a boolean whether the SLS implementation does a condor based modification or not.
 String getSLSInputLFN(Job job)
          Returns the LFN of sls input file.
 String getSLSOutputLFN(Job job)
          Returns the LFN of sls output file.
 void initialize(PegasusBag bag)
          Initializes the SLS implementation.
 String invocationString(Job job, File slsFile)
          Constructs a command line invocation for a job, with a given sls file.
 boolean modifyJobForFirstLevelStaging(Job job, String submitDir, String slsInputLFN, String slsOutputLFN)
          Modifies a job for the first level staging to headnode.This is to add any files that needs to be staged to the head node for a job specific to the SLS implementation.
 boolean modifyJobForWorkerNodeExecution(Job job, String stagingSiteURLPrefix, String stagingSitedirectory, String workerNodeDirectory)
          Modifies a compute job for second level staging.
 boolean needsSLSInputTransfers(Job job)
          Returns a boolean indicating whether it will an input file for a job to do the transfers.
 boolean needsSLSOutputTransfers(Job job)
          Returns a boolean indicating whether it will an output file for a job to do the transfers.
 

Field Detail

VERSION

static final String VERSION
The version associated with the API.

See Also:
Constant Field Values
Method Detail

initialize

void initialize(PegasusBag bag)
Initializes the SLS implementation.

Parameters:
bag - the bag of objects. Contains access to catalogs etc.

doesCondorModifications

boolean doesCondorModifications()
Returns a boolean whether the SLS implementation does a condor based modification or not. By condor based modification we mean whether it uses condor specific classads to achieve the second level staging or not.

Returns:
boolean

invocationString

String invocationString(Job job,
                        File slsFile)
Constructs a command line invocation for a job, with a given sls file. The SLS maybe null. In the case where SLS impl does not read from a file, it is advised to create a file in generateSLSXXX methods, and then read the file in this function and put it on the command line.

Parameters:
job - the job that is being sls enabled
slsFile - the slsFile that is accessible on the worker node. Can be null
Returns:
invocation string

needsSLSInputTransfers

boolean needsSLSInputTransfers(Job job)
Returns a boolean indicating whether it will an input file for a job to do the transfers. Transfer reads from stdin the file transfers that it needs to do.

Parameters:
job - the job being detected.
Returns:
true

needsSLSOutputTransfers

boolean needsSLSOutputTransfers(Job job)
Returns a boolean indicating whether it will an output file for a job to do the transfers. Transfer reads from stdin the file transfers that it needs to do.

Parameters:
job - the job being detected.
Returns:
true

getSLSInputLFN

String getSLSInputLFN(Job job)
Returns the LFN of sls input file.

Parameters:
job - Job
Returns:
the name of the sls input file.

getSLSOutputLFN

String getSLSOutputLFN(Job job)
Returns the LFN of sls output file.

Parameters:
job - Job
Returns:
the name of the sls input file.

determineSLSInputTransfers

Collection<FileTransfer> determineSLSInputTransfers(Job job,
                                                    String fileName,
                                                    String submitDir,
                                                    String stagingSiteDirectory,
                                                    String workerNodeDirectory)
Generates a second level staging file of the input files to the worker node directory. It should be consistent with the function needsSLSFile( Job )

Parameters:
job - the job for which the file is being created
submitDir - the submit directory where it has to be written out.
fileName - the name of the file that needs to be written out.
stagingSiteDirectory - the directory on the head node of the staging site.
workerNodeDirectory - the worker node directory
Returns:
a Collection of FileTransfer objects listing the transfers that need to be done.
See Also:
needsSLSInputTransfers( Job)

determineSLSOutputTransfers

Collection<FileTransfer> determineSLSOutputTransfers(Job job,
                                                     String fileName,
                                                     String submitDir,
                                                     String stagingSiteDirectory,
                                                     String workerNodeDirectory)
Generates a second level staging file of the input files to the worker node directory. It should be consistent with the function needsSLSFile( Job )

Parameters:
job - the job for which the file is being created
submitDir - the submit directory where it has to be written out.
fileName - the name of the file that needs to be written out.
stagingSiteDirectory - the directory on the head node of the staging site.
workerNodeDirectory - the worker node directory
Returns:
a Collection of FileTransfer objects listing the transfers that need to be done.
See Also:
needsSLSOutputTransfers( Job)

modifyJobForFirstLevelStaging

boolean modifyJobForFirstLevelStaging(Job job,
                                      String submitDir,
                                      String slsInputLFN,
                                      String slsOutputLFN)
Modifies a job for the first level staging to headnode.This is to add any files that needs to be staged to the head node for a job specific to the SLS implementation. If any file needs to be added, a FileTransfer object should be created and added as an input or an output file.

Parameters:
job - the job
submitDir - the submit directory
slsInputLFN - the sls input file if required, that is used for staging in from the head node to worker node directory.
slsOutputLFN - the sls output file if required, that is used for staging in from the head node to worker node directory.
Returns:
boolean

modifyJobForWorkerNodeExecution

boolean modifyJobForWorkerNodeExecution(Job job,
                                        String stagingSiteURLPrefix,
                                        String stagingSitedirectory,
                                        String workerNodeDirectory)
Modifies a compute job for second level staging.

Parameters:
job - the job to be modified.
stagingSiteURLPrefix - the url prefix for the server on the staging site
stagingSitedirectory - the directory on the staging site, where the input data is read from and the output data written out. read from and the output data written out.
workerNodeDirectory - the directory in the worker node tmp
Returns:
boolean indicating whether job was successfully modified or not.


Copyright © 2011 The University of Southern California. All Rights Reserved.