01: /**
02: * This file or a portion of this file is licensed under the terms of
03: * the Globus Toolkit Public License, found in file GTPL, or at
04: * http://www.globus.org/toolkit/download/license.html. This notice must
05: * appear in redistributions of this file, with or without modification.
06: *
07: * Redistributions of this Software, with or without modification, must
08: * reproduce the GTPL in: (1) the Software, or (2) the Documentation or
09: * some other similar material which is provided with the Software (if
10: * any).
11: *
12: * Copyright 1999-2004 University of Chicago and The University of
13: * Southern California. All rights reserved.
14: */package org.griphyn.cPlanner.cluster;
15:
16: import org.griphyn.cPlanner.classes.ADag;
17: import org.griphyn.cPlanner.classes.PegasusBag;
18: import org.griphyn.cPlanner.classes.AggregatedJob;
19:
20: import java.util.List;
21:
22: /**
23: * The interface that dictates how the jobs are clumped together into one single
24: * larger job. The interface does not dictate how the graph structure is
25: * to be modified as a result of the clumping. That is handled outside of the
26: * implementing class in NodeCollapser.
27: *
28: * @author Karan Vahi vahi@isi.edu
29: * @version $Revision: 450 $
30: */
31: public interface JobAggregator {
32:
33: /**
34: * The version number associated with this API of Job Aggregator.
35: */
36: public static final String VERSION = "1.3";
37:
38: /**
39: *Initializes the JobAggregator impelementation
40: *
41: * @param dag the workflow that is being clustered.
42: * @param bag the bag of objects that is useful for initialization.
43: *
44: */
45: public void initialize(ADag dag, PegasusBag bag);
46:
47: /**
48: * Constructs a new aggregated job that contains all the jobs passed to it.
49: * The new aggregated job, appears as a single job in the workflow and
50: * replaces the jobs it contains in the workflow.
51: *
52: * @param jobs the list of <code>SubInfo</code> objects that need to be
53: * collapsed. All the jobs being collapsed should be scheduled
54: * at the same pool, to maintain correct semantics.
55: * @param name the logical name of the jobs in the list passed to this
56: * function.
57: * @param id the id that is given to the new job.
58: *
59: * @return the <code>SubInfo</code> object corresponding to the aggregated
60: * job containing the jobs passed as List in the input,
61: * null if the list of jobs is empty
62: */
63: public AggregatedJob construct(List jobs, String name, String id);
64:
65: /**
66: * Setter method to indicate , failure on first consitutent job should
67: * result in the abort of the whole aggregated job.
68: *
69: * @param fail indicates whether to abort or not .
70: */
71: public void setAbortOnFirstJobFailure(boolean fail);
72:
73: /**
74: * Returns a boolean indicating whether to fail the aggregated job on
75: * detecting the first failure during execution of constituent jobs.
76: *
77: * @return boolean indicating whether to fail or not.
78: */
79: public boolean abortOnFristJobFailure();
80:
81: /**
82: * Determines whether there is NOT an entry in the transformation catalog
83: * for the job aggregator executable on a particular site.
84: *
85: * @param site the site at which existence check is required.
86: *
87: * @return boolean true if an entry does not exists, false otherwise.
88: */
89: public boolean entryNotInTC(String site);
90:
91: /**
92: * Returns the logical name of the transformation that is used to
93: * collapse the jobs.
94: *
95: * @return the the logical name of the collapser executable.
96: */
97: public String getCollapserLFN();
98:
99: }
|