Skip to content

Commit

Permalink
Merge pull request #1976 from ceph/issue-66893
Browse files Browse the repository at this point in the history
find_git_parents: Refresh mirror when required
  • Loading branch information
zmc authored Jul 17, 2024
2 parents 5bc6960 + 7a77270 commit 2d00246
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions teuthology/suite/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -347,25 +347,34 @@ def find_git_parents(project: str, sha1: str, count=1):
log.warning('githelper_base_url not set, --newest disabled')
return []

def refresh():
url = f"{base_url}/{project}.git/refresh"
log.info(f"Forcing refresh of git mirror: {url}")
resp = requests.get(url)
if not resp.ok:
log.error('git refresh failed for %s: %s',
project, resp.content.decode())

def get_sha1s(project, committish, count):
url = '/'.join((
base_url,
f"{project}.git",
f"history/?committish={committish}&count={count}"
))
url = f"base_url/{project}.git/history?committish={committish}&count={count}"
log.info(f"Looking for parent commits: {url}")
resp = requests.get(url)
resp.raise_for_status()
sha1s = resp.json()['sha1s']
if len(sha1s) != count:
resp_json = resp.json()
err_msg = resp_json.get("error") or resp_json.get("err")
log.debug(f"Got response: {resp_json}")
log.debug(f"Got {resp.status_code} response: {resp_json}")
log.error(f"Can't find {count} parents of {sha1} in {project}: {err_msg}")
return sha1s

# index 0 will be the commit whose parents we want to find.
# So we will query for count+1, and strip index 0 from the result.
sha1s = get_sha1s(project, sha1, count + 1)
if not sha1s:
log.error("Will try to refresh git mirror and try again")
refresh()
sha1s = get_sha1s(project, sha1, count + 1)
if sha1s:
return sha1s[1:]
return []

0 comments on commit 2d00246

Please sign in to comment.