14197: Add cluster_id to discovery document for create method.
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Fri, 21 Sep 2018 19:23:18 +0000 (15:23 -0400)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Fri, 21 Sep 2018 19:23:18 +0000 (15:23 -0400)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

lib/controller/federation.go
services/api/app/controllers/application_controller.rb

index 24c692aef57eafbd06a83bfaeb4bb099728c39ad..cc22a674d5f6993bf7bf30d9ca6472e5b66c64a9 100644 (file)
@@ -89,7 +89,7 @@ func (h *genericFederatedRequestHandler) ServeHTTP(w http.ResponseWriter, req *h
                }
        }
 
-       if clusterId == "" && req.Method == "POST" {
+       if clusterId == "" && req.Method == "POST" && req.Header.Get("Content-Type") == "application/json" {
                var hasClusterId struct {
                        ClusterID string `json:"cluster_id"`
                }
@@ -104,7 +104,8 @@ func (h *genericFederatedRequestHandler) ServeHTTP(w http.ResponseWriter, req *h
 
                err := json.NewDecoder(rdr).Decode(&hasClusterId)
                if err != nil {
-                       // TODO
+                       httpserver.Error(w, err.Error(), http.StatusBadRequest)
+                       return
                }
                req.Body = ioutil.NopCloser(postBody)
 
index 05b39c1aed5f71a62b3526cc6df52e12e49022b8..8589b3c7a55f366fb5668884d71aac40139bea7f 100644 (file)
@@ -563,7 +563,13 @@ class ApplicationController < ActionController::Base
         location: "query",
         required: false,
         default: false
-      }
+      },
+      cluster_id: {
+        type: 'string',
+        description: "Create object on a remote federated cluster instead of the current one.",
+        location: "query",
+        required: false,
+      },
     }
   end