Merge "check-release-approval: retry once when Gerrit fails"

This commit is contained in:
Zuul 2020-02-20 23:40:22 +00:00 committed by Gerrit Code Review
commit 65689b1e42

View File

@ -61,8 +61,21 @@ class GerritChange(object):
with open(os.path.join(args.governance, PROJECTS_YAML), 'r') as dfile: with open(os.path.join(args.governance, PROJECTS_YAML), 'r') as dfile:
self.gov_data = yaml.safe_load(dfile) self.gov_data = yaml.safe_load(dfile)
try:
self.load_from_gerrit(args.changeid)
except KeyError:
LOG.warning(
'\ndata from gerrit is missing required keys:\n\n%s\n',
json.dumps(self.raw_data, indent=2))
LOG.warning("Retrying once...")
self.load_from_gerrit(args.changeid)
LOG.warning("Second try was successful.")
self.workspace = args.releases
def load_from_gerrit(self, changeid):
# Grab changeid details from Gerrit # Grab changeid details from Gerrit
call = 'changes/%s' % args.changeid + \ call = 'changes/%s' % changeid + \
'?o=CURRENT_REVISION&o=CURRENT_FILES&o=DETAILED_LABELS' + \ '?o=CURRENT_REVISION&o=CURRENT_FILES&o=DETAILED_LABELS' + \
'&o=DETAILED_ACCOUNTS' '&o=DETAILED_ACCOUNTS'
raw = requests.get(GERRIT_URL + call) raw = requests.get(GERRIT_URL + call)
@ -85,23 +98,15 @@ class GerritChange(object):
# Instantiate object with retrieved data # Instantiate object with retrieved data
self.raw_data = decoded self.raw_data = decoded
try: self.approvers = [i['email']
self.approvers = [i['email'] for i in decoded['labels']['Code-Review']['all']
for i in decoded['labels']['Code-Review']['all'] if i['value'] > 0]
if i['value'] > 0] self.approvers.append(decoded['owner']['email'])
self.approvers.append(decoded['owner']['email']) currev = decoded['current_revision']
currev = decoded['current_revision'] self.deliv_files = [
self.deliv_files = [ x for x in decoded['revisions'][currev]['files'].keys()
x for x in decoded['revisions'][currev]['files'].keys() if x.startswith('deliverables/')
if x.startswith('deliverables/') ]
]
except KeyError:
LOG.error(
'\ndata from gerrit is missing required keys:\n\n%s\n',
json.dumps(decoded, indent=2))
raise
self.workspace = args.releases
def is_approved(self): def is_approved(self):
LOG.debug('Approvals: %s' % self.approvers) LOG.debug('Approvals: %s' % self.approvers)