def processGerrits(project, branch, target, mincrs, test): # # return verfiedGerrits, exludedGerrits # verifiedGerrits = [] excludedGerrits = [] print "\n" print "project :%s" % project print "branch :%s" % branch print "target :%s" % target print "min crs :%s" % mincrs print "test req:%s" % test gerritList = getOpenGerrits(project, branch, target) for gerritNum in gerritList: gerritNum = gerritNum.strip() gerrit = Gerrit(gerritNum) if gerrit.isGood(mincrs) == 'Approved': continue if not gerrit.ciStatuses() == None: cimsg = ' '.join(gerrit.ciStatuses()) print "Processing gerrit:%s " % gerritNum if gerrit.isGood(mincrs) and (gerrit.ciStatuses() == None or 'Queued at position' in cimsg or 'Change is being verified' in cimsg or 'is not enabled for BAIT automation' in cimsg): # if --test supplied, check for test result if test: comment = gerrit.commentsSearch(r'TEST STATUS:.*\d+|TEST RESULT') if comment: verifiedGerrits.append(gerritNum) else: excludedGerrits.append(gerritNum) continue else: verifiedGerrits.append(gerritNum) else: excludedGerrits.append(gerritNum) if excludedGerrits: print "\nExcluded gerrits: " for exg in excludedGerrits: print exg, if verifiedGerrits: print "\n\nCandidate gerrits: " for gerritNum in verifiedGerrits: print gerritNum, return (verifiedGerrits, excludedGerrits)
def main(): curDir = os.getcwd() project = None branch = None gerrit = None verifiedGerrits = [] excludedGerrits = [] projects = [] target = 'msm8916' mincrs = 2 testRequired = True config = SafeConfigParser() parser = argparse.ArgumentParser(description='Get open gerrits') parser.add_argument('-p','--project', action='store', dest='project', help='project', required=False) parser.add_argument('-b','--branch', action='store', dest='branch', help='branch', required=False) parser.add_argument('-t','--target', action='store', dest='target', help='target (msm8974|apq804)', required=False) parser.add_argument('-g','--gerrit', action='store',dest='gerrit', help='gerrit',required=False) parser.add_argument('-m','--mincrs', action='store',dest='mincrs', help='minimum crs',required=False) parser.add_argument('--test', action='store_true', help='needed test result') parser.add_argument('-c','--config', action='store',dest='config', help='config file to read',required=False) results = parser.parse_args() if results.project: project = results.project if results.branch: branch = results.branch if results.target: target = results.target if results.mincrs: mincrs = results.mincrs if results.test: testRequired = True if results.config: configFile = results.config readConfig(config, configFile) project = config.get('default', 'project') mincrs = config.get('default', 'mincrs') target = config.get('default', 'target') branch = config.get('default', 'branch') testRequired = config.get('default', 'test') # process just one given gerrit. for debugging purpose of particular gerrit when needed if results.gerrit: gerritNum = results.gerrit gerrit = Gerrit(gerritNum) if not gerrit.ciStatuses() == None: cimsg = ' '.join(gerrit.ciStatuses()) if gerrit.isGood(mincrs) and (gerrit.ciStatuses() == None or 'Queued at position' in cimsg or 'Change is being verified' in cimsg or 'is not enabled for BAIT automation' in cimsg): verifiedGerrits.append(gerritNum) print "Processed gerrit:%s " % gerritNum sys.exit(0) else: print "Excluded gerrits: %s" % gerritNum sys.exit(-1) # process all projects if results.config: for project, branch in config.items('projects'): verifiedGerrits, excludedGerrits = processGerrits(project, branch, target, mincrs, testRequired) sys.exit(0) if project and branch and target: verifiedGerrits, excludedGerrits = processGerrits(project, branch, target, mincrs, testRequired)