in crashclouseau/datacollector.py [0:0]
def get_changeset(buildid, channel, product):
"""Trick to get changeset for a particular buildid/channel/product"""
search_date = ">=" + lmdutils.get_date_str(buildid)
buildid = utils.get_buildid(buildid)
logger.info("Get changeset for {}-{}-{}.".format(buildid, product, channel))
def handler(json, data):
pat = re.compile(r"^.*:([0-9a-f]+)$")
if not json["facets"]["build_id"]:
return
for facets in json["facets"]["build_id"]:
for tf in facets["facets"]["topmost_filenames"]:
m = pat.match(tf["term"])
if m:
chgset = m.group(1)
count = tf["count"]
data[chgset] += count
params = {
"product": product,
"release_channel": channel,
"build_id": buildid,
"date": search_date,
"topmost_filenames": '@"hg:hg.mozilla.org/".*:[0-9a-f]+',
"_aggs.build_id": "topmost_filenames",
"_results_number": 0,
"_facets": "product",
"_facets_size": 100,
}
data = defaultdict(lambda: 0)
socorro.SuperSearch(params=params, handler=handler, handlerdata=data).wait()
chgset = None
if data:
chgset, _ = max(data.items(), key=lambda p: p[1])
chgset = utils.short_rev(chgset)
logger.info("Get changeset: finished.")
return chgset