def request_line(self, build_request, req): when = time.strftime("%b %d %H:%M:%S", time.localtime(build_request.getSubmitTime())) delay = util.formatInterval(util.now() - build_request.getSubmitTime()) changes = build_request.source.changes if changes: change_strings = [] for c in changes: change_strings.append("<a href=\"%s\">%s</a>" % (path_to_change(req, c), c.who)) if len(change_strings) == 1: reason = "change by %s" % change_strings[0] else: reason = "changes by %s" % ", ".join(change_strings) elif build_request.source.revision: reason = build_request.source.revision else: reason = "no changes specified" if self.builder_control is not None: cancelURL = path_to_builder(req, self.builder_status) + '/cancelbuild' cancelButton = ''' <form action="%s" class="command cancelbuild" style="display:inline" method="post"> <input type="hidden" name="id" value="%s" /> <input type="submit" value="Cancel Build" /> </form>''' % (cancelURL, id(build_request)) else: cancelButton = "" return "<font size=\"-1\">(%s, waiting %s)</font>%s%s" % (when, delay, cancelButton, reason)
def request_line(self, build_request, req): when = time.strftime("%b %d %H:%M:%S", time.localtime(build_request.getSubmitTime())) delay = util.formatInterval(util.now() - build_request.getSubmitTime()) changes = build_request.source.changes if changes: change_strings = [] for c in changes: change_strings.append("<a href=\"%s\">%s</a>" % (path_to_change(req, c), c.who)) if len(change_strings) == 1: reason = "change by %s" % change_strings[0] else: reason = "changes by %s" % ", ".join(change_strings) elif build_request.source.revision: reason = build_request.source.revision else: reason = "no changes specified" if self.builder_control is not None: cancelURL = path_to_builder(req, self.builder_status) + '/cancelbuild' cancelButton = ''' <form action="%s" class="command cancelbuild" style="display:inline" method="post"> <input type="hidden" name="id" value="%s" /> <input type="submit" value="Cancel Build" /> </form>''' % (cancelURL, id(build_request)) else: cancelButton = "" return "<font size=\"-1\">(%s, waiting %s)</font>%s%s" % ( when, delay, cancelButton, reason)
def content(self, req, cxt): b = self.builder_status cxt["name"] = b.getName() slaves = b.getSlaves() connected_slaves = [s for s in slaves if s.isConnected()] cxt["current"] = [self.builder(x, req) for x in b.getCurrentBuilds()] cxt["pending"] = [] for pb in b.getPendingBuilds(): changes = [] if pb.source.changes: for c in pb.source.changes: changes.append({"url": path_to_change(req, c), "who": c.who}) if pb.source.revision: reason = pb.source.revision else: reason = "no changes specified" cxt["pending"].append( { "when": time.strftime("%b %d %H:%M:%S", time.localtime(pb.getSubmitTime())), "delay": util.formatInterval(util.now() - pb.getSubmitTime()), "reason": reason, "id": id(pb), "changes": changes, } ) numbuilds = int(req.args.get("numbuilds", ["5"])[0]) recent = cxt["recent"] = [] for build in b.generateFinishedBuilds(num_builds=int(numbuilds)): recent.append(self.get_line_values(req, build, False)) sl = cxt["slaves"] = [] connected_slaves = 0 for slave in slaves: s = {} sl.append(s) s["link"] = path_to_slave(req, slave) s["name"] = slave.getName() c = s["connected"] = slave.isConnected() if c: s["admin"] = slave.getAdmin() connected_slaves += 1 cxt["connected_slaves"] = connected_slaves cxt["authz"] = self.getAuthz(req) cxt["builder_url"] = path_to_builder(req, b) template = req.site.buildbot_service.templates.get_template("builder.html") return template.render(**cxt)
def content(self, req, cxt): b = self.builder_status cxt['name'] = b.getName() slaves = b.getSlaves() connected_slaves = [s for s in slaves if s.isConnected()] cxt['current'] = [self.builder(x, req) for x in b.getCurrentBuilds()] cxt['pending'] = [] for pb in b.getPendingBuilds(): source = pb.getSourceStamp() changes = [] if source.changes: for c in source.changes: changes.append({ 'url' : path_to_change(req, c), 'who' : c.who}) if source.revision: reason = source.revision else: reason = "no changes specified" cxt['pending'].append({ 'when': time.strftime("%b %d %H:%M:%S", time.localtime(pb.getSubmitTime())), 'delay': util.formatInterval(util.now() - pb.getSubmitTime()), 'reason': reason, 'id': pb.brid, 'changes' : changes }) numbuilds = int(req.args.get('numbuilds', ['5'])[0]) recent = cxt['recent'] = [] for build in b.generateFinishedBuilds(num_builds=int(numbuilds)): recent.append(self.get_line_values(req, build, False)) sl = cxt['slaves'] = [] connected_slaves = 0 for slave in slaves: s = {} sl.append(s) s['link'] = path_to_slave(req, slave) s['name'] = slave.getName() c = s['connected'] = slave.isConnected() if c: s['admin'] = slave.getAdmin() connected_slaves += 1 cxt['connected_slaves'] = connected_slaves cxt['authz'] = self.getAuthz(req) cxt['builder_url'] = path_to_builder(req, b) template = req.site.buildbot_service.templates.get_template("builder.html") return template.render(**cxt)
def content(self, req, cxt): b = self.builder_status cxt['name'] = b.getName() cxt['description'] = b.getDescription() req.setHeader('Cache-Control', 'no-cache') slaves = b.getSlaves() connected_slaves = [s for s in slaves if s.isConnected()] cxt['current'] = [self.builder(x, req) for x in b.getCurrentBuilds()] cxt['pending'] = [] statuses = yield b.getPendingBuildRequestStatuses() for pb in statuses: changes = [] source = yield pb.getSourceStamp() submitTime = yield pb.getSubmitTime() bsid = yield pb.getBsid() properties = yield \ pb.master.db.buildsets.getBuildsetProperties(bsid) if source.changes: for c in source.changes: changes.append({ 'url' : path_to_change(req, c), 'who' : c.who, 'revision' : c.revision, 'repo' : c.repository }) cxt['pending'].append({ 'when': time.strftime("%b %d %H:%M:%S", time.localtime(submitTime)), 'delay': util.formatInterval(util.now() - submitTime), 'id': pb.brid, 'changes' : changes, 'num_changes' : len(changes), 'properties' : properties, }) numbuilds = int(req.args.get('numbuilds', [self.numbuilds])[0]) recent = cxt['recent'] = [] for build in b.generateFinishedBuilds(num_builds=int(numbuilds)): recent.append(self.get_line_values(req, build, False)) sl = cxt['slaves'] = [] connected_slaves = 0 for slave in slaves: s = {} sl.append(s) s['link'] = path_to_slave(req, slave) s['name'] = slave.getName() c = s['connected'] = slave.isConnected() if c: s['admin'] = unicode(slave.getAdmin() or '', 'utf-8') connected_slaves += 1 cxt['connected_slaves'] = connected_slaves cxt['authz'] = self.getAuthz(req) cxt['builder_url'] = path_to_builder(req, b) buildForceContext(cxt, req, self.getBuildmaster(req), b.getName()) template = req.site.buildbot_service.templates.get_template("builder.html") defer.returnValue(template.render(**cxt))
def content(self, req, cxt): b = self.builder_status # Grab all the parameters which are prefixed with 'property.'. # We'll use these to filter the builds and build requests we # show below. props = {} prop_prefix = 'property.' for arg, val in req.args.iteritems(): if arg.startswith(prop_prefix): props[arg[len(prop_prefix):]] = val[0] def prop_match(oprops): for key, val in props.iteritems(): if key not in oprops or val != str(oprops[key]): return False return True cxt['name'] = b.getName() cxt['description'] = b.getDescription() req.setHeader('Cache-Control', 'no-cache') slaves = b.getSlaves() connected_slaves = [s for s in slaves if s.isConnected()] cxt['current'] = [ self.builder(x, req) for x in b.getCurrentBuilds() if prop_match(x.getProperties())] cxt['pending'] = [] statuses = yield b.getPendingBuildRequestStatuses() for pb in statuses: changes = [] source = yield pb.getSourceStamp() submitTime = yield pb.getSubmitTime() bsid = yield pb.getBsid() properties = yield \ pb.master.db.buildsets.getBuildsetProperties(bsid) if not prop_match(properties): continue if source.changes: for c in source.changes: changes.append({'url': path_to_change(req, c), 'who': c.who, 'revision': c.revision, 'repo': c.repository}) cxt['pending'].append({ 'when': time.strftime("%b %d %H:%M:%S", time.localtime(submitTime)), 'delay': util.formatInterval(util.now() - submitTime), 'id': pb.brid, 'changes': changes, 'num_changes': len(changes), 'properties': properties, }) numbuilds = cxt['numbuilds'] = int(req.args.get('numbuilds', [self.numbuilds])[0]) maxsearch = int(req.args.get('maxsearch', [200])[0]) recent = cxt['recent'] = [] for build in b.generateFinishedBuilds( num_builds=int(numbuilds), max_search=maxsearch, filter_fn=lambda b: prop_match(b.getProperties())): recent.append(self.get_line_values(req, build, False)) sl = cxt['slaves'] = [] connected_slaves = 0 for slave in slaves: s = {} sl.append(s) s['link'] = path_to_slave(req, slave) s['name'] = slave.getName() c = s['connected'] = slave.isConnected() s['paused'] = slave.isPaused() s['admin'] = slave.getAdmin() or u'' if c: connected_slaves += 1 cxt['connected_slaves'] = connected_slaves cxt['authz'] = self.getAuthz(req) cxt['builder_url'] = path_to_builder(req, b) buildForceContext(cxt, req, self.getBuildmaster(req), b.getName()) template = req.site.buildbot_service.templates.get_template("builder.html") defer.returnValue(template.render(**cxt))
def content(self, req, cxt): b = self.builder_status cxt['name'] = b.getName() req.setHeader('Cache-Control', 'no-cache') slaves = b.getSlaves() connected_slaves = [s for s in slaves if s.isConnected()] cxt['current'] = [self.builder(x, req) for x in b.getCurrentBuilds()] cxt['pending'] = [] for pb in b.getPendingBuilds(): source = pb.getSourceStamp() changes = [] if source.changes: for c in source.changes: changes.append({ 'url': path_to_change(req, c), 'who': c.who, 'revision': c.revision, 'repo': c.repository }) cxt['pending'].append({ 'when': time.strftime("%b %d %H:%M:%S", time.localtime(pb.getSubmitTime())), 'delay': util.formatInterval(util.now() - pb.getSubmitTime()), 'id': pb.brid, 'changes': changes, 'num_changes': len(changes), }) numbuilds = int(req.args.get('numbuilds', ['5'])[0]) recent = cxt['recent'] = [] for build in b.generateFinishedBuilds(num_builds=int(numbuilds)): recent.append(self.get_line_values(req, build, False)) sl = cxt['slaves'] = [] connected_slaves = 0 for slave in slaves: s = {} sl.append(s) s['link'] = path_to_slave(req, slave) s['name'] = slave.getName() c = s['connected'] = slave.isConnected() if c: s['admin'] = unicode(slave.getAdmin() or '', 'utf-8') connected_slaves += 1 cxt['connected_slaves'] = connected_slaves cxt['authz'] = self.getAuthz(req) cxt['builder_url'] = path_to_builder(req, b) template = req.site.buildbot_service.templates.get_template( "builder.html") return template.render(**cxt)
def content(self, req, cxt): b = self.builder_status # Grab all the parameters which are prefixed with 'property.'. # We'll use these to filter the builds and build requests we # show below. props = {} prop_prefix = 'property.' for arg, val in req.args.iteritems(): if arg.startswith(prop_prefix): props[arg[len(prop_prefix):]] = val[0] def prop_match(oprops): for key, val in props.iteritems(): if key not in oprops or val != str(oprops[key]): return False return True cxt['name'] = b.getName() cxt['description'] = b.getDescription() req.setHeader('Cache-Control', 'no-cache') slaves = b.getSlaves() connected_slaves = [s for s in slaves if s.isConnected()] cxt['current'] = [ self.builder(x, req) for x in b.getCurrentBuilds() if prop_match(x.getProperties()) ] cxt['pending'] = [] statuses = yield b.getPendingBuildRequestStatuses() for pb in statuses: changes = [] source = yield pb.getSourceStamp() submitTime = yield pb.getSubmitTime() bsid = yield pb.getBsid() properties = yield \ pb.master.db.buildsets.getBuildsetProperties(bsid) if not prop_match(properties): continue if source.changes: for c in source.changes: changes.append({ 'url': path_to_change(req, c), 'who': c.who, 'revision': c.revision, 'repo': c.repository }) cxt['pending'].append({ 'when': time.strftime("%b %d %H:%M:%S", time.localtime(submitTime)), 'delay': util.formatInterval(util.now() - submitTime), 'id': pb.brid, 'changes': changes, 'num_changes': len(changes), 'properties': properties, }) try: numbuilds = cxt['numbuilds'] = int( req.args.get('numbuilds', [self.numbuilds])[0]) except ValueError: numbuilds = cxt['numbuilds'] = 10 maxsearch = int(req.args.get('maxsearch', [200])[0]) recent = cxt['recent'] = [] for build in b.generateFinishedBuilds( num_builds=int(numbuilds), max_search=maxsearch, filter_fn=lambda b: prop_match(b.getProperties())): recent.append(self.get_line_values(req, build, False)) sl = cxt['slaves'] = [] connected_slaves = 0 for slave in slaves: s = {} sl.append(s) s['link'] = path_to_slave(req, slave) s['name'] = slave.getName() c = s['connected'] = slave.isConnected() s['paused'] = slave.isPaused() s['admin'] = slave.getAdmin() or u'' if c: connected_slaves += 1 cxt['connected_slaves'] = connected_slaves cxt['authz'] = self.getAuthz(req) cxt['builder_url'] = path_to_builder(req, b) buildForceContext(cxt, req, self.getBuildmaster(req), b.getName()) template = req.site.buildbot_service.templates.get_template( "builder.html") defer.returnValue(template.render(**cxt))
def content(self, req, cxt): """ Mainly the same with parent class, but enumerates test results, too """ b = self.builder_status cxt['name'] = b.getName() req.setHeader('Cache-Control', 'no-cache') slaves = b.getSlaves() connected_slaves = [s for s in slaves if s.isConnected()] cxt['current'] = [self.builder(x, req) for x in b.getCurrentBuilds()] cxt['pending'] = [] for pb in b.getPendingBuilds(): source = pb.getSourceStamp() changes = [] if source.changes: for c in source.changes: changes.append({ 'url' : path_to_change(req, c), 'who' : c.who}) if source.revision: reason = source.revision else: reason = "no changes specified" cxt['pending'].append({ 'when': time.strftime("%b %d %H:%M:%S", time.localtime(pb.getSubmitTime())), 'delay': util.formatInterval(util.now() - pb.getSubmitTime()), 'reason': reason, 'id': pb.brid, 'changes' : changes }) numbuilds = int(req.args.get('numbuilds', ['5'])[0]) recent = cxt['recent'] = [] tr_names = cxt['test_results_order'] = [] for build in b.generateFinishedBuilds(num_builds=int(numbuilds)): lvals = self.get_line_values(req, build, False) recent.append(lvals) for trn in lvals.get('test_result_order',[]): if trn not in tr_names: tr_names.append(trn) sl = cxt['slaves'] = [] connected_slaves = 0 for slave in slaves: s = {} sl.append(s) s['link'] = path_to_slave(req, slave) s['name'] = slave.getName() c = s['connected'] = slave.isConnected() if c: s['admin'] = unicode(slave.getAdmin() or '', 'utf-8') connected_slaves += 1 cxt['connected_slaves'] = connected_slaves cxt['authz'] = self.getAuthz(req) cxt['builder_url'] = path_to_builder(req, b) template = req.site.buildbot_service.templates.get_template(self.tpl_page) return template.render(**cxt)
def content(self, req, cxt): b = self.builder_status control = self.builder_control status = self.getStatus(req) cxt['name'] = b.getName() slaves = b.getSlaves() connected_slaves = [s for s in slaves if s.isConnected()] cxt['current'] = [self.builder(x, req) for x in b.getCurrentBuilds()] cxt['pending'] = [] for pb in b.getPendingBuilds(): changes = [] if pb.source.changes: for c in pb.source.changes: changes.append({ 'url' : path_to_change(req, c), 'who' : c.who}) elif pb.source.revision: reason = pb.source.revision else: reason = "no changes specified" cxt['pending'].append({ 'when': time.strftime("%b %d %H:%M:%S", time.localtime(pb.getSubmitTime())), 'delay': util.formatInterval(util.now() - pb.getSubmitTime()), 'reason': reason, 'id': id(pb), 'changes' : changes }) if self.builder_control is not None: cxt['cancel_url'] = path_to_builder(req, b) + '/cancelbuild' numbuilds = int(req.args.get('numbuilds', ['5'])[0]) recent = cxt['recent'] = [] for build in b.generateFinishedBuilds(num_builds=int(numbuilds)): recent.append(self.get_line_values(req, build, False)) sl = cxt['slaves'] = [] for slave in slaves: s = {} sl.append(s) s['link'] = path_to_slave(req, slave) s['name'] = slave.getName() c = s['connected'] = slave.isConnected() if c: s['admin'] = slave.getAdmin() if control is not None and connected_slaves: cxt['force_url'] = path_to_builder(req, b) + '/force' cxt['use_user_passwd'] = self.isUsingUserPasswd(req) elif control is not None: cxt['all_slaves_offline'] = True if control is not None: cxt['ping_url'] = path_to_builder(req, b) + '/ping' template = req.site.buildbot_service.templates.get_template("builder.html") return template.render(**cxt)
def content(self, req, cxt): b = self.builder_status cxt["name"] = b.getName() cxt["description"] = b.getDescription() req.setHeader("Cache-Control", "no-cache") slaves = b.getSlaves() connected_slaves = [s for s in slaves if s.isConnected()] cxt["current"] = [self.builder(x, req) for x in b.getCurrentBuilds()] cxt["pending"] = [] statuses = yield b.getPendingBuildRequestStatuses() for pb in statuses: changes = [] source = yield pb.getSourceStamp() submitTime = yield pb.getSubmitTime() bsid = yield pb.getBsid() properties = yield pb.master.db.buildsets.getBuildsetProperties(bsid) if source.changes: for c in source.changes: changes.append( {"url": path_to_change(req, c), "who": c.who, "revision": c.revision, "repo": c.repository} ) cxt["pending"].append( { "when": time.strftime("%b %d %H:%M:%S", time.localtime(submitTime)), "delay": util.formatInterval(util.now() - submitTime), "id": pb.brid, "changes": changes, "num_changes": len(changes), "properties": properties, } ) numbuilds = cxt["numbuilds"] = int(req.args.get("numbuilds", [self.numbuilds])[0]) recent = cxt["recent"] = [] for build in b.generateFinishedBuilds(num_builds=int(numbuilds)): recent.append(self.get_line_values(req, build, False)) sl = cxt["slaves"] = [] connected_slaves = 0 for slave in slaves: s = {} sl.append(s) s["link"] = path_to_slave(req, slave) s["name"] = slave.getName() c = s["connected"] = slave.isConnected() s["paused"] = slave.isPaused() s["admin"] = unicode(slave.getAdmin() or "", "utf-8") if c: connected_slaves += 1 cxt["connected_slaves"] = connected_slaves cxt["authz"] = self.getAuthz(req) cxt["builder_url"] = path_to_builder(req, b) buildForceContext(cxt, req, self.getBuildmaster(req), b.getName()) template = req.site.buildbot_service.templates.get_template("builder.html") defer.returnValue(template.render(**cxt))
def content(self, req, cxt): """ Mainly the same with parent class, but enumerates test results, too """ b = self.builder_status cxt["name"] = b.getName() req.setHeader("Cache-Control", "no-cache") slaves = b.getSlaves() connected_slaves = [s for s in slaves if s.isConnected()] cxt["current"] = [self.builder(x, req) for x in b.getCurrentBuilds()] cxt["pending"] = [] for pb in b.getPendingBuilds(): source = pb.getSourceStamp() changes = [] if source.changes: for c in source.changes: changes.append({"url": path_to_change(req, c), "who": c.who}) if source.revision: reason = source.revision else: reason = "no changes specified" cxt["pending"].append( { "when": time.strftime("%b %d %H:%M:%S", time.localtime(pb.getSubmitTime())), "delay": util.formatInterval(util.now() - pb.getSubmitTime()), "reason": reason, "id": pb.brid, "changes": changes, } ) numbuilds = int(req.args.get("numbuilds", ["5"])[0]) recent = cxt["recent"] = [] tr_names = cxt["test_results_order"] = [] for build in b.generateFinishedBuilds(num_builds=int(numbuilds)): lvals = self.get_line_values(req, build, False) recent.append(lvals) for trn in lvals.get("test_result_order", []): if trn not in tr_names: tr_names.append(trn) sl = cxt["slaves"] = [] connected_slaves = 0 for slave in slaves: s = {} sl.append(s) s["link"] = path_to_slave(req, slave) s["name"] = slave.getName() c = s["connected"] = slave.isConnected() if c: s["admin"] = unicode(slave.getAdmin() or "", "utf-8") connected_slaves += 1 cxt["connected_slaves"] = connected_slaves cxt["authz"] = self.getAuthz(req) cxt["builder_url"] = path_to_builder(req, b) template = req.site.buildbot_service.templates.get_template(self.tpl_page) return template.render(**cxt)