3 from buildbot
.status
.web
.base
import HtmlResource
, abbreviate_age
5 # buildslaves/$slavename
6 class OneBuildSlaveResource(HtmlResource
):
10 class BuildSlavesResource(HtmlResource
):
15 s
= self
.getStatus(req
)
17 data
+= "<h1>Build Slaves</h1>\n"
20 for bname
in s
.getBuilderNames():
21 b
= s
.getBuilder(bname
)
22 for bs
in b
.getSlaves():
23 slavename
= bs
.getName()
24 if slavename
not in used_by_builder
:
25 used_by_builder
[slavename
] = []
26 used_by_builder
[slavename
].append(bname
)
29 for name
in s
.getSlaveNames():
30 slave
= s
.getSlave(name
)
31 data
+= " <li>%s:\n" % name
33 builder_links
= ['<a href="../builders/%s">%s</a>' % (bname
, bname
)
34 for bname
in used_by_builder
.get(name
, [])]
36 data
+= " <li>Used by: %s</li>\n" % ", ".join(builder_links
)
38 data
+= " <li>Not used by any Builders</li>\n"
39 if slave
.isConnected():
40 data
+= " <li>Slave is currently connected</li>\n"
41 admin
= slave
.getAdmin()
43 # munge it to avoid feeding the spambot harvesters
44 admin
= admin
.replace("@", " -at- ")
45 data
+= " <li>Admin: %s</li>\n" % admin
46 last
= slave
.lastMessageReceived()
48 lt
= time
.strftime("%Y-%M-%d %H:%M:%S",
50 age
= abbreviate_age(time
.time() - last
)
51 data
+= " <li>Last heard from: %s " % age
52 data
+= '<font size="-1">(%s)</font>' % lt
55 data
+= " <li>Slave is NOT currently connected</li>\n"