]> git.ipfire.org Git - pbs.git/blame - src/web/handlers_builders.py
Drop builders_arches table
[pbs.git] / src / web / handlers_builders.py
CommitLineData
9137135a
MT
1#!/usr/bin/python
2
f6e6ff79
MT
3import tornado.web
4
2c909128 5from .. import builders
9137135a 6
2c909128 7from .handlers_base import *
9137135a
MT
8
9class BuilderListHandler(BaseHandler):
10 def get(self):
11 builders = self.pakfire.builders.get_all()
f6e6ff79 12
2ae27978 13 self.render("builders/list.html", builders=builders)
9137135a
MT
14
15
16class BuilderDetailHandler(BaseHandler):
17 def get(self, hostname):
18 builder = self.pakfire.builders.get_by_name(hostname)
19
163d9d8b
MT
20 # Get running and pending jobs.
21 jobs = self.pakfire.jobs.get_active(builder=builder)
22 jobs += self.pakfire.jobs.get_next(builder=builder)
23
24 # Get log.
25 log = builder.get_history(limit=5)
26
2ae27978 27 self.render("builders/detail.html", builder=builder, jobs=jobs, log=log)
9137135a 28
f6e6ff79
MT
29 @tornado.web.authenticated
30 def post(self, hostname):
31 if not self.current_user.has_perm("maintain_mirrors"):
32 raise tornado.web.HTTPError(403, "User is not allowed to do this.")
33
34 builder = self.pakfire.builders.get_by_name(hostname)
35
3e990438
MT
36 with self.db.transaction():
37 builder.description = self.get_argument("description", None)
f6e6ff79
MT
38
39 self.redirect("/builder/%s" % builder.hostname)
40
9137135a
MT
41
42class BuilderNewHandler(BaseHandler):
43 def get(self):
2ae27978 44 self.render("builders/new.html")
9137135a 45
f6e6ff79 46 @tornado.web.authenticated
9137135a 47 def post(self):
f6e6ff79
MT
48 if not self.current_user.has_perm("maintain_builders"):
49 raise tornado.web.HTTPError(403)
50
9137135a
MT
51 name = self.get_argument("name")
52
53 # Create a new builder.
f6e6ff79 54 builder, passphrase = \
2c909128 55 builders.Builder.create(self.pakfire, name, user=self.current_user)
9137135a 56
2ae27978 57 self.render("builders/pass.html", action="new", builder=builder,
f6e6ff79 58 passphrase=passphrase)
9137135a
MT
59
60
61class BuilderEditHandler(BaseHandler):
62 @tornado.web.authenticated
63 def get(self, hostname):
64 builder = self.pakfire.builders.get_by_name(hostname)
65 if not builder:
66 raise tornado.web.HTTPError(404, "Builder not found")
67
2ae27978 68 self.render("builders/edit.html", builder=builder)
9137135a
MT
69
70 @tornado.web.authenticated
71 def post(self, hostname):
72 builder = self.pakfire.builders.get_by_name(hostname)
73 if not builder:
f6e6ff79
MT
74 raise tornado.web.HTTPError(404, "Builder not found: %s" % hostname)
75
76 # Check for sufficient right to edit things.
77 if not self.current_user.has_perm("maintain_builders"):
78 raise tornado.web.HTTPError(403)
9137135a 79
f6e6ff79
MT
80 builder.enabled = self.get_argument("enabled", False)
81 builder.build_release = self.get_argument("build_release", False)
82 builder.build_scratch = self.get_argument("build_scratch", False)
83 builder.build_test = self.get_argument("build_test", False)
9137135a
MT
84
85 # Save max_jobs.
86 max_jobs = self.get_argument("max_jobs", builder.max_jobs)
87 try:
88 max_jobs = int(max_jobs)
89 except TypeError:
90 max_jobs = 1
91
f6e6ff79 92 if not max_jobs in range(1, 100):
9137135a
MT
93 max_jobs = 1
94 builder.max_jobs = max_jobs
95
96 self.redirect("/builder/%s" % builder.hostname)
97
98
99class BuilderRenewPassphraseHandler(BaseHandler):
f6e6ff79 100 @tornado.web.authenticated
9137135a
MT
101 def get(self, name):
102 builder = self.pakfire.builders.get_by_name(name)
103
f6e6ff79 104 passphrase = builder.regenerate_passphrase()
9137135a 105
2ae27978 106 self.render("builders/pass.html", action="update", builder=builder,
f6e6ff79 107 passphrase=passphrase)
9137135a
MT
108
109
110class BuilderDeleteHandler(BaseHandler):
f6e6ff79 111 @tornado.web.authenticated
9137135a
MT
112 def get(self, name):
113 builder = self.pakfire.builders.get_by_name(name)
f6e6ff79
MT
114 if not builder:
115 raise tornado.web.HTTPError(404, "Builder not found: %s" % name)
116
117 # Check for sufficient right to delete this builder.
118 if not self.current_user.has_perm("maintain_builders"):
119 raise tornado.web.HTTPError(403)
9137135a
MT
120
121 confirmed = self.get_argument("confirmed", None)
122 if confirmed:
f6e6ff79
MT
123 builder.set_status("deleted", user=self.current_user)
124
9137135a
MT
125 self.redirect("/builders")
126 return
127
2ae27978 128 self.render("builders/delete.html", builder=builder)
f6e6ff79
MT
129
130
131class BuilderStatusChangeHandler(BaseHandler):
132 new_status = None
133
134 @tornado.web.authenticated
135 def get(self, hostname):
136 builder = self.pakfire.builders.get_by_name(hostname)
137 if not builder:
138 raise tornado.web.HTTPError(404, "Builder not found: %s" % hostname)
139
140 # Check for sufficient right to edit things.
141 if self.current_user.has_perm("maintain_builders"):
142 builder.set_status(self.status, user=self.current_user)
143
144 self.redirect("/builder/%s" % builder.name)
145
146
147class BuilderEnableHander(BuilderStatusChangeHandler):
148 status = "enabled"
149
150
151class BuilderDisableHander(BuilderStatusChangeHandler):
152 status = "disabled"