def body(self, req): s = self.getStatus(req) data = "" data += "<h1>Build Slaves</h1>\n" used_by_builder = {} for bname in s.getBuilderNames(): b = s.getBuilder(bname) for bs in b.getSlaves(): slavename = bs.getName() if slavename not in used_by_builder: used_by_builder[slavename] = [] used_by_builder[slavename].append(bname) data += "<ol>\n" for name in util.naturalSort(s.getSlaveNames()): slave = s.getSlave(name) slave_status = s.botmaster.slaves[name].slave_status isBusy = len(slave_status.getRunningBuilds()) data += " <li><a href=\"%s\">%s</a>:\n" % (req.childLink(urllib.quote(name,'')), name) data += " <ul>\n" version = slave.getVersion() data += "<li>Running Buildbot version: %s" % version builder_links = ['<a href="%s">%s</a>' % (req.childLink("../builders/%s" % bname),bname) for bname in used_by_builder.get(name, [])] if builder_links: data += (" <li>Used by Builders: %s</li>\n" % ", ".join(builder_links)) else: data += " <li>Not used by any Builders</li>\n" if slave.isConnected(): data += " <li>Slave is currently connected</li>\n" admin = slave.getAdmin() if admin: # munge it to avoid feeding the spambot harvesters admin = admin.replace("@", " -at- ") data += " <li>Admin: %s</li>\n" % admin last = slave.lastMessageReceived() if last: lt = time.strftime("%Y-%b-%d %H:%M:%S", time.localtime(last)) age = abbreviate_age(time.time() - last) data += " <li>Last heard from: %s " % age data += '<font size="-1">(%s)</font>' % lt data += "</li>\n" if isBusy: data += "<li>Slave is currently building.</li>" else: data += "<li>Slave is idle.</li>" else: data += " <li><b>Slave is NOT currently connected</b></li>\n" data += " </ul>\n" data += " </li>\n" data += "\n" data += "</ol>\n" return data
def body(self, req): s = self.getStatus(req) data = "" data += "<h1>Build Slaves</h1>\n" used_by_builder = {} for bname in s.getBuilderNames(): b = s.getBuilder(bname) for bs in b.getSlaves(): slavename = bs.getName() if slavename not in used_by_builder: used_by_builder[slavename] = [] used_by_builder[slavename].append(bname) data += "<ol>\n" for name in s.getSlaveNames(): slave = s.getSlave(name) data += " <li>%s:\n" % name data += " <ul>\n" builder_links = [ '<a href="%s">%s</a>' % (req.childLink("../builders/%s" % bname), bname) for bname in used_by_builder.get(name, []) ] if builder_links: data += (" <li>Used by Builders: %s</li>\n" % ", ".join(builder_links)) else: data += " <li>Not used by any Builders</li>\n" if slave.isConnected(): data += " <li>Slave is currently connected</li>\n" admin = slave.getAdmin() if admin: # munge it to avoid feeding the spambot harvesters admin = admin.replace("@", " -at- ") data += " <li>Admin: %s</li>\n" % admin last = slave.lastMessageReceived() if last: lt = time.strftime("%Y-%b-%d %H:%M:%S", time.localtime(last)) age = abbreviate_age(time.time() - last) data += " <li>Last heard from: %s " % age data += '<font size="-1">(%s)</font>' % lt data += "</li>\n" else: data += " <li>Slave is NOT currently connected</li>\n" data += " </ul>\n" data += " </li>\n" data += "\n" data += "</ol>\n" return data
def body(self, req): s = self.getStatus(req) data = "" data += "<h1>Build Slaves</h1>\n" used_by_builder = {} for bname in s.getBuilderNames(): b = s.getBuilder(bname) for bs in b.getSlaves(): slavename = bs.getName() if slavename not in used_by_builder: used_by_builder[slavename] = [] used_by_builder[slavename].append(bname) data += "<ol>\n" for name in s.getSlaveNames(): slave = s.getSlave(name) data += " <li>%s:\n" % name data += " <ul>\n" builder_links = ['<a href="%s">%s</a>' % (req.childLink("../builders/%s" % bname),bname) for bname in used_by_builder.get(name, [])] if builder_links: data += (" <li>Used by Builders: %s</li>\n" % ", ".join(builder_links)) else: data += " <li>Not used by any Builders</li>\n" if slave.isConnected(): data += " <li>Slave is currently connected</li>\n" admin = slave.getAdmin() if admin: # munge it to avoid feeding the spambot harvesters admin = admin.replace("@", " -at- ") data += " <li>Admin: %s</li>\n" % admin last = slave.lastMessageReceived() if last: lt = time.strftime("%Y-%b-%d %H:%M:%S", time.localtime(last)) age = abbreviate_age(time.time() - last) data += " <li>Last heard from: %s " % age data += '<font size="-1">(%s)</font>' % lt data += "</li>\n" else: data += " <li>Slave is NOT currently connected</li>\n" data += " </ul>\n" data += " </li>\n" data += "\n" data += "</ol>\n" return data
def content(self, request, ctx): s = self.getStatus(request) # ?no_builders=1 disables build column show_builder_column = not (request.args.get('no_builders', '0')[0]) == '1' ctx['show_builder_column'] = show_builder_column used_by_builder = {} for bname in s.getBuilderNames(): b = s.getBuilder(bname) for bs in b.getSlaves(): slavename = bs.getName() if slavename not in used_by_builder: used_by_builder[slavename] = [] used_by_builder[slavename].append(bname) slaves = ctx['slaves'] = [] for name in util.naturalSort(s.getSlaveNames()): info = {} slaves.append(info) slave = s.getSlave(name) slave_status = s.botmaster.slaves[name].slave_status info['running_builds'] = len(slave_status.getRunningBuilds()) info['link'] = request.childLink(urllib.quote(name, '')) info['name'] = name if show_builder_column: info['builders'] = [] for b in used_by_builder.get(name, []): info['builders'].append( dict(link=request.childLink("../builders/%s" % b), name=b)) info['version'] = slave.getVersion() info['connected'] = slave.isConnected() info['connectCount'] = slave.getConnectCount() info['paused'] = slave.isPaused() info['admin'] = slave.getAdmin() or u'' last = slave.lastMessageReceived() if last: info['last_heard_from_age'] = abbreviate_age(time.time() - last) info['last_heard_from_time'] = time.strftime( "%Y-%b-%d %H:%M:%S", time.localtime(last)) template = request.site.buildbot_service.templates.get_template( "buildslaves.html") data = template.render(**ctx) return data
def content(self, request, ctx): s = self.getStatus(request) #?no_builders=1 disables build column show_builder_column = not (request.args.get('no_builders', '0')[0])=='1' ctx['show_builder_column'] = show_builder_column used_by_builder = {} for bname in s.getBuilderNames(): b = s.getBuilder(bname) for bs in b.getSlaves(): slavename = bs.getName() if slavename not in used_by_builder: used_by_builder[slavename] = [] used_by_builder[slavename].append(bname) slaves = ctx['slaves'] = [] for name in util.naturalSort(s.getSlaveNames()): info = {} slaves.append(info) slave = s.getSlave(name) slave_status = s.botmaster.slaves[name].slave_status info['running_builds'] = len(slave_status.getRunningBuilds()) info['link'] = request.childLink(urllib.quote(name,'')) info['name'] = name if show_builder_column: info['builders'] = [] for b in used_by_builder.get(name, []): info['builders'].append(dict(link=request.childLink("../builders/%s" % b), name=b)) info['version'] = slave.getVersion() info['connected'] = slave.isConnected() info['connectCount'] = slave.getConnectCount() if slave.isConnected(): info['admin'] = unicode(slave.getAdmin() or '', 'utf-8') last = slave.lastMessageReceived() if last: info['last_heard_from_age'] = abbreviate_age(time.time() - last) info['last_heard_from_time'] = time.strftime("%Y-%b-%d %H:%M:%S", time.localtime(last)) template = request.site.buildbot_service.templates.get_template("buildslaves.html") data = template.render(**ctx) return data
def content(self, request, ctx): s = self.getStatus(request) used_by_builder = {} for bname in s.getBuilderNames(): b = s.getBuilder(bname) for bs in b.getSlaves(): slavename = bs.getName() if slavename not in used_by_builder: used_by_builder[slavename] = [] used_by_builder[slavename].append(bname) slaves = ctx["slaves"] = [] for name in util.naturalSort(s.getSlaveNames()): info = {} slaves.append(info) slave = s.getSlave(name) slave_status = s.botmaster.slaves[name].slave_status info["running_builds"] = len(slave_status.getRunningBuilds()) info["link"] = request.childLink(urllib.quote(name, "")) info["name"] = name info["builders"] = [] for b in used_by_builder.get(name, []): info["builders"].append(dict(link=request.childLink("../builders/%s" % b), name=b)) info["version"] = slave.getVersion() info["connected"] = slave.isConnected() if slave.isConnected(): info["admin"] = unicode(slave.getAdmin(), "utf-8") last = slave.lastMessageReceived() if last: info["last_heard_from_age"] = abbreviate_age(time.time() - last) info["last_heard_from_time"] = time.strftime("%Y-%b-%d %H:%M:%S", time.localtime(last)) template = request.site.buildbot_service.templates.get_template("buildslaves.html") data = template.render(**ctx) return data
def content(self, request, ctx): s = self.getStatus(request) used_by_builder = {} for bname in s.getBuilderNames(): b = s.getBuilder(bname) for bs in b.getSlaves(): slavename = bs.getName() if slavename not in used_by_builder: used_by_builder[slavename] = [] used_by_builder[slavename].append(bname) slaves = ctx['slaves'] = [] for name in util.naturalSort(s.getSlaveNames()): info = {} slaves.append(info) slave = s.getSlave(name) slave_status = s.botmaster.slaves[name].slave_status info['running_builds'] = len(slave_status.getRunningBuilds()) info['link'] = request.childLink(urllib.quote(name,'')) info['name'] = name info['builders'] = [{'link': request.childLink("../builders/%s" % bname), 'name': bname}] info['version'] = slave.getVersion() info['connected'] = slave.isConnected() if slave.isConnected(): info['admin'] = slave.getAdmin() last = slave.lastMessageReceived() if last: info['last_heard_from_age'] = abbreviate_age(time.time() - last) info['last_heard_from_time'] = time.strftime("%Y-%b-%d %H:%M:%S", time.localtime(last)) template = request.site.buildbot_service.templates.get_template("buildslaves.html") data = template.render(**ctx) return data
def test_abbreviate_age_89_sec(self): self.assertEqual(base.abbreviate_age(89), "89 seconds ago")
def test_abbreviate_age_10_min(self): self.assertEqual(base.abbreviate_age((base.MINUTE * 10) + 7), "about 10 minutes ago")
def test_abbreviate_age_long_time(self): self.assertEqual(base.abbreviate_age((base.MONTH * 4 + base.WEEK)), "a long time ago")
def test_abbreviate_age_12_days(self): self.assertEqual(base.abbreviate_age((base.DAY * 12 + base.HOUR * 9)), "about 12 days ago")
def test_abbreviate_age_1_day(self): self.assertEqual(base.abbreviate_age((base.DAY + base.MINUTE * 4)), "about 1 day ago")
def test_abbreviate_age_64_min(self): self.assertEqual(base.abbreviate_age((base.HOUR + base.MINUTE * 4)), "about 64 minutes ago")
def test_abbreviate_age_3_weeks(self): self.assertEqual(base.abbreviate_age((base.WEEK * 3 + base.DAY)), "about 3 weeks ago")
def test_abbreviate_age_3_days(self): self.assertEqual(base.abbreviate_age((base.DAY * 3 + base.MINUTE * 9)), "about 3 days ago")
def test_abbreviate_age_2_hours(self): self.assertEqual(base.abbreviate_age((base.HOUR * 2 + 25)), "about 2 hours ago")
def test_abbreviate_age_2_min(self): self.assertEqual(base.abbreviate_age((base.MINUTE * 2) + 2), "about 2 minutes ago")
def test_abbreviate_age_0_sec(self): self.assertEqual(base.abbreviate_age(0), "0 seconds ago")
def test_abbreviate_age_1_sec(self): self.assertEqual(base.abbreviate_age(1), "1 second ago")
def test_abbreviate_age_5_sec(self): self.assertEqual(base.abbreviate_age(5), "5 seconds ago")
def body(self, req): s = self.getStatus(req) data = "" data += "<h1>Build Slaves</h1>\n" used_by_builder = {} for bname in s.getBuilderNames(): b = s.getBuilder(bname) for bs in b.getSlaves(): slavename = bs.getName() if slavename not in used_by_builder: used_by_builder[slavename] = [] used_by_builder[slavename].append(bname) data += "<ol>\n" for name in util.naturalSort(s.getSlaveNames()): slave = s.getSlave(name) slave_status = s.botmaster.slaves[name].slave_status isBusy = len(slave_status.getRunningBuilds()) data += " <li><a href=\"%s\">%s</a>:\n" % (req.childLink( urllib.quote(name, '')), name) data += " <ul>\n" version = slave.getVersion() data += "<li>Running Buildbot version: %s" % version builder_links = [ '<a href="%s">%s</a>' % (req.childLink("../builders/%s" % bname), bname) for bname in used_by_builder.get(name, []) ] if builder_links: data += (" <li>Used by Builders: %s</li>\n" % ", ".join(builder_links)) else: data += " <li>Not used by any Builders</li>\n" if slave.isConnected(): data += " <li>Slave is currently connected</li>\n" admin = slave.getAdmin() if admin: # munge it to avoid feeding the spambot harvesters admin = admin.replace("@", " -at- ") data += " <li>Admin: %s</li>\n" % admin last = slave.lastMessageReceived() if last: lt = time.strftime("%Y-%b-%d %H:%M:%S", time.localtime(last)) age = abbreviate_age(time.time() - last) data += " <li>Last heard from: %s " % age data += '<font size="-1">(%s)</font>' % lt data += "</li>\n" if isBusy: data += "<li>Slave is currently building.</li>" else: data += "<li>Slave is idle.</li>" else: data += " <li><b>Slave is NOT currently connected</b></li>\n" data += " </ul>\n" data += " </li>\n" data += "\n" data += "</ol>\n" return data