/**
* Copyright 2007-2008 University Of Southern California
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package edu.isi.pegasus.planner.code.generator.condor.style;
import edu.isi.pegasus.planner.classes.Job;
import edu.isi.pegasus.planner.code.generator.condor.CondorStyleException;
/**
* Jobs targeting glidinWMS pools. Basically standard Condor jobs with special
* requirements and ranks
*
* @author Mats Rynge
* @version $Revision: 2090 $
*/
public class CondorGlideinWMS extends Condor {
/**
* The name of the style being implemented.
*/
public static final String STYLE_NAME = "CondorGlideinWMS";
/**
* The default constructor.
*/
public CondorGlideinWMS() {
super();
}
/**
* @param job the job on which the style needs to be applied.
*
* @throws CondorStyleException in case of any error occuring code generation.
*/
public void apply( Job job ) throws CondorStyleException{
// default is vanilla universe for glideinwms jobs
String universe = job.condorVariables.containsKey( Condor.UNIVERSE_KEY )?
(String)job.condorVariables.get( Condor.UNIVERSE_KEY):
Condor.VANILLA_UNIVERSE;
job.condorVariables.construct(Condor.UNIVERSE_KEY, universe);
// glideinWMS jobs are basic Condor jobs
super.apply(job);
universe = (String)job.condorVariables.get( Condor.UNIVERSE_KEY);
if (universe.equalsIgnoreCase( Condor.VANILLA_UNIVERSE ) ||
universe.equalsIgnoreCase( Condor.STANDARD_UNIVERSE ) ||
universe.equalsIgnoreCase( Condor.PARALLEL_UNIVERSE ) ){
job.condorVariables.construct("should_transfer_files", "YES");
job.condorVariables.construct("when_to_transfer_output", "ON_EXIT");
// job requirements - steer the jobs to the glideins at the right site
String req = "(IS_MONITOR_VM == False)" +
" && (Arch != \"\") && (OpSys != \"\") && (Disk != -42)" +
" && (Memory > 1) && (FileSystemDomain != \"\")";
job.condorVariables.construct("requirements", req);
// rank - steer jobs to the newest available glideins - this is so we can
// identify and remove unused glideins
job.condorVariables.construct("rank", "DaemonStartTime");
}
}
}