]> git.ipfire.org Git - people/jschlag/pbs.git/blob - src/templates/builders/detail.html
Refactor builders
[people/jschlag/pbs.git] / src / templates / builders / detail.html
1 {% extends "../base.html" %}
2
3 {% block title %}{{ _("Builder") }}: {{ builder.name }}{% end block %}
4
5 {% block body %}
6 <ul class="breadcrumb">
7 <li>
8 <a href="/">{{ _("Home") }}</a>
9 <span class="divider">/</span>
10 </li>
11 <li>
12 <a href="/builders">{{ _("Builders") }}</a>
13 <span class="divider">/</span>
14 </li>
15 <li class="active">
16 <a href="/builder/{{ builder.name }}">{{ builder.name }}</a>
17 </li>
18 </ul>
19
20 <div class="btn-group pull-right">
21 <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
22 {{ _("Actions") }} <span class="caret"></span>
23 </a>
24 <ul class="dropdown-menu">
25 <li>
26 <a href="/jobs?builder={{ builder.name }}">
27 {{ _("Show jobs by this builder") }}
28 </a>
29 </li>
30 {% if current_user and current_user.has_perm("maintain_builders") %}
31 <li class="divider"></li>
32
33 {% if builder.enabled %}
34 <li>
35 <a href="/builder/{{ builder.name }}/disable">
36 {{ _("Disable builder") }}
37 </a>
38 </li>
39 {% else %}
40 <li>
41 <a href="/builder/{{ builder.name }}/enable">
42 {{ _("Enable builder") }}
43 </a>
44 </li>
45 {% end %}
46
47 <li>
48 <a href="/builder/{{ builder.name }}/edit">
49 <i class="icon-edit"></i>
50 {{ _("Edit builder") }}
51 </a>
52 </li>
53
54 {% if not builder.enabled %}
55 <li>
56 <a href="/builder/{{ builder.name }}/renew">
57 <i class="icon-refresh"></i>
58 {{ _("Renew passphrase") }}
59 </a>
60 </li>
61 {% end %}
62
63 <li>
64 <a href="/builder/{{ builder.name }}/delete">
65 <i class="icon-trash"></i>
66 {{ _("Delete builder") }}
67 </a>
68 </li>
69 {% end %}
70 </ul>
71 </div>
72
73 <div class="page-header">
74 <h2>{{ _("Builder") }}: {{ builder.name }}</h2>
75 </div>
76
77 {% if builder.overload %}
78 <div class="alert alert-block alert-warning">
79 <h4 class="alert-heading">{{ _("Warning") }}!</h4>
80 {{ _("This builder is overloaded.") }}
81 {{ _("That means it will not take any additional jobs although it has not reached its threshold of running jobs, yet.") }}
82 {{ _("New jobs will be started automatically after the load decreased.") }}
83 </div>
84 {% end %}
85
86 <div class="row">
87 <div class="span5">
88 <table class="table table-striped table-hover">
89 <tbody>
90 <tr>
91 <td>{{ _("State") }}</td>
92 <td>
93 {% if builder.enabled %}
94 {{ _("Enabled") }}
95 {% else %}
96 {{ _("Disabled") }}
97 {% end %}
98 </td>
99 </tr>
100 <tr>
101 <td>{{ _("Parallel builds") }}</td>
102 <td>{{ _("One job only.", "Up to %(num)s jobs.", builder.max_jobs) % { "num" : builder.max_jobs } }}</td>
103 </tr>
104 <tr>
105 <td>{{ _("This host builds") }}</td>
106 <td>
107 <ul>
108 {% for type in builder.build_types %}
109 <li>
110 {% if type == "release" %}
111 {{ _("Release builds") }}
112 {% elif type == "scratch" %}
113 {{ _("Scratch builds") }}
114 {% elif type == "test" %}
115 {{ _("Test builds") }}
116 {% end %}
117 </li>
118 {% end %}
119 </ul>
120 </td>
121 </tr>
122 </tbody>
123 </table>
124
125 {% if builder.description %}
126 <h2>{{ _("Remarks") }}</h2>
127 <p>
128 {% module Text(builder.description) %}
129 </p>
130 {% end %}
131 </div>
132
133 <div class="span7">
134 <table class="table table-striped table-hover">
135 <tbody>
136 <tr>
137 <td>{{ _("OS") }}</td>
138 <td>
139 {{ builder.os_name or _("N/A") }}
140 </td>
141 </tr>
142 <tr>
143 <td>{{ _("Pakfire version") }}</td>
144 <td>
145 {{ builder.pakfire_version or _("N/A") }}
146 </td>
147 </tr>
148 <tr>
149 <td>{{ _("Supported architectures") }}</td>
150 <td>
151 {{ locale.list(builder.supported_arches) }}
152 </td>
153 </tr>
154 <tr>
155 <td>{{ _("CPU model") }}</td>
156 <td>
157 {{ builder.cpu_model or _("Unknown") }}
158 </td>
159 </tr>
160 <tr>
161 <td>{{ _("CPU count") }}</td>
162 <td>{{ builder.cpu_count }}</td>
163 </tr>
164 <tr>
165 <td>{{ _("Bogomips") }}</td>
166 <td>{{ builder.cpu_bogomips or _("N/A") }}</td>
167 </tr>
168 <tr>
169 <td colspan="2">
170 {% if builder.mem_total %}
171 <h6>
172 <span class="pull-right">
173 {{ format_size(builder.mem_used) }}/{{ format_size(builder.mem_total) }}
174 </span>
175
176 {{ _("Memory") }}
177 </h6>
178
179 <div class="progress">
180 <div class="bar" style="width: {{ "%.2f%%" % builder.mem_percentage }}"></div>
181 </div>
182 {% end %}
183
184 {% if builder.swap_total %}
185 <h6>
186 <span class="pull-right">
187 {{ format_size(builder.swap_used) }}/{{ format_size(builder.swap_total) }}
188 </span>
189
190 {{ _("SWAP space") }}
191 </h6>
192
193 <div class="progress">
194 <div class="bar bar-danger" style="width: {{ "%.2f%%" % builder.swap_percentage }}"></div>
195 </div>
196 {% end %}
197
198 {% if not builder.mem_total and not builder.swap_total %}
199 <span class="muted">{{ _("No memory information available.") }}</span>
200 {% end %}
201 </td>
202 </tr>
203 <tr>
204 <td>{{ _("Load average") }}</td>
205 <td>
206 {{ builder.loadavg or _("N/A") }}
207 {% if builder.overload %}
208 <span class="label label-important">{{ _("Overload") }}</span>
209 {% end %}
210 </td>
211 </tr>
212 <tr>
213 <td>{{ _("Free disk space") }}</td>
214 <td>{{ format_size(builder.space_free or 0) }}</td>
215 </tr>
216
217 <tr>
218 <td>{{ _("Host key") }}</td>
219 <td>
220 {{ builder.host_key_id or _("N/A") }}
221 </td>
222 </tr>
223 </tbody>
224 </table>
225 </div>
226 </div>
227
228 {% if jobs %}
229 <hr>
230
231 <h3>{{ _("Active and pending jobs") }}</h3>
232 {% module JobsList(jobs) %}
233 {% end %}
234
235 {% if log %}
236 <hr>
237
238 <h3>{{ _("Log") }}</h3>
239 {% module Log(log) %}
240 {% end %}
241 {% end block %}