[ARVADOS] updated: 7385689b6fd8df96434aadf7c0377d684c4abe1c
Git user
git at public.curoverse.com
Tue Sep 12 11:18:20 EDT 2017
Summary of changes:
doc/_config.yml | 2 +
doc/sdk/go/example.html.textile.liquid | 28 ++--
doc/sdk/java/example.html.textile.liquid | 32 ++---
doc/sdk/perl/example.html.textile.liquid | 55 ++++----
doc/sdk/python/cookbook.html.textile.liquid | 166 ++++++++++++++++++++++++
doc/sdk/python/example.html.textile.liquid | 28 ++--
doc/sdk/ruby/example.html.textile.liquid | 33 ++---
doc/user/reference/cookbook.html.textile.liquid | 12 ++
doc/zenweb-liquid.rb | 44 ++++++-
9 files changed, 303 insertions(+), 97 deletions(-)
create mode 100644 doc/sdk/python/cookbook.html.textile.liquid
create mode 100644 doc/user/reference/cookbook.html.textile.liquid
via 7385689b6fd8df96434aadf7c0377d684c4abe1c (commit)
via d9e495b553de6d76aaf6c4735977315e6fb0e51f (commit)
via ea137ac25c445c2f45a3643f23e6d2772a4b3887 (commit)
via 7a61a3b1f2f4c9b63195abb6990c12966895c254 (commit)
via c4f252e766aa196d97801d99bb74720e451ca185 (commit)
via 38e6bfb62552b6bedebe4fdf505f89ecdb5e4287 (commit)
via 7f108bc7e00604fd0e346b044c05579bfa380e9a (commit)
from b35c837cb09c1c748ba06a23b1a047da864d97fb (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit 7385689b6fd8df96434aadf7c0377d684c4abe1c
Merge: b35c837 d9e495b
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Tue Sep 12 11:17:55 2017 -0400
Merge branch '10349-cookbook' closes #10349
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz at veritasgenetics.com>
commit d9e495b553de6d76aaf6c4735977315e6fb0e51f
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Tue Sep 12 11:15:24 2017 -0400
10349: Add support for syntax highlighting inline code blocks.
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz at veritasgenetics.com>
diff --git a/doc/sdk/go/example.html.textile.liquid b/doc/sdk/go/example.html.textile.liquid
index 45a2e44..a5a109b 100644
--- a/doc/sdk/go/example.html.textile.liquid
+++ b/doc/sdk/go/example.html.textile.liquid
@@ -16,7 +16,7 @@ In these examples, the site prefix is @aaaaa at .
h2. Initialize SDK
-<pre>
+{% codeblock as go %}
import (
"git.curoverse.com/arvados.git/sdk/go/arvados"
"git.curoverse.com/arvados.git/sdk/go/arvadosclient"
@@ -28,49 +28,49 @@ func main() {
log.Fatalf("Error setting up arvados client %s", err.Error())
}
}
-</pre>
+{% endcodeblock %}
h2. create
-<pre>
+{% codeblock as go %}
var collection arvados.Collection
err := api.Create("collections", Dict{"collection": Dict{"name": "create example"}}, &collection)
-</pre>
+{% endcodeblock %}
h2. delete
-<pre>
+{% codeblock as go %}
var collection arvados.Collection
err := api.Delete("collections", "aaaaa-4zz18-ccccccccccccccc", Dict{}, &collection)
-</pre>
+{% endcodeblock %}
h2. get
-<pre>
+{% codeblock as go %}
var collection arvados.Collection
err := api.Get("collections", "aaaaa-4zz18-ccccccccccccccc", Dict{}, &collection)
-</pre>
+{% endcodeblock %}
h2. list
-<pre>
+{% codeblock as go %}
var collection arvados.Collection
err := api.List("collections", Dict{}, &collection)
-</pre>
+{% endcodeblock %}
h2. update
-<pre>
+{% codeblock as go %}
var collection arvados.Collection
err := api.Update("collections", "aaaaa-4zz18-ccccccccccccccc", Dict{"collection": Dict{"name": "update example"}}, &collection)
-</pre>
+{% endcodeblock %}
h2. Get current user
-<pre>
+{% codeblock as go %}
var user arvados.User
err := api.Get("users", "current", Dict{}, &user)
-</pre>
+{% endcodeblock %}
h2. Example program
diff --git a/doc/sdk/java/example.html.textile.liquid b/doc/sdk/java/example.html.textile.liquid
index 0eabdcb..bc15b83 100644
--- a/doc/sdk/java/example.html.textile.liquid
+++ b/doc/sdk/java/example.html.textile.liquid
@@ -12,47 +12,47 @@ SPDX-License-Identifier: CC-BY-SA-3.0
h2. Initialize SDK
-<pre>
+{% codeblock as java %}
import org.arvados.sdk.Arvados;
-</pre>
+{% endcodeblock %}
-<pre>
+{% codeblock as java %}
String apiName = "arvados";
String apiVersion = "v1";
Arvados arv = new Arvados(apiName, apiVersion);
-</pre>
+{% endcodeblock %}
h2. create
-<pre>
+{% codeblock as java %}
Map<String, String> collection = new HashMap<String, String>();
collection.put("name", "create example");
Map<String, Object> params = new HashMap<String, Object>();
params.put("collection", collection);
Map response = arv.call("collections", "create", params);
-</pre>
+{% endcodeblock %}
h2. delete
-<pre>
+{% codeblock as java %}
Map<String, Object> params = new HashMap<String, Object>();
params.put("uuid", uuid);
Map response = arv.call("collections", "delete", params);
-</pre>
+{% endcodeblock %}
h2. get
-<pre>
+{% codeblock as java %}
params = new HashMap<String, Object>();
params.put("uuid", userUuid);
Map response = arv.call("users", "get", params);
-</pre>
+{% endcodeblock %}
h2. list
-<pre>
+{% codeblock as java %}
Map<String, Object> params = new HashMap<String, Object>();
Map response = arv.call("users", "list", params);
@@ -61,11 +61,11 @@ h2. list
Map firstUser = (Map)items.get(0);
String userUuid = (String)firstUser.get("uuid");
-</pre>
+{% endcodeblock %}
h2. update
-<pre>
+{% codeblock as java %}
Map<String, String> collection = new HashMap<String, String>();
collection.put("name", "update example");
@@ -73,11 +73,11 @@ h2. update
params.put("uuid", uuid);
params.put("collection", collection);
Map response = arv.call("collections", "update", params);
-</pre>
+{% endcodeblock %}
h2. Get current user
-<pre>
+{% codeblock as java %}
Map<String, Object> params = new HashMap<String, Object>();
Map response = arv.call("users", "current", params);
-</pre>
+{% endcodeblock %}
diff --git a/doc/sdk/perl/example.html.textile.liquid b/doc/sdk/perl/example.html.textile.liquid
index 42932a3..b51cfe4 100644
--- a/doc/sdk/perl/example.html.textile.liquid
+++ b/doc/sdk/perl/example.html.textile.liquid
@@ -14,12 +14,10 @@ h2. Initialize SDK
Set up an API client user agent:
-<notextile>
-<pre><code class="userinput">
+{% codeblock as perl %}
use Arvados;
my $arv = Arvados->new('apiVersion' => 'v1');
-</code></pre>
-</notextile>
+{% endcodeblock %}
The SDK retrieves the list of API methods from the server at run time. Therefore, the set of available methods is determined by the server version rather than the SDK version.
@@ -27,60 +25,53 @@ h2. create
Create an object:
-<notextile>
-<pre><code class="userinput">my $test_link = $arv->{'links'}->{'create'}->execute('link' => { 'link_class' => 'test', 'name' => 'test' });
-</code></pre>
-</notextile>
+{% codeblock as perl %}
+my $test_link = $arv->{'links'}->{'create'}->execute('link' => { 'link_class' => 'test', 'name' => 'test' });
+{% endcodeblock %}
h2. delete
-<notextile>
-<pre><code class="userinput">my $some_user = $arv->{'collections'}->{'get'}->execute('uuid' => $collection_uuid);
-</code></pre>
-</notextile>
+{% codeblock as perl %}
+my $some_user = $arv->{'collections'}->{'get'}->execute('uuid' => $collection_uuid);
+{% endcodeblock %}
h2. get
Retrieve an object by ID:
-<notextile>
-<pre><code class="userinput">my $some_user = $arv->{'users'}->{'get'}->execute('uuid' => $current_user_uuid);
-</code></pre>
-</notextile>
+{% codeblock as perl %}
+my $some_user = $arv->{'users'}->{'get'}->execute('uuid' => $current_user_uuid);
+{% endcodeblock %}
Get the UUID of an object that was retrieved using the SDK:
-<notextile>
-<pre><code class="userinput">my $current_user_uuid = $current_user->{'uuid'}
-</code></pre>
-</notextile>
+{% codeblock as perl %}
+my $current_user_uuid = $current_user->{'uuid'}
+{% endcodeblock %}
h2. list
Get a list of objects:
-<notextile>
-<pre><code class="userinput">my $repos = $arv->{'repositories'}->{'list'}->execute;
+{% codeblock as perl %}
+my $repos = $arv->{'repositories'}->{'list'}->execute;
print ("UUID of first repo returned is ", $repos->{'items'}->[0], "\n");
-</code></pre>
-</notextile>
+{% endcodeblock %}
h2. update
Update an object:
-<notextile>
-<pre><code class="userinput">my $test_link = $arv->{'links'}->{'update'}->execute(
+{% codeblock as perl %}
+my $test_link = $arv->{'links'}->{'update'}->execute(
'uuid' => $test_link->{'uuid'},
'link' => { 'properties' => { 'foo' => 'bar' } });
-</code></pre>
-</notextile>
+{% endcodeblock %}
h2. Get current user
Get the User object for the current user:
-<notextile>
-<pre><code class="userinput">my $current_user = $arv->{'users'}->{'current'}->execute;
-</code></pre>
-</notextile>
+{% codeblock as perl %}
+my $current_user = $arv->{'users'}->{'current'}->execute;
+{% endcodeblock %}
diff --git a/doc/sdk/python/cookbook.html.textile.liquid b/doc/sdk/python/cookbook.html.textile.liquid
index fa059f7..a046654 100644
--- a/doc/sdk/python/cookbook.html.textile.liquid
+++ b/doc/sdk/python/cookbook.html.textile.liquid
@@ -12,22 +12,25 @@ SPDX-License-Identifier: CC-BY-SA-3.0
h2. Cancel a container request
-<pre><code>import arvados
+{% codeblock as python %}
+import arvados
arvados.api().container_requests().update(uuid=container_request_uuid, body={"priority": 0}).execute()
-</code></pre>
+{% endcodeblock %}
h2. Cancel all container requests
-<pre><code>import arvados
+{% codeblock as python %}
+import arvados
api = arvados.api()
result = api.container_requests().list(filters=[["state", "=", "Committed"], ["priority", ">", "0"]]).execute()["items"]
for container_request in result:
api.container_requests().update(uuid=container_request["uuid"], body={"priority": 0}).execute()
-</code></pre>
+{% endcodeblock %}
h2. List completed container requests
-<pre><code>import arvados
+{% codeblock as python %}
+import arvados
api = arvados.api()
result = api.container_requests().list(filters=[["name", "like", name], ["state", "=", "Final"]]).execute()["items"]
container_uuids = [cr["container_uuid"] for cr in result]
@@ -37,32 +40,37 @@ container_dict = {c["uuid"]: c for c in containers}
for container_request in result:
container = container_dict[container_request["container_uuid"]]
print("%s, %s, %s" % (container_request["uuid"], container_request["name"], "Success" if container["exit_code"] == 0 else "Failed"))
-</code></pre>
+{% endcodeblock %}
h2. Get input of a CWL workflow
-<pre><code>import arvados
+{% codeblock as python %}
+import arvados
api = arvados.api()
+container_request_uuid="qr1hi-xvhdp-zzzzzzzzzzzzzzz"
container_request = arvados.api().container_requests().get(uuid=container_request_uuid).execute()
print(container_request["mounts"]["/var/lib/cwl/cwl.input.json"])
-</code></pre>
+{% endcodeblock %}
h2. Get output of a CWL workflow
-<pre><code>import arvados
+{% codeblock as python %}
+import arvados
import arvados.collection
api = arvados.api()
+container_request_uuid="qr1hi-xvhdp-zzzzzzzzzzzzzzz"
container_request = arvados.api().container_requests().get(uuid=container_request_uuid).execute()
collection = arvados.collection.CollectionReader(container_request["output_uuid"])
print(collection.open("cwl.output.json").read())
-</code></pre>
+{% endcodeblock %}
h2. List input of child requests
-<pre><code>import arvados
+{% codeblock as python %}
+import arvados
api = arvados.api()
parent_request_uuid = "qr1hi-xvhdp-zzzzzzzzzzzzzzz"
-namefilter = "bwa%"
+namefilter = "bwa%" # the "like" filter uses SQL pattern match syntax
container_request = arvados.api().container_requests().get(uuid=parent_request_uuid).execute()
parent_container_uuid = container_request["container_uuid"]
child_requests = arvados.api().container_requests().list(filters=[
@@ -73,14 +81,15 @@ for c in child_requests["items"]:
for m in c["mounts"].values():
if "portable_data_hash" in m:
print(" %s" % m["portable_data_hash"])
-</code></pre>
+{% endcodeblock %}
h2. List output of child requests
-<pre><code>import arvados
+{% codeblock as python %}
+import arvados
api = arvados.api()
-parent_request_uuid = "qr1hi-xvhdp-61y7cjymnhyp7yu"
-namefilter = "bwa%"
+parent_request_uuid = "qr1hi-xvhdp-zzzzzzzzzzzzzzz"
+namefilter = "bwa%" # the "like" filter uses SQL pattern match syntax
container_request = arvados.api().container_requests().get(uuid=parent_request_uuid).execute()
parent_container_uuid = container_request["container_uuid"]
child_requests = arvados.api().container_requests().list(filters=[
@@ -91,13 +100,14 @@ collections = arvados.api().collections().list(filters=[["uuid", "in", output_uu
uuid_to_pdh = {c["uuid"]: c["portable_data_hash"] for c in collections["items"]}
for c in child_requests["items"]:
print("%s -> %s" % (c["name"], uuid_to_pdh[c["output_uuid"]]))
-</code></pre>
+{% endcodeblock %}
h2. List failed child requests
-<pre><code>import arvados
+{% codeblock as python %}
+import arvados
api = arvados.api()
-parent_request_uuid = "qr1hi-xvhdp-3d8f1zatx1xio36"
+parent_request_uuid = "qr1hi-xvhdp-zzzzzzzzzzzzzzz"
container_request = arvados.api().container_requests().get(uuid=parent_request_uuid).execute()
parent_container_uuid = container_request["container_uuid"]
child_requests = arvados.api().container_requests().list(filters=[
@@ -108,38 +118,41 @@ cancelled_child_containers = arvados.api().containers().list(filters=[
["uuid", "in", child_containers.keys()]], limit=1000).execute()
for c in cancelled_child_containers["items"]:
print("%s (%s)" % (child_containers[c["uuid"]]["name"], child_containers[c["uuid"]]["uuid"]))
-</code></pre>
+{% endcodeblock %}
h2. Get log of a child request
-<pre><code>import arvados
+{% codeblock as python %}
+import arvados
import arvados.collection
api = arvados.api()
-container_request_uuid = "qr1hi-xvhdp-3d8f1zatx1xio36"
+container_request_uuid = "qr1hi-xvhdp-zzzzzzzzzzzzzzz"
container_request = arvados.api().container_requests().get(uuid=container_request_uuid).execute()
collection = arvados.collection.CollectionReader(container_request["log_uuid"])
for c in collection:
print(collection.open(c).read())
-</code></pre>
+{% endcodeblock %}
h2. Create a collection sharing link
-<pre><code>import arvados
+{% codeblock as python %}
+import arvados
api = arvados.api()
download="https://your.download.server"
-collection_uuid="your-4zz18-collectionuuid"
+collection_uuid="qr1hi-4zz18-zzzzzzzzzzzzzzz"
token = api.api_client_authorizations().create(body={"api_client_authorization":{"scopes": [
"GET /arvados/v1/collections/%s" % collection_uuid,
"GET /arvados/v1/collections/%s/" % collection_uuid,
"GET /arvados/v1/keep_services/accessible"]}}).execute()
print("%s/c=%s/t=%s/_/" % (download, collection_uuid, token["api_token"]))
-</code></pre>
+{% endcodeblock %}
h2. Combine two or more collections
Note, if two collections have files of the same name, the contents will be concatenated in the resulting manifest.
-<pre><code>import arvados
+{% codeblock as python %}
+import arvados
import arvados.collection
api = arvados.api()
project_uuid = "qr1hi-tpzed-zzzzzzzzzzzzzzz"
@@ -150,4 +163,4 @@ for u in collection_uuids:
combined_manifest += c["manifest_text"]
newcol = arvados.collection.Collection(combined_manifest)
newcol.save_new(name="My combined collection", owner_uuid=project_uuid)
-</code></pre>
+{% endcodeblock %}
diff --git a/doc/sdk/python/example.html.textile.liquid b/doc/sdk/python/example.html.textile.liquid
index 6f6ba99..504d078 100644
--- a/doc/sdk/python/example.html.textile.liquid
+++ b/doc/sdk/python/example.html.textile.liquid
@@ -14,43 +14,43 @@ In these examples, the site prefix is @aaaaa at .
h2. Initialize SDK
-<pre>
+{% codeblock as python %}
import arvados
api = arvados.api("v1")
-</pre>
+{% endcodeblock %}
h2. create
-<pre>
+{% codeblock as python %}
result = api.collections().create(body={"collection": {"name": "create example"}}).execute()
-</pre>
+{% endcodeblock %}
h2. delete
-<pre>
+{% codeblock as python %}
result = api.collections().delete(uuid="aaaaa-4zz18-ccccccccccccccc").execute()
-</pre>
+{% endcodeblock %}
h2. get
-<pre>
+{% codeblock as python %}
result = api.collections().get(uuid="aaaaa-4zz18-ccccccccccccccc").execute()
-</pre>
+{% endcodeblock %}
h2. list
-<pre>
+{% codeblock as python %}
result = api.collections().list(filters=[["uuid", "=", "aaaaa-bbbbb-ccccccccccccccc"]]).execute()
-</pre>
+{% endcodeblock %}
h2. update
-<pre>
+{% codeblock as python %}
result = api.collections().update(uuid="aaaaa-4zz18-ccccccccccccccc", body={"collection": {"name": "update example"}}).execute()
-</pre>
+{% endcodeblock %}
h2. Get current user
-<pre>
+{% codeblock as python %}
result = api.users().current().execute()
-</pre>
+{% endcodeblock %}
diff --git a/doc/sdk/ruby/example.html.textile.liquid b/doc/sdk/ruby/example.html.textile.liquid
index 621b664..b8c0dcb 100644
--- a/doc/sdk/ruby/example.html.textile.liquid
+++ b/doc/sdk/ruby/example.html.textile.liquid
@@ -14,10 +14,10 @@ h2. Initialize SDK
Import the module and set up an API client user agent:
-<pre>
+{% codeblock as ruby %}
require 'arvados'
arv = Arvados.new(apiVersion: 'v1')
-</pre>
+{% endcodeblock %}
The SDK retrieves the list of API methods from the server at run time. Therefore, the set of available methods is determined by the server version rather than the SDK version.
@@ -25,56 +25,57 @@ h2. create
Create an object:
-<pre>
+{% codeblock as ruby %}
new_link = arv.link.create(link: {link_class: 'test', name: 'test'})
-</pre>
+{% endcodeblock %}
h2. delete
Delete an object:
-<pre>
+{% codeblock as ruby %}
arv.link.delete(uuid: new_link[:uuid])
-</pre>
+{% endcodeblock %}
h2. get
Retrieve an object by ID:
-<pre>
+{% codeblock as ruby %}
some_user = arv.user.get(uuid: current_user_uuid)
-</pre>
+{% endcodeblock %}
h2. list
Get a list of objects:
-<pre>
+{% codeblock as ruby %}
repos = arv.repository.list
first_repo = repos[:items][0]
puts "UUID of first repo returned is #{first_repo[:uuid]}"</code>
+{% endcodeblock %}
+
UUID of first repo returned is qr1hi-s0uqq-b1bnybpx3u5temz
-</pre>
h2. update
Update an object:
-<pre>
+{% codeblock as ruby %}
updated_link = arv.link.update(uuid: new_link[:uuid],
link: {properties: {foo: 'bar'}})
-</pre>
+{% endcodeblock %}
h2. Get current user
Get the User object for the current user:
-<pre>
+{% codeblock as ruby %}
current_user = arv.user.current
-</pre>
+{% endcodeblock %}
Get the UUID of an object that was retrieved using the SDK:
-<pre>
+{% codeblock as ruby %}
current_user_uuid = current_user[:uuid]
-</pre>
+{% endcodeblock %}
diff --git a/doc/zenweb-liquid.rb b/doc/zenweb-liquid.rb
index 4a68281..baa8fe4 100644
--- a/doc/zenweb-liquid.rb
+++ b/doc/zenweb-liquid.rb
@@ -16,7 +16,7 @@ module Zenweb
def render_liquid page, content
liquid self.body, content, page, binding
end
-
+
##
# Render a page's liquid and return the intermediate result
def liquid template, content, page, binding = TOPLEVEL_BINDING
@@ -24,7 +24,7 @@ module Zenweb
unless defined? @liquid_template
@liquid_template = Liquid::Template.parse(template)
end
-
+
vars = {}
vars["content"] = content
@@ -38,7 +38,7 @@ module Zenweb
vars["page"] = page.config.h.clone
vars["page"]["url"] = page.url
-
+
@liquid_template.render(vars)
end
end
@@ -57,7 +57,7 @@ module Zenweb
raise SyntaxError.new("Error in tag 'code' - Valid syntax: include '[code_file]' as '[language]'")
end
end
-
+
def render(context)
require 'coderay'
@@ -71,6 +71,40 @@ module Zenweb
html
end
- Liquid::Template.register_tag('code', LiquidCode)
+ Liquid::Template.register_tag('code', LiquidCode)
+ end
+
+ class LiquidCodeBlock < Liquid::Block
+ Syntax = /((?:as)\s+(#{Liquid::QuotedFragment}+))?/o
+
+ def initialize(tag_name, markup, tokens)
+ Liquid::Tag.instance_method(:initialize).bind(self).call(tag_name, markup, tokens)
+
+ if markup =~ Syntax
+ @language = $2
+ @attributes = {}
+ else
+ raise SyntaxError.new("Error in tag 'code' - Valid syntax: codeblock as '[language]'")
+ end
+ end
+
+ def render(context)
+ require 'coderay'
+
+ partial = super
+ html = ''
+
+ if partial[0] == '\n'
+ partial = partial[1..-1]
+ end
+
+ context.stack do
+ html = CodeRay.scan(partial, @language).div
+ end
+
+ "<notextile>#{html}</notextile>"
+ end
+
+ Liquid::Template.register_tag('codeblock', LiquidCodeBlock)
end
end
commit ea137ac25c445c2f45a3643f23e6d2772a4b3887
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Tue Sep 12 09:47:59 2017 -0400
10349: Add code snippet for combining collections.
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz at veritasgenetics.com>
diff --git a/doc/sdk/python/cookbook.html.textile.liquid b/doc/sdk/python/cookbook.html.textile.liquid
index 98a5fe8..fa059f7 100644
--- a/doc/sdk/python/cookbook.html.textile.liquid
+++ b/doc/sdk/python/cookbook.html.textile.liquid
@@ -134,3 +134,20 @@ token = api.api_client_authorizations().create(body={"api_client_authorization":
"GET /arvados/v1/keep_services/accessible"]}}).execute()
print("%s/c=%s/t=%s/_/" % (download, collection_uuid, token["api_token"]))
</code></pre>
+
+h2. Combine two or more collections
+
+Note, if two collections have files of the same name, the contents will be concatenated in the resulting manifest.
+
+<pre><code>import arvados
+import arvados.collection
+api = arvados.api()
+project_uuid = "qr1hi-tpzed-zzzzzzzzzzzzzzz"
+collection_uuids = ["qr1hi-4zz18-aaaaaaaaaaaaaaa", "qr1hi-4zz18-bbbbbbbbbbbbbbb"]
+combined_manifest = ""
+for u in collection_uuids:
+ c = api.collections().get(uuid=u).execute()
+ combined_manifest += c["manifest_text"]
+newcol = arvados.collection.Collection(combined_manifest)
+newcol.save_new(name="My combined collection", owner_uuid=project_uuid)
+</code></pre>
commit 7a61a3b1f2f4c9b63195abb6990c12966895c254
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Mon Sep 11 11:57:54 2017 -0400
10349: Fix formatting. Add link from user guide to improve discoverability.
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz at veritasgenetics.com>
diff --git a/doc/_config.yml b/doc/_config.yml
index 75165a0..3068647 100644
--- a/doc/_config.yml
+++ b/doc/_config.yml
@@ -70,6 +70,7 @@ navbar:
- Develop a web service:
- user/topics/arv-web.html.textile.liquid
- Reference:
+ - user/reference/cookbook.html.textile.liquid
- user/topics/run-command.html.textile.liquid
- user/reference/job-pipeline-ref.html.textile.liquid
- user/examples/crunch-examples.html.textile.liquid
@@ -89,6 +90,7 @@ navbar:
- sdk/python/python.html.textile.liquid
- sdk/python/crunch-utility-libraries.html.textile.liquid
- sdk/python/events.html.textile.liquid
+ - sdk/python/cookbook.html.textile.liquid
- CLI:
- sdk/cli/install.html.textile.liquid
- sdk/cli/index.html.textile.liquid
diff --git a/doc/sdk/python/cookbook.html.textile.liquid b/doc/sdk/python/cookbook.html.textile.liquid
index df8181f..98a5fe8 100644
--- a/doc/sdk/python/cookbook.html.textile.liquid
+++ b/doc/sdk/python/cookbook.html.textile.liquid
@@ -12,25 +12,22 @@ SPDX-License-Identifier: CC-BY-SA-3.0
h2. Cancel a container request
-<code>
-import arvados
+<pre><code>import arvados
arvados.api().container_requests().update(uuid=container_request_uuid, body={"priority": 0}).execute()
-</code>
+</code></pre>
h2. Cancel all container requests
-<code>
-import arvados
+<pre><code>import arvados
api = arvados.api()
result = api.container_requests().list(filters=[["state", "=", "Committed"], ["priority", ">", "0"]]).execute()["items"]
for container_request in result:
api.container_requests().update(uuid=container_request["uuid"], body={"priority": 0}).execute()
-</code>
+</code></pre>
h2. List completed container requests
-<code>
-import arvados
+<pre><code>import arvados
api = arvados.api()
result = api.container_requests().list(filters=[["name", "like", name], ["state", "=", "Final"]]).execute()["items"]
container_uuids = [cr["container_uuid"] for cr in result]
@@ -40,32 +37,29 @@ container_dict = {c["uuid"]: c for c in containers}
for container_request in result:
container = container_dict[container_request["container_uuid"]]
print("%s, %s, %s" % (container_request["uuid"], container_request["name"], "Success" if container["exit_code"] == 0 else "Failed"))
-</code>
+</code></pre>
h2. Get input of a CWL workflow
-<code>
-import arvados
+<pre><code>import arvados
api = arvados.api()
container_request = arvados.api().container_requests().get(uuid=container_request_uuid).execute()
print(container_request["mounts"]["/var/lib/cwl/cwl.input.json"])
-</code>
+</code></pre>
h2. Get output of a CWL workflow
-<code>
-import arvados
+<pre><code>import arvados
import arvados.collection
api = arvados.api()
container_request = arvados.api().container_requests().get(uuid=container_request_uuid).execute()
collection = arvados.collection.CollectionReader(container_request["output_uuid"])
print(collection.open("cwl.output.json").read())
-</code>
+</code></pre>
h2. List input of child requests
-<code>
-import arvados
+<pre><code>import arvados
api = arvados.api()
parent_request_uuid = "qr1hi-xvhdp-zzzzzzzzzzzzzzz"
namefilter = "bwa%"
@@ -79,12 +73,11 @@ for c in child_requests["items"]:
for m in c["mounts"].values():
if "portable_data_hash" in m:
print(" %s" % m["portable_data_hash"])
-</code>
+</code></pre>
h2. List output of child requests
-<code>
-import arvados
+<pre><code>import arvados
api = arvados.api()
parent_request_uuid = "qr1hi-xvhdp-61y7cjymnhyp7yu"
namefilter = "bwa%"
@@ -98,12 +91,11 @@ collections = arvados.api().collections().list(filters=[["uuid", "in", output_uu
uuid_to_pdh = {c["uuid"]: c["portable_data_hash"] for c in collections["items"]}
for c in child_requests["items"]:
print("%s -> %s" % (c["name"], uuid_to_pdh[c["output_uuid"]]))
-</code>
+</code></pre>
h2. List failed child requests
-<code>
-import arvados
+<pre><code>import arvados
api = arvados.api()
parent_request_uuid = "qr1hi-xvhdp-3d8f1zatx1xio36"
container_request = arvados.api().container_requests().get(uuid=parent_request_uuid).execute()
@@ -116,12 +108,11 @@ cancelled_child_containers = arvados.api().containers().list(filters=[
["uuid", "in", child_containers.keys()]], limit=1000).execute()
for c in cancelled_child_containers["items"]:
print("%s (%s)" % (child_containers[c["uuid"]]["name"], child_containers[c["uuid"]]["uuid"]))
-</code>
+</code></pre>
h2. Get log of a child request
-<code>
-import arvados
+<pre><code>import arvados
import arvados.collection
api = arvados.api()
container_request_uuid = "qr1hi-xvhdp-3d8f1zatx1xio36"
@@ -129,12 +120,11 @@ container_request = arvados.api().container_requests().get(uuid=container_reques
collection = arvados.collection.CollectionReader(container_request["log_uuid"])
for c in collection:
print(collection.open(c).read())
-</code>
+</code></pre>
h2. Create a collection sharing link
-<code>
-import arvados
+<pre><code>import arvados
api = arvados.api()
download="https://your.download.server"
collection_uuid="your-4zz18-collectionuuid"
@@ -143,4 +133,4 @@ token = api.api_client_authorizations().create(body={"api_client_authorization":
"GET /arvados/v1/collections/%s/" % collection_uuid,
"GET /arvados/v1/keep_services/accessible"]}}).execute()
print("%s/c=%s/t=%s/_/" % (download, collection_uuid, token["api_token"]))
-</code>
+</code></pre>
diff --git a/doc/user/reference/cookbook.html.textile.liquid b/doc/user/reference/cookbook.html.textile.liquid
new file mode 100644
index 0000000..b2411f3
--- /dev/null
+++ b/doc/user/reference/cookbook.html.textile.liquid
@@ -0,0 +1,12 @@
+---
+layout: default
+navsection: userguide
+title: "Arvados SDK Examples"
+...
+{% comment %}
+Copyright (C) The Arvados Authors. All rights reserved.
+
+SPDX-License-Identifier: CC-BY-SA-3.0
+{% endcomment %}
+
+Code snippets for perform various tasks with the API are "documented in the SDK section":{{site.baseurl}}/sdk/python/cookbook.html .
commit c4f252e766aa196d97801d99bb74720e451ca185
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Mon Sep 11 10:59:02 2017 -0400
10349: Add snippts for listing inputs/outputs of containers, failed child
requests, list logs of request.
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz at veritasgenetics.com>
diff --git a/doc/sdk/python/cookbook.html.textile.liquid b/doc/sdk/python/cookbook.html.textile.liquid
index 7ce547a..df8181f 100644
--- a/doc/sdk/python/cookbook.html.textile.liquid
+++ b/doc/sdk/python/cookbook.html.textile.liquid
@@ -62,6 +62,75 @@ collection = arvados.collection.CollectionReader(container_request["output_uuid"
print(collection.open("cwl.output.json").read())
</code>
+h2. List input of child requests
+
+<code>
+import arvados
+api = arvados.api()
+parent_request_uuid = "qr1hi-xvhdp-zzzzzzzzzzzzzzz"
+namefilter = "bwa%"
+container_request = arvados.api().container_requests().get(uuid=parent_request_uuid).execute()
+parent_container_uuid = container_request["container_uuid"]
+child_requests = arvados.api().container_requests().list(filters=[
+ ["requesting_container_uuid", "=", parent_container_uuid],
+ ["name", "like", namefilter]]).execute()
+for c in child_requests["items"]:
+ print("%s" % c["name"])
+ for m in c["mounts"].values():
+ if "portable_data_hash" in m:
+ print(" %s" % m["portable_data_hash"])
+</code>
+
+h2. List output of child requests
+
+<code>
+import arvados
+api = arvados.api()
+parent_request_uuid = "qr1hi-xvhdp-61y7cjymnhyp7yu"
+namefilter = "bwa%"
+container_request = arvados.api().container_requests().get(uuid=parent_request_uuid).execute()
+parent_container_uuid = container_request["container_uuid"]
+child_requests = arvados.api().container_requests().list(filters=[
+ ["requesting_container_uuid", "=", parent_container_uuid],
+ ["name", "like", namefilter]]).execute()
+output_uuids = [c["output_uuid"] for c in child_requests["items"]]
+collections = arvados.api().collections().list(filters=[["uuid", "in", output_uuids]]).execute()
+uuid_to_pdh = {c["uuid"]: c["portable_data_hash"] for c in collections["items"]}
+for c in child_requests["items"]:
+ print("%s -> %s" % (c["name"], uuid_to_pdh[c["output_uuid"]]))
+</code>
+
+h2. List failed child requests
+
+<code>
+import arvados
+api = arvados.api()
+parent_request_uuid = "qr1hi-xvhdp-3d8f1zatx1xio36"
+container_request = arvados.api().container_requests().get(uuid=parent_request_uuid).execute()
+parent_container_uuid = container_request["container_uuid"]
+child_requests = arvados.api().container_requests().list(filters=[
+ ["requesting_container_uuid", "=", parent_container_uuid]], limit=1000).execute()
+child_containers = {c["container_uuid"]: c for c in child_requests["items"]}
+cancelled_child_containers = arvados.api().containers().list(filters=[
+ ["exit_code", "!=", "0"],
+ ["uuid", "in", child_containers.keys()]], limit=1000).execute()
+for c in cancelled_child_containers["items"]:
+ print("%s (%s)" % (child_containers[c["uuid"]]["name"], child_containers[c["uuid"]]["uuid"]))
+</code>
+
+h2. Get log of a child request
+
+<code>
+import arvados
+import arvados.collection
+api = arvados.api()
+container_request_uuid = "qr1hi-xvhdp-3d8f1zatx1xio36"
+container_request = arvados.api().container_requests().get(uuid=container_request_uuid).execute()
+collection = arvados.collection.CollectionReader(container_request["log_uuid"])
+for c in collection:
+ print(collection.open(c).read())
+</code>
+
h2. Create a collection sharing link
<code>
@@ -75,5 +144,3 @@ token = api.api_client_authorizations().create(body={"api_client_authorization":
"GET /arvados/v1/keep_services/accessible"]}}).execute()
print("%s/c=%s/t=%s/_/" % (download, collection_uuid, token["api_token"]))
</code>
-
-h2. Run a CWL workflow from a workflow record
commit 38e6bfb62552b6bedebe4fdf505f89ecdb5e4287
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Wed Aug 30 17:33:13 2017 -0400
10349: Add "Create a collection sharing link"
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz at veritasgenetics.com>
diff --git a/doc/sdk/python/cookbook.html.textile.liquid b/doc/sdk/python/cookbook.html.textile.liquid
index 2adb986..7ce547a 100644
--- a/doc/sdk/python/cookbook.html.textile.liquid
+++ b/doc/sdk/python/cookbook.html.textile.liquid
@@ -62,4 +62,18 @@ collection = arvados.collection.CollectionReader(container_request["output_uuid"
print(collection.open("cwl.output.json").read())
</code>
+h2. Create a collection sharing link
+
+<code>
+import arvados
+api = arvados.api()
+download="https://your.download.server"
+collection_uuid="your-4zz18-collectionuuid"
+token = api.api_client_authorizations().create(body={"api_client_authorization":{"scopes": [
+ "GET /arvados/v1/collections/%s" % collection_uuid,
+ "GET /arvados/v1/collections/%s/" % collection_uuid,
+ "GET /arvados/v1/keep_services/accessible"]}}).execute()
+print("%s/c=%s/t=%s/_/" % (download, collection_uuid, token["api_token"]))
+</code>
+
h2. Run a CWL workflow from a workflow record
commit 7f108bc7e00604fd0e346b044c05579bfa380e9a
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Mon Aug 14 09:33:00 2017 -0400
10349: Working on Python code snippits for manipulating container requests.
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz at veritasgenetics.com>
diff --git a/doc/sdk/python/cookbook.html.textile.liquid b/doc/sdk/python/cookbook.html.textile.liquid
new file mode 100644
index 0000000..2adb986
--- /dev/null
+++ b/doc/sdk/python/cookbook.html.textile.liquid
@@ -0,0 +1,65 @@
+---
+layout: default
+navsection: sdk
+navmenu: Python
+title: Code cookbook
+...
+{% comment %}
+Copyright (C) The Arvados Authors. All rights reserved.
+
+SPDX-License-Identifier: CC-BY-SA-3.0
+{% endcomment %}
+
+h2. Cancel a container request
+
+<code>
+import arvados
+arvados.api().container_requests().update(uuid=container_request_uuid, body={"priority": 0}).execute()
+</code>
+
+h2. Cancel all container requests
+
+<code>
+import arvados
+api = arvados.api()
+result = api.container_requests().list(filters=[["state", "=", "Committed"], ["priority", ">", "0"]]).execute()["items"]
+for container_request in result:
+ api.container_requests().update(uuid=container_request["uuid"], body={"priority": 0}).execute()
+</code>
+
+h2. List completed container requests
+
+<code>
+import arvados
+api = arvados.api()
+result = api.container_requests().list(filters=[["name", "like", name], ["state", "=", "Final"]]).execute()["items"]
+container_uuids = [cr["container_uuid"] for cr in result]
+containers = api.containers().list(filters=[["uuid", "in", container_uuids]]).execute()["items"]
+container_dict = {c["uuid"]: c for c in containers}
+
+for container_request in result:
+ container = container_dict[container_request["container_uuid"]]
+ print("%s, %s, %s" % (container_request["uuid"], container_request["name"], "Success" if container["exit_code"] == 0 else "Failed"))
+</code>
+
+h2. Get input of a CWL workflow
+
+<code>
+import arvados
+api = arvados.api()
+container_request = arvados.api().container_requests().get(uuid=container_request_uuid).execute()
+print(container_request["mounts"]["/var/lib/cwl/cwl.input.json"])
+</code>
+
+h2. Get output of a CWL workflow
+
+<code>
+import arvados
+import arvados.collection
+api = arvados.api()
+container_request = arvados.api().container_requests().get(uuid=container_request_uuid).execute()
+collection = arvados.collection.CollectionReader(container_request["output_uuid"])
+print(collection.open("cwl.output.json").read())
+</code>
+
+h2. Run a CWL workflow from a workflow record
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list