projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make sure to bump the dependency on the arvados gems to the 1.2 series.
[arvados.git]
/
services
/
keepstore
/
handlers.go
diff --git
a/services/keepstore/handlers.go
b/services/keepstore/handlers.go
index daf4fc69ddff2702f0da43fd0af4d4927374bb2c..c31ab9c2e38fde497f451e95c2a99437735e4455 100644
(file)
--- a/
services/keepstore/handlers.go
+++ b/
services/keepstore/handlers.go
@@
-31,7
+31,6
@@
import (
"git.curoverse.com/arvados.git/sdk/go/health"
"git.curoverse.com/arvados.git/sdk/go/httpserver"
"git.curoverse.com/arvados.git/sdk/go/health"
"git.curoverse.com/arvados.git/sdk/go/httpserver"
- log "github.com/Sirupsen/logrus"
)
type router struct {
)
type router struct {
@@
-41,54
+40,57
@@
type router struct {
// MakeRESTRouter returns a new router that forwards all Keep requests
// to the appropriate handlers.
// MakeRESTRouter returns a new router that forwards all Keep requests
// to the appropriate handlers.
-func MakeRESTRouter() *router {
- rest := mux.NewRouter()
- rtr := &router{Router: rest}
+func MakeRESTRouter() http.Handler {
+ rtr := &router{Router: mux.NewRouter()}
- r
est
.HandleFunc(
+ r
tr
.HandleFunc(
`/{hash:[0-9a-f]{32}}`, GetBlockHandler).Methods("GET", "HEAD")
`/{hash:[0-9a-f]{32}}`, GetBlockHandler).Methods("GET", "HEAD")
- r
est
.HandleFunc(
+ r
tr
.HandleFunc(
`/{hash:[0-9a-f]{32}}+{hints}`,
GetBlockHandler).Methods("GET", "HEAD")
`/{hash:[0-9a-f]{32}}+{hints}`,
GetBlockHandler).Methods("GET", "HEAD")
- r
est
.HandleFunc(`/{hash:[0-9a-f]{32}}`, PutBlockHandler).Methods("PUT")
- r
est
.HandleFunc(`/{hash:[0-9a-f]{32}}`, DeleteHandler).Methods("DELETE")
+ r
tr
.HandleFunc(`/{hash:[0-9a-f]{32}}`, PutBlockHandler).Methods("PUT")
+ r
tr
.HandleFunc(`/{hash:[0-9a-f]{32}}`, DeleteHandler).Methods("DELETE")
// List all blocks stored here. Privileged client only.
// List all blocks stored here. Privileged client only.
- r
est
.HandleFunc(`/index`, rtr.IndexHandler).Methods("GET", "HEAD")
+ r
tr
.HandleFunc(`/index`, rtr.IndexHandler).Methods("GET", "HEAD")
// List blocks stored here whose hash has the given prefix.
// Privileged client only.
// List blocks stored here whose hash has the given prefix.
// Privileged client only.
- r
est
.HandleFunc(`/index/{prefix:[0-9a-f]{0,32}}`, rtr.IndexHandler).Methods("GET", "HEAD")
+ r
tr
.HandleFunc(`/index/{prefix:[0-9a-f]{0,32}}`, rtr.IndexHandler).Methods("GET", "HEAD")
// Internals/debugging info (runtime.MemStats)
// Internals/debugging info (runtime.MemStats)
- r
est
.HandleFunc(`/debug.json`, rtr.DebugHandler).Methods("GET", "HEAD")
+ r
tr
.HandleFunc(`/debug.json`, rtr.DebugHandler).Methods("GET", "HEAD")
// List volumes: path, device number, bytes used/avail.
// List volumes: path, device number, bytes used/avail.
- r
est
.HandleFunc(`/status.json`, rtr.StatusHandler).Methods("GET", "HEAD")
+ r
tr
.HandleFunc(`/status.json`, rtr.StatusHandler).Methods("GET", "HEAD")
// List mounts: UUID, readonly, tier, device ID, ...
// List mounts: UUID, readonly, tier, device ID, ...
- r
est
.HandleFunc(`/mounts`, rtr.MountsHandler).Methods("GET")
- r
est
.HandleFunc(`/mounts/{uuid}/blocks`, rtr.IndexHandler).Methods("GET")
- r
est
.HandleFunc(`/mounts/{uuid}/blocks/`, rtr.IndexHandler).Methods("GET")
+ r
tr
.HandleFunc(`/mounts`, rtr.MountsHandler).Methods("GET")
+ r
tr
.HandleFunc(`/mounts/{uuid}/blocks`, rtr.IndexHandler).Methods("GET")
+ r
tr
.HandleFunc(`/mounts/{uuid}/blocks/`, rtr.IndexHandler).Methods("GET")
// Replace the current pull queue.
// Replace the current pull queue.
- r
est
.HandleFunc(`/pull`, PullHandler).Methods("PUT")
+ r
tr
.HandleFunc(`/pull`, PullHandler).Methods("PUT")
// Replace the current trash queue.
// Replace the current trash queue.
- r
est
.HandleFunc(`/trash`, TrashHandler).Methods("PUT")
+ r
tr
.HandleFunc(`/trash`, TrashHandler).Methods("PUT")
// Untrash moves blocks from trash back into store
// Untrash moves blocks from trash back into store
- r
est
.HandleFunc(`/untrash/{hash:[0-9a-f]{32}}`, UntrashHandler).Methods("PUT")
+ r
tr
.HandleFunc(`/untrash/{hash:[0-9a-f]{32}}`, UntrashHandler).Methods("PUT")
- r
est
.Handle("/_health/{check}", &health.Handler{
+ r
tr
.Handle("/_health/{check}", &health.Handler{
Token: theConfig.ManagementToken,
Prefix: "/_health/",
}).Methods("GET")
// Any request which does not match any of these routes gets
// 400 Bad Request.
Token: theConfig.ManagementToken,
Prefix: "/_health/",
}).Methods("GET")
// Any request which does not match any of these routes gets
// 400 Bad Request.
- r
est
.NotFoundHandler = http.HandlerFunc(BadRequestHandler)
+ r
tr
.NotFoundHandler = http.HandlerFunc(BadRequestHandler)
- return rtr
+ rtr.limiter = httpserver.NewRequestLimiter(theConfig.MaxRequests, rtr)
+
+ stack := httpserver.Instrument(nil, nil,
+ httpserver.AddRequestIDs(httpserver.LogRequests(nil, rtr.limiter)))
+ return stack.ServeAPI(stack)
}
// BadRequestHandler is a HandleFunc to address bad requests.
}
// BadRequestHandler is a HandleFunc to address bad requests.
@@
-506,7
+508,7
@@
type PullRequest struct {
Servers []string `json:"servers"`
// Destination mount, or "" for "anywhere"
Servers []string `json:"servers"`
// Destination mount, or "" for "anywhere"
- MountUUID string
+ MountUUID string
`json:"mount_uuid"`
}
// PullHandler processes "PUT /pull" requests for the data manager.
}
// PullHandler processes "PUT /pull" requests for the data manager.
@@
-539,13
+541,13
@@
func PullHandler(resp http.ResponseWriter, req *http.Request) {
pullq.ReplaceQueue(plist)
}
pullq.ReplaceQueue(plist)
}
-// TrashRequest consists of a block locator and it
'
s Mtime
+// TrashRequest consists of a block locator and its Mtime
type TrashRequest struct {
Locator string `json:"locator"`
BlockMtime int64 `json:"block_mtime"`
// Target mount, or "" for "everywhere"
type TrashRequest struct {
Locator string `json:"locator"`
BlockMtime int64 `json:"block_mtime"`
// Target mount, or "" for "everywhere"
- MountUUID string
+ MountUUID string
`json:"mount_uuid"`
}
// TrashHandler processes /trash requests.
}
// TrashHandler processes /trash requests.