CollectionUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Collection, error)
CollectionGet(ctx context.Context, options arvados.GetOptions) (arvados.Collection, error)
CollectionList(ctx context.Context, options arvados.ListOptions) (arvados.CollectionList, error)
+ CollectionProvenance(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error)
+ CollectionUsedBy(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error)
CollectionDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Collection, error)
ContainerCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Container, error)
ContainerUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Container, error)
return conn.local.CollectionList(ctx, options)
}
+func (conn *Conn) CollectionProvenance(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error) {
+ return conn.local.CollectionProvenance(ctx, options)
+}
+
+func (conn *Conn) CollectionUsedBy(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error) {
+ return conn.local.CollectionUsedBy(ctx, options)
+}
+
func (conn *Conn) CollectionDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Collection, error) {
return conn.chooseBackend(options.UUID).CollectionDelete(ctx, options)
}
}
func (rtr *router) sendResponse(w http.ResponseWriter, resp interface{}, opts responseOptions) {
- respKind := kind(resp)
var tmp map[string]interface{}
+
err := rtr.transcode(resp, &tmp)
if err != nil {
rtr.sendError(w, err)
return
}
- tmp["kind"] = respKind
+ respKind := kind(resp)
+ if respKind != "" {
+ tmp["kind"] = respKind
+ }
+
if items, ok := tmp["items"].([]interface{}); ok {
for i, item := range items {
// Fill in "kind" by inspecting UUID
// unsure whether this happens
} else if t, ok := infixMap[uuid[6:11]]; !ok {
// infix not listed in infixMap
- } else {
- item["kind"] = kind(t)
+ } else if k := kind(t); k != "" {
+ item["kind"] = k
}
items[i] = applySelectParam(opts.Select, item)
}
var mungeKind = regexp.MustCompile(`\..`)
func kind(resp interface{}) string {
- return mungeKind.ReplaceAllStringFunc(fmt.Sprintf("%T", resp), func(s string) string {
+ t := fmt.Sprintf("%T", resp)
+ if !strings.HasPrefix(t, "arvados.") {
+ return ""
+ }
+ return mungeKind.ReplaceAllStringFunc(t, func(s string) string {
// "arvados.CollectionList" => "arvados#collectionList"
return "#" + strings.ToLower(s[1:])
})
return rtr.fed.CollectionList(ctx, *opts.(*arvados.ListOptions))
},
},
+ {
+ arvados.EndpointCollectionProvenance,
+ func() interface{} { return &arvados.GetOptions{} },
+ func(ctx context.Context, opts interface{}) (interface{}, error) {
+ return rtr.fed.CollectionProvenance(ctx, *opts.(*arvados.GetOptions))
+ },
+ },
+ {
+ arvados.EndpointCollectionUsedBy,
+ func() interface{} { return &arvados.GetOptions{} },
+ func(ctx context.Context, opts interface{}) (interface{}, error) {
+ return rtr.fed.CollectionUsedBy(ctx, *opts.(*arvados.GetOptions))
+ },
+ },
{
arvados.EndpointCollectionDelete,
func() interface{} { return &arvados.DeleteOptions{} },
return resp, err
}
+func (conn *Conn) CollectionProvenance(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error) {
+ ep := arvados.EndpointCollectionProvenance
+ var resp map[string]interface{}
+ err := conn.requestAndDecode(ctx, &resp, ep, nil, options)
+ return resp, err
+}
+
+func (conn *Conn) CollectionUsedBy(ctx context.Context, options arvados.GetOptions) (map[string]interface{}, error) {
+ ep := arvados.EndpointCollectionUsedBy
+ var resp map[string]interface{}
+ err := conn.requestAndDecode(ctx, &resp, ep, nil, options)
+ return resp, err
+}
+
func (conn *Conn) CollectionDelete(ctx context.Context, options arvados.DeleteOptions) (arvados.Collection, error) {
ep := arvados.EndpointCollectionDelete
var resp arvados.Collection
EndpointCollectionUpdate = APIEndpoint{"PATCH", "arvados/v1/collections/:uuid", "collection"}
EndpointCollectionGet = APIEndpoint{"GET", "arvados/v1/collections/:uuid", ""}
EndpointCollectionList = APIEndpoint{"GET", "arvados/v1/collections", ""}
+ EndpointCollectionProvenance = APIEndpoint{"GET", "arvados/v1/collections/:uuid/provenance", ""}
+ EndpointCollectionUsedBy = APIEndpoint{"GET", "arvados/v1/collections/:uuid/used_by", ""}
EndpointCollectionDelete = APIEndpoint{"DELETE", "arvados/v1/collections/:uuid", ""}
EndpointSpecimenCreate = APIEndpoint{"POST", "arvados/v1/specimens", "specimen"}
EndpointSpecimenUpdate = APIEndpoint{"PATCH", "arvados/v1/specimens/:uuid", "specimen"}