in crashclouseau/buildhub.py [0:0]
def get_two_last(buildid, channel, product):
"""Get the two last build (including the one from buildid)"""
buildid = utils.get_buildid(buildid)
product = PRODS.get(product, product)
data = {
"aggs": {
"buildids": {
"terms": {"field": "build.id", "size": 2, "order": {"_term": "desc"}},
"aggs": {
"revisions": {"terms": {"field": "source.revision", "size": 1}},
"versions": {"terms": {"field": "target.version", "size": 1}},
},
}
},
"query": {
"bool": {
"filter": [
{"term": {"target.channel": channel}},
{"term": {"source.product": product}},
{"range": {"build.id": {"lte": buildid}}},
{"regexp": {"target.version": VERSION_PATS.get(channel, "*")}},
]
}
},
"size": 0,
}
def get_info(data):
bids = []
for i in data["aggregations"]["buildids"]["buckets"]:
bid = i["key"]
revision = utils.short_rev(i["revisions"]["buckets"][0]["key"])
version = i["versions"]["buckets"][0]["key"]
bids.append({"buildid": bid, "revision": revision, "version": version})
if bids[0]["buildid"] != buildid:
return None
x = bids[0]
bids[0] = bids[1]
bids[1] = x
return bids
return make_request(data, 0.1, 100, get_info)