|
![]() |
The following document describes our current proposal model for supporting file transfer in ProActive.
We believe it is interesting for us, and the ProActive users, to provide support for FileTransfer
Currently we recognize the following type of files:
Also, this files can be transfered:
The FileTransfer could happen:
FileTransfer definitions are divided in two:
This definitions can be referenced from a VirtualNode. They contain the most basic information of a FileTransfer:
References from the VirtualNode are made using the unique definition name.
These definitions contain more architecture specific information, and are therefore contained within the Process:
If some of this information (like username or hostname) can be inferred from the process, it is not necessary to declare it in the definition. Optionally, the information contained in the protocol can be overridden if specified.
When a FileTransfer starts, both abstract and concrete information are merged using the FileTransfer Workshop. The result of this process correspons to a sequence of CopyProtocols, as specified in the Concrete Definition.
Each CopyProtocol will be tried before the deployment takes place, until one succeeds. After one succeed are all fail, the process deployment will take place.
The abstract concept: "FileTransfer" is introduced. This concept is independent off the actual process used, but also flexible and configurable at the process level. To define this abstract representation of the FileTransfer:
.... </deployment> <FileTransferDefinitions> <FileTransfer id="example"> <file src="hello.dat" dest="world.dat"/> <file src="hello.jar" dest="world.jar"/> <file src="hello.class" dest="world.class"/> <dir src="exampledir" dest="exampledir"/> </FileTransfer> ... </FileTransferDefinitions> <infrastructure> ....
Note: exclude and include are not yet supported features
This tags can be referenced at the the VirtualNode level and the Process level.<VirtualNode name="exampleVNode" FileTransferDeploy="example"/>
<processDefinition id="xyz"> <sshProcess>... <!-- Inside the process, the FileTransfer tag becomes an element instead of an attribute. This happens because FileTransfer information is process specific. Note that the destination hostname and username can be omitted, and implicitly inferred from the process information. --> <FileTransferDeploy="implicit"> <!-- referenceID or keyword "implicit" (inherit)--> <copyProtocol>processDefault, scp, rcp</copyProtocol> <sourceInfo prefix="/home/user"/> <destinationInfo prefix="/tmp" hostname="foo.org" username="smith" /> </FileTransferDeploy> </sshProcess> </processDefinition>
The implicit keyword means the FileTransferDeploy identifier is inherited from the VN definition. If hostname and username are implicitly defined in the process tag, then this information will be used. But, if the user desires to override this information he can specify it as an attribute in the destinationInfo tag. When coallocating more than one VN on a JVM, and therefore on the same process, all files inherited from the multiple VN definitions will be transfered.
Note: FileTransferRetrieve is not yet supported.