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

Unified Diff: appengine/cmd/milo/buildbucket/html.go

Issue 2134673003: milo: buildbucket builer view (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/luci-go@master
Patch Set: rebased and regenerated expectations Created 4 years, 5 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: appengine/cmd/milo/buildbucket/html.go
diff --git a/appengine/cmd/milo/buildbucket/html.go b/appengine/cmd/milo/buildbucket/html.go
new file mode 100644
index 0000000000000000000000000000000000000000..836721482a959fa39e94c85ed524e0c0719ee025
--- /dev/null
+++ b/appengine/cmd/milo/buildbucket/html.go
@@ -0,0 +1,81 @@
+// Copyright 2016 The LUCI Authors. All rights reserved.
+// Use of this source code is governed under the Apache License, Version 2.0
+// that can be found in the LICENSE file.
+
+package buildbucket
+
+import (
+ "fmt"
+ "net/http"
+ "strconv"
+
+ "github.com/julienschmidt/httprouter"
+ "golang.org/x/net/context"
+
+ "github.com/luci/luci-go/appengine/cmd/milo/miloerror"
+ "github.com/luci/luci-go/appengine/cmd/milo/settings"
+ "github.com/luci/luci-go/server/templates"
+)
+
+// TODO(nodir): move this value to luci-config.
+const defaultServer = "cr-buildbucket.appspot.com"
+
+// Builder displays builder view by fetching builds from buildbucket.
+type Builder struct{}
+
+// GetTemplateName for Builder returns the template name for builder pages.
+func (b Builder) GetTemplateName(t settings.Theme) string {
+ return "builder.html"
+}
+
+// Render renders builder view page.
+func (b Builder) Render(c context.Context, r *http.Request, p httprouter.Params) (*templates.Args, error) {
+ // Parse URL parameters.
+ server := r.FormValue("server")
+ if server == "" {
+ server = defaultServer
+ }
+
+ bucket := p.ByName("bucket")
+ if bucket == "" {
+ return nil, &miloerror.Error{
+ Message: "No bucket",
+ Code: http.StatusBadRequest,
+ }
+ }
+
+ builder := p.ByName("builder")
+ if builder == "" {
+ return nil, &miloerror.Error{
+ Message: "No builder",
+ Code: http.StatusBadRequest,
+ }
+ }
+
+ // numbuilds is a name of buildbot's query string parameter for specifying
+ // maximum number of builds to show.
+ // We are retaining the parameter name for user convenience.
+ numBuildsStr := r.FormValue("numbuilds")
+ numBuilds := -1
+ if numBuildsStr != "" {
+ var err error
+ numBuilds, err = strconv.Atoi(numBuildsStr)
+ if err != nil {
+ return nil, &miloerror.Error{
+ Message: fmt.Sprintf("numbuilds parameter value %q is not a number: %s", numBuildsStr, err),
+ Code: http.StatusBadRequest,
+ }
+ }
+ }
+
+ result, err := builderImpl(c, server, bucket, builder, numBuilds)
+ if err != nil {
+ return nil, err
+ }
+
+ // Render into the template
+ args := &templates.Args{
+ "Builder": result,
+ }
+ return args, nil
+}

Powered by Google App Engine
This is Rietveld 408576698