Note - I moved this discussion to the Airavata developers list.
You should first make it work from the command line in the appropriate
language.
To run a non Airavata GenApp module, say "align", it is simply
$ {executable_path}/align '{... json input ... }' > json_output
so you need to make this work through Airavata.
You can see what Nadeem did for html5/php here:
https://github.com/NadeemAnjum/GenAppAiravata/blob/master/genapp/languages/html5/base.php
You will see he included his airavata.php code (line 4) and then
ran through steps to call (lines 267-273)
* createProject()
* createExperiment()
* launchExperiment()
* polled getExperimentStatus() until COMPLETED
* getOutput()
This was with a previous version of Airavata. Examining the current
API, the functions seem to be the
same except getOutput() -> getExperimentOutputs()
I don't know if there are any extra steps with the current Airavata, but
I don't think so.
The polled getExperimentStatus() is a bit of an issue. We should avoid
polling, or if we do,
use a fall back timer, so that it checks, say after
1,2,4,8,16,32,64,64,64,64 seconds so
at least it is not checking every 1 second as in Nadeem's original code.
Also, the execution may fail, so simply checking for COMPLETED is not
good enough.
It should check for all known return values and take appropriate measures.
If an unknown return value is received, it should also give an error.
Also, Nadeem worked on a previous version of GenApp, so his html5/php
code was present
in a different program fragment (base.php). Our current implementation
has this in jobrun.php.
But before you try to put this within GenApp, make it work from the
command line in
a program with the same language as your target language (php, c++, java).
-E.
priyanshu patra wrote:
Sir, how to proceed after registering the modules so as to run them on
server via genapp?
On Mon, Jun 1, 2015 at 3:14 PM, Emre Brookes <[email protected]
<mailto:[email protected]>> wrote:
Abhishek Kapoor wrote:
Sir,
I was checking directives.json for executable path and I saw
something that seems a bit weird, We have given executable
path for all the languages separately but we are using same
path for all the languages, Is there any chance that in future
executable_paths for different languages would be different?
because in that case as you said earlier we have to define
register for different languages separately.
Last year, what nadeem did was, he took executable_path only
from html5 and registered the modules, but he didn't check if
other languages have different executable_paths.
Hi Abhishek,
Yes, each language can have its own executable_path (as you can
see by it's definition in directives.json)
But on a remote compute resource, it maybe different. We will in
future extend the appconfig.json to have
resource specific executable_path also. For now, I would at least
support the differing language specific
paths. And that's ok, since each language generated which
supports Airavata execution should have
it's own Airavata registry code. So you could easily prefix a
language specific tag to the module name
and use that as a registry identifier. This is a benefit to doing
making language specific registry programs
(in genapp/languages/xyz/util/) and using the
genapp/languages/xyz.json to define their creation upon
genapp.pl <http://genapp.pl> execution.
-E.