@@ -1271,10 +1271,17 @@ def archive_merge(self, merge_name):
1271
1271
"No metadata found for merged collection '%s'" % merge_name )
1272
1272
self .delete_merged_data (merge_name )
1273
1273
1274
- def get_query_for_list_merge (self , only_archived ):
1274
+ def get_query_for_list_merge (self , only_archived , status = None ):
1275
1275
q = {"archived" : {"$exists" : 0 }}
1276
1276
if only_archived :
1277
1277
q = {"archived" : {"$exists" : 1 }}
1278
+ if status :
1279
+ if status == "success" :
1280
+ q ["jobs.status" ] = {
1281
+ "$not" : {"$in" : ["failed" , "canceled" ]}
1282
+ }
1283
+ elif status in ["failed" , "canceled" ]:
1284
+ q ["jobs.status" ] = status
1278
1285
return q
1279
1286
1280
1287
def list_merge (self , build_config = None , only_archived = False ):
@@ -1634,11 +1641,14 @@ def build_config_info(self):
1634
1641
res ["builder_classes" ] = bclasses
1635
1642
return res
1636
1643
1637
- def build_info (self ,
1638
- id = None ,
1639
- conf_name = None ,
1640
- fields = None ,
1641
- only_archived = False ):
1644
+ def build_info (
1645
+ self ,
1646
+ id = None ,
1647
+ conf_name = None ,
1648
+ fields = None ,
1649
+ only_archived = False ,
1650
+ status = None ,
1651
+ ):
1642
1652
"""
1643
1653
Return build information given an build _id, or all builds
1644
1654
if _id is None. "fields" can be passed to select which fields
@@ -1648,9 +1658,10 @@ def build_info(self,
1648
1658
If id is None, more are filtered:
1649
1659
- "sources" and some of "build_config"
1650
1660
only_archived=True will return archived merges only
1661
+ status: will return only successful/failed builds. Can be "success" or "failed"
1651
1662
"""
1652
1663
res = {}
1653
- q = self .get_query_for_list_merge (only_archived )
1664
+ q = self .get_query_for_list_merge (only_archived = only_archived , status = status )
1654
1665
if id is not None :
1655
1666
q = {"_id" : id }
1656
1667
else :
0 commit comments