7 class BuilderListHandler(base
.BaseHandler
):
9 self
.render("builders/list.html", builders
=self
.backend
.builders
)
12 class BuilderDetailHandler(base
.BaseHandler
):
13 def get(self
, hostname
):
14 builder
= self
.backend
.builders
.get_by_name(hostname
)
16 # Get running and pending jobs.
17 jobs
= self
.backend
.jobs
.get_active(builder
=builder
)
18 jobs
+= builder
.jobqueue
21 log
= builder
.get_history(limit
=5)
23 self
.render("builders/detail.html", builder
=builder
, jobs
=jobs
, log
=log
)
25 @tornado.web
.authenticated
26 def post(self
, hostname
):
27 if not self
.current_user
.has_perm("maintain_mirrors"):
28 raise tornado
.web
.HTTPError(403, "User is not allowed to do this.")
30 builder
= self
.backend
.builders
.get_by_name(hostname
)
32 with self
.db
.transaction():
33 builder
.description
= self
.get_argument("description", None)
35 self
.redirect("/builder/%s" % builder
.hostname
)
38 class BuilderNewHandler(base
.BaseHandler
):
40 self
.render("builders/new.html")
42 @tornado.web
.authenticated
44 if not self
.current_user
.has_perm("maintain_builders"):
45 raise tornado
.web
.HTTPError(403)
47 name
= self
.get_argument("name")
49 # Create a new builder.
50 builder
, passphrase
= \
51 self
.backend
.builders
.create(name
, user
=self
.current_user
)
53 self
.render("builders/pass.html", action
="new", builder
=builder
,
54 passphrase
=passphrase
)
57 class BuilderEditHandler(base
.BaseHandler
):
58 @tornado.web
.authenticated
59 def get(self
, hostname
):
60 builder
= self
.backend
.builders
.get_by_name(hostname
)
62 raise tornado
.web
.HTTPError(404, "Builder not found")
64 self
.render("builders/edit.html", builder
=builder
)
66 @tornado.web
.authenticated
67 def post(self
, hostname
):
68 builder
= self
.backend
.builders
.get_by_name(hostname
)
70 raise tornado
.web
.HTTPError(404, "Builder not found: %s" % hostname
)
72 # Check for sufficient right to edit things.
73 if not self
.current_user
.has_perm("maintain_builders"):
74 raise tornado
.web
.HTTPError(403)
76 with self
.db
.transaction():
77 builder
.enabled
= self
.get_argument("enabled", False)
78 builder
.testmode
= self
.get_argument("testmode", True)
81 max_jobs
= self
.get_argument("max_jobs", builder
.max_jobs
)
83 max_jobs
= int(max_jobs
)
87 if not max_jobs
in range(1, 100):
89 builder
.max_jobs
= max_jobs
91 self
.redirect("/builder/%s" % builder
.hostname
)
94 class BuilderRenewPassphraseHandler(base
.BaseHandler
):
95 @tornado.web
.authenticated
97 builder
= self
.backend
.builders
.get_by_name(name
)
99 passphrase
= builder
.regenerate_passphrase()
101 self
.render("builders/pass.html", action
="update", builder
=builder
,
102 passphrase
=passphrase
)
105 class BuilderDeleteHandler(base
.BaseHandler
):
106 @tornado.web
.authenticated
108 builder
= self
.backend
.builders
.get_by_name(name
)
110 raise tornado
.web
.HTTPError(404, "Builder not found: %s" % name
)
112 # Check for sufficient right to delete this builder.
113 if not self
.current_user
.has_perm("maintain_builders"):
114 raise tornado
.web
.HTTPError(403)
116 confirmed
= self
.get_argument("confirmed", None)
118 with self
.db
.transaction():
119 builder
.deleted
= True
121 self
.redirect("/builders")
124 self
.render("builders/delete.html", builder
=builder
)
127 class BuilderStatusChangeHandler(base
.BaseHandler
):
130 @tornado.web
.authenticated
131 def get(self
, hostname
):
132 builder
= self
.backend
.builders
.get_by_name(hostname
)
134 raise tornado
.web
.HTTPError(404, "Builder not found: %s" % hostname
)
136 # Check for sufficient right to edit things.
137 if self
.current_user
.has_perm("maintain_builders"):
138 with self
.db
.transaction():
139 builder
.enabled
= self
.enabled
141 self
.redirect("/builder/%s" % builder
.name
)
144 class BuilderEnableHander(BuilderStatusChangeHandler
):
148 class BuilderDisableHander(BuilderStatusChangeHandler
):