13619: Document availability of federation features
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Fri, 28 Sep 2018 20:02:19 +0000 (16:02 -0400)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Fri, 28 Sep 2018 20:02:19 +0000 (16:02 -0400)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

doc/api/methods.html.textile.liquid
doc/api/methods/collections.html.textile.liquid
doc/api/methods/container_requests.html.textile.liquid
doc/api/methods/containers.html.textile.liquid
doc/api/methods/workflows.html.textile.liquid

index 937ae706d66295055ffbca485c1b587bc5c40739..6f3426523b5a780347979a5923721d38198d5cc6 100644 (file)
@@ -15,7 +15,9 @@ The following methods are available for most resources.  Some resources may limi
 
 The methods are relative to the base URI, e.g., @/arvados/v1/resource_type@.  For arguments specifying a *Location* of @path@, the value of the argument is incorporated into the path portion of the URI.  For example, a @uuid@ of @aaaaa-bbbbb-ccccccccccccccc@ in a path position yields a URI of @/arvados/v1/resource_type/aaaaa-bbbbb-ccccccccccccccc@.
 
-Arguments specifying a *Location* of @query@ are incorporated into the query portion of the URI or request body.  For example, @/arvados/v1/resource_type?resource_type={}@.
+Arguments specifying a *Location* of "query" are incorporated into the query portion of the URI or request body.  For example, @/arvados/v1/resource_type?count=none@.
+
+Certain method calls on certain object types support "federation":{{site.baseurl}}/architecture/federation.html , that is, the ability to operate on objects owned by different clusters.   API pages for specific object types list which federated operations are supported for that type (if any) in the "Methods" section.
 
 h2. create
 
@@ -27,16 +29,21 @@ The @create@ method creates a new object of the specified type.  Note that:
 
 This method corresponds to the HTTP request @POST /arvados/v1/resource_type@.  A successful create call returns a copy of the new object.
 
+To create an object on a remote cluster (federated create), provide the @cluster_id@ of the target cluster.
+
 Arguments:
 
 table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |
-|{resource_type}|object|Name is the singular form of the resource type, e.g., for the "collections" resource, this argument is "collection"|query||
+|{resource_type}|object|Name is the singular form of the resource type, e.g., for the "collections" resource, this argument is "collection"|body||
+|{cluster_id}|string|Optional, the cluster on which to create the object if not the current cluster.|query||
 
 h2. delete
 
 The @delete@ method deletes an object of the specified type.  It corresponds to the HTTP request @DELETE /arvados/v1/resource_type/uuid@.  A successful delete call returns a copy of the deleted object.
 
+The cluster id portion of the @uuid@ is used to determine which cluster owns the object, a federated delete request will be routed to that cluster.
+
 Arguments:
 
 table(table table-bordered table-condensed).
@@ -47,6 +54,8 @@ h2. get
 
 The @get@ method gets a single object with the specified @uuid@.  It corresponds to the HTTP request @GET /arvados/v1/resource_type/uuid@.
 
+The cluster id portion of the @uuid@ is used to determine which cluster owns the object, a federated get request will be routed to that cluster.
+
 Arguments:
 
 table(table table-bordered table-condensed).
@@ -112,6 +121,20 @@ table(table table-bordered table-condensed).
 
 Note that exclusion filters @!=@ and @not in@ will return records for which the property is not defined at all.  To restrict filtering to records on which the subproperty is defined, combine with an @exists@ filter.
 
+h4. Federated listing
+
+Federated listing forwards a request to multiple clusters and combines the results.  Currently only a very restricted form of the "list" method is supported.
+
+To query multiple clusters, the list method must:
+
+* Have filters only matching @[["uuid", "in", [...]]@ or @["uuid", "=", "..."]@
+* Must specify @count=none@
+* If @select@ is specified, it must include @uuid@
+* Must not specify @limit@, @offset@ or @order@
+* Must not request more items than the maximum response size
+
+This form may be used to request a specific list of objects by uuid which are owned by multiple clusters.
+
 h3. Results of list method
 
 A successful call to list will return the following object.
@@ -128,6 +151,8 @@ h2. update
 
 The @update@ method updates fields on the object with the specified @uuid@.  It corresponds to the HTTP request @PUT /arvados/v1/resource_type/uuid@.  Note that only the listed attributes (and "standard metadata":resources.html) are updated, unset attributes will retain their previous values, and the attributes of a given resource type are fixed (you cannot introduce new toplevel attributes).  Also note that updates replace the value of the attribute, so if an attribute has an object value, the entire object is replaced.  A successful update call returns the updated copy of the object.
 
+The cluster id portion of the @uuid@ is used to determine which cluster owns the object, a federated update request will be routed to that cluster.
+
 table(table table-bordered table-condensed).
 |_. Argument |_. Type |_. Description |_. Location |
 {background:#ccffcc}.|uuid|string|The UUID of the resource in question.|path||
index f761c665e57ad811085098c3145ec34ff0fd642b..bcd57415df1506996283bb023ba0a4fa710417cb 100644 (file)
@@ -53,6 +53,8 @@ See "Common resource methods":{{site.baseurl}}/api/methods.html for more informa
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
+Supports federated @get@ only, which may be called with either a uuid or a portable data hash.  When requesting a portable data hash which is not available on the home cluster, the query is forwarded to all the clusters listed in @RemoteClusters@ and returns the first successful result.
+
 h3. create
 
 Create a new Collection.
@@ -75,7 +77,7 @@ table(table table-bordered table-condensed).
 
 h3. get
 
-Gets a Collection's metadata by UUID.
+Gets a Collection's metadata by UUID or portable data hash.  When making a request by portable data hash, the returned record will only have the @portable_data_hash@ and @manifest_text@.
 
 Arguments:
 
index 0e2e8ce7c6135490e61585594471080ce1ae1719..e1e006a86a1e63e669cb204975e3c64ab8849f3f 100644 (file)
@@ -100,6 +100,8 @@ See "Common resource methods":{{site.baseurl}}/api/methods.html for more informa
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
+Supports federated @create@, @delete@, @get@, @list@, and @update@.
+
 h2(#create). create
 
 Create a new container request.
index 9ebd91d2b185821701dcb2df1e1011b79dac5cd9..cf92fef42f89fa27f8867e9fc16be1413f767c6e 100644 (file)
@@ -92,6 +92,8 @@ See "Common resource methods":{{site.baseurl}}/api/methods.html for more informa
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
+Supports federated @create@, @delete@, @get@, @list@, and @update@.
+
 h2(#create). create
 
 Create a new Container.
index 5d1020485eb4f9a55ddbb2ef8a0ba2ec559cdaaa..77ed6f359728760dd95ea91f472cd1b0af78ef7a 100644 (file)
@@ -34,6 +34,8 @@ See "Common resource methods":{{site.baseurl}}/api/methods.html for more informa
 
 Required arguments are displayed in %{background:#ccffcc}green%.
 
+Supports federated @create@, @delete@, @get@, @list@, and @update@.
+
 h3. create
 
 Create a new Workflow.