18215: Only respond with selected fields on create & update calls.
[arvados.git] / lib / controller / router / router.go
index 82e81d089b70625722ac99906ba5e4c74639fc56..02e06279f1168adca61999a543a9e82ad059e424 100644 (file)
@@ -65,6 +65,13 @@ func (rtr *router) addRoutes() {
                                return rtr.backend.ConfigGet(ctx)
                        },
                },
+               {
+                       arvados.EndpointVocabularyGet,
+                       func() interface{} { return &struct{}{} },
+                       func(ctx context.Context, opts interface{}) (interface{}, error) {
+                               return rtr.backend.VocabularyGet(ctx)
+                       },
+               },
                {
                        arvados.EndpointLogin,
                        func() interface{} { return &arvados.LoginOptions{} },
@@ -307,6 +314,41 @@ func (rtr *router) addRoutes() {
                                return rtr.backend.GroupUntrash(ctx, *opts.(*arvados.UntrashOptions))
                        },
                },
+               {
+                       arvados.EndpointLinkCreate,
+                       func() interface{} { return &arvados.CreateOptions{} },
+                       func(ctx context.Context, opts interface{}) (interface{}, error) {
+                               return rtr.backend.LinkCreate(ctx, *opts.(*arvados.CreateOptions))
+                       },
+               },
+               {
+                       arvados.EndpointLinkUpdate,
+                       func() interface{} { return &arvados.UpdateOptions{} },
+                       func(ctx context.Context, opts interface{}) (interface{}, error) {
+                               return rtr.backend.LinkUpdate(ctx, *opts.(*arvados.UpdateOptions))
+                       },
+               },
+               {
+                       arvados.EndpointLinkList,
+                       func() interface{} { return &arvados.ListOptions{Limit: -1} },
+                       func(ctx context.Context, opts interface{}) (interface{}, error) {
+                               return rtr.backend.LinkList(ctx, *opts.(*arvados.ListOptions))
+                       },
+               },
+               {
+                       arvados.EndpointLinkGet,
+                       func() interface{} { return &arvados.GetOptions{} },
+                       func(ctx context.Context, opts interface{}) (interface{}, error) {
+                               return rtr.backend.LinkGet(ctx, *opts.(*arvados.GetOptions))
+                       },
+               },
+               {
+                       arvados.EndpointLinkDelete,
+                       func() interface{} { return &arvados.DeleteOptions{} },
+                       func(ctx context.Context, opts interface{}) (interface{}, error) {
+                               return rtr.backend.LinkDelete(ctx, *opts.(*arvados.DeleteOptions))
+                       },
+               },
                {
                        arvados.EndpointSpecimenCreate,
                        func() interface{} { return &arvados.CreateOptions{} },
@@ -398,13 +440,6 @@ func (rtr *router) addRoutes() {
                                return rtr.backend.UserGet(ctx, *opts.(*arvados.GetOptions))
                        },
                },
-               {
-                       arvados.EndpointUserUpdateUUID,
-                       func() interface{} { return &arvados.UpdateUUIDOptions{} },
-                       func(ctx context.Context, opts interface{}) (interface{}, error) {
-                               return rtr.backend.UserUpdateUUID(ctx, *opts.(*arvados.UpdateUUIDOptions))
-                       },
-               },
                {
                        arvados.EndpointUserUpdate,
                        func() interface{} { return &arvados.UpdateOptions{} },
@@ -505,12 +540,7 @@ func (rtr *router) addRoute(endpoint arvados.APIEndpoint, defaultOpts func() int
                        }
                }
                ctx := auth.NewContext(req.Context(), creds)
-               var reqId string
-               if reqId = req.Header.Get("X-Request-Id"); reqId == "" {
-                       reqIDGen := httpserver.IDGenerator{Prefix: "req-"}
-                       reqId = reqIDGen.Next()
-               }
-               ctx = arvados.ContextWithRequestID(ctx, reqId)
+               ctx = arvados.ContextWithRequestID(ctx, req.Header.Get("X-Request-Id"))
                logger.WithFields(logrus.Fields{
                        "apiEndpoint": endpoint,
                        "apiOptsType": fmt.Sprintf("%T", opts),
@@ -522,7 +552,7 @@ func (rtr *router) addRoute(endpoint arvados.APIEndpoint, defaultOpts func() int
                        rtr.sendError(w, err)
                        return
                }
-               rtr.sendResponse(w, req, resp, respOpts, reqId)
+               rtr.sendResponse(w, req, resp, respOpts)
        })
 }