Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Unified Diff: go/src/infra/appengine/test-results/frontend/handlers.go

Issue 2250043002: test-results: package frontend: Add delete keys task queue (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@xx_5
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: go/src/infra/appengine/test-results/frontend/handlers.go
diff --git a/go/src/infra/appengine/test-results/frontend/handlers.go b/go/src/infra/appengine/test-results/frontend/handlers.go
index 1e9306b8c72990856654dc4d2ca2f36c63f209a8..0f086baea20e6343dcaefbe425db747e3a259bf8 100644
--- a/go/src/infra/appengine/test-results/frontend/handlers.go
+++ b/go/src/infra/appengine/test-results/frontend/handlers.go
@@ -1,30 +1,54 @@
package frontend
import (
+ "encoding/json"
"html/template"
"net/http"
"time"
"google.golang.org/appengine"
+ "github.com/luci/gae/service/datastore"
"github.com/luci/luci-go/appengine/gaemiddleware"
+ "github.com/luci/luci-go/common/logging"
"github.com/luci/luci-go/server/router"
"github.com/luci/luci-go/server/templates"
)
+const (
+ defaultQueueName = "default"
+ deleteKeysQueueName = "delete-keys"
+)
+
func init() {
r := router.New()
- baseMW := base()
- r.GET("/testfile", baseMW, getHandler)
- r.GET("/testfile/", baseMW, getHandler)
+ baseMW := gaemiddleware.BaseProd()
+ getMW := baseMW.Extend(templatesMiddleware())
+
+ gaemiddleware.InstallHandlers(r, baseMW)
+
+ r.GET("/testfile", getMW, getHandler)
+ r.GET("/testfile/", getMW, getHandler)
+ r.POST("/testfile/upload", baseMW.Extend(withParsedUploadForm), uploadHandler)
+
+ r.GET("/builders", baseMW, getBuildersHandler)
+ r.GET("/updatebuilders", baseMW, updateBuildersHandler)
+ r.GET("/builderstate", baseMW, getBuilderStateHandler)
+ r.GET("/updatebuilderstate", baseMW, updateBuilderStateHandler)
+
+ r.POST(
+ "/internal/delete-keys",
+ baseMW.Extend(gaemiddleware.RequireTaskQueue(deleteKeysQueueName)),
+ deleteKeysHandler,
+ )
http.DefaultServeMux.Handle("/", r)
}
-// base returns the root middleware chain.
-func base() router.MiddlewareChain {
- templateBundle := &templates.Bundle{
+// templatesMiddleware returns the templates middleware.
+func templatesMiddleware() router.Middleware {
+ return templates.WithTemplates(&templates.Bundle{
Loader: templates.FileSystemLoader("templates"),
DebugMode: appengine.IsDevAppServer(),
FuncMap: template.FuncMap{
@@ -35,9 +59,38 @@ func base() router.MiddlewareChain {
return t.Unix() * 1000
},
},
+ })
+}
+
+// deleteKeysHandler is task queue handler for deleting keys.
+func deleteKeysHandler(ctx *router.Context) {
+ c, w, r := ctx.Context, ctx.Writer, ctx.Request
+
+ keys := struct {
+ Keys []string `json:"keys"`
+ }{}
+ if err := json.NewDecoder(r.Body).Decode(&keys); err != nil {
+ logging.WithError(err).Errorf(c, "deleteKeysHandler")
+ w.WriteHeader(http.StatusInternalServerError)
Vadim Sh. 2016/08/16 18:56:13 better to return 200 here otherwise Task Queue ser
nishanths 2016/08/16 20:35:13 Done, thanks!
+ return
}
- return gaemiddleware.BaseProd().Extend(
- templates.WithTemplates(templateBundle),
- )
+ dkeys := make([]*datastore.Key, 0, len(keys.Keys))
+ for _, k := range keys.Keys {
+ dk, err := datastore.NewKeyEncoded(k)
+ if err != nil {
+ logging.WithError(err).Errorf(c, "deleteKeysHandler")
+ w.WriteHeader(http.StatusInternalServerError)
+ return
+ }
+ dkeys = append(dkeys, dk)
+ }
+
+ if err := datastore.Get(c).Delete(dkeys); err != nil {
+ logging.WithError(err).Errorf(c, "deleteKeysHandler")
+ w.WriteHeader(http.StatusInternalServerError)
+ return
+ }
+
+ w.WriteHeader(http.StatusOK)
}

Powered by Google App Engine
This is Rietveld 408576698