Merge branch '1922-cache-discovery-python'
[arvados.git] / doc / user / tutorials / running-external-program.textile
index 44ae363f2d7ffaf2b47351a4ba25815bc7c3c257..f23fae89475482f3a6edd7d07b9a22c6b303ef4b 100644 (file)
@@ -6,3 +6,60 @@ title: "Running external programs"
 navorder: 18
 ---
 
+h1. Running external programs
+
+This tutorial demonstrates how to use Crunch to run an external program by writting a wrapper using the Python SDK.
+
+*This tutorial assumes that you are "logged into an Arvados VM instance":{{site.basedoc}}/user/getting_started/ssh-access.html#login, and have a "working environment.":{{site.basedoc}}/user/getting_started/check-environment.html*
+
+Start by entering the @crunch_scripts@ directory of your git repository:
+
+<notextile>
+<pre><code>$ <span class="userinput">cd you/crunch_scripts</span>
+</code></pre>
+</notextile>
+
+Next, using your favorite text editor, create a new file called @run-md5sum.py@ in the @crunch_scripts@ directory.  Add the following code to compute the md5 hash of each file in a collection:
+
+<pre><code class="userinput">{% include run-md5sum.py %}</code></pre>
+
+Make the file executable:
+
+notextile. <pre><code>$ <span class="userinput">chmod +x run-md5sum.py</span></code></pre>
+
+Next, add the file to @git@ staging, commit and push:
+
+<notextile>
+<pre><code>$ <span class="userinput">git add run-md5sum.py</span>
+$ <span class="userinput">git commit -m"run external md5sum program"</span>
+$ <span class="userinput">git push origin master</span>
+</code></pre>
+</notextile>
+
+You should now be able to run your new script using Crunch, with "script" referring to our new "run-md5sum.py" script.
+
+<notextile>
+<pre><code>$ <span class="userinput">cat &gt;the_job &lt;&lt;EOF
+{
+ "script": "run-md5sum.py",
+ "script_version": "you:master",
+ "script_parameters":
+ {
+  "input": "c1bad4b39ca5a924e481008009d94e32+210"
+ }
+}
+EOF</span>
+$ <span class="userinput">arv -h job create --job "$(cat the_job)"</span>
+{
+ ...
+ "uuid":"qr1hi-xxxxx-xxxxxxxxxxxxxxx"
+ ...
+}
+$ <span class="userinput">arv -h job get --uuid qr1hi-xxxxx-xxxxxxxxxxxxxxx</span>
+{
+ ...
+ "output":"4d164b1658c261b9afc6b479130016a3+54",
+ ...
+}
+</code></pre>
+</notextile>