blob: f1f72df4e2292531c1f6f1eedab045c428ccbd69 [file] [log] [blame]
/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.airavata.gfac.core;
import org.apache.airavata.gfac.core.cluster.CommandOutput;
import org.apache.airavata.gfac.core.x2012.x12.AfterAnyList;
import org.apache.airavata.gfac.core.x2012.x12.AfterOKList;
import org.apache.airavata.gfac.core.x2012.x12.InputList;
import org.apache.airavata.gfac.core.x2012.x12.JobDescriptorDocument;
import org.apache.xmlbeans.XmlException;
import java.util.List;
/**
* This class define a job with required parameters, based on this configuration API is generating a Pbs script and
* submit the job to the computing resource
*/
public class JobDescriptor {
private JobDescriptorDocument jobDescriptionDocument;
public JobDescriptor() {
jobDescriptionDocument = JobDescriptorDocument.Factory.newInstance();
jobDescriptionDocument.addNewJobDescriptor();
}
public JobDescriptor(JobDescriptorDocument jobDescriptorDocument) {
this.jobDescriptionDocument = jobDescriptorDocument;
}
public JobDescriptor(CommandOutput commandOutput) {
jobDescriptionDocument = JobDescriptorDocument.Factory.newInstance();
jobDescriptionDocument.addNewJobDescriptor();
}
public String toXML() {
return jobDescriptionDocument.xmlText();
}
public JobDescriptorDocument getJobDescriptorDocument() {
return this.jobDescriptionDocument;
}
/**
* With new app catalog thrift object integration, we don't use this
* @param xml
* @return
* @throws XmlException
*/
@Deprecated
public static JobDescriptor fromXML(String xml)
throws XmlException {
JobDescriptorDocument parse = JobDescriptorDocument.Factory
.parse(xml);
JobDescriptor jobDescriptor = new JobDescriptor(parse);
return jobDescriptor;
}
//todo write bunch of setter getters to set and get jobdescription parameters
public void setWorkingDirectory(String workingDirectory) {
this.getJobDescriptorDocument().getJobDescriptor().setWorkingDirectory(workingDirectory);
}
public String getWorkingDirectory() {
return this.getJobDescriptorDocument().getJobDescriptor().getWorkingDirectory();
}
public void setShellName(String shellName) {
this.getJobDescriptorDocument().getJobDescriptor().setShellName(shellName);
}
public void setJobName(String name) {
this.getJobDescriptorDocument().getJobDescriptor().setJobName(name);
}
public void setExecutablePath(String name) {
this.getJobDescriptorDocument().getJobDescriptor().setExecutablePath(name);
}
public void setAllEnvExport(boolean name) {
this.getJobDescriptorDocument().getJobDescriptor().setAllEnvExport(name);
}
public void setMailOptions(String name) {
this.getJobDescriptorDocument().getJobDescriptor().setMailOptions(name);
}
public void setStandardOutFile(String name) {
this.getJobDescriptorDocument().getJobDescriptor().setStandardOutFile(name);
}
public void setStandardErrorFile(String name) {
this.getJobDescriptorDocument().getJobDescriptor().setStandardErrorFile(name);
}
public void setNodes(int name) {
this.getJobDescriptorDocument().getJobDescriptor().setNodes(name);
}
public void setProcessesPerNode(int name) {
this.getJobDescriptorDocument().getJobDescriptor().setProcessesPerNode(name);
}
public String getOutputDirectory() {
return this.getJobDescriptorDocument().getJobDescriptor().getOutputDirectory();
}
public String getInputDirectory() {
return this.getJobDescriptorDocument().getJobDescriptor().getInputDirectory();
}
public void setOutputDirectory(String name) {
this.getJobDescriptorDocument().getJobDescriptor().setOutputDirectory(name);
}
public void setInputDirectory(String name) {
this.getJobDescriptorDocument().getJobDescriptor().setInputDirectory(name);
}
/**
* Users can pass the minute count for maxwalltime
* @param minutes
*/
public void setMaxWallTime(String minutes) {
this.getJobDescriptorDocument().getJobDescriptor().setMaxWallTime(
GFacUtils.maxWallTimeCalculator(Integer.parseInt(minutes)));
}
public void setMaxWallTimeForLSF(String minutes) {
this.getJobDescriptorDocument().getJobDescriptor().setMaxWallTime(
GFacUtils.maxWallTimeCalculatorForLSF(Integer.parseInt(minutes)));
}
public void setAcountString(String name) {
this.getJobDescriptorDocument().getJobDescriptor().setAcountString(name);
}
public void setInputValues(List<String> inputValue) {
InputList inputList = this.getJobDescriptorDocument().getJobDescriptor().addNewInputs();
inputList.setInputArray(inputValue.toArray(new String[inputValue.size()]));
}
public void setJobID(String jobID) {
this.getJobDescriptorDocument().getJobDescriptor().setJobID(jobID);
}
public void setQueueName(String queueName) {
this.getJobDescriptorDocument().getJobDescriptor().setQueueName(queueName);
}
public void setStatus(String queueName) {
this.getJobDescriptorDocument().getJobDescriptor().setStatus(queueName);
}
public void setAfterAnyList(String[] afterAnyList) {
AfterAnyList afterAny = this.getJobDescriptorDocument().getJobDescriptor().addNewAfterAny();
afterAny.setAfterAnyArray(afterAnyList);
}
public void setAfterOKList(String[] afterOKList) {
AfterOKList afterAnyList = this.getJobDescriptorDocument().getJobDescriptor().addNewAfterOKList();
afterAnyList.setAfterOKListArray(afterOKList);
}
public void setCTime(String cTime) {
this.getJobDescriptorDocument().getJobDescriptor().setCTime(cTime);
}
public void setQTime(String qTime) {
this.getJobDescriptorDocument().getJobDescriptor().setQTime(qTime);
}
public void setMTime(String mTime) {
this.getJobDescriptorDocument().getJobDescriptor().setMTime(mTime);
}
public void setSTime(String sTime) {
this.getJobDescriptorDocument().getJobDescriptor().setSTime(sTime);
}
public void setCompTime(String compTime) {
this.getJobDescriptorDocument().getJobDescriptor().setCompTime(compTime);
}
public void setOwner(String owner) {
this.getJobDescriptorDocument().getJobDescriptor().setOwner(owner);
}
public void setExecuteNode(String executeNode) {
this.getJobDescriptorDocument().getJobDescriptor().setExecuteNode(executeNode);
}
public void setEllapsedTime(String ellapsedTime) {
this.getJobDescriptorDocument().getJobDescriptor().setEllapsedTime(ellapsedTime);
}
public void setUsedCPUTime(String usedCPUTime) {
this.getJobDescriptorDocument().getJobDescriptor().setUsedCPUTime(usedCPUTime);
}
public void setCPUCount(int usedCPUTime) {
this.getJobDescriptorDocument().getJobDescriptor().setCpuCount(usedCPUTime);
}
public void setUsedMemory(String usedMemory) {
this.getJobDescriptorDocument().getJobDescriptor().setUsedMem(usedMemory);
}
public void setVariableList(String variableList) {
this.getJobDescriptorDocument().getJobDescriptor().setVariableList(variableList);
}
public void setSubmitArgs(String submitArgs) {
this.getJobDescriptorDocument().getJobDescriptor().setSubmitArgs(submitArgs);
}
public void setPreJobCommands(String[] commands){
if(this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands() == null){
this.getJobDescriptorDocument().getJobDescriptor().addNewPreJobCommands();
}
this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands().setCommandArray(commands);
}
public void setPostJobCommands(String[] commands){
if(this.getJobDescriptorDocument().getJobDescriptor().getPostJobCommands() == null){
this.getJobDescriptorDocument().getJobDescriptor().addNewPostJobCommands();
}
this.getJobDescriptorDocument().getJobDescriptor().getPostJobCommands().setCommandArray(commands);
}
public void setModuleLoadCommands(String[] commands) {
if (this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands() == null) {
this.getJobDescriptorDocument().getJobDescriptor().addNewModuleLoadCommands();
}
this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands().setCommandArray(commands);
}
public void addModuleLoadCommands(String command) {
if (this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands() == null) {
this.getJobDescriptorDocument().getJobDescriptor().addNewModuleLoadCommands();
}
this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands().addCommand(command);
}
public void addPreJobCommand(String command){
if(this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands() == null){
this.getJobDescriptorDocument().getJobDescriptor().addNewPreJobCommands();
}
this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands().addCommand(command);
}
public void addPostJobCommand(String command){
if(this.getJobDescriptorDocument().getJobDescriptor().getPostJobCommands() == null){
this.getJobDescriptorDocument().getJobDescriptor().addNewPostJobCommands();
}
this.getJobDescriptorDocument().getJobDescriptor().getPostJobCommands().addCommand(command);
}
public void setPartition(String partition){
this.getJobDescriptorDocument().getJobDescriptor().setPartition(partition);
}
public void setUserName(String userName){
this.getJobDescriptorDocument().getJobDescriptor().setUserName(userName);
}
public void setNodeList(String nodeList){
this.getJobDescriptorDocument().getJobDescriptor().setNodeList(nodeList);
}
public void setJobSubmitter(String jobSubmitter){
this.getJobDescriptorDocument().getJobDescriptor().setJobSubmitterCommand(jobSubmitter);
}
public String getNodeList(){
return this.getJobDescriptorDocument().getJobDescriptor().getNodeList();
}
public String getExecutablePath() {
return this.getJobDescriptorDocument().getJobDescriptor().getExecutablePath();
}
public boolean getAllEnvExport() {
return this.getJobDescriptorDocument().getJobDescriptor().getAllEnvExport();
}
public String getMailOptions() {
return this.getJobDescriptorDocument().getJobDescriptor().getMailOptions();
}
public String getStandardOutFile() {
return this.getJobDescriptorDocument().getJobDescriptor().getStandardOutFile();
}
public String getStandardErrorFile() {
return this.getJobDescriptorDocument().getJobDescriptor().getStandardErrorFile();
}
public int getNodes(int name) {
return this.getJobDescriptorDocument().getJobDescriptor().getNodes();
}
public int getCPUCount(int name) {
return this.getJobDescriptorDocument().getJobDescriptor().getCpuCount();
}
public int getProcessesPerNode() {
return this.getJobDescriptorDocument().getJobDescriptor().getProcessesPerNode();
}
public String getMaxWallTime() {
return this.getJobDescriptorDocument().getJobDescriptor().getMaxWallTime();
}
public String getAcountString() {
return this.getJobDescriptorDocument().getJobDescriptor().getAcountString();
}
public String[] getInputValues() {
return this.getJobDescriptorDocument().getJobDescriptor().getInputs().getInputArray();
}
public String getJobID() {
return this.getJobDescriptorDocument().getJobDescriptor().getJobID();
}
public String getQueueName() {
return this.getJobDescriptorDocument().getJobDescriptor().getQueueName();
}
public String getStatus() {
return this.getJobDescriptorDocument().getJobDescriptor().getStatus();
}
public String[] getAfterAnyList() {
return this.getJobDescriptorDocument().getJobDescriptor().getAfterAny().getAfterAnyArray();
}
public String[] getAfterOKList() {
return this.getJobDescriptorDocument().getJobDescriptor().getAfterOKList().getAfterOKListArray();
}
public String getCTime() {
return this.getJobDescriptorDocument().getJobDescriptor().getCTime();
}
public String getQTime() {
return this.getJobDescriptorDocument().getJobDescriptor().getQTime();
}
public String getMTime() {
return this.getJobDescriptorDocument().getJobDescriptor().getMTime();
}
public String getSTime() {
return this.getJobDescriptorDocument().getJobDescriptor().getSTime();
}
public String getCompTime() {
return this.getJobDescriptorDocument().getJobDescriptor().getCompTime();
}
public String getOwner() {
return this.getJobDescriptorDocument().getJobDescriptor().getOwner();
}
public String getExecuteNode() {
return this.getJobDescriptorDocument().getJobDescriptor().getExecuteNode();
}
public String getEllapsedTime() {
return this.getJobDescriptorDocument().getJobDescriptor().getEllapsedTime();
}
public String getUsedCPUTime() {
return this.getJobDescriptorDocument().getJobDescriptor().getUsedCPUTime();
}
public String getUsedMemory() {
return this.getJobDescriptorDocument().getJobDescriptor().getUsedMem();
}
public void getShellName() {
this.getJobDescriptorDocument().getJobDescriptor().getShellName();
}
public String getJobName() {
return this.getJobDescriptorDocument().getJobDescriptor().getJobName();
}
public String getJobId() {
return this.getJobDescriptorDocument().getJobDescriptor().getJobID();
}
public String getVariableList() {
return this.getJobDescriptorDocument().getJobDescriptor().getJobID();
}
public String getSubmitArgs() {
return this.getJobDescriptorDocument().getJobDescriptor().getJobID();
}
public String[] getPostJobCommands(){
if(this.getJobDescriptorDocument().getJobDescriptor().getPostJobCommands() != null) {
return this.getJobDescriptorDocument().getJobDescriptor().getPostJobCommands().getCommandArray();
}
return null;
}
public String[] getModuleCommands() {
if (this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands() != null) {
return this.getJobDescriptorDocument().getJobDescriptor().getModuleLoadCommands().getCommandArray();
}
return null;
}
public String[] getPreJobCommands(){
if(this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands() != null) {
return this.getJobDescriptorDocument().getJobDescriptor().getPreJobCommands().getCommandArray();
}
return null;
}
public String getJobSubmitterCommand(){
return this.getJobDescriptorDocument().getJobDescriptor().getJobSubmitterCommand();
}
public String getPartition(){
return this.getJobDescriptorDocument().getJobDescriptor().getPartition();
}
public String getUserName(){
return this.getJobDescriptorDocument().getJobDescriptor().getUserName();
}
public void setCallBackIp(String ip){
this.jobDescriptionDocument.getJobDescriptor().setCallBackIp(ip);
}
public void setCallBackPort(String ip){
this.jobDescriptionDocument.getJobDescriptor().setCallBackPort(ip);
}
public String getCallBackIp(){
return this.jobDescriptionDocument.getJobDescriptor().getCallBackIp();
}
public String getCallBackPort(){
return this.jobDescriptionDocument.getJobDescriptor().getCallBackPort();
}
public void setMailType(String emailType) {
this.getJobDescriptorDocument().getJobDescriptor().setMailType(emailType);
}
public String getMailType() {
return this.getJobDescriptorDocument().getJobDescriptor().getMailType();
}
public void setMailAddress(String emailAddress) {
this.getJobDescriptorDocument().getJobDescriptor().setMailAddress(emailAddress);
}
public String getMailAddress() {
return this.getJobDescriptorDocument().getJobDescriptor().getMailAddress();
}
public String getChassisName() {
return this.getJobDescriptorDocument().getJobDescriptor().getChassisName();
}
public void setChassisName(String chassisName){
this.getJobDescriptorDocument().getJobDescriptor().setChassisName(chassisName);
}
public void setQoS(String qos){
this.getJobDescriptorDocument().getJobDescriptor().setQualityOfService(qos);
}
public String getQoS() {
return this.getJobDescriptorDocument().getJobDescriptor().getQualityOfService();
}
public void setReservation(String reservation) {
this.getJobDescriptorDocument().getJobDescriptor().setReservation(reservation);
}
public String getReservation() {
return this.getJobDescriptorDocument().getJobDescriptor().getReservation();
}
}