14287: Add collection trash & untrash endpoints.
authorTom Clegg <tclegg@veritasgenetics.com>
Tue, 21 May 2019 21:19:12 +0000 (17:19 -0400)
committerTom Clegg <tclegg@veritasgenetics.com>
Mon, 17 Jun 2019 13:54:39 +0000 (09:54 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg@veritasgenetics.com>

lib/controller/federation/conn.go
lib/controller/router/router.go
lib/controller/rpc/conn.go
sdk/go/arvados/api.go

index 79e38889463a2c9ce4207657e535ca4984da299e..14e6a90614e39fcf14a2b6e966d6e4a9cba240c1 100644 (file)
@@ -29,6 +29,8 @@ type Interface interface {
        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)
+       CollectionTrash(ctx context.Context, options arvados.GetOptions) (arvados.Collection, error)
+       CollectionUntrash(ctx context.Context, options arvados.GetOptions) (arvados.Collection, error)
        ContainerCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Container, error)
        ContainerUpdate(ctx context.Context, options arvados.UpdateOptions) (arvados.Container, error)
        ContainerGet(ctx context.Context, options arvados.GetOptions) (arvados.Container, error)
@@ -254,6 +256,14 @@ func (conn *Conn) CollectionDelete(ctx context.Context, options arvados.DeleteOp
        return conn.chooseBackend(options.UUID).CollectionDelete(ctx, options)
 }
 
+func (conn *Conn) CollectionTrash(ctx context.Context, options arvados.GetOptions) (arvados.Collection, error) {
+       return conn.chooseBackend(options.UUID).CollectionTrash(ctx, options)
+}
+
+func (conn *Conn) CollectionUntrash(ctx context.Context, options arvados.GetOptions) (arvados.Collection, error) {
+       return conn.chooseBackend(options.UUID).CollectionUntrash(ctx, options)
+}
+
 func (conn *Conn) ContainerCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Container, error) {
        return conn.chooseBackend(options.ClusterID).ContainerCreate(ctx, options)
 }
index 26de3d2bcbb932a3731487516351eae3bbafb7fd..408530e3ea02e30061bdc6d88a5d42bcd517fcd7 100644 (file)
@@ -88,6 +88,20 @@ func (rtr *router) addRoutes(cluster *arvados.Cluster) {
                                return rtr.fed.CollectionDelete(ctx, *opts.(*arvados.DeleteOptions))
                        },
                },
+               {
+                       arvados.EndpointCollectionTrash,
+                       func() interface{} { return &arvados.GetOptions{} },
+                       func(ctx context.Context, opts interface{}) (interface{}, error) {
+                               return rtr.fed.CollectionTrash(ctx, *opts.(*arvados.GetOptions))
+                       },
+               },
+               {
+                       arvados.EndpointCollectionUntrash,
+                       func() interface{} { return &arvados.GetOptions{} },
+                       func(ctx context.Context, opts interface{}) (interface{}, error) {
+                               return rtr.fed.CollectionUntrash(ctx, *opts.(*arvados.GetOptions))
+                       },
+               },
                {
                        arvados.EndpointContainerCreate,
                        func() interface{} { return &arvados.CreateOptions{} },
index 4533bfa1e9ac5e0a5ed6049a82b165b8b3a83e7f..a48ea77002bb8f21f8164bbdb542bb9317f1bb3a 100644 (file)
@@ -164,6 +164,20 @@ func (conn *Conn) CollectionDelete(ctx context.Context, options arvados.DeleteOp
        return resp, err
 }
 
+func (conn *Conn) CollectionTrash(ctx context.Context, options arvados.GetOptions) (arvados.Collection, error) {
+       ep := arvados.EndpointCollectionTrash
+       var resp arvados.Collection
+       err := conn.requestAndDecode(ctx, &resp, ep, nil, options)
+       return resp, err
+}
+
+func (conn *Conn) CollectionUntrash(ctx context.Context, options arvados.GetOptions) (arvados.Collection, error) {
+       ep := arvados.EndpointCollectionUntrash
+       var resp arvados.Collection
+       err := conn.requestAndDecode(ctx, &resp, ep, nil, options)
+       return resp, err
+}
+
 func (conn *Conn) ContainerCreate(ctx context.Context, options arvados.CreateOptions) (arvados.Container, error) {
        ep := arvados.EndpointContainerCreate
        var resp arvados.Container
index ebf44a82221045c163e78233af650fe43285d048..06439acb5f19b5c2def803a8c21b431f99a2aaa8 100644 (file)
@@ -19,6 +19,8 @@ var (
        EndpointCollectionProvenance          = APIEndpoint{"GET", "arvados/v1/collections/:uuid/provenance", ""}
        EndpointCollectionUsedBy              = APIEndpoint{"GET", "arvados/v1/collections/:uuid/used_by", ""}
        EndpointCollectionDelete              = APIEndpoint{"DELETE", "arvados/v1/collections/:uuid", ""}
+       EndpointCollectionTrash               = APIEndpoint{"POST", "arvados/v1/collections/:uuid/trash", ""}
+       EndpointCollectionUntrash             = APIEndpoint{"POST", "arvados/v1/collections/:uuid/untrash", ""}
        EndpointSpecimenCreate                = APIEndpoint{"POST", "arvados/v1/specimens", "specimen"}
        EndpointSpecimenUpdate                = APIEndpoint{"PATCH", "arvados/v1/specimens/:uuid", "specimen"}
        EndpointSpecimenGet                   = APIEndpoint{"GET", "arvados/v1/specimens/:uuid", ""}