On May 15, 2012, at 8:55 AM, Marlon Pierce wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> I'm thinking of a google spreadsheet....

+ 1 this is good idea to map requirements. May be we can use the tables in the 
wiki. 

Suresh

> On 5/15/12 8:53 AM, Marlon Pierce wrote:
>> We have a large collection of use cases, so it would be a good exercise to 
>> apply the email below to specific applications.
>> 
>> 
>> Marlon
>> 
>> 
>> On 5/13/12 9:49 AM, Suresh Marru wrote:
>>> Hi All,
>> 
>>> I am trying to revisit the Airavata support for all command line options we 
>>> pass to applications. Airavata's goal is to make end users oblivious to any 
>>> application execution details, but application service providers need 
>>> flexibility to configure all possible application options. 
>> 
>>> Some terminology like arguments vs parameters vs attributes get ambiguous. 
>>> They differ by definition but in practice they are often used 
>>> interchangeably. For Airavata, we should avoid a confusion between whats 
>>> exposed in wsdl's vs whats passed to application. This matches the 
>>> semantics as well, for instance, an argument is an instance of parameter. 
>>> This discussion is about what Airavata passes to the command line 
>>> applications. I am not suggesting any changes to wsdl's and schemas which 
>>> use xml definitions. For applications I am suggesting to use the 
>>> terminology per POSIX standard definitions [1]. I also propose that we 
>>> should try and follow the utility syntax guidelines [2]. If an application 
>>> does not follow these guidelines, we suggest it be wrapped by a shell 
>>> script so we can pass arguments and flags confirming to standard practices.
>> 
>>> Application refers to the commands airavata executes on computational 
>>> resources.
>> 
>>> Working directory. Airavata should insist on executing each invocation in a 
>>> unique working directory. Some applications try and change to a static 
>>> directory, but if proper uniqueness is not followed for output and log 
>>> files, we risk overwriting executions producing unintended outputs. Also, 
>>> avoid writing to home directories and source directories. This might have 
>>> side effects and a overrun log file might fill the disk space and freeze 
>>> further usage of that account.  
>> 
>>> Arguments: 
>>> *  should support application arguments and provide a way to specify both 
>>> required and optional. 
>>> In the case of optional parameters, the resulting wsdl's attributes should 
>>> have minOccurs=0 and airavata should skip passing that value to application 
>>> (if not specified).
>> 
>>> * Airavata *should not* support arguments with operands followed by 
>>> commands. These additional commands get forked without having control over 
>>> the process id and monitoring and exit status of these series of commands 
>>> gets tricky. More over, the underlying grid job managers do not like 
>>> treating a chain of commands as one executable. Rather encourage explicitly 
>>> specifying the execution chain and associated I/O.
>> 
>>> * Airavata should also support flags only ( they serve different purpose 
>>> than option flags). Flags normally prefix with '--'. These flags control 
>>> the execution of the application like --verbose, --fast, --use-fft, e.t.c
>> 
>>> * Arguments can be passed to the application as standardinput (with 
>>> redirector operator) or as name-value pairs or with option flags. The 
>>> option flags should always prefix with the POSIX standard of '-'. 
>> 
>>> * If the arguments are preceded by an option flag they do not need to be 
>>> ordered. But if the arguments are passed just as values, applications are 
>>> sensitive to the order the arguments are passed. In this case, optional 
>>> arguments have to carefully handled, as missing an argument in between will 
>>> mislead. 
>> 
>>> * If an argument is a file type, and if the file has a remote supported 
>>> protocols of (http, ftp, gsiftp, s3) then the file has to be staged first 
>>> and only local path passed to the application. Application should be able 
>>> to consume the full local path and if only basename is required, it should 
>>> be able to handle it internally. 
>> 
>>> * If an application requires a remove ftp url as an argument, then it 
>>> should be specified as a string, in which case Airavata will skip staging 
>>> that url and will pass the url as is to the application. 
>> 
>>> * Implicit Parameters: As much as possible, Airavata should insist on 
>>> one-on-one match between inputs specified in service description to whats 
>>> passed to application. But there will be exceptions like fortran 
>>> applications which uses NAMELIST standard to specify all inputs in a config 
>>> file and pass only this file to the application. In these cases, the 
>>> application still needs to stage some data files to the remote compute 
>>> server but these file names or implicitly specified in the application. The 
>>> application typically looks for these files relative to working directory 
>>> or to input namelist file. 
>> 
>>> Outputs:
>>> * Airavata should support standard outputs and errors and optionally 
>>> provide a way to specify the names of stdout and stderr. 
>>> * All outputs required to be staged out of the compute machine or scratch 
>>> working directory be explicitly specified. 
>>> * If the output file name(s) are predetermined or specified at in a config 
>>> file, then the name should be specified in application description. In the 
>>> cases, where output file names are not deterministic, a regular expression 
>>> or a containing directory should be specified. 
>>> * If the application requires the output file name be passed at command 
>>> line like -out output.txt, then airavata should provide support for these 
>>> outputs flags. 
>>> * Airavata should support outputs which can be optionally produced. If an 
>>> optional output is not generated but application exits with exit code 0, 
>>> then the application should be marked as success. (A different discussion 
>>> on application execution success criteria is needed). 
>>> * A default output data directory should be created on the remote compute 
>>> resource. The application description should be able to specific an 
>>> overriding name for this directory. 
>>> * Airavata should support applications/shell script wrappers which print 
>>> name-value pairs of output content or file paths to standard out. 
>> 
>>> Once we discuss this topic, we should raise JIRAs for any missing features 
>>> and also add these on website/wiki. 
>> 
>>> Cheers,
>>> Suresh
>> 
>>> [1] - 
>>> http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html
>>> [2] - 
>>> http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html#tag_12_02
>> 
>> 
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG/MacGPG2 v2.0.16 (Darwin)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
> 
> iQEcBAEBAgAGBQJPslI0AAoJEEfVXEODPFIDOrAIAKI6yUXoWTVx6vrX2xCZlTta
> vRxQS/Kpc7OVtO6IFJKtpODfrQ10GCgynweewt8rF7c8JztFbLWqNmSCFiYnRdrc
> B+ZAg5EZRDwW+bs9OO0FhFhp/DkcJKE97o0Kx0YRDPsAQj+SS9OCpzneFR/6mbQ8
> 3AI2x/byBIE4jwaBUZjH31hmXzS1M7ibYR5J10gBqO2ONgeTShipWgbR/QyjebFs
> /g3dtfaVwiaB99qRa6bVf3dyAB2wIWMtwRvtoAzqQTdYHMnkiE+azF2/02tfRXiu
> LIizzd/ErW3XVHVpUbALdu4Grue3YeaOUmG69yjq8Ipzjk9i+BVA22dvaWebKb0=
> =4Bss
> -----END PGP SIGNATURE-----

Reply via email to