edu.isi.pegasus.planner.code.generator
Class Abstract

java.lang.Object
  extended by edu.isi.pegasus.planner.code.generator.Abstract
All Implemented Interfaces:
CodeGenerator
Direct Known Subclasses:
CondorGenerator, Shell, Stork

public abstract class Abstract
extends Object
implements CodeGenerator

An Abstract Base class implementing the CodeGenerator interface. Introduces helper methods for determining basenames of files, that contain concrete job descriptions.

Version:
$Revision: 3930 $
Author:
Karan Vahi, Gaurang Mehta

Field Summary
protected  PegasusBag mBag
          The bag of initialization objects.
protected  LogManager mLogger
          The LogManager object which is used to log all the messages.
protected  PlannerOptions mPOptions
          The object containing the command line options specified to the planner at runtime.
protected  PegasusProperties mProps
          The object holding all the properties pertaining to Pegasus.
protected  String mSubmitFileDir
          The directory where all the submit files are to be generated.
 
Fields inherited from interface edu.isi.pegasus.planner.code.CodeGenerator
VERSION
 
Constructor Summary
Abstract()
           
 
Method Summary
abstract  Map<String,String> getAdditionalBraindumpEntries(ADag workflow)
          Returns a Map containing additional metrics entries that are specific to a Code Generator
protected  String getDAGFilename(ADag dag, String suffix)
          Returns the name of the file on the basis of the metadata associated with the DAG.
static String getDAGFilename(PlannerOptions options, String name, String index, String suffix)
          Returns the name of the file on the basis of the metadata associated with the DAG.
 String getFileBaseName(Job job)
          Returns the basename of the file to which the job is written to.
 PrintWriter getWriter(Job job)
          Returns an open stream to the file that is used for writing out the job information for the job.
 void initialize(PegasusBag bag)
          Initializes the Code Generator implementation.
 void reset()
          Resets the Code Generator implementation.
 boolean startMonitoring()
          Starts monitoring of the workflow by invoking a workflow monitor daemon.
protected  void writeOutBraindump(ADag workflow)
          Writes out the metrics file for the workflow
protected  void writeOutDAXReplicaStore(ADag workflow)
          Writes out the DAX replica store
protected  void writeOutNotifications(ADag workflow)
          Writes out the generator input file for the work-flow.
protected  void writeOutStampedeEvents(ADag workflow)
          Writes out the stampedeEventGenerator events for the workflow.
protected  void writeOutWorkflowMetrics(ADag workflow)
          Writes out the workflow metrics file for the workflow.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface edu.isi.pegasus.planner.code.CodeGenerator
generateCode, generateCode
 

Field Detail

mBag

protected PegasusBag mBag
The bag of initialization objects.


mSubmitFileDir

protected String mSubmitFileDir
The directory where all the submit files are to be generated.


mProps

protected PegasusProperties mProps
The object holding all the properties pertaining to Pegasus.


mPOptions

protected PlannerOptions mPOptions
The object containing the command line options specified to the planner at runtime.


mLogger

protected LogManager mLogger
The LogManager object which is used to log all the messages.

Constructor Detail

Abstract

public Abstract()
Method Detail

getDAGFilename

protected String getDAGFilename(ADag dag,
                                String suffix)
Returns the name of the file on the basis of the metadata associated with the DAG. In case of Condor dagman, it is the name of the .dag file that is written out. The basename of the .dag file is dependant on whether the basename prefix has been specified at runtime or not by command line options.

Parameters:
dag - the dag for which the .dag file has to be created.
suffix - the suffix to be applied at the end.
Returns:
the name of the dagfile.

getDAGFilename

public static String getDAGFilename(PlannerOptions options,
                                    String name,
                                    String index,
                                    String suffix)
Returns the name of the file on the basis of the metadata associated with the DAG. In case of Condor dagman, it is the name of the .dag file that is written out. The basename of the .dag file is dependant on whether the basename prefix has been specified at runtime or not by command line options.

Parameters:
options - the options passed to the planner.
name - the name attribute in dax
index - the index attribute in dax.
suffix - the suffix to be applied at the end.
Returns:
the name of the dagfile.

initialize

public void initialize(PegasusBag bag)
                throws CodeGeneratorException
Initializes the Code Generator implementation.

Specified by:
initialize in interface CodeGenerator
Parameters:
bag - the bag of initialization objects.
Throws:
CodeGeneratorException - in case of any error occuring code generation.

startMonitoring

public boolean startMonitoring()
Starts monitoring of the workflow by invoking a workflow monitor daemon. The monitoring should start only after the output files have been generated. FIXME: It should actually happen after the workflow has been submitted. Eventually should be a separate monitor interface, and submit writers should be loaded by an AbstractFactory.

Specified by:
startMonitoring in interface CodeGenerator
Returns:
boolean indicating whether could successfully start the monitor daemon or not.

writeOutWorkflowMetrics

protected void writeOutWorkflowMetrics(ADag workflow)
Writes out the workflow metrics file for the workflow.

Parameters:
workflow - the workflow whose metrics file needs to be generated.

writeOutStampedeEvents

protected void writeOutStampedeEvents(ADag workflow)
                               throws CodeGeneratorException
Writes out the stampedeEventGenerator events for the workflow.

Parameters:
workflow - the workflow whose metrics file needs to be generated.
Throws:
CodeGeneratorException

writeOutBraindump

protected void writeOutBraindump(ADag workflow)
Writes out the metrics file for the workflow

Parameters:
workflow - the workflow whose metrics file needs to be generated.

writeOutDAXReplicaStore

protected void writeOutDAXReplicaStore(ADag workflow)
Writes out the DAX replica store

Parameters:
workflow - the work-flow

writeOutNotifications

protected void writeOutNotifications(ADag workflow)
Writes out the generator input file for the work-flow.

Parameters:
workflow - the work-flow whose generator files needs to be generated.

getAdditionalBraindumpEntries

public abstract Map<String,String> getAdditionalBraindumpEntries(ADag workflow)
Returns a Map containing additional metrics entries that are specific to a Code Generator

Parameters:
workflow - the workflow whose metrics file needs to be generated.
Returns:
Map

reset

public void reset()
           throws CodeGeneratorException
Resets the Code Generator implementation.

Specified by:
reset in interface CodeGenerator
Throws:
CodeGeneratorException - in case of any error occuring code generation.

getWriter

public PrintWriter getWriter(Job job)
                      throws IOException
Returns an open stream to the file that is used for writing out the job information for the job.

Parameters:
job - the job whose job information needs to be written.
Returns:
the writer to the open file.
Throws:
IOException - if unable to open a write handle to the file.

getFileBaseName

public String getFileBaseName(Job job)
Returns the basename of the file to which the job is written to.

Parameters:
job - the job whose job information needs to be written.
Returns:
the basename of the file.


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