Class Shell
- java.lang.Object
-
- edu.isi.pegasus.planner.code.generator.Abstract
-
- edu.isi.pegasus.planner.code.generator.Shell
-
- All Implemented Interfaces:
CodeGenerator
public class Shell extends Abstract
This code generator generates a shell script in the submit directory. The shell script can be executed on the submit host to run the workflow locally.- Version:
- $Revision$
- Author:
- Karan Vahi
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
JOBSTATE_JOB_PREFIX
The prefix for events associated with job in jobstate.log filestatic java.lang.String
JOBSTATE_POST_SCRIPT_PREFIX
The prefix for events associated with POST_SCRIPT in jobstate.log filestatic java.lang.String
JOBSTATE_PRE_SCRIPT_PREFIX
The prefix for events associated with job in jobstate.log fileprotected CredentialHandlerFactory
mFactory
Handle to the Credential Factoryprotected GridStartFactory
mGridStartFactory
The handle to the GridStart Factory.protected boolean
mInitializeGridStart
A boolean indicating whether grid start has been initialized or not.private SiteStore
mSiteStore
Handle to the Site Store.private java.io.PrintWriter
mWriteHandle
The handle to the output file that is being written to.static java.lang.String
PEGASUS_SHELL_RUNNER_FUNCTIONS_BASENAME
-
Fields inherited from class edu.isi.pegasus.planner.code.generator.Abstract
mBag, mLogger, mPOptions, mProps, mSubmitFileDir
-
Fields inherited from interface edu.isi.pegasus.planner.code.CodeGenerator
VERSION
-
-
Constructor Summary
Constructors Constructor Description Shell()
The default constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.String
generateCallToCheckExitcode(Job job, java.lang.String prefix)
Generates a call to check_exitcode function that is usedprotected java.lang.String
generateCallToExecuteJob(Job job, java.lang.String scratchDirectory, java.lang.String submitDirectory)
Generates a call to execute_job function , that is used to launch a job from the shell script.protected java.lang.String
generateCallToExecutePostScript(Job job, java.lang.String directory)
Generates a call to execute_post_script function , that is used to launch a job from the shell script.java.util.Collection<java.io.File>
generateCode(ADag dag)
Generates the code for the concrete workflow in the GRMS input format.void
generateCode(ADag dag, Job job)
Generates the code for a single job in the input format of the workflow executor being used.java.util.Map<java.lang.String,java.lang.String>
getAdditionalBraindumpEntries(ADag workflow)
Returns a Map containing additional braindump entries that are specific to a Code Generatorprotected java.lang.String
getExecutionDirectory(Job job)
Returns the directory in which a job should be executed.protected java.lang.String
getPathToShellScript(ADag dag)
Returns path to the shell script that is generatedprotected java.lang.String
getScriptFooter()
Returns the footer for the generated shell script.protected java.lang.String
getScriptHeader(java.lang.String submitDirectory)
Returns the header for the generated shell script.protected java.lang.String
getSubmitHostPathToShellRunnerFunctions()
Determines the path to common shell functions file that the generated shell script will use.void
initialize(PegasusBag bag)
Initializes the Code Generator implementation.private void
initializeWriteHandle(java.lang.String filename)
It initializes the write handle to the output file.protected boolean
setXBitOnFile(java.lang.String file)
Sets the xbit on the file.protected void
writeString(java.lang.String st)
Writes a string to the associated write handle with the class-
Methods inherited from class edu.isi.pegasus.planner.code.generator.Abstract
getDAGFilename, getDAGFilename, getFileBaseName, getWriter, reset, startMonitoring, writeOutBraindump, writeOutDAXReplicaStore, writeOutNotifications, writeOutStampedeEvents
-
-
-
-
Field Detail
-
PEGASUS_SHELL_RUNNER_FUNCTIONS_BASENAME
public static final java.lang.String PEGASUS_SHELL_RUNNER_FUNCTIONS_BASENAME
- See Also:
- Constant Field Values
-
JOBSTATE_JOB_PREFIX
public static final java.lang.String JOBSTATE_JOB_PREFIX
The prefix for events associated with job in jobstate.log file- See Also:
- Constant Field Values
-
JOBSTATE_POST_SCRIPT_PREFIX
public static final java.lang.String JOBSTATE_POST_SCRIPT_PREFIX
The prefix for events associated with POST_SCRIPT in jobstate.log file- See Also:
- Constant Field Values
-
JOBSTATE_PRE_SCRIPT_PREFIX
public static final java.lang.String JOBSTATE_PRE_SCRIPT_PREFIX
The prefix for events associated with job in jobstate.log file- See Also:
- Constant Field Values
-
mWriteHandle
private java.io.PrintWriter mWriteHandle
The handle to the output file that is being written to.
-
mSiteStore
private SiteStore mSiteStore
Handle to the Site Store.
-
mGridStartFactory
protected GridStartFactory mGridStartFactory
The handle to the GridStart Factory.
-
mFactory
protected CredentialHandlerFactory mFactory
Handle to the Credential Factory
-
mInitializeGridStart
protected boolean mInitializeGridStart
A boolean indicating whether grid start has been initialized or not.
-
-
Method Detail
-
initialize
public void initialize(PegasusBag bag) throws CodeGeneratorException
Initializes the Code Generator implementation.- Specified by:
initialize
in interfaceCodeGenerator
- Overrides:
initialize
in classAbstract
- Parameters:
bag
- the bag of initialization objects.- Throws:
CodeGeneratorException
- in case of any error occuring code generation.
-
generateCode
public java.util.Collection<java.io.File> generateCode(ADag dag) throws CodeGeneratorException
Generates the code for the concrete workflow in the GRMS input format. The GRMS input format is xml based. One XML file is generated per workflow.- Parameters:
dag
- the concrete workflow.- Returns:
- handle to the GRMS output file.
- Throws:
CodeGeneratorException
- in case of any error occuring code generation.
-
generateCode
public void generateCode(ADag dag, Job job) throws CodeGeneratorException
Generates the code for a single job in the input format of the workflow executor being used.- Parameters:
dag
- the dag of which the job is a part of.job
- theJob
object holding the information about that particular job.- Throws:
CodeGeneratorException
- in case of any error occuring code generation.
-
getAdditionalBraindumpEntries
public java.util.Map<java.lang.String,java.lang.String> getAdditionalBraindumpEntries(ADag workflow)
Returns a Map containing additional braindump entries that are specific to a Code Generator- Specified by:
getAdditionalBraindumpEntries
in classAbstract
- Parameters:
workflow
- the executable workflow- Returns:
- Map
-
generateCallToCheckExitcode
protected java.lang.String generateCallToCheckExitcode(Job job, java.lang.String prefix)
Generates a call to check_exitcode function that is used- Parameters:
job
- the associated jobprefix
- the prefix for the jobstate.log events- Returns:
- the call to execute job function.
-
generateCallToExecutePostScript
protected java.lang.String generateCallToExecutePostScript(Job job, java.lang.String directory)
Generates a call to execute_post_script function , that is used to launch a job from the shell script.- Parameters:
job
- the job to be launcheddirectory
- the directory in which the job needs to be launched.- Returns:
- the call to execute job function.
-
generateCallToExecuteJob
protected java.lang.String generateCallToExecuteJob(Job job, java.lang.String scratchDirectory, java.lang.String submitDirectory)
Generates a call to execute_job function , that is used to launch a job from the shell script.- Parameters:
job
- the job to be launchedscratchDirectory
- the workflow specific execution directory created during running of the workflowsubmitDirectory
- the submit directory of the workflow- Returns:
- the call to execute job function.
-
getScriptHeader
protected java.lang.String getScriptHeader(java.lang.String submitDirectory)
Returns the header for the generated shell script. The header contains the code block that sources the common plan script from $PEGASUS_HOME/bin and initializes the jobstate.log file.- Parameters:
submitDirectory
- the submit directory for the workflow.- Returns:
- the script header
-
getSubmitHostPathToShellRunnerFunctions
protected java.lang.String getSubmitHostPathToShellRunnerFunctions()
Determines the path to common shell functions file that the generated shell script will use.- Returns:
- the path on the submit host.
-
getScriptFooter
protected java.lang.String getScriptFooter()
Returns the footer for the generated shell script.- Returns:
- the script footer.
-
getPathToShellScript
protected java.lang.String getPathToShellScript(ADag dag)
Returns path to the shell script that is generated- Parameters:
dag
- the workflow- Returns:
- path
-
initializeWriteHandle
private void initializeWriteHandle(java.lang.String filename) throws CodeGeneratorException
It initializes the write handle to the output file.- Parameters:
filename
- the name of the file to which you want the write handle.- Throws:
CodeGeneratorException
-
writeString
protected void writeString(java.lang.String st)
Writes a string to the associated write handle with the class- Parameters:
st
- the string to be written.
-
getExecutionDirectory
protected java.lang.String getExecutionDirectory(Job job)
Returns the directory in which a job should be executed.- Parameters:
job
- the job.- Returns:
- the directory
-
setXBitOnFile
protected boolean setXBitOnFile(java.lang.String file)
Sets the xbit on the file.- Parameters:
file
- the file for which the xbit is to be set- Returns:
- boolean indicating whether xbit was set or not.
-
-