001: /**
002: * This file or a portion of this file is licensed under the terms of
003: * the Globus Toolkit Public License, found in file GTPL, or at
004: * http://www.globus.org/toolkit/download/license.html. This notice must
005: * appear in redistributions of this file, with or without modification.
006: *
007: * Redistributions of this Software, with or without modification, must
008: * reproduce the GTPL in: (1) the Software, or (2) the Documentation or
009: * some other similar material which is provided with the Software (if
010: * any).
011: *
012: * Copyright 1999-2004 University of Chicago and The University of
013: * Southern California. All rights reserved.
014: */package org.griphyn.cPlanner.code.gridstart;
015:
016: import org.griphyn.cPlanner.classes.SubInfo;
017:
018: import org.griphyn.cPlanner.common.PegasusProperties;
019: import org.griphyn.cPlanner.common.LogManager;
020:
021: import org.griphyn.cPlanner.namespace.Dagman;
022:
023: import org.griphyn.cPlanner.code.POSTScript;
024:
025: import java.io.File;
026:
027: /**
028: * This class refers to having no postscript associated with the job.
029: * In addition, it removes from the job postscript specific arguments,
030: * and other profiles.
031: *
032: * The postscript is only constructed if the job already contains the
033: * Dagman profile key passed.
034: *
035: * @author Karan Vahi vahi@isi.edu
036: * @version $Revision: 50 $
037: */
038:
039: public class NoPOSTScript implements POSTScript {
040:
041: /**
042: * The SHORTNAME for this implementation.
043: */
044: public static final String SHORT_NAME = "none";
045:
046: /**
047: * The LogManager object which is used to log all the messages.
048: */
049: protected LogManager mLogger;
050:
051: /**
052: * The object holding all the properties pertaining to Pegasus.
053: */
054: protected PegasusProperties mProps;
055:
056: /**
057: * The default constructor.
058: */
059: public NoPOSTScript() {
060: mLogger = LogManager.getInstance();
061: }
062:
063: /**
064: * Initialize the POSTScript implementation.
065: *
066: * @param properties the <code>PegasusProperties</code> object containing all
067: * the properties required by Pegasus.
068: * @param path the path to the POSTScript on the submit host.
069: * @param submitDir the submit directory where the submit file for the job
070: * has to be generated.
071: */
072: public void initialize(PegasusProperties properties, String path,
073: String submitDir) {
074: mProps = properties;
075: }
076:
077: /**
078: * Returns a short textual description of the implementing class.
079: *
080: * @return short textual description.
081: */
082: public String shortDescribe() {
083: return this .SHORT_NAME;
084: }
085:
086: /**
087: * Constructs the postscript that has to be invoked on the submit host
088: * after the job has executed on the remote end. The postscript works on the
089: * stdout of the remote job, that has been transferred back to the submit
090: * host by Condor.
091: * <p>
092: * The postscript is constructed and populated as a profile
093: * in the DAGMAN namespace.
094: *
095: *
096: * @param job the <code>SubInfo</code> object containing the job description
097: * of the job that has to be enabled on the grid.
098: * @param key the <code>DAGMan</code> profile key that has to be inserted.
099: *
100: * @return false as postscript is never created for the job.
101: */
102: public boolean construct(SubInfo job, String key) {
103:
104: //mode is none , make sure to remove post key and the arguments
105: //Karan Nov 15,2005 VDS BUG FIX 128
106: //Always remove POST_SCRIPT_ARGUMENTS
107: job.dagmanVariables.removeKey(key);
108: job.dagmanVariables.removeKey(Dagman.POST_SCRIPT_ARGUMENTS_KEY);
109:
110: return false;
111: }
112:
113: }
|