org.objectweb.proactive.core.process.oar
Class OARSubProcess

java.lang.Object
  extended byorg.objectweb.proactive.core.process.AbstractUniversalProcess
      extended byorg.objectweb.proactive.core.process.AbstractExternalProcess
          extended byorg.objectweb.proactive.core.process.AbstractExternalProcessDecorator
              extended byorg.objectweb.proactive.core.process.oar.OARSubProcess
All Implemented Interfaces:
ExternalProcess, ExternalProcessDecorator, java.io.Serializable, UniversalProcess

public class OARSubProcess
extends AbstractExternalProcessDecorator

The OARSubProcess class is able to start any class, of the ProActive library, on a cluster managed by OAR protocol. An istance of this class can be coupled for instance with RLoginProcess or SSHProcess classes in order to log into the cluster's front end with rlogin or ssh and then to run a job with OARSubProcess.

For instance:

 ..............
 OARSubProcess oar = new OARSubProcess(new SimpleExternalProcess("ls -lsa"));
 SSHProcess ssh = new SSHProcess(oar, false);
 ssh.setHostname("cluster_front_end_name");
 ssh.startProcess();
 ...............
 
Anyway it is strongly advised to use XML Deployment files to run such processes

Since:
ProActive 2.0.1
Version:
1.0, 2004/09/20
Author:
ProActive Team
See Also:
Serialized Form

Nested Class Summary
 class OARSubProcess.ParserMessageLogger
          Implementation of a RemoteProcessMessageLogger that look for the jobID of the launched job
 
Nested classes inherited from class org.objectweb.proactive.core.process.AbstractExternalProcessDecorator
AbstractExternalProcessDecorator.CompositeMessageLogger, AbstractExternalProcessDecorator.CompositeMessageSink
 
Nested classes inherited from class org.objectweb.proactive.core.process.AbstractExternalProcess
AbstractExternalProcess.NullMessageLogger, AbstractExternalProcess.ProcessInputHandler, AbstractExternalProcess.ProcessOutputHandler, AbstractExternalProcess.SimpleMessageSink, AbstractExternalProcess.StandardOutputMessageLogger
 
Field Summary
protected  java.lang.String accessProtocol
           
protected static java.lang.String DEFAULT_HOSTS_NUMBER
           
static java.lang.String DEFAULT_OARSUBPATH
           
protected  java.lang.String hostNumber
           
protected  java.lang.String interactive
           
protected  int jobID
           
protected  java.lang.String queueName
           
protected  java.lang.String resources
           
protected  java.lang.String scriptLocation
           
protected  java.lang.String weight
           
 
Fields inherited from class org.objectweb.proactive.core.process.AbstractExternalProcessDecorator
targetProcess
 
Fields inherited from class org.objectweb.proactive.core.process.AbstractExternalProcess
clogger, closeStream, errorMessageLogger, externalProcess, FILE_TRANSFER_DEFAULT_PROTOCOL, fileTransferLogger, inputMessageLogger, IS_WINDOWS_SYSTEM, NO_COMPOSITION, outputMessageSink
 
Fields inherited from class org.objectweb.proactive.core.process.AbstractUniversalProcess
certificateLocation, command, command_path, DEFAULT_HOSTNAME, DEFAULT_USERNAME, environment, hostname, isFinished, isStarted, LOCALHOST, privateKeyLocation, securityFile, username
 
Fields inherited from interface org.objectweb.proactive.core.process.ExternalProcessDecorator
APPEND_TO_COMMAND_COMPOSITION, COPY_FILE_AND_APPEND_COMMAND, GIVE_COMMAND_AS_PARAMETER, SEND_TO_OUTPUT_STREAM_COMPOSITION
 
Fields inherited from interface org.objectweb.proactive.core.process.UniversalProcess
logger, UNKNOWN_NODE_NUMBER
 
Constructor Summary
OARSubProcess()
           
OARSubProcess(ExternalProcess targetProcess)
           
 
Method Summary
 UniversalProcess getFinalProcess()
          Returns the last process of the chain
 int getNodeNumber()
          Returns the number of nodes targeted
 java.lang.String getProcessId()
          Returns the id of the process
protected  java.lang.String internalBuildCommand()
          oarsub is not able to receive env variables or parameters for a script we thus rely on the following trick, the command has the form echo "real command" | qsub -I ...
protected  void internalStartProcess(java.lang.String commandToExecute)
           
static void main(java.lang.String[] args)
           
protected  java.lang.String parseHostname(java.lang.String message)
           
 void setAccessProtocol(java.lang.String accessProtocol)
          Sets the protocol to access booked nodes.
 void setErrorMessageLogger(RemoteProcessMessageLogger errorMessageLogger)
          sets the RemoteProcessMessageLogger handling the error stream of the process
 void setInteractive(java.lang.String interactive)
          Allows to launch this OARSubProcess with -I (interactive option) Not yet included in the oar command
 void setOutputMessageSink(MessageSink outputMessageSink)
          sets the MessageSink handling the output stream of the process
 void setQueueName(java.lang.String queueName)
          Sets the value of the queue where the job will be launched.
 void setResources(java.lang.String res)
          Set the resource option in the OAR command.
 void setScriptLocation(java.lang.String location)
          Sets the location of the script on the remote host
 
Methods inherited from class org.objectweb.proactive.core.process.AbstractExternalProcessDecorator
buildCommand, getCompositionType, getTargetProcess, handleCopyFile, handleOutput, setCompositionType, setTargetProcess, toString
 
Methods inherited from class org.objectweb.proactive.core.process.AbstractExternalProcess
buildEnvironmentCommand, buildUnixEnvironmentCommand, buildWindowsEnvironmentCommand, closeStream, getErrorMessageLogger, getFileTransferDefaultCopyProtocol, getFileTransferWorkShopDeploy, getFileTransferWorkShopRetrieve, getInputMessageLogger, getOutputMessageSink, handleError, handleInput, handleProcess, internalFileTransferDefaultProtocol, internalStartFileTransfer, internalStopProcess, internalWaitFor, setInputMessageLogger
 
Methods inherited from class org.objectweb.proactive.core.process.AbstractUniversalProcess
checkStarted, getCommand, getCommandPath, getEnvironment, getHostname, getUsername, isFinished, isHierarchical, isStarted, pushProcessAttributes, setCommandPath, setEnvironment, setHostname, setUsername, startFileTransfer, startProcess, stopProcess, toString, waitFor
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.objectweb.proactive.core.process.ExternalProcess
closeStream, getErrorMessageLogger, getFileTransferWorkShopDeploy, getFileTransferWorkShopRetrieve, getInputMessageLogger, getOutputMessageSink, setInputMessageLogger
 
Methods inherited from interface org.objectweb.proactive.core.process.UniversalProcess
getCommand, getCommandPath, getEnvironment, getHostname, getUsername, isFinished, isHierarchical, isStarted, setCommandPath, setEnvironment, setHostname, setUsername, startFileTransfer, startProcess, stopProcess, waitFor
 

Field Detail

DEFAULT_OARSUBPATH

public static final java.lang.String DEFAULT_OARSUBPATH
See Also:
Constant Field Values

DEFAULT_HOSTS_NUMBER

protected static final java.lang.String DEFAULT_HOSTS_NUMBER
See Also:
Constant Field Values

hostNumber

protected java.lang.String hostNumber

weight

protected java.lang.String weight

scriptLocation

protected java.lang.String scriptLocation

interactive

protected java.lang.String interactive

jobID

protected int jobID

queueName

protected java.lang.String queueName

accessProtocol

protected java.lang.String accessProtocol

resources

protected java.lang.String resources
Constructor Detail

OARSubProcess

public OARSubProcess()

OARSubProcess

public OARSubProcess(ExternalProcess targetProcess)
Method Detail

setErrorMessageLogger

public void setErrorMessageLogger(RemoteProcessMessageLogger errorMessageLogger)
Description copied from interface: ExternalProcess
sets the RemoteProcessMessageLogger handling the error stream of the process

Specified by:
setErrorMessageLogger in interface ExternalProcess
Overrides:
setErrorMessageLogger in class AbstractExternalProcess

setOutputMessageSink

public void setOutputMessageSink(MessageSink outputMessageSink)
Description copied from interface: ExternalProcess
sets the MessageSink handling the output stream of the process

Specified by:
setOutputMessageSink in interface ExternalProcess
Overrides:
setOutputMessageSink in class AbstractExternalProcess

getProcessId

public java.lang.String getProcessId()
Description copied from interface: UniversalProcess
Returns the id of the process

Returns:
the id of the process. This id is just the first letters of the process class, to be able to identify the sequence of processes used
See Also:
UniversalProcess.getProcessId()

getNodeNumber

public int getNodeNumber()
Description copied from interface: UniversalProcess
Returns the number of nodes targeted

Returns:
the number of nodes targeted. Represents the number of nodes expected to use when starting this process. If this number cannot be known, waiting for all available nodes for example, UNKNOWN_NODE_NUMBER is returned.
See Also:
UniversalProcess.getNodeNumber()

getFinalProcess

public UniversalProcess getFinalProcess()
Description copied from interface: UniversalProcess
Returns the last process of the chain

Returns:
the last process of the chain
See Also:
UniversalProcess.getFinalProcess()

setScriptLocation

public void setScriptLocation(java.lang.String location)
Sets the location of the script on the remote host

Parameters:
location -

setAccessProtocol

public void setAccessProtocol(java.lang.String accessProtocol)
Sets the protocol to access booked nodes. Two possibilities, rsh, ssh. Default is rsh.

Parameters:
accessProtocol -

setResources

public void setResources(java.lang.String res)
Set the resource option in the OAR command. Represents the -l option of OAR

Parameters:
res - resources to set

setInteractive

public void setInteractive(java.lang.String interactive)
Allows to launch this OARSubProcess with -I (interactive option) Not yet included in the oar command

Parameters:
interactive - true for -I option false otherwise

setQueueName

public void setQueueName(java.lang.String queueName)
Sets the value of the queue where the job will be launched. The default is 'normal' Not yet included in the oar command

Parameters:
queueName -

parseHostname

protected java.lang.String parseHostname(java.lang.String message)

internalStartProcess

protected void internalStartProcess(java.lang.String commandToExecute)
                             throws java.io.IOException
Overrides:
internalStartProcess in class AbstractExternalProcessDecorator
Throws:
java.io.IOException

internalBuildCommand

protected java.lang.String internalBuildCommand()
oarsub is not able to receive env variables or parameters for a script we thus rely on the following trick, the command has the form echo "real command" | qsub -I ... oarStartRuntime.sh

Specified by:
internalBuildCommand in class AbstractExternalProcessDecorator

main

public static void main(java.lang.String[] args)


Copyright 2001-2005 INRIA All Rights Reserved.